/* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ import { Signer, Contract, ContractFactory, Overrides } from "ethers"; import { Provider, TransactionRequest } from "@ethersproject/providers"; import type { UFOGees } from "../UFOGees"; export class UFOGees__factory extends ContractFactory { constructor(signer?: Signer) { super(_abi, _bytecode, signer); } deploy( overrides?: Overrides & { from?: string | Promise } ): Promise { return super.deploy(overrides || {}) as Promise; } getDeployTransaction( overrides?: Overrides & { from?: string | Promise } ): TransactionRequest { return super.getDeployTransaction(overrides || {}); } attach(address: string): UFOGees { return super.attach(address) as UFOGees; } connect(signer: Signer): UFOGees__factory { return super.connect(signer) as UFOGees__factory; } static connect( address: string, signerOrProvider: Signer | Provider ): UFOGees { return new Contract(address, _abi, signerOrProvider) as UFOGees; } } const _abi = [ { inputs: [], stateMutability: "nonpayable", type: "constructor", }, { 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: "wallet", type: "address", }, { indexed: false, internalType: "uint256", name: "amount", type: "uint256", }, { indexed: false, internalType: "uint256", name: "mintType", type: "uint256", }, ], name: "MintEvent", 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: "from", type: "address", }, { indexed: true, internalType: "address", name: "to", type: "address", }, { indexed: true, internalType: "uint256", name: "tokenId", type: "uint256", }, ], name: "Transfer", type: "event", }, { inputs: [], name: "DEFAULT_ADMIN_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: "address", name: "newOwner", type: "address", }, ], name: "changeOwner", 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: "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: "maxTotalSupply", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "merkleRootGroup", outputs: [ { internalType: "bytes32", name: "", type: "bytes32", }, ], stateMutability: "view", 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: [ { internalType: "uint256", name: "tokenId", type: "uint256", }, ], name: "ownerOf", outputs: [ { internalType: "address", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "amount", type: "uint256", }, { internalType: "bytes32[]", name: "proof", type: "bytes32[]", }, ], name: "presale", outputs: [], stateMutability: "payable", type: "function", }, { inputs: [], name: "presaleStartTime", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "presaleState", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "presaleSupply", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "pricePerToken", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "publicState", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "amount", type: "uint256", }, ], name: "publicsale", outputs: [], stateMutability: "payable", 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: "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: "baseURI", type: "string", }, ], name: "setBaseURI", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "bytes32", name: "newRootGroup", type: "bytes32", }, ], name: "setMerkleRoot", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "string", name: "placeholderURI", type: "string", }, ], name: "setPlaceholderURI", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "bool", name: "newState", type: "bool", }, ], name: "setPresaleState", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint256", name: "newPrice", type: "uint256", }, ], name: "setPrice", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "bool", name: "newState", type: "bool", }, ], name: "setPublicState", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "bool", name: "show", type: "bool", }, ], name: "setShowArtwork", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "showArtwork", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", 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: [ { internalType: "address", name: "newOwner", type: "address", }, ], name: "transferOwnership", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint256", name: "time", type: "uint256", }, ], name: "updatePresaleStartTime", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "withdraw", outputs: [], stateMutability: "nonpayable", type: "function", }, ]; const _bytecode = "0x608060405260008080556001819055612710600b55662386f26fc10000600c55600d805460ff19908116909155600e919091556011805490911660031790556015805461ffff191690553480156200005657600080fd5b5060408051808201825260078082526655464f4745455360c81b6020808401828152855180870190965292855284015281519192916200009991600291620002a2565b508051620000af906003906020840190620002a2565b505050620000cc620000c6620000e360201b60201c565b620000e7565b620000d960003362000139565b42600f5562000385565b3390565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62000145828262000149565b5050565b6200016082826200018c60201b62001f291760201c565b6000828152600a602090815260409091206200018791839062001fcb62000230821b17901c565b505050565b60008281526009602090815260408083206001600160a01b038516845290915290205460ff16620001455760008281526009602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620001ec3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600062000247836001600160a01b03841662000250565b90505b92915050565b600081815260018301602052604081205462000299575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200024a565b5060006200024a565b828054620002b09062000348565b90600052602060002090601f016020900481019282620002d457600085556200031f565b82601f10620002ef57805160ff19168380011785556200031f565b828001600101855582156200031f579182015b828111156200031f57825182559160200191906001019062000302565b506200032d92915062000331565b5090565b5b808211156200032d576000815560010162000332565b600181811c908216806200035d57607f821691505b602082108114156200037f57634e487b7160e01b600052602260045260246000fd5b50919050565b613a7980620003956000396000f3fe6080604052600436106103135760003560e01c80638da5cb5b1161019a578063b3a196e9116100e1578063ca15c8731161008a578063ecdd42c211610064578063ecdd42c2146108d1578063f2fde38b146108f1578063f6252c5a1461091157600080fd5b8063ca15c87314610848578063d547741f14610868578063e985e9c51461088857600080fd5b8063c13bd95c116100bb578063c13bd95c146107f5578063c48156af14610808578063c87b56dd1461082857600080fd5b8063b3a196e91461079f578063b88d4fde146107b5578063bce4d6ae146107d557600080fd5b8063a217fddf11610143578063a82524b21161011d578063a82524b21461074a578063a9f36edc14610760578063abfe76141461078057600080fd5b8063a217fddf146106f5578063a22cb4651461070a578063a6f9dae11461072a57600080fd5b806391d148541161017457806391d148541461068457806395d89b41146106ca57806398389dc5146106df57600080fd5b80638da5cb5b146106265780639010d07c1461064457806391b7f5ed1461066457600080fd5b806336568abe1161025e5780636352211e116102075780637b1b1de6116101e15780637b1b1de6146105d65780637cb64759146105ec57806385f186b11461060c57600080fd5b80636352211e1461058157806370a08231146105a1578063715018a6146105c157600080fd5b806342966c681161023857806342966c68146105215780634f6ccce71461054157806355f804b31461056157600080fd5b806336568abe146104cc5780633ccfd60b146104ec57806342842e0e1461050157600080fd5b806323b872dd116102c05780632f2ff15d1161029a5780632f2ff15d1461046c5780632f745c591461048c5780633574a2dd146104ac57600080fd5b806323b872dd14610406578063248a9ca3146104265780632ab4d0521461045657600080fd5b8063095ea7b3116102f1578063095ea7b3146103a75780630d0c31b7146103c957806318160ddd146103e357600080fd5b806301ffc9a71461031857806306fdde031461034d578063081812fc1461036f575b600080fd5b34801561032457600080fd5b50610338610333366004613644565b610924565b60405190151581526020015b60405180910390f35b34801561035957600080fd5b50610362610935565b604051610344919061387a565b34801561037b57600080fd5b5061038f61038a3660046135e6565b6109c7565b6040516001600160a01b039091168152602001610344565b3480156103b357600080fd5b506103c76103c23660046135a1565b610a65565b005b3480156103d557600080fd5b506015546103389060ff1681565b3480156103ef57600080fd5b506103f8610b98565b604051908152602001610344565b34801561041257600080fd5b506103c76104213660046134bf565b610baf565b34801561043257600080fd5b506103f86104413660046135e6565b60009081526009602052604090206001015490565b34801561046257600080fd5b506103f8600b5481565b34801561047857600080fd5b506103c76104873660046135ff565b610bba565b34801561049857600080fd5b506103f86104a73660046135a1565b610bdf565b3480156104b857600080fd5b506103c76104c736600461367e565b610d99565b3480156104d857600080fd5b506103c76104e73660046135ff565b610e0a565b3480156104f857600080fd5b506103c7610e92565b34801561050d57600080fd5b506103c761051c3660046134bf565b610f7f565b34801561052d57600080fd5b506103c761053c3660046135e6565b610f9a565b34801561054d57600080fd5b506103f861055c3660046135e6565b61106c565b34801561056d57600080fd5b506103c761057c36600461367e565b611174565b34801561058d57600080fd5b5061038f61059c3660046135e6565b6111e1565b3480156105ad57600080fd5b506103f86105bc366004613471565b6111f3565b3480156105cd57600080fd5b506103c7611297565b3480156105e257600080fd5b506103f8600c5481565b3480156105f857600080fd5b506103c76106073660046135e6565b6112fd565b34801561061857600080fd5b50600d546103389060ff1681565b34801561063257600080fd5b506008546001600160a01b031661038f565b34801561065057600080fd5b5061038f61065f366004613622565b611359565b34801561067057600080fd5b506103c761067f3660046135e6565b611378565b34801561069057600080fd5b5061033861069f3660046135ff565b60009182526009602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156106d657600080fd5b506103626113d4565b3480156106eb57600080fd5b506103f860105481565b34801561070157600080fd5b506103f8600081565b34801561071657600080fd5b506103c7610725366004613577565b6113e3565b34801561073657600080fd5b506103c7610745366004613471565b6114a8565b34801561075657600080fd5b506103f8600f5481565b34801561076c57600080fd5b506103c761077b3660046135cb565b611521565b34801561078c57600080fd5b5060155461033890610100900460ff1681565b3480156107ab57600080fd5b506103f8600e5481565b3480156107c157600080fd5b506103c76107d03660046134fb565b61158b565b3480156107e157600080fd5b506103c76107f03660046135cb565b61161a565b6103c76108033660046136c7565b611684565b34801561081457600080fd5b506103c76108233660046135cb565b611a11565b34801561083457600080fd5b506103626108433660046135e6565b611a82565b34801561085457600080fd5b506103f86108633660046135e6565b611c40565b34801561087457600080fd5b506103c76108833660046135ff565b611c57565b34801561089457600080fd5b506103386108a336600461348c565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b3480156108dd57600080fd5b506103c76108ec3660046135e6565b611c7c565b3480156108fd57600080fd5b506103c761090c366004613471565b611cdb565b6103c761091f3660046135e6565b611dba565b600061092f82611fe0565b92915050565b60606002805461094490613955565b80601f016020809104026020016040519081016040528092919081815260200182805461097090613955565b80156109bd5780601f10610992576101008083540402835291602001916109bd565b820191906000526020600020905b8154815290600101906020018083116109a057829003601f168201915b5050505050905090565b60006109d28261201e565b610a495760405162461bcd60e51b815260206004820152602d60248201527f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560448201527f78697374656e7420746f6b656e0000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000908152600660205260409020546001600160a01b031690565b6000610a70826111e1565b9050806001600160a01b0316836001600160a01b03161415610afa5760405162461bcd60e51b815260206004820152602260248201527f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60448201527f65720000000000000000000000000000000000000000000000000000000000006064820152608401610a40565b336001600160a01b0382161480610b165750610b1681336108a3565b610b885760405162461bcd60e51b815260206004820152603960248201527f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656420666f7220616c6c000000000000006064820152608401610a40565b610b93838383612049565b505050565b6000600154600054610baa91906138fb565b905090565b610b938383836120b2565b600082815260096020526040902060010154610bd5816123e6565b610b9383836123f0565b6000610bea836111f3565b8210610c5e5760405162461bcd60e51b815260206004820152602260248201527f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60448201527f64730000000000000000000000000000000000000000000000000000000000006064820152608401610a40565b600080549080805b83811015610d2a57600081815260046020908152604091829020825160608101845290546001600160a01b038116808352600160a01b820467ffffffffffffffff1693830193909352600160e01b900460ff1615159281019290925215610ccc57805192505b806040015115610cdb57600092505b876001600160a01b0316836001600160a01b03161415610d175786841415610d095750935061092f92505050565b83610d1381613990565b9450505b5080610d2281613990565b915050610c66565b5060405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060448201527f6f776e657220627920696e6465780000000000000000000000000000000000006064820152608401610a40565b6008546001600160a01b03163314610df35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a40565b8051610e0690601490602084019061333b565b5050565b6001600160a01b0381163314610e885760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610a40565b610e068282612412565b6008546001600160a01b03163314610eec5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a40565b610ef760003361069f565b610f435760405162461bcd60e51b815260206004820152600f60248201527f43616e6e6f7420776974686472617700000000000000000000000000000000006044820152606401610a40565b6008546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610f7c573d6000803e3d6000fd5b50565b610b938383836040518060200160405280600081525061158b565b6000610fa582612434565b80519091506000906001600160a01b0316336001600160a01b03161480610fdc575033610fd1846109c7565b6001600160a01b0316145b80610fee57508151610fee90336108a3565b9050806110635760405162461bcd60e51b815260206004820152602960248201527f455243373231413a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f76656400000000000000000000000000000000000000000000006064820152608401610a40565b610b9383612551565b6000805481805b8281101561110557600081815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b810467ffffffffffffffff1692820192909252600160e01b90910460ff161515918101829052906110f257858314156110e45750949350505050565b826110ee81613990565b9350505b50806110fd81613990565b915050611073565b5060405162461bcd60e51b815260206004820152602360248201527f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560448201527f6e647300000000000000000000000000000000000000000000000000000000006064820152608401610a40565b6008546001600160a01b031633146111ce5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a40565b8051610e0690601390602084019061333b565b60006111ec82612434565b5192915050565b60006001600160a01b0382166112715760405162461bcd60e51b815260206004820152602b60248201527f455243373231413a2062616c616e636520717565727920666f7220746865207a60448201527f65726f20616464726573730000000000000000000000000000000000000000006064820152608401610a40565b506001600160a01b031660009081526005602052604090205467ffffffffffffffff1690565b6008546001600160a01b031633146112f15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a40565b6112fb6000612739565b565b61130860003361069f565b6113545760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f7420736574206d65726b6c6520726f6f74000000000000000000006044820152606401610a40565b601055565b6000828152600a602052604081206113719083612798565b9392505050565b61138360003361069f565b6113cf5760405162461bcd60e51b815260206004820152601060248201527f43616e6e6f7420736574207072696365000000000000000000000000000000006044820152606401610a40565b600c55565b60606003805461094490613955565b6001600160a01b03821633141561143c5760405162461bcd60e51b815260206004820152601a60248201527f455243373231413a20617070726f766520746f2063616c6c65720000000000006044820152606401610a40565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6008546001600160a01b031633146115025760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a40565b61150d6000826127a4565b611518600033612412565b610f7c81611cdb565b61152c60003361069f565b6115785760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f742073657420746f2073686f7720617274776f726b0000000000006044820152606401610a40565b600d805460ff1916911515919091179055565b6115968484846120b2565b6115a2848484846127ae565b6116145760405162461bcd60e51b815260206004820152603360248201527f455243373231413a207472616e7366657220746f206e6f6e204552433732315260448201527f6563656976657220696d706c656d656e746572000000000000000000000000006064820152608401610a40565b50505050565b61162560003361069f565b6116715760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f74207365742070726573616c6520737461746500000000000000006044820152606401610a40565b6015805460ff1916911515919091179055565b60155460ff1615156001146116db5760405162461bcd60e51b815260206004820152601c60248201527f53616c652073746174652073686f756c642062652070726573616c65000000006044820152606401610a40565b600b546116e6610b98565b106117335760405162461bcd60e51b815260206004820152601260248201527f4d617820737570706c79207265616368656400000000000000000000000000006044820152606401610a40565b60006117aa838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506010546040516bffffffffffffffffffffffff193360601b166020820152909250603401905060405160208183030381529060405280519060200120612911565b90508061181f5760405162461bcd60e51b815260206004820152602260248201527f596f7520617265206e6f7420696e207468652076616c69642077686974656c6960448201527f73740000000000000000000000000000000000000000000000000000000000006064820152608401610a40565b6011543360009081526012602052604090205460ff90911690611842908661388d565b111561189a5760405162461bcd60e51b815260206004820152602160248201527f596f757220746f6b656e20616d6f756e742072656163686564206f7574206d616044820152600f60fb1b6064820152608401610a40565b6011543360009081526012602052604090205460ff909116116118ff5760405162461bcd60e51b815260206004820152601960248201527f596f7527766520616c7265616479206d696e74656420616c6c000000000000006044820152606401610a40565b6000600a600c548661191191906138dc565b61191c9060096138dc565b61192691906138c8565b9050348111156119875760405162461bcd60e51b815260206004820152602660248201527f50726f7669646564206e6f7420656e6f75676820457468657220666f7220707560448201526572636861736560d01b6064820152608401610a40565b33600090815260126020526040812080548792906119a690849061388d565b9250508190555084600e60008282546119bf919061388d565b909155506119cf90503386612927565b604080518681526000602082015233917f8069ef4945469d029cc32e222031bccdc99b2eaaf4ee374cd268012f7ddee907910160405180910390a25050505050565b611a1c60003361069f565b611a685760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420736574207075626c69632073746174650000000000000000006044820152606401610a40565b601580549115156101000261ff0019909216919091179055565b6060611a8d8261201e565b611aff5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006064820152608401610a40565b600d5460ff16151560011480611b1d5750600b54611b1b610b98565b145b15611b84576000611b2c612941565b90506000611b3984612950565b90506000825111611b595760405180602001604052806000815250611b7c565b8181604051602001611b6c92919061378e565b6040516020818303038152906040525b949350505050565b600060148054611b9390613955565b80601f0160208091040260200160405190810160405280929190818152602001828054611bbf90613955565b8015611c0c5780601f10611be157610100808354040283529160200191611c0c565b820191906000526020600020905b815481529060010190602001808311611bef57829003601f168201915b5050505050905080604051602001611c249190613772565b604051602081830303815290604052915050919050565b919050565b6000818152600a6020526040812061092f90612a4e565b600082815260096020526040902060010154611c72816123e6565b610b938383612412565b6008546001600160a01b03163314611cd65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a40565b600f55565b6008546001600160a01b03163314611d355760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a40565b6001600160a01b038116611db15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610a40565b610f7c81612739565b60155460ff610100909104161515600114611e175760405162461bcd60e51b815260206004820152601b60248201527f53616c652073746174652073686f756c64206265207075626c696300000000006044820152606401610a40565b600b54611e22610b98565b10611e6f5760405162461bcd60e51b815260206004820152601260248201527f4d617820737570706c79207265616368656400000000000000000000000000006044820152606401610a40565b6000600c5482611e7f91906138dc565b905034811115611ee05760405162461bcd60e51b815260206004820152602660248201527f50726f7669646564206e6f7420656e6f75676820457468657220666f7220707560448201526572636861736560d01b6064820152608401610a40565b611eea3383612927565b604080518381526001602082015233917f8069ef4945469d029cc32e222031bccdc99b2eaaf4ee374cd268012f7ddee907910160405180910390a25050565b60008281526009602090815260408083206001600160a01b038516845290915290205460ff16610e065760008281526009602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611f873390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000611371836001600160a01b038416612a58565b60006001600160e01b031982167f5a05180f00000000000000000000000000000000000000000000000000000000148061092f575061092f82612aa7565b600080548210801561092f575050600090815260046020526040902054600160e01b900460ff161590565b600082815260066020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60006120bd82612434565b80519091506000906001600160a01b0316336001600160a01b031614806120f45750336120e9846109c7565b6001600160a01b0316145b806121065750815161210690336108a3565b90508061217b5760405162461bcd60e51b815260206004820152603260248201527f455243373231413a207472616e736665722063616c6c6572206973206e6f742060448201527f6f776e6572206e6f7220617070726f76656400000000000000000000000000006064820152608401610a40565b846001600160a01b031682600001516001600160a01b0316146122065760405162461bcd60e51b815260206004820152602660248201527f455243373231413a207472616e736665722066726f6d20696e636f727265637460448201527f206f776e657200000000000000000000000000000000000000000000000000006064820152608401610a40565b6001600160a01b0384166122825760405162461bcd60e51b815260206004820152602560248201527f455243373231413a207472616e7366657220746f20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610a40565b6122926000848460000151612049565b6001600160a01b038086166000908152600560209081526040808320805460001967ffffffffffffffff80831691909101811667ffffffffffffffff1992831617909255948916808552828520805480841660019081018516919098161790558885526004909352908320805442909216600160a01b026001600160e01b03199092169092171790559061232790859061388d565b6000818152600460205260409020549091506001600160a01b031661239c5761234f8161201e565b1561239c578251600082815260046020908152604090912080549186015167ffffffffffffffff16600160a01b026001600160e01b03199092166001600160a01b03909316929092171790555b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b610f7c8133612ae5565b6123fa8282611f29565b6000828152600a60205260409020610b939082611fcb565b61241c8282612b65565b6000828152600a60205260409020610b939082612be8565b604080516060810182526000808252602082018190529181019190915261245a8261201e565b6124cc5760405162461bcd60e51b815260206004820152602a60248201527f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360448201527f74656e7420746f6b656e000000000000000000000000000000000000000000006064820152608401610a40565b815b600081815260046020908152604091829020825160608101845290546001600160a01b038116808352600160a01b820467ffffffffffffffff1693830193909352600160e01b900460ff161515928101929092521580159061253257508060400151155b1561253e579392505050565b50806125498161393e565b9150506124ce565b600061255c82612434565b905061256e6000838360000151612049565b80516001600160a01b039081166000908152600560209081526040808320805467ffffffffffffffff19811667ffffffffffffffff9182166000190182161790915585518516845281842080547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff81167001000000000000000000000000000000009182900484166001908101851690920217909155865188865260049094529184208054600160e01b949096166001600160e01b031990961695909517600160a01b4290921691909102177fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff16919091179092559061266f90849061388d565b6000818152600460205260409020549091506001600160a01b03166126e4576126978161201e565b156126e4578151600082815260046020908152604090912080549185015167ffffffffffffffff16600160a01b026001600160e01b03199092166001600160a01b03909316929092171790555b815160405184916000916001600160a01b03909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a46001805490600061272f83613990565b9190505550505050565b600880546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006113718383612bfd565b610e0682826123f0565b60006001600160a01b0384163b1561290657604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906127f290339089908890889060040161383e565b602060405180830381600087803b15801561280c57600080fd5b505af192505050801561283c575060408051601f3d908101601f1916820190925261283991810190613661565b60015b6128ec573d80801561286a576040519150601f19603f3d011682016040523d82523d6000602084013e61286f565b606091505b5080516128e45760405162461bcd60e51b815260206004820152603360248201527f455243373231413a207472616e7366657220746f206e6f6e204552433732315260448201527f6563656976657220696d706c656d656e746572000000000000000000000000006064820152608401610a40565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611b7c565b506001949350505050565b60008261291e8584612c27565b14949350505050565b610e06828260405180602001604052806000815250612c9b565b60606013805461094490613955565b6060816129745750506040805180820190915260018152600360fc1b602082015290565b8160005b811561299e578061298881613990565b91506129979050600a836138c8565b9150612978565b60008167ffffffffffffffff8111156129b9576129b9613a17565b6040519080825280601f01601f1916602001820160405280156129e3576020820181803683370190505b5090505b8415611b7c576129f86001836138fb565b9150612a05600a866139ab565b612a1090603061388d565b60f81b818381518110612a2557612a25613a01565b60200101906001600160f81b031916908160001a905350612a47600a866138c8565b94506129e7565b600061092f825490565b6000818152600183016020526040812054612a9f5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561092f565b50600061092f565b60006001600160e01b031982167f7965db0b00000000000000000000000000000000000000000000000000000000148061092f575061092f82612ca8565b60008281526009602090815260408083206001600160a01b038516845290915290205460ff16610e0657612b23816001600160a01b03166014612d77565b612b2e836020612d77565b604051602001612b3f9291906137bd565b60408051601f198184030181529082905262461bcd60e51b8252610a409160040161387a565b60008281526009602090815260408083206001600160a01b038516845290915290205460ff1615610e065760008281526009602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000611371836001600160a01b038416612f20565b6000826000018281548110612c1457612c14613a01565b9060005260206000200154905092915050565b600081815b8451811015612c93576000858281518110612c4957612c49613a01565b60200260200101519050808311612c6f5760008381526020829052604090209250612c80565b600081815260208490526040902092505b5080612c8b81613990565b915050612c2c565b509392505050565b610b938383836001613013565b60006001600160e01b031982167f80ac58cd000000000000000000000000000000000000000000000000000000001480612d0b57506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80612d3f57506001600160e01b031982167f780e9d6300000000000000000000000000000000000000000000000000000000145b8061092f57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b031983161461092f565b60606000612d868360026138dc565b612d9190600261388d565b67ffffffffffffffff811115612da957612da9613a17565b6040519080825280601f01601f191660200182016040528015612dd3576020820181803683370190505b509050600360fc1b81600081518110612dee57612dee613a01565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612e1d57612e1d613a01565b60200101906001600160f81b031916908160001a9053506000612e418460026138dc565b612e4c90600161388d565b90505b6001811115612ed1577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110612e8d57612e8d613a01565b1a60f81b828281518110612ea357612ea3613a01565b60200101906001600160f81b031916908160001a90535060049490941c93612eca8161393e565b9050612e4f565b5083156113715760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610a40565b60008181526001830160205260408120548015613009576000612f446001836138fb565b8554909150600090612f58906001906138fb565b9050818114612fbd576000866000018281548110612f7857612f78613a01565b9060005260206000200154905080876000018481548110612f9b57612f9b613a01565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612fce57612fce6139eb565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061092f565b600091505061092f565b6000546001600160a01b0385166130925760405162461bcd60e51b815260206004820152602160248201527f455243373231413a206d696e7420746f20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610a40565b61309b8161201e565b156130e85760405162461bcd60e51b815260206004820152601d60248201527f455243373231413a20746f6b656e20616c7265616479206d696e7465640000006044820152606401610a40565b6000841161315e5760405162461bcd60e51b815260206004820152602860248201527f455243373231413a207175616e74697479206d7573742062652067726561746560448201527f72207468616e20300000000000000000000000000000000000000000000000006064820152608401610a40565b6001600160a01b0385166000908152600560205260408120805486929061319090849067ffffffffffffffff166138a5565b82546101009290920a67ffffffffffffffff8181021990931691831602179091556001600160a01b0387166000908152600560205260409020805487935090916008916131eb918591680100000000000000009004166138a5565b825467ffffffffffffffff9182166101009390930a9283029282021916919091179091556000838152600460205260408120805442909316600160a01b026001600160e01b03199093166001600160a01b038a1617929092179091558291505b858110156133305760405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a483156133105761329e60008884886127ae565b6133105760405162461bcd60e51b815260206004820152603360248201527f455243373231413a207472616e7366657220746f206e6f6e204552433732315260448201527f6563656976657220696d706c656d656e746572000000000000000000000000006064820152608401610a40565b8161331a81613990565b925050808061332890613990565b91505061324b565b5060008190556123de565b82805461334790613955565b90600052602060002090601f01602090048101928261336957600085556133af565b82601f1061338257805160ff19168380011785556133af565b828001600101855582156133af579182015b828111156133af578251825591602001919060010190613394565b506133bb9291506133bf565b5090565b5b808211156133bb57600081556001016133c0565b600067ffffffffffffffff808411156133ef576133ef613a17565b604051601f8501601f19908116603f0116810190828211818310171561341757613417613a17565b8160405280935085815286868601111561343057600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b0381168114611c3b57600080fd5b80358015158114611c3b57600080fd5b60006020828403121561348357600080fd5b6113718261344a565b6000806040838503121561349f57600080fd5b6134a88361344a565b91506134b66020840161344a565b90509250929050565b6000806000606084860312156134d457600080fd5b6134dd8461344a565b92506134eb6020850161344a565b9150604084013590509250925092565b6000806000806080858703121561351157600080fd5b61351a8561344a565b93506135286020860161344a565b925060408501359150606085013567ffffffffffffffff81111561354b57600080fd5b8501601f8101871361355c57600080fd5b61356b878235602084016133d4565b91505092959194509250565b6000806040838503121561358a57600080fd5b6135938361344a565b91506134b660208401613461565b600080604083850312156135b457600080fd5b6135bd8361344a565b946020939093013593505050565b6000602082840312156135dd57600080fd5b61137182613461565b6000602082840312156135f857600080fd5b5035919050565b6000806040838503121561361257600080fd5b823591506134b66020840161344a565b6000806040838503121561363557600080fd5b50508035926020909101359150565b60006020828403121561365657600080fd5b813561137181613a2d565b60006020828403121561367357600080fd5b815161137181613a2d565b60006020828403121561369057600080fd5b813567ffffffffffffffff8111156136a757600080fd5b8201601f810184136136b857600080fd5b611b7c848235602084016133d4565b6000806000604084860312156136dc57600080fd5b83359250602084013567ffffffffffffffff808211156136fb57600080fd5b818601915086601f83011261370f57600080fd5b81358181111561371e57600080fd5b8760208260051b850101111561373357600080fd5b6020830194508093505050509250925092565b6000815180845261375e816020860160208601613912565b601f01601f19169290920160200192915050565b60008251613784818460208701613912565b9190910192915050565b600083516137a0818460208801613912565b8351908301906137b4818360208801613912565b01949350505050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516137f5816017850160208801613912565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351613832816028840160208801613912565b01602801949350505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526138706080830184613746565b9695505050505050565b6020815260006113716020830184613746565b600082198211156138a0576138a06139bf565b500190565b600067ffffffffffffffff8083168185168083038211156137b4576137b46139bf565b6000826138d7576138d76139d5565b500490565b60008160001904831182151516156138f6576138f66139bf565b500290565b60008282101561390d5761390d6139bf565b500390565b60005b8381101561392d578181015183820152602001613915565b838111156116145750506000910152565b60008161394d5761394d6139bf565b506000190190565b600181811c9082168061396957607f821691505b6020821081141561398a57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156139a4576139a46139bf565b5060010190565b6000826139ba576139ba6139d5565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114610f7c57600080fdfea26469706673582212208c3fd97499bb202d382bfa2cbae711cb5f852ba2e430b3ab00c27802c6352a6364736f6c63430008070033";