[ { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "string", "name": "uri", "type": "string" }, { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "uint8", "name": "whoCanMint_", "type": "uint8" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "addMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "autoMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "autoMintBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_id", "type": "uint256" } ], "name": "canIMint", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "creators", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "exists", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isMinter", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "mintBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "whoCanMint", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b5060405162002b6638038062002b66833981016040819052620000349162000406565b836200004033620000db565b6200004b816200012b565b506200005960008662000144565b620000857f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68662000144565b620000908562000150565b8251620000a5906006906020860190620002ad565b508151620000bb906007906020850190620002ad565b506009805460ff191660ff92909216919091179055506200052192505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b805162000140906004906020840190620002ad565b5050565b62000140828262000225565b6000546001600160a01b03163314620001b05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b038116620002175760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620001a7565b6200022281620000db565b50565b60008281526001602090815260408083206001600160a01b038516845290915290205460ff16620001405760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b828054620002bb90620004ce565b90600052602060002090601f016020900481019282620002df57600085556200032a565b82601f10620002fa57805160ff19168380011785556200032a565b828001600101855582156200032a579182015b828111156200032a5782518255916020019190600101906200030d565b50620003389291506200033c565b5090565b5b808211156200033857600081556001016200033d565b600082601f83011262000364578081fd5b81516001600160401b03808211156200038157620003816200050b565b604051601f8301601f19908116603f01168101908282118183101715620003ac57620003ac6200050b565b81604052838152602092508683858801011115620003c8578485fd5b8491505b83821015620003eb5785820183015181830184015290820190620003cc565b83821115620003fc57848385830101525b9695505050505050565b600080600080600060a086880312156200041e578081fd5b85516001600160a01b038116811462000435578182fd5b60208701519095506001600160401b038082111562000452578283fd5b6200046089838a0162000353565b9550604088015191508082111562000476578283fd5b6200048489838a0162000353565b945060608801519150808211156200049a578283fd5b50620004a98882890162000353565b925050608086015160ff81168114620004c0578182fd5b809150509295509295909350565b600181811c90821680620004e357607f821691505b602082108114156200050557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b61263580620005316000396000f3fe608060405234801561001057600080fd5b50600436106101e45760003560e01c8063731133e91161010f578063aa271e1a116100a2578063d547741f11610071578063d547741f14610472578063e985e9c514610485578063f242432a146104c1578063f2fde38b146104d457600080fd5b8063aa271e1a146103ef578063bd85b03914610402578063cd53d08e14610422578063d53913931461044b57600080fd5b806395d89b41116100de57806395d89b41146103b9578063983b2d56146103c1578063a217fddf146103d4578063a22cb465146103dc57600080fd5b8063731133e91461035b578063745e96d71461036e5780638da5cb5b1461038157806391d14854146103a657600080fd5b80632f2ff15d116101875780634e1273f4116101565780634e1273f4146102fe5780634f558e791461031e5780635478e77014610340578063715018a61461035357600080fd5b80632f2ff15d146102a657806336568abe146102b95780634c22ce0b146102cc5780634c2decc0146102df57600080fd5b80630e89341c116101c35780630e89341c146102475780631f7fdffa1461025a578063248a9ca31461026f5780632eb2c2d61461029357600080fd5b8062fdd58e146101e957806301ffc9a71461020f57806306fdde0314610232575b600080fd5b6101fc6101f7366004611ecf565b6104e7565b6040519081526020015b60405180910390f35b61022261021d366004612046565b610580565b6040519015158152602001610206565b61023a610591565b604051610206919061223d565b61023a61025536600461200c565b610623565b61026d610268366004611e00565b6106b7565b005b6101fc61027d36600461200c565b6000908152600160208190526040909120015490565b61026d6102a1366004611cab565b6106ef565b61026d6102b4366004612024565b610786565b61026d6102c7366004612024565b6107b2565b61026d6102da366004611db4565b610830565b6009546102ec9060ff1681565b60405160ff9091168152602001610206565b61031161030c366004611f4b565b6108cc565b60405161020691906121fc565b61022261032c36600461200c565b600090815260056020526040902054151590565b61022261034e36600461200c565b610a2e565b61026d610aa4565b61026d610369366004611ef8565b610b0a565b6101fc61037c366004611ecf565b610b3c565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610206565b6102226103b4366004612024565b610b9e565b61023a610bc9565b61026d6103cf366004611c5f565b610bd8565b6101fc600081565b61026d6103ea366004611e95565b610c2b565b6102226103fd366004611c5f565b610d02565b6101fc61041036600461200c565b60009081526005602052604090205490565b61038e61043036600461200c565b600a602052600090815260409020546001600160a01b031681565b6101fc7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61026d610480366004612024565b610d2e565b610222610493366004611c79565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b61026d6104cf366004611d51565b610d55565b61026d6104e2366004611c5f565b610ddc565b60006001600160a01b0383166105585760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b5060009081526002602090815260408083206001600160a01b03949094168352929052205490565b600061058b82610ea4565b92915050565b6060600680546105a090612498565b80601f01602080910402602001604051908101604052809291908181526020018280546105cc90612498565b80156106195780601f106105ee57610100808354040283529160200191610619565b820191906000526020600020905b8154815290600101906020018083116105fc57829003601f168201915b5050505050905090565b60606004805461063290612498565b80601f016020809104026020016040519081016040528092919081815260200182805461065e90612498565b80156106ab5780601f10610680576101008083540402835291602001916106ab565b820191906000526020600020905b81548152906001019060200180831161068e57829003601f168201915b50505050509050919050565b6106c16000610a2e565b6106dd5760405162461bcd60e51b815260040161054f9061236f565b6106e984848484610ee4565b50505050565b6001600160a01b03851633148061070b575061070b8533610493565b6107725760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b606482015260840161054f565b61077f8585858585610f6c565b5050505050565b600082815260016020819052604090912001546107a38133611127565b6107ad838361118b565b505050565b6001600160a01b03811633146108225760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161054f565b61082c82826111f6565b5050565b61083a6000610a2e565b6108565760405162461bcd60e51b815260040161054f9061236f565b6001600160a01b03821661087c5760405162461bcd60e51b815260040161054f906123b9565b60005b81518110156107ad576108b9838383815181106108ac57634e487b7160e01b600052603260045260246000fd5b6020026020010151610b3c565b50806108c481612500565b91505061087f565b606081518351146109315760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b606482015260840161054f565b6000835167ffffffffffffffff81111561095b57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610984578160200160208202803683370190505b50905060005b8451811015610a26576109eb8582815181106109b657634e487b7160e01b600052603260045260246000fd5b60200260200101518583815181106109de57634e487b7160e01b600052603260045260246000fd5b60200260200101516104e7565b828281518110610a0b57634e487b7160e01b600052603260045260246000fd5b6020908102919091010152610a1f81612500565b905061098a565b509392505050565b6000610a3933610d02565b80610a52575060095460ff166001148015610a52575081155b80610a8f575060095460ff166001148015610a6d5750600082115b8015610a8f57506000828152600a60205260409020546001600160a01b031633145b8061058b57505060095460ff16600214919050565b6000546001600160a01b03163314610afe5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161054f565b610b08600061125d565b565b82610b1481610a2e565b610b305760405162461bcd60e51b815260040161054f9061236f565b61077f858585856112ad565b6000610b486000610a2e565b610b645760405162461bcd60e51b815260040161054f9061236f565b610b6c6112d7565b610b94836008548460405180604001604052806002815260200161060f60f31b8152506112ad565b5060085492915050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600780546105a090612498565b610be26000610a2e565b610bfe5760405162461bcd60e51b815260040161054f9061236f565b610c287f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a682610786565b50565b336001600160a01b0383161415610c965760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b606482015260840161054f565b3360008181526003602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600061058b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a683610b9e565b60008281526001602081905260409091200154610d4b8133611127565b6107ad83836111f6565b6001600160a01b038516331480610d715750610d718533610493565b610dcf5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b606482015260840161054f565b61077f8585858585611304565b6000546001600160a01b03163314610e365760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161054f565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161054f565b610c288161125d565b60006001600160e01b03198216636cdb3d1360e11b1480610ed557506001600160e01b031982166303a24d0760e21b145b8061058b575061058b82611417565b610ef08484848461144c565b60005b835181101561077f5733600a6000868481518110610f2157634e487b7160e01b600052603260045260246000fd5b6020026020010151815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555080610f6590612500565b9050610ef3565b8151835114610f8d5760405162461bcd60e51b815260040161054f90612327565b6001600160a01b038416610fb35760405162461bcd60e51b815260040161054f90612298565b3360005b84518110156110b9576000858281518110610fe257634e487b7160e01b600052603260045260246000fd5b60200260200101519050600085838151811061100e57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015160008481526002835260408082206001600160a01b038e16835290935291909120549091508181101561105f5760405162461bcd60e51b815260040161054f906122dd565b60008381526002602090815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061109e90849061241e565b92505081905550505050806110b290612500565b9050610fb7565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161110992919061220f565b60405180910390a461111f8187878787876114eb565b505050505050565b6111318282610b9e565b61082c57611149816001600160a01b03166014611656565b611154836020611656565b6040516020016111659291906120e4565b60408051601f198184030181529082905262461bcd60e51b825261054f9160040161223d565b6111958282610b9e565b61082c5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6112008282610b9e565b1561082c5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000838152600a6020526040902080546001600160a01b031916331790556106e98484848461183f565b600880549060006112e783612500565b90915550506008546000908152600560205260409020546112d757565b6001600160a01b03841661132a5760405162461bcd60e51b815260040161054f90612298565b60008381526002602090815260408083206001600160a01b038916845290915290205433908381101561136f5760405162461bcd60e51b815260040161054f906122dd565b60008581526002602090815260408083206001600160a01b038b81168552925280832087850390559088168252812080548692906113ae90849061241e565b909155505060408051868152602081018690526001600160a01b03808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461140e828888888888611874565b50505050505050565b60006001600160e01b03198216637965db0b60e01b148061058b57506301ffc9a760e01b6001600160e01b031983161461058b565b6114588484848461193e565b60005b835181101561077f5782818151811061148457634e487b7160e01b600052603260045260246000fd5b6020026020010151600560008684815181106114b057634e487b7160e01b600052603260045260246000fd5b6020026020010151815260200190815260200160002060008282546114d5919061241e565b909155506114e4905081612500565b905061145b565b6001600160a01b0384163b1561111f5760405163bc197c8160e01b81526001600160a01b0385169063bc197c819061152f9089908990889088908890600401612159565b602060405180830381600087803b15801561154957600080fd5b505af1925050508015611579575060408051601f3d908101601f1916820190925261157691810190612062565b60015b61162657611585612547565b806308c379a014156115bf575061159a61255f565b806115a557506115c1565b8060405162461bcd60e51b815260040161054f919061223d565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b606482015260840161054f565b6001600160e01b0319811663bc197c8160e01b1461140e5760405162461bcd60e51b815260040161054f90612250565b60606000611665836002612436565b61167090600261241e565b67ffffffffffffffff81111561169657634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156116c0576020820181803683370190505b509050600360fc1b816000815181106116e957634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061172657634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600061174a846002612436565b61175590600161241e565b90505b60018111156117e9576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061179757634e487b7160e01b600052603260045260246000fd5b1a60f81b8282815181106117bb57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c936117e281612481565b9050611758565b5083156118385760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161054f565b9392505050565b61184b84848484611aa6565b6000838152600560205260408120805484929061186990849061241e565b909155505050505050565b6001600160a01b0384163b1561111f5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906118b890899089908890889088906004016121b7565b602060405180830381600087803b1580156118d257600080fd5b505af1925050508015611902575060408051601f3d908101601f191682019092526118ff91810190612062565b60015b61190e57611585612547565b6001600160e01b0319811663f23a6e6160e01b1461140e5760405162461bcd60e51b815260040161054f90612250565b6001600160a01b0384166119645760405162461bcd60e51b815260040161054f906123b9565b81518351146119855760405162461bcd60e51b815260040161054f90612327565b3360005b8451811015611a3e578381815181106119b257634e487b7160e01b600052603260045260246000fd5b6020026020010151600260008784815181106119de57634e487b7160e01b600052603260045260246000fd5b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254611a26919061241e565b90915550819050611a3681612500565b915050611989565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611a8f92919061220f565b60405180910390a461077f816000878787876114eb565b6001600160a01b038416611acc5760405162461bcd60e51b815260040161054f906123b9565b60008381526002602090815260408083206001600160a01b0388168452909152812080543392859291611b0090849061241e565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461077f81600087878787611874565b80356001600160a01b0381168114611b7757600080fd5b919050565b600082601f830112611b8c578081fd5b81356020611b99826123fa565b604051611ba682826124d3565b8381528281019150858301600585901b87018401881015611bc5578586fd5b855b85811015611be357813584529284019290840190600101611bc7565b5090979650505050505050565b600082601f830112611c00578081fd5b813567ffffffffffffffff811115611c1a57611c1a612531565b604051611c31601f8301601f1916602001826124d3565b818152846020838601011115611c45578283fd5b816020850160208301379081016020019190915292915050565b600060208284031215611c70578081fd5b61183882611b60565b60008060408385031215611c8b578081fd5b611c9483611b60565b9150611ca260208401611b60565b90509250929050565b600080600080600060a08688031215611cc2578081fd5b611ccb86611b60565b9450611cd960208701611b60565b9350604086013567ffffffffffffffff80821115611cf5578283fd5b611d0189838a01611b7c565b94506060880135915080821115611d16578283fd5b611d2289838a01611b7c565b93506080880135915080821115611d37578283fd5b50611d4488828901611bf0565b9150509295509295909350565b600080600080600060a08688031215611d68578081fd5b611d7186611b60565b9450611d7f60208701611b60565b93506040860135925060608601359150608086013567ffffffffffffffff811115611da8578182fd5b611d4488828901611bf0565b60008060408385031215611dc6578182fd5b611dcf83611b60565b9150602083013567ffffffffffffffff811115611dea578182fd5b611df685828601611b7c565b9150509250929050565b60008060008060808587031215611e15578384fd5b611e1e85611b60565b9350602085013567ffffffffffffffff80821115611e3a578485fd5b611e4688838901611b7c565b94506040870135915080821115611e5b578384fd5b611e6788838901611b7c565b93506060870135915080821115611e7c578283fd5b50611e8987828801611bf0565b91505092959194509250565b60008060408385031215611ea7578182fd5b611eb083611b60565b915060208301358015158114611ec4578182fd5b809150509250929050565b60008060408385031215611ee1578182fd5b611eea83611b60565b946020939093013593505050565b60008060008060808587031215611f0d578182fd5b611f1685611b60565b93506020850135925060408501359150606085013567ffffffffffffffff811115611f3f578182fd5b611e8987828801611bf0565b60008060408385031215611f5d578182fd5b823567ffffffffffffffff80821115611f74578384fd5b818501915085601f830112611f87578384fd5b81356020611f94826123fa565b604051611fa182826124d3565b8381528281019150858301600585901b870184018b1015611fc0578889fd5b8896505b84871015611fe957611fd581611b60565b835260019690960195918301918301611fc4565b5096505086013592505080821115611fff578283fd5b50611df685828601611b7c565b60006020828403121561201d578081fd5b5035919050565b60008060408385031215612036578182fd5b82359150611ca260208401611b60565b600060208284031215612057578081fd5b8135611838816125e9565b600060208284031215612073578081fd5b8151611838816125e9565b6000815180845260208085019450808401835b838110156120ad57815187529582019590820190600101612091565b509495945050505050565b600081518084526120d0816020860160208601612455565b601f01601f19169290920160200192915050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161211c816017850160208801612455565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161214d816028840160208801612455565b01602801949350505050565b6001600160a01b0386811682528516602082015260a0604082018190526000906121859083018661207e565b8281036060840152612197818661207e565b905082810360808401526121ab81856120b8565b98975050505050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906121f1908301846120b8565b979650505050505050565b602081526000611838602083018461207e565b604081526000612222604083018561207e565b8281036020840152612234818561207e565b95945050505050565b60208152600061183860208301846120b8565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b6020808252602a908201527f4552433131353559757a753a206d7573742068617665206d696e74657220726f6040820152691b19481d1bc81b5a5b9d60b21b606082015260800190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b600067ffffffffffffffff82111561241457612414612531565b5060051b60200190565b600082198211156124315761243161251b565b500190565b60008160001904831182151516156124505761245061251b565b500290565b60005b83811015612470578181015183820152602001612458565b838111156106e95750506000910152565b6000816124905761249061251b565b506000190190565b600181811c908216806124ac57607f821691505b602082108114156124cd57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8201601f1916810167ffffffffffffffff811182821017156124f9576124f9612531565b6040525050565b60006000198214156125145761251461251b565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600060033d111561255c57600481823e5160e01c5b90565b600060443d101561256d5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561259d57505050505090565b82850191508151818111156125b55750505050505090565b843d87010160208285010111156125cf5750505050505090565b6125de602082860101876124d3565b509095945050505050565b6001600160e01b031981168114610c2857600080fdfea26469706673582212207b496ba91c3ba30214bf3128d8f12904aaf989cb25a93345946034e93feb33d564736f6c634300080400330000000000000000000000006bac26850981928431cf6d0582079219d7ccaf6100000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000003868747470733a2f2f3030303030302e6d6f6e737465722f77702d6a736f6e2f777073632f76312f6e6674313135352f393634392f7b69647d000000000000000000000000000000000000000000000000000000000000000000000000000000123344545249505059534e4f524b454c5a3639000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035053590000000000000000000000000000000000000000000000000000000000