UNPKG

@zoralabs/openzeppelin-contracts-upgradeable

Version:
772 lines 96.1 kB
{ "_format": "hh-sol-artifact-1", "contractName": "ERC721PresetMinterPauserAutoIdUpgradeable", "sourceName": "contracts/token/ERC721/presets/ERC721PresetMinterPauserAutoIdUpgradeable.sol", "abi": [ { "inputs": [], "name": "INITIALIZABLE_CONTRACT_ALREADY_INITIALIZED", "type": "error" }, { "inputs": [], "name": "INITIALIZABLE_CONTRACT_IS_NOT_INITIALIZING", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "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": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "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": [], "name": "PAUSER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getRoleMember", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleMemberCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "string", "name": "baseTokenURI", "type": "string" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "bytecode": "0x608060405234801561001057600080fd5b50614e26806100206000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80636a6278421161010f578063a6487c53116100a2578063d539139311610071578063d5391393146105c7578063d547741f146105e5578063e63ab1e914610601578063e985e9c51461061f576101f0565b8063a6487c531461052f578063b88d4fde1461054b578063c87b56dd14610567578063ca15c87314610597576101f0565b806391d14854116100de57806391d14854146104a757806395d89b41146104d7578063a217fddf146104f5578063a22cb46514610513576101f0565b80636a6278421461042157806370a082311461043d5780638456cb591461046d5780639010d07c14610477576101f0565b80632f745c591161018757806342966c681161015657806342966c68146103875780634f6ccce7146103a35780635c975abb146103d35780636352211e146103f1576101f0565b80632f745c591461031557806336568abe146103455780633f4ba83a1461036157806342842e0e1461036b576101f0565b806318160ddd116101c357806318160ddd1461028f57806323b872dd146102ad578063248a9ca3146102c95780632f2ff15d146102f9576101f0565b806301ffc9a7146101f557806306fdde0314610225578063081812fc14610243578063095ea7b314610273575b600080fd5b61020f600480360381019061020a9190613617565b61064f565b60405161021c919061365f565b60405180910390f35b61022d610661565b60405161023a9190613713565b60405180910390f35b61025d6004803603810190610258919061376b565b6106f3565b60405161026a91906137d9565b60405180910390f35b61028d60048036038101906102889190613820565b610739565b005b610297610850565b6040516102a4919061386f565b60405180910390f35b6102c760048036038101906102c2919061388a565b61085d565b005b6102e360048036038101906102de9190613913565b6108bd565b6040516102f0919061394f565b60405180910390f35b610313600480360381019061030e919061396a565b6108dd565b005b61032f600480360381019061032a9190613820565b6108fe565b60405161033c919061386f565b60405180910390f35b61035f600480360381019061035a919061396a565b6109a3565b005b610369610a26565b005b6103856004803603810190610380919061388a565b610aa0565b005b6103a1600480360381019061039c919061376b565b610ac0565b005b6103bd60048036038101906103b8919061376b565b610b1c565b6040516103ca919061386f565b60405180910390f35b6103db610b8d565b6040516103e8919061365f565b60405180910390f35b61040b6004803603810190610406919061376b565b610ba5565b60405161041891906137d9565b60405180910390f35b61043b600480360381019061043691906139aa565b610c2b565b005b610457600480360381019061045291906139aa565b610cbd565b604051610464919061386f565b60405180910390f35b610475610d74565b005b610491600480360381019061048c91906139d7565b610dee565b60405161049e91906137d9565b60405180910390f35b6104c160048036038101906104bc919061396a565b610e1d565b6040516104ce919061365f565b60405180910390f35b6104df610e88565b6040516104ec9190613713565b60405180910390f35b6104fd610f1a565b60405161050a919061394f565b60405180910390f35b61052d60048036038101906105289190613a43565b610f21565b005b61054960048036038101906105449190613bb8565b610f37565b005b61056560048036038101906105609190613d00565b611075565b005b610581600480360381019061057c919061376b565b6110d7565b60405161058e9190613713565b60405180910390f35b6105b160048036038101906105ac9190613913565b61113f565b6040516105be919061386f565b60405180910390f35b6105cf611163565b6040516105dc919061394f565b60405180910390f35b6105ff60048036038101906105fa919061396a565b611187565b005b6106096111a8565b604051610616919061394f565b60405180910390f35b61063960048036038101906106349190613d83565b6111cc565b604051610646919061365f565b60405180910390f35b600061065a82611260565b9050919050565b606060c9805461067090613df2565b80601f016020809104026020016040519081016040528092919081815260200182805461069c90613df2565b80156106e95780601f106106be576101008083540402835291602001916106e9565b820191906000526020600020905b8154815290600101906020018083116106cc57829003601f168201915b5050505050905090565b60006106fe826112da565b60cd600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061074482610ba5565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ab90613e95565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107d3611325565b73ffffffffffffffffffffffffffffffffffffffff1614806108025750610801816107fc611325565b6111cc565b5b610841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083890613f27565b60405180910390fd5b61084b838361132d565b505050565b600060fd80549050905090565b61086e610868611325565b826113e6565b6108ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a490613fb9565b60405180910390fd5b6108b883838361147b565b505050565b600060656000838152602001908152602001600020600101549050919050565b6108e6826108bd565b6108ef81611774565b6108f98383611788565b505050565b600061090983610cbd565b821061094a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109419061404b565b60405180910390fd5b60fb60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b6109ab611325565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0f906140dd565b60405180910390fd5b610a2282826117bc565b5050565b610a577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a52611325565b610e1d565b610a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8d9061416f565b60405180910390fd5b610a9e6117f0565b565b610abb83838360405180602001604052806000815250611075565b505050565b610ad1610acb611325565b826113e6565b610b10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0790613fb9565b60405180910390fd5b610b1981611854565b50565b6000610b26610850565b8210610b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5e90614201565b60405180910390fd5b60fd8281548110610b7b57610b7a614221565b5b90600052602060002001549050919050565b600061015f60009054906101000a900460ff16905090565b600080610bb1836119a2565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c199061429c565b60405180910390fd5b80915050919050565b610c5c7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610c57611325565b610e1d565b610c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c929061432e565b60405180910390fd5b610caf81610caa6101c36119df565b6119ed565b610cba6101c3611c0a565b50565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d24906143c0565b60405180910390fd5b60cc60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610da57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610da0611325565b610e1d565b610de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddb90614452565b60405180910390fd5b610dec611c20565b565b6000610e158260976000868152602001908152602001600020611c8490919063ffffffff16565b905092915050565b60006065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060ca8054610e9790613df2565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec390613df2565b8015610f105780601f10610ee557610100808354040283529160200191610f10565b820191906000526020600020905b815481529060010190602001808311610ef357829003601f168201915b5050505050905090565b6000801b81565b610f33610f2c611325565b8383611c9e565b5050565b60008060019054906101000a900460ff16159050801580610f6a575060008060009054906101000a900460ff1660ff1614155b8015610f975750610f7a30611e0a565b80610f965750600160008054906101000a900460ff1660ff1614155b5b15610fce576040517f7ab8448200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561100b576001600060016101000a81548160ff0219169083151502179055505b611016848484611e2d565b801561106f5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161106691906144c4565b60405180910390a15b50505050565b611086611080611325565b836113e6565b6110c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bc90613fb9565b60405180910390fd5b6110d184848484611e95565b50505050565b60606110e2826112da565b60006110ec611ef1565b9050600081511161110c5760405180602001604052806000815250611137565b8061111684611f84565b60405160200161112792919061451b565b6040516020818303038152906040525b915050919050565b600061115c60976000848152602001908152602001600020612052565b9050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b611190826108bd565b61119981611774565b6111a383836117bc565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b600060ce60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806112d357506112d282612067565b5b9050919050565b6112e381612149565b611322576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113199061429c565b60405180910390fd5b50565b600033905090565b8160cd600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166113a083610ba5565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806113f283610ba5565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611434575061143381856111cc565b5b8061147257508373ffffffffffffffffffffffffffffffffffffffff1661145a846106f3565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661149b82610ba5565b73ffffffffffffffffffffffffffffffffffffffff16146114f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e8906145b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155790614643565b60405180910390fd5b61156d838383600161218a565b8273ffffffffffffffffffffffffffffffffffffffff1661158d82610ba5565b73ffffffffffffffffffffffffffffffffffffffff16146115e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115da906145b1565b60405180910390fd5b60cd600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600160cc60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550600160cc60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508160cb600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461176f838383600161219c565b505050565b61178581611780611325565b6121a2565b50565b6117928282612227565b6117b7816097600085815260200190815260200160002061230890919063ffffffff16565b505050565b6117c68282612338565b6117eb816097600085815260200190815260200160002061241a90919063ffffffff16565b505050565b6117f861244a565b600061015f60006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61183d611325565b60405161184a91906137d9565b60405180910390a1565b600061185f82610ba5565b905061186f81600084600161218a565b61187882610ba5565b905060cd600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600160cc60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555060cb600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461199e81600084600161219c565b5050565b600060cb600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600081600001549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a53906146af565b60405180910390fd5b611a6581612149565b15611aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9c9061471b565b60405180910390fd5b611ab360008383600161218a565b611abc81612149565b15611afc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af39061471b565b60405180910390fd5b600160cc60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508160cb600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611c0660008383600161219c565b5050565b6001816000016000828254019250508190555050565b611c28612493565b600161015f60006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611c6d611325565b604051611c7a91906137d9565b60405180910390a1565b6000611c9383600001836124dd565b60001c905092915050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0390614787565b60405180910390fd5b8060ce60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611dfd919061365f565b60405180910390a3505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611e73576040517f96bfb10000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e7d8383612508565b611e85612580565b611e908383836125e4565b505050565b611ea084848461147b565b611eac848484846126bd565b611eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee290614819565b60405180910390fd5b50505050565b60606101c48054611f0190613df2565b80601f0160208091040260200160405190810160405280929190818152602001828054611f2d90613df2565b8015611f7a5780601f10611f4f57610100808354040283529160200191611f7a565b820191906000526020600020905b815481529060010190602001808311611f5d57829003601f168201915b5050505050905090565b606060006001611f9384612844565b01905060008167ffffffffffffffff811115611fb257611fb1613a8d565b5b6040519080825280601f01601f191660200182016040528015611fe45781602001600182028036833780820191505090505b509050600082602001820190505b600115612047578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161203b5761203a614839565b5b04945060008503611ff2575b819350505050919050565b600061206082600001612997565b9050919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061213257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806121425750612141826129a8565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff1661216b836119a2565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b61219684848484612a22565b50505050565b50505050565b6121ac8282610e1d565b612223576121b981612a7c565b6121c78360001c6020612aa9565b6040516020016121d8929190614900565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221a9190613713565b60405180910390fd5b5050565b6122318282610e1d565b6123045760016065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506122a9611325565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000612330836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612ce5565b905092915050565b6123428282610e1d565b156124165760006065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506123bb611325565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000612442836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612d55565b905092915050565b612452610b8d565b612491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248890614986565b60405180910390fd5b565b61249b610b8d565b156124db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d2906149f2565b60405180910390fd5b565b60008260000182815481106124f5576124f4614221565b5b9060005260206000200154905092915050565b600060019054906101000a900460ff1661254e576040517f96bfb10000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160c99080519060200190612564929190613508565b508060ca908051906020019061257b929190613508565b505050565b600060019054906101000a900460ff166125c6576040517f96bfb10000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061015f60006101000a81548160ff021916908315150217905550565b600060019054906101000a900460ff1661262a576040517f96bfb10000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806101c49080519060200190612641929190613508565b506126566000801b612651611325565b612e69565b6126877f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6612682611325565b612e69565b6126b87f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6126b3611325565b612e69565b505050565b60006126de8473ffffffffffffffffffffffffffffffffffffffff16611e0a565b15612837578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612707611325565b8786866040518563ffffffff1660e01b81526004016127299493929190614a67565b6020604051808303816000875af192505050801561276557506040513d601f19601f820116820180604052508101906127629190614ac8565b60015b6127e7573d8060008114612795576040519150601f19603f3d011682016040523d82523d6000602084013e61279a565b606091505b5060008151036127df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d690614819565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061283c565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106128a2577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161289857612897614839565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106128df576d04ee2d6d415b85acef810000000083816128d5576128d4614839565b5b0492506020810190505b662386f26fc10000831061290e57662386f26fc10000838161290457612903614839565b5b0492506010810190505b6305f5e1008310612937576305f5e100838161292d5761292c614839565b5b0492506008810190505b612710831061295c57612710838161295257612951614839565b5b0492506004810190505b6064831061297f576064838161297557612974614839565b5b0492506002810190505b600a831061298e576001810190505b80915050919050565b600081600001805490509050919050565b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612a1b5750612a1a82612e77565b5b9050919050565b612a2e84848484612ef1565b612a36610b8d565b15612a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6d90614b67565b60405180910390fd5b50505050565b6060612aa28273ffffffffffffffffffffffffffffffffffffffff16601460ff16612aa9565b9050919050565b606060006002836002612abc9190614bb6565b612ac69190614c10565b67ffffffffffffffff811115612adf57612ade613a8d565b5b6040519080825280601f01601f191660200182016040528015612b115781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612b4957612b48614221565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612bad57612bac614221565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002612bed9190614bb6565b612bf79190614c10565b90505b6001811115612c97577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110612c3957612c38614221565b5b1a60f81b828281518110612c5057612c4f614221565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080612c9090614c66565b9050612bfa565b5060008414612cdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd290614cdb565b60405180910390fd5b8091505092915050565b6000612cf1838361304f565b612d4a578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050612d4f565b600090505b92915050565b60008083600101600084815260200190815260200160002054905060008114612e5d576000600182612d879190614cfb565b9050600060018660000180549050612d9f9190614cfb565b9050818114612e0e576000866000018281548110612dc057612dbf614221565b5b9060005260206000200154905080876000018481548110612de457612de3614221565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b85600001805480612e2257612e21614d2f565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050612e63565b60009150505b92915050565b612e738282611788565b5050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612eea5750612ee982613072565b5b9050919050565b612efd848484846130dc565b6001811115612f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3890614dd0565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612f8857612f8381613202565b612fc7565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612fc657612fc5858261324b565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361300957613004816133b8565b613048565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614613047576130468482613489565b5b5b5050505050565b600080836001016000848152602001908152602001600020541415905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60018111156131fc57600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614613170578060cc60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546131689190614cfb565b925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146131fb578060cc60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546131f39190614c10565b925050819055505b5b50505050565b60fd8054905060fe60008381526020019081526020016000208190555060fd81908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161325884610cbd565b6132629190614cfb565b9050600060fc600084815260200190815260200160002054905081811461334757600060fb60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000205490508060fb60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020819055508160fc600083815260200190815260200160002081905550505b60fc60008481526020019081526020016000206000905560fb60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160fd805490506133cc9190614cfb565b9050600060fe6000848152602001908152602001600020549050600060fd83815481106133fc576133fb614221565b5b906000526020600020015490508060fd838154811061341e5761341d614221565b5b90600052602060002001819055508160fe60008381526020019081526020016000208190555060fe60008581526020019081526020016000206000905560fd80548061346d5761346c614d2f565b5b6001900381819060005260206000200160009055905550505050565b600061349483610cbd565b90508160fb60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020819055508060fc600084815260200190815260200160002081905550505050565b82805461351490613df2565b90600052602060002090601f016020900481019282613536576000855561357d565b82601f1061354f57805160ff191683800117855561357d565b8280016001018555821561357d579182015b8281111561357c578251825591602001919060010190613561565b5b50905061358a919061358e565b5090565b5b808211156135a757600081600090555060010161358f565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6135f4816135bf565b81146135ff57600080fd5b50565b600081359050613611816135eb565b92915050565b60006020828403121561362d5761362c6135b5565b5b600061363b84828501613602565b91505092915050565b60008115159050919050565b61365981613644565b82525050565b60006020820190506136746000830184613650565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156136b4578082015181840152602081019050613699565b838111156136c3576000848401525b50505050565b6000601f19601f8301169050919050565b60006136e58261367a565b6136ef8185613685565b93506136ff818560208601613696565b613708816136c9565b840191505092915050565b6000602082019050818103600083015261372d81846136da565b905092915050565b6000819050919050565b61374881613735565b811461375357600080fd5b50565b6000813590506137658161373f565b92915050565b600060208284031215613781576137806135b5565b5b600061378f84828501613756565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006137c382613798565b9050919050565b6137d3816137b8565b82525050565b60006020820190506137ee60008301846137ca565b92915050565b6137fd816137b8565b811461380857600080fd5b50565b60008135905061381a816137f4565b92915050565b60008060408385031215613837576138366135b5565b5b60006138458582860161380b565b925050602061385685828601613756565b9150509250929050565b61386981613735565b82525050565b60006020820190506138846000830184613860565b92915050565b6000806000606084860312156138a3576138a26135b5565b5b60006138b18682870161380b565b93505060206138c28682870161380b565b92505060406138d386828701613756565b9150509250925092565b6000819050919050565b6138f0816138dd565b81146138fb57600080fd5b50565b60008135905061390d816138e7565b92915050565b600060208284031215613929576139286135b5565b5b6000613937848285016138fe565b91505092915050565b613949816138dd565b82525050565b60006020820190506139646000830184613940565b92915050565b60008060408385031215613981576139806135b5565b5b600061398f858286016138fe565b92505060206139a08582860161380b565b9150509250929050565b6000602082840312156139c0576139bf6135b5565b5b60006139ce8482850161380b565b91505092915050565b600080604083850312156139ee576139ed6135b5565b5b60006139fc858286016138fe565b9250506020613a0d85828601613756565b9150509250929050565b613a2081613644565b8114613a2b57600080fd5b50565b600081359050613a3d81613a17565b92915050565b60008060408385031215613a5a57613a596135b5565b5b6000613a688582860161380b565b9250506020613a7985828601613a2e565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613ac5826136c9565b810181811067ffffffffffffffff82111715613ae457613ae3613a8d565b5b80604052505050565b6000613af76135ab565b9050613b038282613abc565b919050565b600067ffffffffffffffff821115613b2357613b22613a8d565b5b613b2c826136c9565b9050602081019050919050565b82818337600083830152505050565b6000613b5b613b5684613b08565b613aed565b905082815260208101848484011115613b7757613b76613a88565b5b613b82848285613b39565b509392505050565b600082601f830112613b9f57613b9e613a83565b5b8135613baf848260208601613b48565b91505092915050565b600080600060608486031215613bd157613bd06135b5565b5b600084013567ffffffffffffffff811115613bef57613bee6135ba565b5b613bfb86828701613b8a565b935050602084013567ffffffffffffffff811115613c1c57613c1b6135ba565b5b613c2886828701613b8a565b925050604084013567ffffffffffffffff811115613c4957613c486135ba565b5b613c5586828701613b8a565b9150509250925092565b600067ffffffffffffffff821115613c7a57613c79613a8d565b5b613c83826136c9565b9050602081019050919050565b6000613ca3613c9e84613c5f565b613aed565b905082815260208101848484011115613cbf57613cbe613a88565b5b613cca848285613b39565b509392505050565b600082601f830112613ce757613ce6613a83565b5b8135613cf7848260208601613c90565b91505092915050565b60008060008060808587031215613d1a57613d196135b5565b5b6000613d288782880161380b565b9450506020613d398782880161380b565b9350506040613d4a87828801613756565b925050606085013567ffffffffffffffff811115613d6b57613d6a6135ba565b5b613d7787828801613cd2565b91505092959194509250565b60008060408385031215613d9a57613d996135b5565b5b6000613da88582860161380b565b9250506020613db98582860161380b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613e0a57607f821691505b602082108103613e1d57613e1c613dc3565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e7f602183613685565b9150613e8a82613e23565b604082019050919050565b60006020820190508181036000830152613eae81613e72565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000613f11603d83613685565b9150613f1c82613eb5565b604082019050919050565b60006020820190508181036000830152613f4081613f04565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b6000613fa3602d83613685565b9150613fae82613f47565b604082019050919050565b60006020820190508181036000830152613fd281613f96565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000614035602b83613685565b915061404082613fd9565b604082019050919050565b6000602082019050818103600083015261406481614028565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b60006140c7602f83613685565b91506140d28261406b565b604082019050919050565b600060208201905081810360008301526140f6816140ba565b9050919050565b7f4552433732315072657365744d696e7465725061757365724175746f49643a2060008201527f6d75737420686176652070617573657220726f6c6520746f20756e7061757365602082015250565b6000614159604083613685565b9150614164826140fd565b604082019050919050565b600060208201905081810360008301526141888161414c565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b60006141eb602c83613685565b91506141f68261418f565b604082019050919050565b6000602082019050818103600083015261421a816141de565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a20696e76