[ { "inputs": [], "name": "Launchpeg__AllowlistBeforePreMint", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "balanceOf", "type": "uint256" } ], "name": "Launchpeg__AmountExceedsBalance", "type": "error" }, { "inputs": [], "name": "Launchpeg__CanNotMintThisMany", "type": "error" }, { "inputs": [], "name": "Launchpeg__InvalidMaxPerAddressDuringMint", "type": "error" }, { "inputs": [], "name": "Launchpeg__InvalidOwner", "type": "error" }, { "inputs": [], "name": "Launchpeg__InvalidProjectOwner", "type": "error" }, { "inputs": [], "name": "Launchpeg__InvalidStartTime", "type": "error" }, { "inputs": [], "name": "Launchpeg__LargerCollectionSizeNeeded", "type": "error" }, { "inputs": [], "name": "Launchpeg__NotEligibleForAllowlistMint", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "avaxSent", "type": "uint256" } ], "name": "Launchpeg__NotEnoughAVAX", "type": "error" }, { "inputs": [], "name": "Launchpeg__NotImplemented", "type": "error" }, { "inputs": [], "name": "Launchpeg__NotInitialized", "type": "error" }, { "inputs": [], "name": "Launchpeg__PublicSaleBeforeAllowlist", "type": "error" }, { "inputs": [], "name": "Launchpeg__PublicSaleEndBeforePublicSaleStart", "type": "error" }, { "inputs": [], "name": "Launchpeg__TokensAreNonTransferable", "type": "error" }, { "inputs": [], "name": "Launchpeg__TransferFailed", "type": "error" }, { "inputs": [], "name": "Launchpeg__WrongAddressesAndNumSlotsLength", "type": "error" }, { "inputs": [], "name": "Launchpeg__WrongPhase", "type": "error" }, { "inputs": [], "name": "Launchpeg__WrongStampNumber", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "Launchpeg__ZeroTokenBalance", "type": "error" }, { "inputs": [], "name": "PendingOwnableUpgradeable__AddressZero", "type": "error" }, { "inputs": [], "name": "PendingOwnableUpgradeable__NoPendingOwner", "type": "error" }, { "inputs": [], "name": "PendingOwnableUpgradeable__NotOwner", "type": "error" }, { "inputs": [], "name": "PendingOwnableUpgradeable__NotPendingOwner", "type": "error" }, { "inputs": [], "name": "PendingOwnableUpgradeable__PendingOwnerAlreadySet", "type": "error" }, { "inputs": [], "name": "SafeAccessControlEnumerableUpgradeable__RoleIsDefaultAdmin", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "sender", "type": "address" } ], "name": "SafeAccessControlEnumerableUpgradeable__SenderMissingRoleAndIsNotOwner", "type": "error" }, { "inputs": [], "name": "SafePausableUpgradeable__AlreadyPaused", "type": "error" }, { "inputs": [], "name": "SafePausableUpgradeable__AlreadyUnpaused", "type": "error" }, { "anonymous": false, "inputs": [], "name": "AllowlistModified", "type": "event" }, { "anonymous": false, "inputs": [], "name": "AllowlistSeeded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "allowlistStartTime", "type": "uint256" } ], "name": "AllowlistStartTimeSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "preMintStartTime", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "allowlistStartTime", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "publicSaleStartTime", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "publicSaleEndTime", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "allowlistPrice", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "quantity", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" }, { "indexed": false, "internalType": "enum IBaseLaunchpeg1155.Phase", "name": "phase", "type": "uint8" } ], "name": "Mint", "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": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "PendingOwnerSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "publicSaleEndTime", "type": "uint256" } ], "name": "PublicSaleEndTimeSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "transferable", "type": "bool" } ], "name": "TransferableChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "stateMutability": "nonpayable", "type": "fallback" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PAUSER_ADMIN_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": [], "name": "UNPAUSER_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "UNPAUSER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "allowlist", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_quantity", "type": "uint256" } ], "name": "allowlistMint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "allowlistPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "allowlistStartTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "amountMintedByDevs", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "amountMintedDuringAllowlist", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "becomeOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_id", "type": "uint256" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "currentPhase", "outputs": [ { "internalType": "enum IBaseLaunchpeg1155.Phase", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "exists", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "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": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "address", "name": "batchReveal", "type": "address" }, { "internalType": "uint256", "name": "maxPerAddressDuringMint", "type": "uint256" }, { "internalType": "uint256", "name": "collectionSize", "type": "uint256" }, { "internalType": "uint256", "name": "amountForDevs", "type": "uint256" }, { "internalType": "uint256", "name": "amountForAuction", "type": "uint256" }, { "internalType": "uint256", "name": "amountForAllowlist", "type": "uint256" } ], "internalType": "struct IBaseLaunchpeg1155.CollectionData", "name": "_collectionData", "type": "tuple" }, { "components": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "projectOwner", "type": "address" }, { "internalType": "address", "name": "royaltyReceiver", "type": "address" }, { "internalType": "address", "name": "joeFeeCollector", "type": "address" }, { "internalType": "uint256", "name": "joeFeePercent", "type": "uint256" } ], "internalType": "struct IBaseLaunchpeg1155.CollectionOwnerData", "name": "_ownerData", "type": "tuple" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "_allowlistStartTime", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "_publicSaleEndTime", "type": "uint256" }, { "internalType": "uint256", "name": "_allowlistPrice", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "initializePhases", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lens", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxPerAddressDuringMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "numberMinted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "numberMintedWithPreMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "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": [], "name": "pendingOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "preMintStartTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "publicSaleEndTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "publicSaleStartTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_addresses", "type": "address[]" }, { "internalType": "uint256[][]", "name": "_stampIds", "type": "uint256[][]" } ], "name": "removeAllowlistSpots", "outputs": [], "stateMutability": "nonpayable", "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": [], "name": "revokePendingOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "salePrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_addresses", "type": "address[]" }, { "internalType": "uint256[][]", "name": "_stampIds", "type": "uint256[][]" } ], "name": "seedAllowlist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_allowlistStartTime", "type": "uint256" } ], "name": "setAllowlistStartTime", "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": "address", "name": "_lens", "type": "address" } ], "name": "setLensAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pendingOwner_", "type": "address" } ], "name": "setPendingOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_publicSaleEndTime", "type": "uint256" } ], "name": "setPublicSaleEndTime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_transferable", "type": "bool" } ], "name": "setTransferable", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_newURI", "type": "string" } ], "name": "setURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stampsAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "transferable", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdrawAVAXStartTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ]
608060405234801561001057600080fd5b506143a3806100206000396000f3fe6080604052600436106103a15760003560e01c80638456cb59116101e7578063b560ee691161010d578063e30c3978116100a0578063f35e231c1161006f578063f35e231c14610b2f578063f51f96dd14610b4f578063f9dca98914610b66578063fb1bb9de14610b7b576103a1565b8063e30c397814610a86578063e63ab1e914610aa4578063e985e9c514610ac6578063f242432a14610b0f576103a1565b8063c792e167116100dc578063c792e16714610a2f578063ca15c87314610a46578063d547741f14610a66578063dc33e6811461096f576103a1565b8063b560ee69146109af578063bd85b039146109cf578063c180526a146109fc578063c42069ec14610a0f576103a1565b80639cd2370711610185578063a7cd52cb11610154578063a7cd52cb1461092f578063ab90fd5c1461094f578063aec3922b1461096f578063b390c0ab1461098f576103a1565b80639cd23707146108ba578063a1ef0e54146108da578063a217fddf146108fa578063a22cb4651461090f576103a1565b80639010d07c116101c15780639010d07c1461084157806390967a521461086157806391d148541461087857806392ff0d3114610898576103a1565b80638456cb59146107f75780638bc35c2f1461080c5780638da5cb5b14610823576103a1565b80633cc4cadb116102cc5780635c975abb1161026a5780636bb7b1d9116102395780636bb7b1d91461077757806370a082311461078e57806370a95250146107ae578063715018a6146107e2576103a1565b80635c975abb146107125780635eb00aed1461072b57806362f4fb2d1461074b57806367ab8a4e14610762576103a1565b80634f558e79116102a65780634f558e79146106a057806350ec9ef4146106cf57806359d7bc4d146106e45780635c7034af146106fb576103a1565b80633cc4cadb146106475780633f4ba83a1461065e5780634e1273f414610673576103a1565b806318160ddd1161034457806325a004731161031357806325a00473146105b35780632eb2c2d6146105e75780632f2ff15d1461060757806336568abe14610627576103a1565b806318160ddd146105375780631cd0572f1461054c5780631e4d185f1461056c578063248a9ca314610583576103a1565b806303b674d31161038057806303b674d31461048f578063055ad42e146104af5780630e89341c146104d1578063112666b7146104fe576103a1565b8062fdd58e1461040a57806301ffc9a71461043d57806302fe53051461046d575b3480156103ad57600080fd5b5061016c5460009036906060906001600160a01b031633146103e25760405163723aeda760e01b815260040160405180910390fd5b6040805160006020820152016040516020818303038152906040529050915050805190602001f35b34801561041657600080fd5b5061042a610425366004613ab0565b610baf565b6040519081526020015b60405180910390f35b34801561044957600080fd5b5061045d610458366004613c8e565b610c4b565b6040519015158152602001610434565b34801561047957600080fd5b5061048d610488366004613cc8565b610c70565b005b34801561049b57600080fd5b5061048d6104aa366004613c30565b610ca7565b3480156104bb57600080fd5b506104c4610d99565b6040516104349190613f48565b3480156104dd57600080fd5b506104f16104ec366004613c30565b610dec565b6040516104349190613f56565b34801561050a57600080fd5b5061016c5461051f906001600160a01b031681565b6040516001600160a01b039091168152602001610434565b34801561054357600080fd5b5061042a610e80565b34801561055857600080fd5b5061048d610567366004613ada565b610ec1565b34801561057857600080fd5b5061042a6101685481565b34801561058f57600080fd5b5061042a61059e366004613c30565b600090815260cb602052604090206001015490565b3480156105bf57600080fd5b5061042a7fe0e65c783ac33ff1c5ccf4399c9185066773921d6f8d050bf80781603021f09781565b3480156105f357600080fd5b5061048d610602366004613979565b611127565b34801561061357600080fd5b5061048d610622366004613c49565b6111be565b34801561063357600080fd5b5061048d610642366004613c49565b611248565b34801561065357600080fd5b5061042a6101645481565b34801561066a57600080fd5b5061048d611276565b34801561067f57600080fd5b5061069361068e366004613b45565b611324565b6040516104349190613f07565b3480156106ac57600080fd5b5061045d6106bb366004613c30565b600090815260976020526040902054151590565b3480156106db57600080fd5b5061042a600c81565b3480156106f057600080fd5b5061042a6101665481565b34801561070757600080fd5b5061042a6101635481565b34801561071e57600080fd5b5061012f5460ff1661045d565b34801561073757600080fd5b5061048d61074636600461392b565b61144d565b34801561075757600080fd5b5061042a6101655481565b34801561076e57600080fd5b5061048d61149b565b34801561078357600080fd5b5061042a6101675481565b34801561079a57600080fd5b5061042a6107a936600461392b565b6114fb565b3480156107ba57600080fd5b5061042a7fe516f7ac9747f401e208331379a0bafe3c9c4dbb6501fd23bcef278f7ebaf4e581565b3480156107ee57600080fd5b5061048d611538565b34801561080357600080fd5b5061048d61156d565b34801561081857600080fd5b5061042a6101615481565b34801561082f57600080fd5b5060c9546001600160a01b031661051f565b34801561084d57600080fd5b5061051f61085c366004613c6c565b61160a565b34801561086d57600080fd5b5061042a61016a5481565b34801561088457600080fd5b5061045d610893366004613c49565b611629565b3480156108a457600080fd5b5061016c5461045d90600160a01b900460ff1681565b3480156108c657600080fd5b5061048d6108d5366004613c15565b611654565b3480156108e657600080fd5b5061048d6108f5366004613c30565b6116d8565b34801561090657600080fd5b5061042a600081565b34801561091b57600080fd5b5061048d61092a366004613a86565b6117a3565b34801561093b57600080fd5b5061042a61094a36600461392b565b6117b2565b34801561095b57600080fd5b5061048d61096a366004613ada565b6117bd565b34801561097b57600080fd5b5061042a61098a36600461392b565b611984565b34801561099b57600080fd5b5061048d6109aa366004613c6c565b6119a3565b3480156109bb57600080fd5b5061048d6109ca366004613d18565b611a01565b3480156109db57600080fd5b5061042a6109ea366004613c30565b60009081526097602052604090205490565b61048d610a0a366004613c30565b611ac5565b348015610a1b57600080fd5b5061048d610a2a36600461392b565b611da1565b348015610a3b57600080fd5b5061042a6101695481565b348015610a5257600080fd5b5061042a610a61366004613c30565b611e26565b348015610a7257600080fd5b5061048d610a81366004613c49565b611e3d565b348015610a9257600080fd5b5060ca546001600160a01b031661051f565b348015610ab057600080fd5b5061042a60008051602061434e83398151915281565b348015610ad257600080fd5b5061045d610ae1366004613946565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205460ff1690565b348015610b1b57600080fd5b5061048d610b2a366004613a22565b611ec1565b348015610b3b57600080fd5b5061048d610b4a366004613d77565b611f48565b348015610b5b57600080fd5b5061042a61016b5481565b348015610b7257600080fd5b5061048d61206f565b348015610b8757600080fd5b5061042a7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a81565b60006001600160a01b038316610c205760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b5060008181526065602090815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216639c22547960e01b1480610c455750610c45826120ae565b60c9546001600160a01b03163314610c9b57604051630202a8bf60e61b815260040160405180910390fd5b610ca48161210c565b50565b60c9546001600160a01b03163314610cd257604051630202a8bf60e61b815260040160405180910390fd5b6101665480610cf4576040516356a4234d60e11b815260040160405180910390fd5b428111610d14576040516338df794b60e01b815260040160405180910390fd5b8142811015610d3657604051639db169d760e01b815260040160405180910390fd5b82610167541015610d5a576040516335bcfe2b60e21b815260040160405180910390fd5b6101668390556040518381527f9bcdfa29202b48178635d9cf5c57896f671198685cf6b8ddb5e20f3eb4bb1e60906020015b60405180910390a1505050565b60006101665460001480610dae575061016854155b80610dbb57506101665442105b15610dc65750600090565b610166544210158015610ddb57506101675442105b15610de65750600390565b50600590565b606060678054610dfb906141a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610e27906141a8565b8015610e745780601f10610e4957610100808354040283529160200191610e74565b820191906000526020600020905b815481529060010190602001808311610e5757829003601f168201915b50505050509050919050565b60008060015b600c8111610ebb57600081815260976020526040902054610ea7908361415a565b915080610eb381614209565b915050610e86565b50919050565b60c9546001600160a01b03163314610eec57604051630202a8bf60e61b815260040160405180910390fd5b60008084838114610f1057604051638d62a9d560e01b815260040160405180910390fd5b60005b818110156110f45761016d6000898984818110610f3257610f32614266565b9050602002016020810190610f47919061392b565b6001600160a01b03166001600160a01b03168152602001908152602001600020549250858582818110610f7c57610f7c614266565b9050602002810190610f8e91906140ee565b9050935060005b8481101561109a57868683818110610faf57610faf614266565b9050602002810190610fc191906140ee565b82818110610fd157610fd1614266565b90506020020135600014806110205750600c878784818110610ff557610ff5614266565b905060200281019061100791906140ee565b8381811061101757611017614266565b90506020020135115b1561103e576040516315db315360e21b815260040160405180910390fd5b61108687878481811061105357611053614266565b905060200281019061106591906140ee565b8381811061107557611075614266565b9050602002013585600190911b1790565b93508061109281614209565b915050610f95565b508261016d60008a8a858181106110b3576110b3614266565b90506020020160208101906110c8919061392b565b6001600160a01b03168152602081019190915260400160002055806110ec81614209565b915050610f13565b506040517f0df27beb8d16f5e61d125286ba69a986a702ac83921bb1864629ca5e662e84d490600090a150505050505050565b6001600160a01b03851633148061114357506111438533610ae1565b6111aa5760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b6064820152608401610c17565b6111b7858585858561211f565b5050505050565b81806111dd5760405163e466584960e01b815260040160405180910390fd5b600083815260cb602052604090206001015460c9546001600160a01b03163314801590611211575061120f8133611629565b155b156112385760405163f9019a8d60e01b815260048101829052336024820152604401610c17565b61124284846122cc565b50505050565b81806112675760405163e466584960e01b815260040160405180910390fd5b61127183836122ee565b505050565b7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a6112a960c9546001600160a01b031690565b6001600160a01b0316336001600160a01b0316141580156112d157506112cf8133611629565b155b156112f85760405163f9019a8d60e01b815260048101829052336024820152604401610c17565b61012f5460ff1661131c57604051637514f14160e11b815260040160405180910390fd5b610ca4612368565b606081518351146113895760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610c17565b600083516001600160401b038111156113a4576113a461427c565b6040519080825280602002602001820160405280156113cd578160200160208202803683370190505b50905060005b8451811015611445576114188582815181106113f1576113f1614266565b602002602001015185838151811061140b5761140b614266565b6020026020010151610baf565b82828151811061142a5761142a614266565b602090810291909101015261143e81614209565b90506113d3565b509392505050565b60c9546001600160a01b0316331461147857604051630202a8bf60e61b815260040160405180910390fd5b61016c80546001600160a01b0319166001600160a01b0392909216919091179055565b60c9546001600160a01b031633146114c657604051630202a8bf60e61b815260040160405180910390fd5b60ca546001600160a01b03166114ef5760405163128be5bf60e31b815260040160405180910390fd5b6114f960006123fd565b565b60008060015b600c8111611531576115138482610baf565b61151d908361415a565b91508061152981614209565b915050611501565b5092915050565b60c9546001600160a01b0316331461156357604051630202a8bf60e61b815260040160405180910390fd5b6114f96000612447565b60008051602061434e83398151915261158e60c9546001600160a01b031690565b6001600160a01b0316336001600160a01b0316141580156115b657506115b48133611629565b155b156115dd5760405163f9019a8d60e01b815260048101829052336024820152604401610c17565b61012f5460ff1615611602576040516329c0c03160e11b815260040160405180910390fd5b610ca4612486565b600082815260fd602052604081206116229083612503565b9392505050565b600091825260cb602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60c9546001600160a01b0316331461167f57604051630202a8bf60e61b815260040160405180910390fd5b61016c8054821515600160a01b0260ff60a01b199091161790556040517f6488c20eb299903c41aa1b53c3ad5a3140aca395935e57cc52c1cc8dae8d9e17906116cd90831515815260200190565b60405180910390a150565b60c9546001600160a01b0316331461170357604051630202a8bf60e61b815260040160405180910390fd5b6101685480611725576040516356a4234d60e11b815260040160405180910390fd5b428111611745576040516338df794b60e01b815260040160405180910390fd5b814281101561176757604051639db169d760e01b815260040160405180910390fd5b6101688390556101678390556040518381527fdb76c49adfe8600a5db82e1d85e7c1f7565676dac577c6a39744e9c95ad68e3c90602001610d8c565b6117ae33838361250f565b5050565b6000610c45826125f0565b60c9546001600160a01b031633146117e857604051630202a8bf60e61b815260040160405180910390fd5b60008382811461180b57604051638d62a9d560e01b815260040160405180910390fd5b60005b8181101561195257600085858381811061182a5761182a614266565b905060200281019061183c91906140ee565b9050905061016d600089898581811061185757611857614266565b905060200201602081019061186c919061392b565b6001600160a01b03166001600160a01b0316815260200190815260200160002054935060005b818110156118f7576118e38787858181106118af576118af614266565b90506020028101906118c191906140ee565b838181106118d1576118d1614266565b9050602002013586600190911b191690565b9450806118ef81614209565b915050611892565b508361016d60008a8a8681811061191057611910614266565b9050602002016020810190611925919061392b565b6001600160a01b03168152602081019190915260400160002055508061194a81614209565b91505061180e565b506040517fdc4177ff64772164c1ea8ea0285ca571308a6c1a3fdc92fc53738ee6e50199c190600090a1505050505050565b6001600160a01b038116600090815261016e6020526040812054610c45565b60006119af3384610baf565b9050806119d2576040516359ac07cf60e01b815260048101849052602401610c17565b818110156119f6576040516360451c0360e11b815260048101829052602401610c17565b61127133848461264b565b600054610100900460ff16611a1c5760005460ff1615611a20565b303b155b611a835760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610c17565b600054610100900460ff16158015611aa5576000805461ffff19166101011790555b611aaf83836127c8565b8015611271576000805461ff0019169055505050565b61012f5460ff1615611b0c5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610c17565b600380611b17610d99565b6005811115611b2857611b2861423a565b14611b46576040516338df794b60e01b815260040160405180910390fd5b611b4f336125f0565b821115611b6f576040516390e50aa560e01b815260040160405180910390fd5b6101615433600090815261016e6020526040902054611b8f90849061415a565b1115611bae576040516335e62b7b60e21b815260040160405180910390fd5b33600090815261016d602052604081205490836001600160401b03811115611bd857611bd861427c565b604051908082528060200260200182016040528015611c01578160200160208202803683370190505b5090506000846001600160401b03811115611c1e57611c1e61427c565b604051908082528060200260200182016040528015611c47578160200160208202803683370190505b509050600060015b600c8111611cd257600185821c1615611cc0576001838381518110611c7657611c76614266565b6020908102919091010152808483611c8d81614209565b945081518110611c9f57611c9f614266565b60209081029190910101526001811b198516945086821415611cc057611cd2565b80611cca81614209565b915050611c4f565b5033600090815261016d6020526040812085905561016a5490611cf58883614172565b9050611d1233868660405180602001604052806000815250612922565b876101646000828254611d25919061415a565b909155505033600090815261016e6020526040812080548a9290611d4a90849061415a565b909155505060405133907f542ce94ca9ffbc5633caeef7e530d07d13d22c3760be9a74d31657f90efdf98590611d86908b9086906003906140d3565b60405180910390a2611d9781612ab7565b5050505050505050565b60c9546001600160a01b03163314611dcc57604051630202a8bf60e61b815260040160405180910390fd5b6001600160a01b038116611df3576040516386850cc360e01b815260040160405180910390fd5b60ca546001600160a01b031615611e1d5760405163033c108960e01b815260040160405180910390fd5b610ca4816123fd565b600081815260fd60205260408120610c4590612b52565b8180611e5c5760405163e466584960e01b815260040160405180910390fd5b600083815260cb602052604090206001015460c9546001600160a01b03163314801590611e905750611e8e8133611629565b155b15611eb75760405163f9019a8d60e01b815260048101829052336024820152604401610c17565b6112428484612b5c565b6001600160a01b038516331480611edd5750611edd8533610ae1565b611f3b5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610c17565b6111b78585858585612b7e565b60c9546001600160a01b03163314611f7357604051630202a8bf60e61b815260040160405180910390fd5b600080611f7e610d99565b6005811115611f8f57611f8f61423a565b14611fad576040516338df794b60e01b815260040160405180910390fd5b42861015611fce576040516312d3f13560e01b815260040160405180910390fd5b85841015611fef57604051631e3804ab60e21b815260040160405180910390fd5b61016a83905561016586905561016686905561016784905561016884905561016b546040805188815260208101899052808201879052606081018790526080810186905260a0810192909252517f880fa85ac6969827fc8f6a2a8b236fc9789ece8c82b41b17d0865b747de1b9139181900360c00190a150505050505050565b60ca546001600160a01b031633141580612087575033155b156120a55760405163134aa98760e31b815260040160405180910390fd5b6114f933612447565b60006001600160e01b031982166308ec3e2960e11b14806120d357506120d382612cae565b806120ee57506301ffc9a760e01b6001600160e01b03198316145b806120fd57506120fd82612cfe565b80610c455750610c4582612cfe565b80516117ae906067906020840190613727565b81518351146121405760405162461bcd60e51b8152600401610c179061408b565b6001600160a01b0384166121665760405162461bcd60e51b8152600401610c1790613fb1565b33612175818787878787612d23565b60005b845181101561225e57600085828151811061219557612195614266565b6020026020010151905060008583815181106121b3576121b3614266565b60209081029190910181015160008481526065835260408082206001600160a01b038e1683529093529190912054909150818110156122045760405162461bcd60e51b8152600401610c1790613ff6565b60008381526065602090815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061224390849061415a565b925050819055505050508061225790614209565b9050612178565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516122ae929190613f1a565b60405180910390a46122c4818787878787612d81565b505050505050565b6122d68282612eec565b600082815260fd602052604090206112719082612f72565b6001600160a01b038116331461235e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610c17565b6117ae8282612b5c565b61012f5460ff166123b25760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610c17565b61012f805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60ca80546001600160a01b0319166001600160a01b0383169081179091556040517f68f49b346b94582a8b5f9d10e3fe3365318fe8f191ff8dce7c59c6cad06b02f590600090a250565b612463600061245e60c9546001600160a01b031690565b612b5c565b6001600160a01b0381161561247d5761247d6000826122cc565b610ca481612f87565b61012f5460ff16156124cd5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610c17565b61012f805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586123e03390565b60006116228383612fe4565b816001600160a01b0316836001600160a01b031614156125835760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610c17565b6001600160a01b03838116600081815260666020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b038116600090815261016d6020526040812054819060015b600c811161264257600182821c16156126305761262d60018461415a565b92505b8061263a81614209565b91505061260f565b50909392505050565b6001600160a01b0383166126ad5760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610c17565b336126dc818560006126be8761300e565b6126c78761300e565b60405180602001604052806000815250612d23565b60008381526065602090815260408083206001600160a01b03881684529091529020548281101561275b5760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610c17565b60008481526065602090815260408083206001600160a01b03898116808652918452828520888703905582518981529384018890529092908616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a45050505050565b600054610100900460ff166127ef5760405162461bcd60e51b8152600401610c1790614040565b6127f7613059565b61280f60405180602001604052806000815250613098565b600061281e602083018361392b565b6001600160a01b03161415612846576040516313d8249360e31b815260040160405180910390fd5b6000612858604083016020840161392b565b6001600160a01b03161415612880576040516331ae7ba360e21b815260040160405180910390fd5b608082013515806128a5575060808201356128a360e084013560a085013561415a565b115b156128c357604051631a231d4360e21b815260040160405180910390fd5b8160800135826060013511156128ec5760405163318e1f1760e01b815260040160405180910390fd5b60608201356101615561290d60008051602061434e833981519152336111be565b6117ae61291d602083018361392b565b612447565b6001600160a01b0384166129825760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610c17565b81518351146129a35760405162461bcd60e51b8152600401610c179061408b565b336129b381600087878787612d23565b60005b8451811015612a4f578381815181106129d1576129d1614266565b6020026020010151606560008784815181106129ef576129ef614266565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254612a37919061415a565b90915550819050612a4781614209565b9150506129b6565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051612aa0929190613f1a565b60405180910390a46111b781600087878787612d81565b80341015612ada57604051639968ec3d60e01b8152346004820152602401610c17565b80341115610ca457600033612aef8334614191565b604051600081818185875af1925050503d8060008114612b2b576040519150601f19603f3d011682016040523d82523d6000602084013e612b30565b606091505b50509050806117ae57604051633aa9e60d60e21b815260040160405180910390fd5b6000610c45825490565b612b6682826130c8565b600082815260fd60205260409020611271908261312f565b6001600160a01b038416612ba45760405162461bcd60e51b8152600401610c1790613fb1565b33612bc3818787612bb48861300e565b612bbd8861300e565b87612d23565b60008481526065602090815260408083206001600160a01b038a16845290915290205483811015612c065760405162461bcd60e51b8152600401610c1790613ff6565b60008581526065602090815260408083206001600160a01b038b8116855292528083208785039055908816825281208054869290612c4590849061415a565b909155505060408051868152602081018690526001600160a01b03808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4612ca5828888888888613144565b50505050505050565b60006001600160e01b03198216636cdb3d1360e11b1480612cdf57506001600160e01b031982166303a24d0760e21b145b80610c4557506301ffc9a760e01b6001600160e01b0319831614610c45565b60006001600160e01b0319821663f3353d7760e01b1480610c455750610c458261320e565b6001600160a01b03851615801590612d4357506001600160a01b03841615155b15612d735761016c54600160a01b900460ff16612d7357604051632ddc0f5b60e01b815260040160405180910390fd5b6122c4868686868686613228565b6001600160a01b0384163b156122c45760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190612dc59089908990889088908890600401613e64565b602060405180830381600087803b158015612ddf57600080fd5b505af1925050508015612e0f575060408051601f3d908101601f19168201909252612e0c91810190613cab565b60015b612ebc57612e1b614292565b806308c379a01415612e555750612e306142ae565b80612e3b5750612e57565b8060405162461bcd60e51b8152600401610c179190613f56565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610c17565b6001600160e01b0319811663bc197c8160e01b14612ca55760405162461bcd60e51b8152600401610c1790613f69565b612ef68282611629565b6117ae57600082815260cb602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612f2e3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000611622836001600160a01b038416613334565b60c980546001600160a01b038381166001600160a01b0319808416821790945560ca80549094169093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000826000018281548110612ffb57612ffb614266565b9060005260206000200154905092915050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061304857613048614266565b602090810291909101015292915050565b600054610100900460ff166130805760405162461bcd60e51b8152600401610c1790614040565b613088613383565b6130906133c2565b6114f96133f1565b600054610100900460ff166130bf5760405162461bcd60e51b8152600401610c1790614040565b610ca48161349a565b6130d28282611629565b156117ae57600082815260cb602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000611622836001600160a01b0384166134c1565b6001600160a01b0384163b156122c45760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906131889089908990889088908890600401613ec2565b602060405180830381600087803b1580156131a257600080fd5b505af19250505080156131d2575060408051601f3d908101601f191682019092526131cf91810190613cab565b60015b6131de57612e1b614292565b6001600160e01b0319811663f23a6e6160e01b14612ca55760405162461bcd60e51b8152600401610c1790613f69565b6000613219826135b4565b80610c455750610c45826135d9565b6001600160a01b0385166132af5760005b83518110156132ad5782818151811061325457613254614266565b60200260200101516097600086848151811061327257613272614266565b602002602001015181526020019081526020016000206000828254613297919061415a565b909155506132a6905081614209565b9050613239565b505b6001600160a01b0384166122c45760005b8351811015612ca5578281815181106132db576132db614266565b6020026020010151609760008684815181106132f9576132f9614266565b60200260200101518152602001908152602001600020600082825461331e9190614191565b9091555061332d905081614209565b90506132c0565b600081815260018301602052604081205461337b57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610c45565b506000610c45565b600054610100900460ff166133aa5760405162461bcd60e51b8152600401610c1790614040565b6133b26135fe565b6133ba613635565b6114f9613635565b600054610100900460ff166133e95760405162461bcd60e51b8152600401610c1790614040565b6114f961365c565b600054610100900460ff166134185760405162461bcd60e51b8152600401610c1790614040565b61345060008051602061434e8339815191527fe0e65c783ac33ff1c5ccf4399c9185066773921d6f8d050bf80781603021f097613690565b6114f97f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a7fe516f7ac9747f401e208331379a0bafe3c9c4dbb6501fd23bcef278f7ebaf4e5613690565b600054610100900460ff16610c9b5760405162461bcd60e51b8152600401610c1790614040565b600081815260018301602052604081205480156135aa5760006134e5600183614191565b85549091506000906134f990600190614191565b905081811461355e57600086600001828154811061351957613519614266565b906000526020600020015490508087600001848154811061353c5761353c614266565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061356f5761356f614250565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610c45565b6000915050610c45565b60006001600160e01b031982166322d7505760e11b1480610c455750610c4582612cae565b60006001600160e01b03198216635a05180f60e01b1480610c455750610c45826136db565b600054610100900460ff166136255760405162461bcd60e51b8152600401610c1790614040565b61362d613635565b6114f9613700565b600054610100900460ff166114f95760405162461bcd60e51b8152600401610c1790614040565b600054610100900460ff166136835760405162461bcd60e51b8152600401610c1790614040565b61012f805460ff19169055565b600082815260cb6020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b60006001600160e01b03198216637965db0b60e01b1480610c455750610c45826135b4565b600054610100900460ff166120a55760405162461bcd60e51b8152600401610c1790614040565b828054613733906141a8565b90600052602060002090601f016020900481019282613755576000855561379b565b82601f1061376e57805160ff191683800117855561379b565b8280016001018555821561379b579182015b8281111561379b578251825591602001919060010190613780565b506137a79291506137ab565b5090565b5b808211156137a757600081556001016137ac565b60006001600160401b038311156137d9576137d961427c565b6040516137f0601f8501601f1916602001826141dd565b80915083815284848401111561380557600080fd5b83836020830137600060208583010152509392505050565b80356001600160a01b038116811461383457600080fd5b919050565b60008083601f84011261384b57600080fd5b5081356001600160401b0381111561386257600080fd5b6020830191508360208260051b850101111561387d57600080fd5b9250929050565b600082601f83011261389557600080fd5b813560206138a282614137565b6040516138af82826141dd565b8381528281019150858301600585901b870184018810156138cf57600080fd5b60005b858110156138ee578135845292840192908401906001016138d2565b5090979650505050505050565b8035801515811461383457600080fd5b600082601f83011261391c57600080fd5b611622838335602085016137c0565b60006020828403121561393d57600080fd5b6116228261381d565b6000806040838503121561395957600080fd5b6139628361381d565b91506139706020840161381d565b90509250929050565b600080600080600060a0868803121561399157600080fd5b61399a8661381d565b94506139a86020870161381d565b935060408601356001600160401b03808211156139c457600080fd5b6139d089838a01613884565b945060608801359150808211156139e657600080fd5b6139f289838a01613884565b93506080880135915080821115613a0857600080fd5b50613a158882890161390b565b9150509295509295909350565b600080600080600060a08688031215613a3a57600080fd5b613a438661381d565b9450613a516020870161381d565b9350604086013592506060860135915060808601356001600160401b03811115613a7a57600080fd5b613a158882890161390b565b60008060408385031215613a9957600080fd5b613aa28361381d565b9150613970602084016138fb565b60008060408385031215613ac357600080fd5b613acc8361381d565b946020939093013593505050565b60008060008060408587031215613af057600080fd5b84356001600160401b0380821115613b0757600080fd5b613b1388838901613839565b90965094506020870135915080821115613b2c57600080fd5b50613b3987828801613839565b95989497509550505050565b60008060408385031215613b5857600080fd5b82356001600160401b0380821115613b6f57600080fd5b818501915085601f830112613b8357600080fd5b81356020613b9082614137565b604051613b9d82826141dd565b8381528281019150858301600585901b870184018b1015613bbd57600080fd5b600096505b84871015613be757613bd38161381d565b835260019690960195918301918301613bc2565b5096505086013592505080821115613bfe57600080fd5b50613c0b85828601613884565b9150509250929050565b600060208284031215613c2757600080fd5b611622826138fb565b600060208284031215613c4257600080fd5b5035919050565b60008060408385031215613c5c57600080fd5b823591506139706020840161381d565b60008060408385031215613c7f57600080fd5b50508035926020909101359150565b600060208284031215613ca057600080fd5b813561162281614337565b600060208284031215613cbd57600080fd5b815161162281614337565b600060208284031215613cda57600080fd5b81356001600160401b03811115613cf057600080fd5b8201601f81018413613d0157600080fd5b613d10848235602084016137c0565b949350505050565b60008082840360c0811215613d2c57600080fd5b83356001600160401b03811115613d4257600080fd5b84016101008187031215613d5557600080fd5b925060a0601f1982011215613d6957600080fd5b506020830190509250929050565b60008060008060008060c08789031215613d9057600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600081518084526020808501945080840160005b83811015613dea57815187529582019590820190600101613dce565b509495945050505050565b6000815180845260005b81811015613e1b57602081850181015186830182015201613dff565b81811115613e2d576000602083870101525b50601f01601f19169290920160200192915050565b60068110613e6057634e487b7160e01b600052602160045260246000fd5b9052565b6001600160a01b0386811682528516602082015260a060408201819052600090613e9090830186613dba565b8281036060840152613ea28186613dba565b90508281036080840152613eb68185613df5565b98975050505050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090613efc90830184613df5565b979650505050505050565b6020815260006116226020830184613dba565b604081526000613f2d6040830185613dba565b8281036020840152613f3f8185613dba565b95945050505050565b60208101610c458284613e42565b6020815260006116226020830184613df5565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b8381526020810183905260608101613d106040830184613e42565b6000808335601e1984360301811261410557600080fd5b8301803591506001600160401b0382111561411f57600080fd5b6020019150600581901b360382131561387d57600080fd5b60006001600160401b038211156141505761415061427c565b5060051b60200190565b6000821982111561416d5761416d614224565b500190565b600081600019048311821515161561418c5761418c614224565b500290565b6000828210156141a3576141a3614224565b500390565b600181811c908216806141bc57607f821691505b60208210811415610ebb57634e487b7160e01b600052602260045260246000fd5b601f8201601f191681016001600160401b03811182821017156142025761420261427c565b6040525050565b600060001982141561421d5761421d614224565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600060033d11156142ab5760046000803e5060005160e01c5b90565b600060443d10156142bc5790565b6040516003193d81016004833e81513d6001600160401b0381602484011181841117156142eb57505050505090565b82850191508151818111156143035750505050505090565b843d870101602082850101111561431d5750505050505090565b61432c602082860101876141dd565b509095945050505050565b6001600160e01b031981168114610ca457600080fdfe65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862aa26469706673582212202e3dfe4096cb02a9c2d6d7088bd8c039a1f6878f93f75b2f11a82381434be31164736f6c63430008060033