[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721IncorrectOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721InsufficientApproval", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC721InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC721InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721InvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC721InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC721InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721NonexistentToken", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "ReentrancyGuardReentrantCall", "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": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferStarted", "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": "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": "string", "name": "_uri", "type": "string" } ], "name": "UpdatedUri", "type": "event" }, { "inputs": [], "name": "acceptOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_allowedTransferTimeInSeconds", "type": "uint256" } ], "name": "approveTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "approvedTransfers", "outputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "transferExpiryDate", "type": "uint256" }, { "internalType": "address", "name": "to", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseUri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "batchMintInFibonacci", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "controlledTransfers", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "core", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "disableControlledTransfers", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "enableControlledTransfers", "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": [], "name": "initialMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "initialMintCalled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "onERC721Received", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "pendingOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "previousFibonacci", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "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": "string", "name": "_uri", "type": "string" } ], "name": "setBaseUri", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_core", "type": "address" } ], "name": "setCoreContract", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_treasury", "type": "address" } ], "name": "setTreasuryContract", "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": [], "name": "tokenId", "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": "totalTokensBurnt", "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": [ { "internalType": "uint256[]", "name": "_tokenIds", "type": "uint256[]" }, { "internalType": "address", "name": "_recipient", "type": "address" } ], "name": "transferNFTs", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "treasury", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b503360405180604001604052806006815260200165141cde53919560d21b8152506040518060400160405280600381526020016250535960e81b81525081600090816200005f9190620001e4565b5060016200006e8282620001e4565b5050506001600160a01b038116620000a057604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000ab81620000cf565b506001600855600d805460ff60a81b1916600160a81b1790556002600a55620002b0565b600780546001600160a01b0319169055620000ea81620000ed565b50565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200016a57607f821691505b6020821081036200018b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001df57600081815260208120601f850160051c81016020861015620001ba5750805b601f850160051c820191505b81811015620001db57828155600101620001c6565b5050505b505050565b81516001600160401b038111156200020057620002006200013f565b620002188162000211845462000155565b8462000191565b602080601f831160018114620002505760008415620002375750858301515b600019600386901b1c1916600185901b178555620001db565b600085815260208120601f198616915b82811015620002815788860151825594840194600190910190840162000260565b5085821015620002a05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612ff080620002c06000396000f3fe608060405234801561001057600080fd5b50600436106102925760003560e01c80638da5cb5b11610160578063c44010b9116100d8578063e985e9c51161008c578063f2f4eb2611610071578063f2f4eb2614610648578063f2fde38b14610668578063fbf6b7801461067b57600080fd5b8063e985e9c5146105f7578063ef530a921461064057600080fd5b8063c87b56dd116100bd578063c87b56dd146105b3578063e30c3978146105c6578063e75125a1146105e457600080fd5b8063c44010b91461052a578063c6266693146105a057600080fd5b8063a0bcfc7f1161012f578063a681c2e911610114578063a681c2e9146104e9578063b88d4fde146104f2578063bb3d33b71461050557600080fd5b8063a0bcfc7f146104c3578063a22cb465146104d657600080fd5b80638da5cb5b1461048d57806395d89b41146104ab5780639abc8320146104b35780639fc5ce2a146104bb57600080fd5b806342966c681161020e578063715018a6116101c257806374594e7d116101a757806374594e7d1461044c57806379ba5097146104725780637b3aba2a1461047a57600080fd5b8063715018a61461043c578063739cd9ff1461044457600080fd5b806361d027b3116101f357806361d027b3146103f65780636352211e1461041657806370a082311461042957600080fd5b806342966c68146103da578063455f6f31146103ed57600080fd5b8063150b7a02116102655780631ed651101161024a5780631ed65110146103a157806323b872dd146103b457806342842e0e146103c757600080fd5b8063150b7a021461032157806317d70f7c1461038a57600080fd5b806301ffc9a71461029757806306fdde03146102bf578063081812fc146102d4578063095ea7b31461030c575b600080fd5b6102aa6102a53660046127b4565b610683565b60405190151581526020015b60405180910390f35b6102c7610768565b6040516102b6919061283f565b6102e76102e2366004612852565b6107fa565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102b6565b61031f61031a366004612894565b610830565b005b61035961032f3660046128be565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016102b6565b61039360095481565b6040519081526020016102b6565b61031f6103af366004612959565b61083f565b61031f6103c2366004612974565b610936565b61031f6103d5366004612974565b610aa2565b61031f6103e8366004612852565b610abd565b610393600b5481565b600d546102e79073ffffffffffffffffffffffffffffffffffffffff1681565b6102e7610424366004612852565b610b5f565b610393610437366004612959565b610b6a565b61031f610be5565b61031f610bf9565b600d546102aa907501000000000000000000000000000000000000000000900460ff1681565b61031f610cef565b61031f6104883660046129b0565b610d63565b60065473ffffffffffffffffffffffffffffffffffffffff166102e7565b6102c7610fa7565b6102c7610fb6565b61031f611044565b61031f6104d1366004612ac9565b6111ec565b61031f6104e4366004612b12565b61123b565b610393600a5481565b61031f610500366004612b4e565b611246565b600d546102aa9074010000000000000000000000000000000000000000900460ff1681565b61056f610538366004612852565b600f6020526000908152604090208054600182015460029092015490919073ffffffffffffffffffffffffffffffffffffffff1683565b60408051938452602084019290925273ffffffffffffffffffffffffffffffffffffffff16908201526060016102b6565b61031f6105ae366004612959565b611263565b6102c76105c1366004612852565b611355565b60075473ffffffffffffffffffffffffffffffffffffffff166102e7565b61031f6105f2366004612bca565b6113bd565b6102aa610605366004612c82565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b61031f6115b4565b600c546102e79073ffffffffffffffffffffffffffffffffffffffff1681565b61031f610676366004612959565b61175d565b61031f61180d565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061071657507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061076257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606000805461077790612cb5565b80601f01602080910402602001604051908101604052809291908181526020018280546107a390612cb5565b80156107f05780601f106107c5576101008083540402835291602001916107f0565b820191906000526020600020905b8154815290600101906020018083116107d357829003601f168201915b5050505050905090565b6000610805826118ea565b5060008281526004602052604090205473ffffffffffffffffffffffffffffffffffffffff16610762565b61083b828233611949565b5050565b610847611956565b73ffffffffffffffffffffffffffffffffffffffff81166108ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f5073794e46543a2054726561737572792043616e6e6f74204265205a65726f2060448201527f416464726573730000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b600d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600d547501000000000000000000000000000000000000000000900460ff16801561097f57503061096682610b5f565b73ffffffffffffffffffffffffffffffffffffffff1614155b15610a92576000818152600f602052604090206002015473ffffffffffffffffffffffffffffffffffffffff838116911614610a17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f5073794e46543a20496e636f727265637420526563656976657200000000000060448201526064016108e6565b6000818152600f6020526040902060010154421115610a92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5073794e46543a20417070726f76616c2045787069726564000000000000000060448201526064016108e6565b610a9d8383836119a9565b505050565b610a9d83838360405180602001604052806000815250611246565b600d5473ffffffffffffffffffffffffffffffffffffffff163314610b3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f5073794e46543a2043616c6c6572204973204e6f74205472656173757279000060448201526064016108e6565b600b8054906000610b4e83612d37565b9190505550610b5c81611a94565b50565b6000610762826118ea565b600073ffffffffffffffffffffffffffffffffffffffff8216610bbc576040517f89c62b64000000000000000000000000000000000000000000000000000000008152600060048201526024016108e6565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b610bed611956565b610bf76000611af5565b565b610c01611956565b600d547501000000000000000000000000000000000000000000900460ff1615610cad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f5073794e46543a20436f6e74726f6c6c6564205472616e736665727320416c7260448201527f6561647920456e61626c6564000000000000000000000000000000000000000060648201526084016108e6565b600d80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000179055565b600754339073ffffffffffffffffffffffffffffffffffffffff168114610d5a576040517f118cdaa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024016108e6565b610b5c81611af5565b600c5473ffffffffffffffffffffffffffffffffffffffff163314610e0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f5073794e46543a2043616c6c6572204e6f7420436f72654c6f67696320436f6e60448201527f747261637400000000000000000000000000000000000000000000000000000060648201526084016108e6565b6009548310610e75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f5073794e46543a204e6f6e204578697374656e7420546f6b656e00000000000060448201526064016108e6565b6000838152600f60205260409020600101544211610f15576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5073794e46543a205472616e7366657220526571756573742043757272656e7460448201527f6c7920416374697665000000000000000000000000000000000000000000000060648201526084016108e6565b60405180606001604052808481526020018242610f329190612d6f565b815273ffffffffffffffffffffffffffffffffffffffff9384166020918201526000948552600f815260409485902082518155908201516001820155930151600290930180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169390921692909217905550565b60606001805461077790612cb5565b600e8054610fc390612cb5565b80601f0160208091040260200160405190810160405280929190818152602001828054610fef90612cb5565b801561103c5780601f106110115761010080835404028352916020019161103c565b820191906000526020600020905b81548152906001019060200180831161101f57829003601f168201915b505050505081565b600c5473ffffffffffffffffffffffffffffffffffffffff1633146110eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f5073794e46543a2043616c6c6572204e6f7420436f72654c6f67696320436f6e60448201527f747261637400000000000000000000000000000000000000000000000000000060648201526084016108e6565b6110f3611b26565b600d5474010000000000000000000000000000000000000000900460ff1615611178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f5073794e46543a20496e697469616c204d696e7420436f6d706c65746500000060448201526064016108e6565b600d80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905560005b60038110156111df576111cd3082611b69565b806111d781612d37565b9150506111ba565b600955610bf76001600855565b6111f4611956565b600e6112008282612dd0565b507fe1f739a9d03bfb128b4811418f7749f0be3f9420568083bdce9d26b84cdfdaef81604051611230919061283f565b60405180910390a150565b61083b338383611b83565b611251848484610936565b61125d84848484611c80565b50505050565b61126b611956565b73ffffffffffffffffffffffffffffffffffffffff811661130e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f5073794e46543a20436f72654c6f6769632043616e6e6f74204265205a65726f60448201527f204164647265737300000000000000000000000000000000000000000000000060648201526084016108e6565b600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6060611360826118ea565b50600061136b611e77565b9050600081511161138b57604051806020016040528060008152506113b6565b8061139584611e86565b6040516020016113a6929190612eea565b6040516020818303038152906040525b9392505050565b600c5473ffffffffffffffffffffffffffffffffffffffff163314611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f5073794e46543a2043616c6c6572204e6f7420436f72654c6f67696320436f6e60448201527f747261637400000000000000000000000000000000000000000000000000000060648201526084016108e6565b73ffffffffffffffffffffffffffffffffffffffff8116611507576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f5073794e46543a20526563697069656e742043616e6e6f74204265205a65726f60448201527f204164647265737300000000000000000000000000000000000000000000000060648201526084016108e6565b8151600003611572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5073794e46543a20546f6b656e20417272617920456d7074790000000000000060448201526064016108e6565b60005b8251811015610a9d576115a2308385848151811061159557611595612f19565b6020026020010151611f44565b806115ac81612d37565b915050611575565b600c5473ffffffffffffffffffffffffffffffffffffffff16331461165b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f5073794e46543a2043616c6c6572204e6f7420436f72654c6f67696320436f6e60448201527f747261637400000000000000000000000000000000000000000000000000000060648201526084016108e6565b611663611b26565b600d5474010000000000000000000000000000000000000000900460ff1661170d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f5073794e46543a20496e697469616c204d696e74204e6f7420436f6d706c657460448201527f656400000000000000000000000000000000000000000000000000000000000060648201526084016108e6565b600a80546009549091555b80156117525761172a30600954611b69565b6009805490600061173a83612d37565b9190505550808061174a90612f48565b915050611718565b50610bf76001600855565b611765611956565b6007805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556117c860065473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b611815611956565b600d547501000000000000000000000000000000000000000000900460ff166118c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f5073794e46543a20436f6e74726f6c6c6564205472616e736665727320416c7260448201527f656164792044697361626c65640000000000000000000000000000000000000060648201526084016108e6565b600d80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610762576040517f7e273289000000000000000000000000000000000000000000000000000000008152600481018490526024016108e6565b610a9d8383836001611f5f565b60065473ffffffffffffffffffffffffffffffffffffffff163314610bf7576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016108e6565b73ffffffffffffffffffffffffffffffffffffffff82166119f9576040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600060048201526024016108e6565b6000611a0683833361212a565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461125d576040517f64283d7b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808616600483015260248201849052821660448201526064016108e6565b6000611aa3600083600061212a565b905073ffffffffffffffffffffffffffffffffffffffff811661083b576040517f7e273289000000000000000000000000000000000000000000000000000000008152600481018390526024016108e6565b600780547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055610b5c816122a7565b600260085403611b62576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600855565b61083b82826040518060200160405280600081525061231e565b73ffffffffffffffffffffffffffffffffffffffff8216611be8576040517f5b08ba1800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024016108e6565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83163b1561125d576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063150b7a0290611cf5903390889087908790600401612f7d565b6020604051808303816000875af1925050508015611d4e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611d4b91810190612fc6565b60015b611ddd573d808015611d7c576040519150601f19603f3d011682016040523d82523d6000602084013e611d81565b606091505b508051600003611dd5576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016108e6565b805181602001fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167f150b7a020000000000000000000000000000000000000000000000000000000014611e70576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016108e6565b5050505050565b6060600e805461077790612cb5565b60606000611e9383612335565b600101905060008167ffffffffffffffff811115611eb357611eb36129d5565b6040519080825280601f01601f191660200182016040528015611edd576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084611ee757509392505050565b610a9d83838360405180602001604052806000815250612417565b8080611f80575073ffffffffffffffffffffffffffffffffffffffff821615155b156120d5576000611f90846118ea565b905073ffffffffffffffffffffffffffffffffffffffff831615801590611fe357508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015612022575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209387168352929052205460ff16155b15612071576040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024016108e6565b81156120d357838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008281526002602052604081205473ffffffffffffffffffffffffffffffffffffffff9081169083161561216457612164818486612422565b73ffffffffffffffffffffffffffffffffffffffff8116156121da5761218e600085600080611f5f565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190555b73ffffffffffffffffffffffffffffffffffffffff8516156122235773ffffffffffffffffffffffffffffffffffffffff85166000908152600360205260409020805460010190555b60008481526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff89811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61232883836124d2565b610a9d6000848484611c80565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061237e577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106123aa576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106123c857662386f26fc10000830492506010015b6305f5e10083106123e0576305f5e100830492506008015b61271083106123f457612710830492506004015b60648310612406576064830492506002015b600a83106107625760010192915050565b611251848484612583565b61242d8383836126bf565b610a9d5773ffffffffffffffffffffffffffffffffffffffff8316612481576040517f7e273289000000000000000000000000000000000000000000000000000000008152600481018290526024016108e6565b6040517f177e802f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602481018290526044016108e6565b73ffffffffffffffffffffffffffffffffffffffff8216612522576040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600060048201526024016108e6565b60006125308383600061212a565b905073ffffffffffffffffffffffffffffffffffffffff811615610a9d576040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600060048201526024016108e6565b73ffffffffffffffffffffffffffffffffffffffff82166125d3576040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600060048201526024016108e6565b60006125e18383600061212a565b905073ffffffffffffffffffffffffffffffffffffffff8116612633576040517f7e273289000000000000000000000000000000000000000000000000000000008152600481018390526024016108e6565b8373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461125d576040517f64283d7b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808616600483015260248201849052821660448201526064016108e6565b600073ffffffffffffffffffffffffffffffffffffffff83161580159061277e57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061274d575073ffffffffffffffffffffffffffffffffffffffff80851660009081526005602090815260408083209387168352929052205460ff165b8061277e575060008281526004602052604090205473ffffffffffffffffffffffffffffffffffffffff8481169116145b949350505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610b5c57600080fd5b6000602082840312156127c657600080fd5b81356113b681612786565b60005b838110156127ec5781810151838201526020016127d4565b50506000910152565b6000815180845261280d8160208601602086016127d1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006113b660208301846127f5565b60006020828403121561286457600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461288f57600080fd5b919050565b600080604083850312156128a757600080fd5b6128b08361286b565b946020939093013593505050565b6000806000806000608086880312156128d657600080fd5b6128df8661286b565b94506128ed6020870161286b565b935060408601359250606086013567ffffffffffffffff8082111561291157600080fd5b818801915088601f83011261292557600080fd5b81358181111561293457600080fd5b89602082850101111561294657600080fd5b9699959850939650602001949392505050565b60006020828403121561296b57600080fd5b6113b68261286b565b60008060006060848603121561298957600080fd5b6129928461286b565b92506129a06020850161286b565b9150604084013590509250925092565b6000806000606084860312156129c557600080fd5b833592506129a06020850161286b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612a4b57612a4b6129d5565b604052919050565b600067ffffffffffffffff831115612a6d57612a6d6129d5565b612a9e60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601612a04565b9050828152838383011115612ab257600080fd5b828260208301376000602084830101529392505050565b600060208284031215612adb57600080fd5b813567ffffffffffffffff811115612af257600080fd5b8201601f81018413612b0357600080fd5b61277e84823560208401612a53565b60008060408385031215612b2557600080fd5b612b2e8361286b565b915060208301358015158114612b4357600080fd5b809150509250929050565b60008060008060808587031215612b6457600080fd5b612b6d8561286b565b9350612b7b6020860161286b565b925060408501359150606085013567ffffffffffffffff811115612b9e57600080fd5b8501601f81018713612baf57600080fd5b612bbe87823560208401612a53565b91505092959194509250565b60008060408385031215612bdd57600080fd5b823567ffffffffffffffff80821115612bf557600080fd5b818501915085601f830112612c0957600080fd5b8135602082821115612c1d57612c1d6129d5565b8160051b9250612c2e818401612a04565b8281529284018101928181019089851115612c4857600080fd5b948201945b84861015612c6657853582529482019490820190612c4d565b9650612c75905087820161286b565b9450505050509250929050565b60008060408385031215612c9557600080fd5b612c9e8361286b565b9150612cac6020840161286b565b90509250929050565b600181811c90821680612cc957607f821691505b602082108103612d02577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612d6857612d68612d08565b5060010190565b8082018082111561076257610762612d08565b601f821115610a9d57600081815260208120601f850160051c81016020861015612da95750805b601f850160051c820191505b81811015612dc857828155600101612db5565b505050505050565b815167ffffffffffffffff811115612dea57612dea6129d5565b612dfe81612df88454612cb5565b84612d82565b602080601f831160018114612e515760008415612e1b5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612dc8565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015612e9e57888601518255948401946001909101908401612e7f565b5085821015612eda57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60008351612efc8184602088016127d1565b835190830190612f108183602088016127d1565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081612f5757612f57612d08565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152612fbc60808301846127f5565b9695505050505050565b600060208284031215612fd857600080fd5b81516113b68161278656fea164736f6c6343000814000a