ERC-721
Overview
Max Total Supply
4,700 DENGS
Holders
1,358
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
0 DENGSLoading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
Dengs
Compiler Version
v0.8.18+commit.87f61d96
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT/*██████████████████████████████████████████████████████████████████ ███████████████ ███████████████ █████ ██████ █████████████████████████ ████████████████████ ████ ████ █████████ ████ ████ ████████ ████ ████ ███████ ████ ████ ████████████ █████ █████ ██████████████ ████████ ████████ █████████ ████ ████ ████ ███ ████████ ██████████ █████████ ██████ █████████ ████████ ███████ ███████ ██████████████████████████████████████ ███████ ███████ ███ ███████████████ ███ ██████ ██ █████ █████ ████ ███████ ██████ ██████ ███████ █████ ████ ████████ ████ ███ ██████ ██ ██ █████ ██
123456789101112// SPDX-License-Identifier: MITpragma solidity ^0.8.4;import "./OwnablePermissions.sol";import "@openzeppelin/contracts/access/Ownable.sol";abstract contract OwnableBasic is OwnablePermissions, Ownable {function _requireCallerIsContractOwner() internal view virtual override {_checkOwner();}}
12345678// SPDX-License-Identifier: MITpragma solidity ^0.8.4;import "@openzeppelin/contracts/utils/Context.sol";abstract contract OwnablePermissions is Context {function _requireCallerIsContractOwner() internal view virtual;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.4;import "../utils/CreatorTokenBase.sol";import "../token/erc721/ERC721OpenZeppelin.sol";/*** @title ERC721C* @author Limit Break, Inc.* @notice Extends OpenZeppelin's ERC721 implementation with Creator Token functionality, which* allows the contract owner to update the transfer validation logic by managing a security policy in* an external transfer validation security policy registry. See {CreatorTokenTransferValidator}.*/abstract contract ERC721C is ERC721OpenZeppelin, CreatorTokenBase {function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {return interfaceId == type(ICreatorToken).interfaceId || super.supportsInterface(interfaceId);}/// @dev Ties the open-zeppelin _beforeTokenTransfer hook to more granular transfer validation logicfunction _beforeTokenTransfer(address from,address to,uint256 firstTokenId,uint256 batchSize) internal virtual override {for (uint256 i = 0; i < batchSize;) {
12345678910111213141516// SPDX-License-Identifier: MITpragma solidity ^0.8.4;import "../interfaces/ICreatorTokenTransferValidator.sol";interface ICreatorToken {event TransferValidatorUpdated(address oldValidator, address newValidator);function getTransferValidator() external view returns (ICreatorTokenTransferValidator);function getSecurityPolicy() external view returns (CollectionSecurityPolicy memory);function getWhitelistedOperators() external view returns (address[] memory);function getPermittedContractReceivers() external view returns (address[] memory);function isOperatorWhitelisted(address operator) external view returns (bool);function isContractReceiverPermitted(address receiver) external view returns (bool);function isTransferAllowed(address caller, address from, address to) external view returns (bool);}
12345678// SPDX-License-Identifier: MITpragma solidity ^0.8.4;import "./IEOARegistry.sol";import "./ITransferSecurityRegistry.sol";import "./ITransferValidator.sol";interface ICreatorTokenTransferValidator is ITransferSecurityRegistry, ITransferValidator, IEOARegistry {}
12345678// SPDX-License-Identifier: MITpragma solidity ^0.8.4;import "@openzeppelin/contracts/utils/introspection/IERC165.sol";interface IEOARegistry is IERC165 {function isVerifiedEOA(address account) external view returns (bool);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.4;import "../utils/TransferPolicy.sol";interface ITransferSecurityRegistry {event AddedToAllowlist(AllowlistTypes indexed kind, uint256 indexed id, address indexed account);event CreatedAllowlist(AllowlistTypes indexed kind, uint256 indexed id, string indexed name);event ReassignedAllowlistOwnership(AllowlistTypes indexed kind, uint256 indexed id, address indexed newOwner);event RemovedFromAllowlist(AllowlistTypes indexed kind, uint256 indexed id, address indexed account);event SetAllowlist(AllowlistTypes indexed kind, address indexed collection, uint120 indexed id);event SetTransferSecurityLevel(address indexed collection, TransferSecurityLevels level);function createOperatorWhitelist(string calldata name) external returns (uint120);function createPermittedContractReceiverAllowlist(string calldata name) external returns (uint120);function reassignOwnershipOfOperatorWhitelist(uint120 id, address newOwner) external;function reassignOwnershipOfPermittedContractReceiverAllowlist(uint120 id, address newOwner) external;function renounceOwnershipOfOperatorWhitelist(uint120 id) external;function renounceOwnershipOfPermittedContractReceiverAllowlist(uint120 id) external;function setTransferSecurityLevelOfCollection(address collection, TransferSecurityLevels level) external;function setOperatorWhitelistOfCollection(address collection, uint120 id) external;function setPermittedContractReceiverAllowlistOfCollection(address collection, uint120 id) external;function addOperatorToWhitelist(uint120 id, address operator) external;function addPermittedContractReceiverToAllowlist(uint120 id, address receiver) external;function removeOperatorFromWhitelist(uint120 id, address operator) external;function removePermittedContractReceiverFromAllowlist(uint120 id, address receiver) external;
12345678// SPDX-License-Identifier: MITpragma solidity ^0.8.4;import "../utils/TransferPolicy.sol";interface ITransferValidator {function applyCollectionTransferPolicy(address caller, address from, address to) external view;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.4;import "@openzeppelin/contracts/token/common/ERC2981.sol";/*** @title BasicRoyaltiesBase* @author Limit Break, Inc.* @dev Base functionality of an NFT mix-in contract implementing the most basic form of programmable royalties.*/abstract contract BasicRoyaltiesBase is ERC2981 {event DefaultRoyaltySet(address indexed receiver, uint96 feeNumerator);event TokenRoyaltySet(uint256 indexed tokenId, address indexed receiver, uint96 feeNumerator);function _setDefaultRoyalty(address receiver, uint96 feeNumerator) internal virtual override {super._setDefaultRoyalty(receiver, feeNumerator);emit DefaultRoyaltySet(receiver, feeNumerator);}function _setTokenRoyalty(uint256 tokenId, address receiver, uint96 feeNumerator) internal virtual override {super._setTokenRoyalty(tokenId, receiver, feeNumerator);emit TokenRoyaltySet(tokenId, receiver, feeNumerator);}}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.4;import "../../access/OwnablePermissions.sol";import "@openzeppelin/contracts/token/ERC721/ERC721.sol";abstract contract ERC721OpenZeppelinBase is ERC721 {// Token namestring internal _contractName;// Token symbolstring internal _contractSymbol;function name() public view virtual override returns (string memory) {return _contractName;}function symbol() public view virtual override returns (string memory) {return _contractSymbol;}function _setNameAndSymbol(string memory name_, string memory symbol_) internal {_contractName = name_;_contractSymbol = symbol_;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.4;import "../access/OwnablePermissions.sol";import "../interfaces/ICreatorToken.sol";import "../interfaces/ICreatorTokenTransferValidator.sol";import "../utils/TransferValidation.sol";import "@openzeppelin/contracts/interfaces/IERC165.sol";/*** @title CreatorTokenBase* @author Limit Break, Inc.* @notice CreatorTokenBase is an abstract contract that provides basic functionality for managing token* transfer policies through an implementation of ICreatorTokenTransferValidator. This contract is intended to be used* as a base for creator-specific token contracts, enabling customizable transfer restrictions and security policies.** <h4>Features:</h4>* <ul>Ownable: This contract can have an owner who can set and update the transfer validator.</ul>* <ul>TransferValidation: Implements the basic token transfer validation interface.</ul>* <ul>ICreatorToken: Implements the interface for creator tokens, providing view functions for token security policies.</ul>** <h4>Benefits:</h4>* <ul>Provides a flexible and modular way to implement custom token transfer restrictions and security policies.</ul>* <ul>Allows creators to enforce policies such as whitelisted operators and permitted contract receivers.</ul>* <ul>Can be easily integrated into other token contracts as a base contract.</ul>*
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.4;enum AllowlistTypes {Operators,PermittedContractReceivers}enum ReceiverConstraints {None,NoCode,EOA}enum CallerConstraints {None,OperatorWhitelistEnableOTC,OperatorWhitelistDisableOTC}enum StakerConstraints {None,CallerIsTxOrigin,EOA}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.4;import "@openzeppelin/contracts/utils/Context.sol";/*** @title TransferValidation* @author Limit Break, Inc.* @notice A mix-in that can be combined with ERC-721 contracts to provide more granular hooks.* Openzeppelin's ERC721 contract only provides hooks for before and after transfer. This allows* developers to validate or customize transfers within the context of a mint, a burn, or a transfer.*/abstract contract TransferValidation is Context {error ShouldNotMintToBurnAddress();/// @dev Inheriting contracts should call this function in the _beforeTokenTransfer function to get more granular hooks.function _validateBeforeTransfer(address from, address to, uint256 tokenId) internal virtual {bool fromZeroAddress = from == address(0);bool toZeroAddress = to == address(0);if(fromZeroAddress && toZeroAddress) {revert ShouldNotMintToBurnAddress();} else if(fromZeroAddress) {_preValidateMint(_msgSender(), to, tokenId, msg.value);} else if(toZeroAddress) {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)pragma solidity ^0.8.0;import "../utils/Context.sol";/*** @dev Contract module which provides a basic access control mechanism, where* there is an account (an owner) that can be granted exclusive access to* specific functions.** By default, the owner account will be the one that deploys the contract. This* can later be changed with {transferOwnership}.** This module is used through inheritance. It will make available the modifier* `onlyOwner`, which can be applied to your functions to restrict their use to* the owner.*/abstract contract Ownable is Context {address private _owner;event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);/*** @dev Initializes the contract setting the deployer as the initial owner.
123456// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (interfaces/IERC165.sol)pragma solidity ^0.8.0;import "../utils/introspection/IERC165.sol";
12345678910111213141516171819202122232425// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC2981.sol)pragma solidity ^0.8.0;import "../utils/introspection/IERC165.sol";/*** @dev Interface for the NFT Royalty Standard.** A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal* support for royalty payments across all NFT marketplaces and ecosystem participants.** _Available since v4.5._*/interface IERC2981 is IERC165 {/*** @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of* exchange. The royalty amount is denominated and should be paid in that same unit of exchange.*/function royaltyInfo(uint256 tokenId,uint256 salePrice) external view returns (address receiver, uint256 royaltyAmount);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol)pragma solidity ^0.8.0;/*** @dev Contract module that helps prevent reentrant calls to a function.** Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier* available, which can be applied to functions to make sure there are no nested* (reentrant) calls to them.** Note that because there is a single `nonReentrant` guard, functions marked as* `nonReentrant` may not call one another. This can be worked around by making* those functions `private`, and then adding `external` `nonReentrant` entry* points to them.** TIP: If you would like to learn more about reentrancy and alternative ways* to protect against it, check out our blog post* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].*/abstract contract ReentrancyGuard {// Booleans are more expensive than uint256 or any type that takes up a full// word because each write operation emits an extra SLOAD to first read the// slot's contents, replace the bits taken up by the boolean, and then write// back. This is the compiler's defense against contract upgrades and
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.0) (token/common/ERC2981.sol)pragma solidity ^0.8.0;import "../../interfaces/IERC2981.sol";import "../../utils/introspection/ERC165.sol";/*** @dev Implementation of the NFT Royalty Standard, a standardized way to retrieve royalty payment information.** Royalty information can be specified globally for all token ids via {_setDefaultRoyalty}, and/or individually for* specific token ids via {_setTokenRoyalty}. The latter takes precedence over the first.** Royalty is specified as a fraction of sale price. {_feeDenominator} is overridable but defaults to 10000, meaning the* fee is specified in basis points by default.** IMPORTANT: ERC-2981 only specifies a way to signal royalty information and does not enforce its payment. See* https://eips.ethereum.org/EIPS/eip-2981#optional-royalty-payments[Rationale] in the EIP. Marketplaces are expected to* voluntarily pay royalties together with sales, but note that this standard is not yet widely supported.** _Available since v4.5._*/abstract contract ERC2981 is IERC2981, ERC165 {struct RoyaltyInfo {address receiver;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)pragma solidity ^0.8.0;/*** @dev Interface of the ERC20 standard as defined in the EIP.*/interface IERC20 {/*** @dev Emitted when `value` tokens are moved from one account (`from`) to* another (`to`).** Note that `value` may be zero.*/event Transfer(address indexed from, address indexed to, uint256 value);/*** @dev Emitted when the allowance of a `spender` for an `owner` is set by* a call to {approve}. `value` is the new allowance.*/event Approval(address indexed owner, address indexed spender, uint256 value);/*** @dev Returns the amount of tokens in existence.*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/ERC721.sol)pragma solidity ^0.8.0;import "./IERC721.sol";import "./IERC721Receiver.sol";import "./extensions/IERC721Metadata.sol";import "../../utils/Address.sol";import "../../utils/Context.sol";import "../../utils/Strings.sol";import "../../utils/introspection/ERC165.sol";/*** @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including* the Metadata extension, but not including the Enumerable extension, which is available separately as* {ERC721Enumerable}.*/contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {using Address for address;using Strings for uint256;// Token namestring private _name;// Token symbol
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)pragma solidity ^0.8.0;import "../IERC721.sol";/*** @title ERC-721 Non-Fungible Token Standard, optional metadata extension* @dev See https://eips.ethereum.org/EIPS/eip-721*/interface IERC721Metadata is IERC721 {/*** @dev Returns the token collection name.*/function name() external view returns (string memory);/*** @dev Returns the token collection symbol.*/function symbol() external view returns (string memory);/*** @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.*/function tokenURI(uint256 tokenId) external view returns (string memory);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)pragma solidity ^0.8.0;import "../../utils/introspection/IERC165.sol";/*** @dev Required interface of an ERC721 compliant contract.*/interface IERC721 is IERC165 {/*** @dev Emitted when `tokenId` token is transferred from `from` to `to`.*/event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);/*** @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.*/event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);/*** @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.*/event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)pragma solidity ^0.8.0;/*** @title ERC721 token receiver interface* @dev Interface for any contract that wants to support safeTransfers* from ERC721 asset contracts.*/interface IERC721Receiver {/*** @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}* by `operator` from `from`, this function is called.** It must return its Solidity selector to confirm the token transfer.* If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.** The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.*/function onERC721Received(address operator,address from,uint256 tokenId,bytes calldata data) external returns (bytes4);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)pragma solidity ^0.8.1;/*** @dev Collection of functions related to the address type*/library Address {/*** @dev Returns true if `account` is a contract.** [IMPORTANT]* ====* It is unsafe to assume that an address for which this function returns* false is an externally-owned account (EOA) and not a contract.** Among others, `isContract` will return false for the following* types of addresses:** - an externally-owned account* - a contract in construction* - an address where a contract will be created* - an address where a contract lived, but was destroyed** Furthermore, `isContract` will also return true if the target contract within
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)pragma solidity ^0.8.0;/*** @dev Provides information about the current execution context, including the* sender of the transaction and its data. While these are generally available* via msg.sender and msg.data, they should not be accessed in such a direct* manner, since when dealing with meta-transactions the account sending and* paying for execution may not be the actual sender (as far as an application* is concerned).** This contract is only required for intermediate, library-like contracts.*/abstract contract Context {function _msgSender() internal view virtual returns (address) {return msg.sender;}function _msgData() internal view virtual returns (bytes calldata) {return msg.data;}function _contextSuffixLength() internal view virtual returns (uint256) {return 0;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.2) (utils/cryptography/MerkleProof.sol)pragma solidity ^0.8.0;/*** @dev These functions deal with verification of Merkle Tree proofs.** The tree and the proofs can be generated using our* https://github.com/OpenZeppelin/merkle-tree[JavaScript library].* You will find a quickstart guide in the readme.** WARNING: You should avoid using leaf values that are 64 bytes long prior to* hashing, or use a hash function other than keccak256 for hashing leaves.* This is because the concatenation of a sorted pair of internal nodes in* the merkle tree could be reinterpreted as a leaf value.* OpenZeppelin's JavaScript library generates merkle trees that are safe* against this attack out of the box.*/library MerkleProof {/*** @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree* defined by `root`. For this, a `proof` must be provided, containing* sibling hashes on the branch from the leaf to the root of the tree. Each* pair of leaves and each pair of pre-images are assumed to be sorted.*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)pragma solidity ^0.8.0;import "./IERC165.sol";/*** @dev Implementation of the {IERC165} interface.** Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check* for the additional interface id that will be supported. For example:** ```solidity* function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {* return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);* }* ```** Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.*/abstract contract ERC165 is IERC165 {/*** @dev See {IERC165-supportsInterface}.*/function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
12345678910111213141516171819202122232425// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)pragma solidity ^0.8.0;/*** @dev Interface of the ERC165 standard, as defined in the* https://eips.ethereum.org/EIPS/eip-165[EIP].** Implementers can declare support of contract interfaces, which can then be* queried by others ({ERC165Checker}).** For an implementation, see {ERC165}.*/interface IERC165 {/*** @dev Returns true if this contract implements the interface defined by* `interfaceId`. See the corresponding* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]* to learn more about how these ids are created.** This function call must use less than 30 000 gas.*/function supportsInterface(bytes4 interfaceId) external view returns (bool);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)pragma solidity ^0.8.0;/*** @dev Standard math utilities missing in the Solidity language.*/library Math {enum Rounding {Down, // Toward negative infinityUp, // Toward infinityZero // Toward zero}/*** @dev Returns the largest of two numbers.*/function max(uint256 a, uint256 b) internal pure returns (uint256) {return a > b ? a : b;}/*** @dev Returns the smallest of two numbers.*/function min(uint256 a, uint256 b) internal pure returns (uint256) {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)pragma solidity ^0.8.0;/*** @dev Standard signed math utilities missing in the Solidity language.*/library SignedMath {/*** @dev Returns the largest of two signed numbers.*/function max(int256 a, int256 b) internal pure returns (int256) {return a > b ? a : b;}/*** @dev Returns the smallest of two signed numbers.*/function min(int256 a, int256 b) internal pure returns (int256) {return a < b ? a : b;}/*** @dev Returns the average of two signed numbers without overflow.* The result is rounded towards zero.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)pragma solidity ^0.8.0;import "./math/Math.sol";import "./math/SignedMath.sol";/*** @dev String operations.*/library Strings {bytes16 private constant _SYMBOLS = "0123456789abcdef";uint8 private constant _ADDRESS_LENGTH = 20;/*** @dev Converts a `uint256` to its ASCII `string` decimal representation.*/function toString(uint256 value) internal pure returns (string memory) {unchecked {uint256 length = Math.log10(value) + 1;string memory buffer = new string(length);uint256 ptr;/// @solidity memory-safe-assemblyassembly {ptr := add(buffer, add(32, length))
12345678910111213141516171819{"optimizer": {"enabled": true,"runs": 200},"outputSelection": {"*": {"*": ["evm.bytecode","evm.deployedBytecode","devdoc","userdoc","metadata","abi"]}},"libraries": {}}
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"royaltyReceiver_","type":"address"},{"internalType":"uint96","name":"royaltyFeeNumerator_","type":"uint96"},{"internalType":"string","name":"_baseUri","type":"string"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"CreatorTokenBase__InvalidTransferValidatorContract","type":"error"},{"inputs":[],"name":"CreatorTokenBase__SetTransferValidatorFirst","type":"error"},{"inputs":[],"name":"ShouldNotMintToBurnAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[],"name":"BackstageAccess","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint96","name":"feeNumerator","type":"uint96"}],"name":"DefaultRoyaltySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"enum Dengs.MintPhase","name":"newPhase","type":"uint8"}],"name":"MintPhaseChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"pricePerToken","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxMintWhitelistGTD","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxMintWhitelistFCFS","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxMintPublic","type":"uint256"}],"name":"MintSettingsUpdated","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":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint96","name":"feeNumerator","type":"uint96"}],"name":"TokenRoyaltySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldValidator","type":"address"},{"indexed":false,"internalType":"address","name":"newValidator","type":"address"}],"name":"TransferValidatorUpdated","type":"event"},{"inputs":[],"name":"DEFAULT_OPERATOR_WHITELIST_ID","outputs":[{"internalType":"uint120","name":"","type":"uint120"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_TRANSFER_SECURITY_LEVEL","outputs":[{"internalType":"enum TransferSecurityLevels","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_TRANSFER_VALIDATOR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OcularScan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentMintPhase","outputs":[{"internalType":"enum Dengs.MintPhase","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPermittedContractReceivers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSecurityPolicy","outputs":[{"components":[{"internalType":"enum TransferSecurityLevels","name":"transferSecurityLevel","type":"uint8"},{"internalType":"uint120","name":"operatorWhitelistId","type":"uint120"},{"internalType":"uint120","name":"permittedContractReceiversId","type":"uint120"}],"internalType":"struct CollectionSecurityPolicy","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTransferValidator","outputs":[{"internalType":"contract ICreatorTokenTransferValidator","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWhitelistedOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"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":[{"internalType":"address","name":"receiver","type":"address"}],"name":"isContractReceiverPermitted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"isOperatorWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"isTransferAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintPublic","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintWhitelistFCFS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintWhitelistGTD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"merkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mint","outputs":[],"stateMutability":"payable","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":"address","name":"to","type":"address"},{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"ownerMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pricePerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"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":"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":"address","name":"receiver","type":"address"},{"internalType":"uint96","name":"feeNumerator","type":"uint96"}],"name":"setDefaultRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_merkleRoot","type":"bytes32"}],"name":"setMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum Dengs.MintPhase","name":"phase","type":"uint8"}],"name":"setMintPhase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pricePerToken","type":"uint256"},{"internalType":"uint256","name":"_maxMintWhitelistGTD","type":"uint256"},{"internalType":"uint256","name":"_maxMintWhitelistFCFS","type":"uint256"},{"internalType":"uint256","name":"_maxMintPublic","type":"uint256"}],"name":"setMintSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum TransferSecurityLevels","name":"level","type":"uint8"},{"internalType":"uint120","name":"operatorWhitelistId","type":"uint120"},{"internalType":"uint120","name":"permittedContractReceiversAllowlistId","type":"uint120"}],"name":"setToCustomSecurityPolicy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"validator","type":"address"},{"internalType":"enum TransferSecurityLevels","name":"level","type":"uint8"},{"internalType":"uint120","name":"operatorWhitelistId","type":"uint120"},{"internalType":"uint120","name":"permittedContractReceiversAllowlistId","type":"uint120"}],"name":"setToCustomValidatorAndSecurityPolicy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setToDefaultSecurityPolicy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"transferValidator_","type":"address"}],"name":"setTransferValidator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"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":"address","name":"","type":"address"}],"name":"userTokenCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"walletMintCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"withdrawNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405261125c600f556798a7d9b8314c00006010556015805460ff191690556004601655600260178190556018553480156200003c57600080fd5b5060405162004113380380620041138339810160408190526200005f9162000394565b8484838360405180602001604052806000815250604051806020016040528060008152508160009081620000949190620004f5565b506001620000a38282620004f5565b505050620000b88282620000f460201b60201c565b50620000c79050828262000116565b50620000d590503362000178565b6001600c55600d620000e88482620004f5565b505050505050620005c1565b6006620001028382620004f5565b506007620001118282620004f5565b505050565b6200012d8282620001ca60201b62001eff1760201c565b6040516001600160601b03821681526001600160a01b038316907f8a8bae378cb731c5c40b632330c6836c2f916f48edb967699c86736f9a6a76ef9060200160405180910390a25050565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6127106001600160601b03821611156200023e5760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084015b60405180910390fd5b6001600160a01b038216620002965760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c696420726563656976657200000000000000604482015260640162000235565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600955565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620002f757600080fd5b81516001600160401b0380821115620003145762000314620002cf565b604051601f8301601f19908116603f011681019082821181831017156200033f576200033f620002cf565b816040528381526020925086838588010111156200035c57600080fd5b600091505b8382101562000380578582018301518183018401529082019062000361565b600093810190920192909252949350505050565b600080600080600060a08688031215620003ad57600080fd5b85516001600160a01b0381168114620003c557600080fd5b60208701519095506001600160601b0381168114620003e357600080fd5b60408701519094506001600160401b03808211156200040157600080fd5b6200040f89838a01620002e5565b945060608801519150808211156200042657600080fd5b6200043489838a01620002e5565b935060808801519150808211156200044b57600080fd5b506200045a88828901620002e5565b9150509295509295909350565b600181811c908216806200047c57607f821691505b6020821081036200049d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200011157600081815260208120601f850160051c81016020861015620004cc5750805b601f850160051c820191505b81811015620004ed57828155600101620004d8565b505050505050565b81516001600160401b03811115620005115762000511620002cf565b620005298162000522845462000467565b84620004a3565b602080601f831160018114620005615760008415620005485750858301515b600019600386901b1c1916600185901b178555620004ed565b600085815260208120601f198616915b82811015620005925788860151825594840194600190910190840162000571565b5085821015620005b15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b613b4280620005d16000396000f3fe6080604052600436106103355760003560e01c80636352211e116101ab578063a22cb465116100f7578063d5abeb0111610095578063e985e9c51161006f578063e985e9c514610973578063ef9b63ba14610993578063f2fde38b146109a9578063fd762d92146109c957600080fd5b8063d5abeb011461091b578063dc02743814610931578063e61452661461095e57600080fd5b8063ba41b0c6116100d1578063ba41b0c6146108b1578063be537f43146108c4578063c87b56dd146108e6578063d007af5c1461090657600080fd5b8063a22cb46514610851578063a9fc664e14610871578063b88d4fde1461089157600080fd5b80637cb647591161016457806395d89b411161013e57806395d89b41146107e65780639d645a44146107fb5780639e281a981461081b578063a10777341461083b57600080fd5b80637cb647591461077b5780638da5cb5b1461079b57806393ecb0c6146107b957600080fd5b80636352211e146106e65780636c0360eb146107065780636c3b86991461071b57806370a0823114610730578063715018a6146107505780637b1b1de61461076557600080fd5b80632a55205a1161028557806342966c681161022357806355f804b3116101fd57806355f804b3146106595780635d4c1d46146106795780636088e93a146106a657806361347162146106c657600080fd5b806342966c68146105f7578063484b973c14610617578063495c8bf91461063757600080fd5b806331c07bbf1161025f57806331c07bbf1461058c5780633b7e6954146105ac5780633ccfd60b146105c257806342842e0e146105d757600080fd5b80632a55205a146105175780632e8da829146105565780632eb4a7ab1461057657600080fd5b8063098144d4116102f257806318160ddd116102cc57806318160ddd146104965780631b25b077146104b55780631c33b328146104d557806323b872dd146104f757600080fd5b8063098144d4146104315780630dd250e11461044f57806314106f861461047657600080fd5b8063014635461461033a57806301ffc9a71461037d57806304634d8d146103ad57806306fdde03146103cf578063081812fc146103f1578063095ea7b314610411575b600080fd5b34801561034657600080fd5b5061036071721c310194ccfc01e523fc93c9cccfa2a0ac81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561038957600080fd5b5061039d610398366004612fc9565b6109e9565b6040519015158152602001610374565b3480156103b957600080fd5b506103cd6103c8366004612ffb565b6109fa565b005b3480156103db57600080fd5b506103e4610a10565b6040516103749190613090565b3480156103fd57600080fd5b5061036061040c3660046130a3565b610aa2565b34801561041d57600080fd5b506103cd61042c3660046130bc565b610ac9565b34801561043d57600080fd5b506008546001600160a01b0316610360565b34801561045b57600080fd5b506015546104699060ff1681565b60405161037491906130fe565b34801561048257600080fd5b506103cd610491366004613118565b610be3565b3480156104a257600080fd5b50600e545b604051908152602001610374565b3480156104c157600080fd5b5061039d6104d036600461314a565b610c4d565b3480156104e157600080fd5b506104ea600181565b60405161037491906131a9565b34801561050357600080fd5b506103cd6105123660046131b7565b610ce6565b34801561052357600080fd5b506105376105323660046131f8565b610d17565b604080516001600160a01b039093168352602083019190915201610374565b34801561056257600080fd5b5061039d61057136600461321a565b610dc3565b34801561058257600080fd5b506104a760195481565b34801561059857600080fd5b506103cd6105a7366004613237565b610ecf565b3480156105b857600080fd5b506104a760175481565b3480156105ce57600080fd5b506103cd610f35565b3480156105e357600080fd5b506103cd6105f23660046131b7565b610fc3565b34801561060357600080fd5b506103cd6106123660046130a3565b610fde565b34801561062357600080fd5b506103cd6106323660046130bc565b611055565b34801561064357600080fd5b5061064c611096565b6040516103749190613258565b34801561066557600080fd5b506103cd610674366004613344565b6111a7565b34801561068557600080fd5b5061068e600181565b6040516001600160781b039091168152602001610374565b3480156106b257600080fd5b506103cd6106c13660046130bc565b6111bb565b3480156106d257600080fd5b506103cd6106e13660046133af565b61123e565b3480156106f257600080fd5b506103606107013660046130a3565b6113a9565b34801561071257600080fd5b506103e4611409565b34801561072757600080fd5b506103cd611497565b34801561073c57600080fd5b506104a761074b36600461321a565b611590565b34801561075c57600080fd5b506103cd611616565b34801561077157600080fd5b506104a760105481565b34801561078757600080fd5b506103cd6107963660046130a3565b611628565b3480156107a757600080fd5b50600b546001600160a01b0316610360565b3480156107c557600080fd5b506104a76107d436600461321a565b60136020526000908152604090205481565b3480156107f257600080fd5b506103e4611635565b34801561080757600080fd5b5061039d61081636600461321a565b611644565b34801561082757600080fd5b506103cd6108363660046130bc565b61170c565b34801561084757600080fd5b506104a760165481565b34801561085d57600080fd5b506103cd61086c3660046133fd565b6117d8565b34801561087d57600080fd5b506103cd61088c36600461321a565b6117e3565b34801561089d57600080fd5b506103cd6108ac36600461342b565b611904565b6103cd6108bf3660046134ab565b611936565b3480156108d057600080fd5b506108d9611a47565b604051610374919061352a565b3480156108f257600080fd5b506103e46109013660046130a3565b611b02565b34801561091257600080fd5b5061064c611b68565b34801561092757600080fd5b506104a7600f5481565b34801561093d57600080fd5b506104a761094c36600461321a565b60146020526000908152604090205481565b34801561096a57600080fd5b506103cd611c21565b34801561097f57600080fd5b5061039d61098e366004613566565b611d59565b34801561099f57600080fd5b506104a760185481565b3480156109b557600080fd5b506103cd6109c436600461321a565b611d87565b3480156109d557600080fd5b506103cd6109e4366004613594565b611e00565b60006109f482611ffc565b92915050565b610a02612021565b610a0c8282612029565b5050565b606060068054610a1f906135f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4b906135f0565b8015610a985780601f10610a6d57610100808354040283529160200191610a98565b820191906000526020600020905b815481529060010190602001808311610a7b57829003601f168201915b5050505050905090565b6000610aad8261207e565b506000908152600460205260409020546001600160a01b031690565b6000610ad4826113a9565b9050806001600160a01b0316836001600160a01b031603610b465760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610b625750610b628133611d59565b610bd45760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610b3d565b610bde83836120dd565b505050565b610beb612021565b60108490556016839055601782905560188190556040805185815260208101859052908101839052606081018290527f5481d5be192044d5679fda2417ebb981a47feb33774055c2ac9636e522b9652c9060800160405180910390a150505050565b6008546000906001600160a01b031615610cdb5760085460405163050bf71960e31b81526001600160a01b038681166004830152858116602483015284811660448301529091169063285fb8c89060640160006040518083038186803b158015610cb657600080fd5b505afa925050508015610cc7575060015b610cd357506000610cdf565b506001610cdf565b5060015b9392505050565b610cf0338261214b565b610d0c5760405162461bcd60e51b8152600401610b3d9061362a565b610bde8383836121aa565b6000828152600a602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092528291610d8c5750604080518082019091526009546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090610dab906001600160601b03168761368d565b610db591906136a4565b915196919550909350505050565b6008546000906001600160a01b031615610ec757600854604051635caaa2a960e11b81523060048201526001600160a01b039091169063d72dde5e90829063b955455290602401606060405180830381865afa158015610e27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4b91906136c6565b602001516040516001600160e01b031960e084901b1681526001600160781b0390911660048201526001600160a01b03851660248201526044015b602060405180830381865afa158015610ea3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f49190613738565b506000919050565b610ed7612021565b6015805482919060ff19166001836003811115610ef657610ef66130e8565b02179055507f2757d185fc153b2591e9d55b19b9e625d6c548ff923105c32ac05fd515ffaa1381604051610f2a91906130fe565b60405180910390a150565b610f3d612323565b610f45612021565b4780610f885760405162461bcd60e51b81526020600482015260126024820152714e6f2041504520746f20776974686472617760701b6044820152606401610b3d565b604051339082156108fc029083906000818181858888f19350505050158015610fb5573d6000803e3d6000fd5b5050610fc16001600c55565b565b610bde83838360405180602001604052806000815250611904565b610fe8338261214b565b6110345760405162461bcd60e51b815260206004820181905260248201527f43616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665646044820152606401610b3d565b61103d8161237c565b600e805490600061104d83613755565b919050555050565b61105d612021565b600f5481600e5461106e919061376c565b111561108c5760405162461bcd60e51b8152600401610b3d9061377f565b610a0c8282612429565b6008546060906001600160a01b03161561119457600854604051635caaa2a960e11b81523060048201526001600160a01b0390911690633fe5df9990829063b955455290602401606060405180830381865afa1580156110fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111e91906136c6565b602001516040516001600160e01b031960e084901b1681526001600160781b0390911660048201526024015b600060405180830381865afa158015611167573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261118f91908101906137ab565b905090565b5060408051600081526020810190915290565b6111af612021565b600d610a0c82826138ab565b6111c3612323565b6111cb612021565b604051632142170760e11b81523060048201523360248201526044810182905282906001600160a01b038216906342842e0e90606401600060405180830381600087803b15801561121b57600080fd5b505af115801561122f573d6000803e3d6000fd5b5050505050610a0c6001600c55565b611246612021565b600061125a6008546001600160a01b031690565b90506001600160a01b03811661128357604051631cffe3dd60e11b815260040160405180910390fd5b604051630368065360e61b81526001600160a01b0382169063da0194c0906112b1903090889060040161396b565b600060405180830381600087803b1580156112cb57600080fd5b505af11580156112df573d6000803e3d6000fd5b5050604051631182550160e11b81526001600160a01b0384169250632304aa0291506113119030908790600401613988565b600060405180830381600087803b15801561132b57600080fd5b505af115801561133f573d6000803e3d6000fd5b505060405163235d10c560e21b81526001600160a01b0384169250638d74431491506113719030908690600401613988565b600060405180830381600087803b15801561138b57600080fd5b505af115801561139f573d6000803e3d6000fd5b5050505050505050565b6000818152600260205260408120546001600160a01b0316806109f45760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610b3d565b600d8054611416906135f0565b80601f0160208091040260200160405190810160405280929190818152602001828054611442906135f0565b801561148f5780601f106114645761010080835404028352916020019161148f565b820191906000526020600020905b81548152906001019060200180831161147257829003601f168201915b505050505081565b61149f612021565b6114ba71721c310194ccfc01e523fc93c9cccfa2a0ac6117e3565b604051630368065360e61b815271721c310194ccfc01e523fc93c9cccfa2a0ac9063da0194c0906114f290309060019060040161396b565b600060405180830381600087803b15801561150c57600080fd5b505af1158015611520573d6000803e3d6000fd5b5050604051631182550160e11b815271721c310194ccfc01e523fc93c9cccfa2a0ac9250632304aa02915061155c903090600190600401613988565b600060405180830381600087803b15801561157657600080fd5b505af115801561158a573d6000803e3d6000fd5b50505050565b60006001600160a01b0382166115fa5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610b3d565b506001600160a01b031660009081526003602052604090205490565b61161e6124bf565b610fc16000612519565b611630612021565b601955565b606060078054610a1f906135f0565b6008546000906001600160a01b031615610ec757600854604051635caaa2a960e11b81523060048201526001600160a01b0390911690639445f53090829063b955455290602401606060405180830381865afa1580156116a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116cc91906136c6565b60409081015190516001600160e01b031960e084901b1681526001600160781b0390911660048201526001600160a01b0385166024820152604401610e86565b611714612323565b61171c612021565b60405163a9059cbb60e01b81523360048201526024810182905282906001600160a01b0382169063a9059cbb906044016020604051808303816000875af115801561176b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178f9190613738565b6117cd5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610b3d565b50610a0c6001600c55565b610a0c33838361256b565b6117eb612021565b60006001600160a01b0382163b15611866576040516301ffc9a760e01b8152600060048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa92505050801561185e575060408051601f3d908101601f1916820190925261185b91810190613738565b60015b156118665790505b6001600160a01b0382161580159061187c575080155b1561189a576040516332483afb60e01b815260040160405180910390fd5b600854604080516001600160a01b03928316815291841660208301527fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac910160405180910390a150600880546001600160a01b0319166001600160a01b0392909216919091179055565b61190e338361214b565b61192a5760405162461bcd60e51b8152600401610b3d9061362a565b61158a84848484612639565b61193e612323565b600060155460ff166003811115611957576119576130e8565b0361199c5760405162461bcd60e51b81526020600482015260156024820152744d696e74696e67206973206e6f742061637469766560581b6044820152606401610b3d565b600160155460ff1660038111156119b5576119b56130e8565b14806119d75750600260155460ff1660038111156119d5576119d56130e8565b145b15611a1657611a1183600160155460ff1660038111156119f9576119f96130e8565b14611a0657601754611a0a565b6016545b848461266c565b611a3d565b600360155460ff166003811115611a2f57611a2f6130e8565b03611a3d57611a3d836127c9565b610bde6001600c55565b60408051606081018252600080825260208201819052918101919091526008546001600160a01b031615611ae157600854604051635caaa2a960e11b81523060048201526001600160a01b039091169063b955455290602401606060405180830381865afa158015611abd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118f91906136c6565b50604080516060810182526000808252602082018190529181019190915290565b6060611b0d8261207e565b6000611b17612873565b90506000815111611b375760405180602001604052806000815250610cdf565b80611b4184612882565b604051602001611b529291906139aa565b6040516020818303038152906040529392505050565b6008546060906001600160a01b03161561119457600854604051635caaa2a960e11b81523060048201526001600160a01b03909116906317e94a6c90829063b955455290602401606060405180830381865afa158015611bcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf091906136c6565b60409081015190516001600160e01b031960e084901b1681526001600160781b03909116600482015260240161114a565b600f54600e541015611c755760405162461bcd60e51b815260206004820152601d60248201527f4f63756c6172207363616e206973206f7574206f6620736572766963650000006044820152606401610b3d565b6000611c8033611590565b3360009081526014602052604081205491925090611c9e90836139d9565b33600090815260146020526040902054909150821015611cf85760405162461bcd60e51b81526020600482015260156024820152742737903732bb903a37b5b2b739903a379039b1b0b760591b6044820152606401610b3d565b33600090815260146020526040812083905560128054839290611d1c90849061376c565b909155505060125461045711610a0c576040517ff9a43c096bfb9de71e55352d02f84e516cc6a454f59a2b2a21cc28397d2806e790600090a15050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b611d8f6124bf565b6001600160a01b038116611df45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b3d565b611dfd81612519565b50565b611e08612021565b611e11846117e3565b604051630368065360e61b81526001600160a01b0385169063da0194c090611e3f903090879060040161396b565b600060405180830381600087803b158015611e5957600080fd5b505af1158015611e6d573d6000803e3d6000fd5b5050604051631182550160e11b81526001600160a01b0387169250632304aa029150611e9f9030908690600401613988565b600060405180830381600087803b158015611eb957600080fd5b505af1158015611ecd573d6000803e3d6000fd5b505060405163235d10c560e21b81526001600160a01b0387169250638d74431491506113719030908590600401613988565b6127106001600160601b0382161115611f6d5760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608401610b3d565b6001600160a01b038216611fc35760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401610b3d565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600955565b60006001600160e01b0319821663152a902d60e11b14806109f457506109f482612915565b610fc16124bf565b6120338282611eff565b6040516001600160601b03821681526001600160a01b038316907f8a8bae378cb731c5c40b632330c6836c2f916f48edb967699c86736f9a6a76ef9060200160405180910390a25050565b6000818152600260205260409020546001600160a01b0316611dfd5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610b3d565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612112826113a9565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080612157836113a9565b9050806001600160a01b0316846001600160a01b0316148061217e575061217e8185611d59565b806121a25750836001600160a01b031661219784610aa2565b6001600160a01b0316145b949350505050565b826001600160a01b03166121bd826113a9565b6001600160a01b0316146121e35760405162461bcd60e51b8152600401610b3d906139ec565b6001600160a01b0382166122455760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610b3d565b612252838383600161293a565b826001600160a01b0316612265826113a9565b6001600160a01b03161461228b5760405162461bcd60e51b8152600401610b3d906139ec565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4610bde8383836001612968565b6002600c54036123755760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b3d565b6002600c55565b6000612387826113a9565b905061239781600084600161293a565b6123a0826113a9565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a4610a0c816000846001612968565b60115460005b8281101561245c5761244a84612445838561376c565b61298f565b8061245481613a31565b91505061242f565b50816011600082825461246f919061376c565b90915550506001600160a01b0383166000908152601360205260408120805484929061249c90849061376c565b9250508190555081600e60008282546124b5919061376c565b9091555050505050565b600b546001600160a01b03163314610fc15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b3d565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b0316036125cc5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610b3d565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6126448484846121aa565b612650848484846129a9565b61158a5760405162461bcd60e51b8152600401610b3d90613a4a565b81816126e3828280806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506019546040516bffffffffffffffffffffffff193360601b166020820152909250603401905060405160208183030381529060405280519060200120612aaa565b6127215760405162461bcd60e51b815260206004820152600f60248201526e139bdd081dda1a5d195b1a5cdd1959608a1b6044820152606401610b3d565b3360009081526013602052604090205486908690819061274290849061376c565b11156127875760405162461bcd60e51b8152602060048201526014602482015273115e18d959591cc81dd85b1b195d081b1a5b5a5d60621b6044820152606401610b3d565b600f5482600e54612798919061376c565b11156127b65760405162461bcd60e51b8152600401610b3d9061377f565b6127bf88612ac0565b61139f3389612429565b6018543360009081526013602052604090205482919081906127ec90849061376c565b11156128315760405162461bcd60e51b8152602060048201526014602482015273115e18d959591cc81dd85b1b195d081b1a5b5a5d60621b6044820152606401610b3d565b600f5482600e54612842919061376c565b11156128605760405162461bcd60e51b8152600401610b3d9061377f565b61286983612ac0565b610bde3384612429565b6060600d8054610a1f906135f0565b6060600061288f83612b1a565b600101905060008167ffffffffffffffff8111156128af576128af6132a5565b6040519080825280601f01601f1916602001820160405280156128d9576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846128e357509392505050565b60006001600160e01b031982166310c8aba560e31b14806109f457506109f482612bf2565b60005b81811015612961576129598585612954848761376c565b612c42565b60010161293d565b5050505050565b60005b81811015612961576129878585612982848761376c565b612c98565b60010161296b565b610a0c828260405180602001604052806000815250612cdf565b60006001600160a01b0384163b15612a9f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906129ed903390899088908890600401613a9c565b6020604051808303816000875af1925050508015612a28575060408051601f3d908101601f19168201909252612a2591810190613ad9565b60015b612a85573d808015612a56576040519150601f19603f3d011682016040523d82523d6000602084013e612a5b565b606091505b508051600003612a7d5760405162461bcd60e51b8152600401610b3d90613a4a565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506121a2565b506001949350505050565b600082612ab78584612d12565b14949350505050565b600081601054612ad0919061368d565b905080341015610a0c5760405162461bcd60e51b8152602060048201526015602482015274125b9cdd59999a58da595b9d08105411481cd95b9d605a1b6044820152606401610b3d565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310612b595772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612b85576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310612ba357662386f26fc10000830492506010015b6305f5e1008310612bbb576305f5e100830492506008015b6127108310612bcf57612710830492506004015b60648310612be1576064830492506002015b600a83106109f45760010192915050565b60006001600160e01b031982166380ac58cd60e01b1480612c2357506001600160e01b03198216635b5e139f60e01b145b806109f457506301ffc9a760e01b6001600160e01b03198316146109f4565b6001600160a01b038381161590831615818015612c5c5750805b15612c7a57604051635cbd944160e01b815260040160405180910390fd5b8115612c86575b612961565b80612c81576129613386868634612d5f565b6001600160a01b038381161590831615818015612cb25750805b15612cd057604051635cbd944160e01b815260040160405180910390fd5b81612c815780612c8157612961565b612ce98383612de4565b612cf660008484846129a9565b610bde5760405162461bcd60e51b8152600401610b3d90613a4a565b600081815b8451811015612d5757612d4382868381518110612d3657612d36613af6565b6020026020010151612f87565b915080612d4f81613a31565b915050612d17565b509392505050565b6008546001600160a01b0316156129615760085460405163050bf71960e31b81526001600160a01b038781166004830152868116602483015285811660448301529091169063285fb8c89060640160006040518083038186803b158015612dc557600080fd5b505afa158015612dd9573d6000803e3d6000fd5b505050505050505050565b6001600160a01b038216612e3a5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610b3d565b6000818152600260205260409020546001600160a01b031615612e9f5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610b3d565b612ead60008383600161293a565b6000818152600260205260409020546001600160a01b031615612f125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610b3d565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4610a0c600083836001612968565b6000818310612fa3576000828152602084905260409020610cdf565b5060009182526020526040902090565b6001600160e01b031981168114611dfd57600080fd5b600060208284031215612fdb57600080fd5b8135610cdf81612fb3565b6001600160a01b0381168114611dfd57600080fd5b6000806040838503121561300e57600080fd5b823561301981612fe6565b915060208301356001600160601b038116811461303557600080fd5b809150509250929050565b60005b8381101561305b578181015183820152602001613043565b50506000910152565b6000815180845261307c816020860160208601613040565b601f01601f19169290920160200192915050565b602081526000610cdf6020830184613064565b6000602082840312156130b557600080fd5b5035919050565b600080604083850312156130cf57600080fd5b82356130da81612fe6565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b6020810160048310613112576131126130e8565b91905290565b6000806000806080858703121561312e57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060006060848603121561315f57600080fd5b833561316a81612fe6565b9250602084013561317a81612fe6565b9150604084013561318a81612fe6565b809150509250925092565b600781106131a5576131a56130e8565b9052565b602081016109f48284613195565b6000806000606084860312156131cc57600080fd5b83356131d781612fe6565b925060208401356131e781612fe6565b929592945050506040919091013590565b6000806040838503121561320b57600080fd5b50508035926020909101359150565b60006020828403121561322c57600080fd5b8135610cdf81612fe6565b60006020828403121561324957600080fd5b813560048110610cdf57600080fd5b6020808252825182820181905260009190848201906040850190845b818110156132995783516001600160a01b031683529284019291840191600101613274565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156132e4576132e46132a5565b604052919050565b600067ffffffffffffffff831115613306576133066132a5565b613319601f8401601f19166020016132bb565b905082815283838301111561332d57600080fd5b828260208301376000602084830101529392505050565b60006020828403121561335657600080fd5b813567ffffffffffffffff81111561336d57600080fd5b8201601f8101841361337e57600080fd5b6121a2848235602084016132ec565b60078110611dfd57600080fd5b6001600160781b0381168114611dfd57600080fd5b6000806000606084860312156133c457600080fd5b83356133cf8161338d565b925060208401356133df8161339a565b9150604084013561318a8161339a565b8015158114611dfd57600080fd5b6000806040838503121561341057600080fd5b823561341b81612fe6565b91506020830135613035816133ef565b6000806000806080858703121561344157600080fd5b843561344c81612fe6565b9350602085013561345c81612fe6565b925060408501359150606085013567ffffffffffffffff81111561347f57600080fd5b8501601f8101871361349057600080fd5b61349f878235602084016132ec565b91505092959194509250565b6000806000604084860312156134c057600080fd5b83359250602084013567ffffffffffffffff808211156134df57600080fd5b818601915086601f8301126134f357600080fd5b81358181111561350257600080fd5b8760208260051b850101111561351757600080fd5b6020830194508093505050509250925092565b600060608201905061353d828451613195565b60208301516001600160781b038082166020850152806040860151166040850152505092915050565b6000806040838503121561357957600080fd5b823561358481612fe6565b9150602083013561303581612fe6565b600080600080608085870312156135aa57600080fd5b84356135b581612fe6565b935060208501356135c58161338d565b925060408501356135d58161339a565b915060608501356135e58161339a565b939692955090935050565b600181811c9082168061360457607f821691505b60208210810361362457634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176109f4576109f4613677565b6000826136c157634e487b7160e01b600052601260045260246000fd5b500490565b6000606082840312156136d857600080fd5b6040516060810181811067ffffffffffffffff821117156136fb576136fb6132a5565b60405282516137098161338d565b815260208301516137198161339a565b6020820152604083015161372c8161339a565b60408201529392505050565b60006020828403121561374a57600080fd5b8151610cdf816133ef565b60008161376457613764613677565b506000190190565b808201808211156109f4576109f4613677565b60208082526012908201527145786365656473206d617820737570706c7960701b604082015260600190565b600060208083850312156137be57600080fd5b825167ffffffffffffffff808211156137d657600080fd5b818501915085601f8301126137ea57600080fd5b8151818111156137fc576137fc6132a5565b8060051b915061380d8483016132bb565b818152918301840191848101908884111561382757600080fd5b938501935b83851015613851578451925061384183612fe6565b828252938501939085019061382c565b98975050505050505050565b601f821115610bde57600081815260208120601f850160051c810160208610156138845750805b601f850160051c820191505b818110156138a357828155600101613890565b505050505050565b815167ffffffffffffffff8111156138c5576138c56132a5565b6138d9816138d384546135f0565b8461385d565b602080601f83116001811461390e57600084156138f65750858301515b600019600386901b1c1916600185901b1785556138a3565b600085815260208120601f198616915b8281101561393d5788860151825594840194600190910190840161391e565b508582101561395b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b038316815260408101610cdf6020830184613195565b6001600160a01b039290921682526001600160781b0316602082015260400190565b600083516139bc818460208801613040565b8351908301906139d0818360208801613040565b01949350505050565b818103818111156109f4576109f4613677565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b600060018201613a4357613a43613677565b5060010190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613acf90830184613064565b9695505050505050565b600060208284031215613aeb57600080fd5b8151610cdf81612fb3565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220c71401ac007c2f01c9e61738f0bc3d95f6a071ccd48a02043707e269bec7311b64736f6c634300081200330000000000000000000000001ce0982849f847abd410e387843f61c00eed14c000000000000000000000000000000000000000000000000000000000000002b200000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000043697066733a2f2f626166796265696137717733326a71767a707073766675626e6d79796d737a6c36786c6c696f376a6170653579707875373664766a353268347a342f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000544656e6773000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000544454e4753000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106103355760003560e01c80636352211e116101ab578063a22cb465116100f7578063d5abeb0111610095578063e985e9c51161006f578063e985e9c514610973578063ef9b63ba14610993578063f2fde38b146109a9578063fd762d92146109c957600080fd5b8063d5abeb011461091b578063dc02743814610931578063e61452661461095e57600080fd5b8063ba41b0c6116100d1578063ba41b0c6146108b1578063be537f43146108c4578063c87b56dd146108e6578063d007af5c1461090657600080fd5b8063a22cb46514610851578063a9fc664e14610871578063b88d4fde1461089157600080fd5b80637cb647591161016457806395d89b411161013e57806395d89b41146107e65780639d645a44146107fb5780639e281a981461081b578063a10777341461083b57600080fd5b80637cb647591461077b5780638da5cb5b1461079b57806393ecb0c6146107b957600080fd5b80636352211e146106e65780636c0360eb146107065780636c3b86991461071b57806370a0823114610730578063715018a6146107505780637b1b1de61461076557600080fd5b80632a55205a1161028557806342966c681161022357806355f804b3116101fd57806355f804b3146106595780635d4c1d46146106795780636088e93a146106a657806361347162146106c657600080fd5b806342966c68146105f7578063484b973c14610617578063495c8bf91461063757600080fd5b806331c07bbf1161025f57806331c07bbf1461058c5780633b7e6954146105ac5780633ccfd60b146105c257806342842e0e146105d757600080fd5b80632a55205a146105175780632e8da829146105565780632eb4a7ab1461057657600080fd5b8063098144d4116102f257806318160ddd116102cc57806318160ddd146104965780631b25b077146104b55780631c33b328146104d557806323b872dd146104f757600080fd5b8063098144d4146104315780630dd250e11461044f57806314106f861461047657600080fd5b8063014635461461033a57806301ffc9a71461037d57806304634d8d146103ad57806306fdde03146103cf578063081812fc146103f1578063095ea7b314610411575b600080fd5b34801561034657600080fd5b5061036071721c310194ccfc01e523fc93c9cccfa2a0ac81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561038957600080fd5b5061039d610398366004612fc9565b6109e9565b6040519015158152602001610374565b3480156103b957600080fd5b506103cd6103c8366004612ffb565b6109fa565b005b3480156103db57600080fd5b506103e4610a10565b6040516103749190613090565b3480156103fd57600080fd5b5061036061040c3660046130a3565b610aa2565b34801561041d57600080fd5b506103cd61042c3660046130bc565b610ac9565b34801561043d57600080fd5b506008546001600160a01b0316610360565b34801561045b57600080fd5b506015546104699060ff1681565b60405161037491906130fe565b34801561048257600080fd5b506103cd610491366004613118565b610be3565b3480156104a257600080fd5b50600e545b604051908152602001610374565b3480156104c157600080fd5b5061039d6104d036600461314a565b610c4d565b3480156104e157600080fd5b506104ea600181565b60405161037491906131a9565b34801561050357600080fd5b506103cd6105123660046131b7565b610ce6565b34801561052357600080fd5b506105376105323660046131f8565b610d17565b604080516001600160a01b039093168352602083019190915201610374565b34801561056257600080fd5b5061039d61057136600461321a565b610dc3565b34801561058257600080fd5b506104a760195481565b34801561059857600080fd5b506103cd6105a7366004613237565b610ecf565b3480156105b857600080fd5b506104a760175481565b3480156105ce57600080fd5b506103cd610f35565b3480156105e357600080fd5b506103cd6105f23660046131b7565b610fc3565b34801561060357600080fd5b506103cd6106123660046130a3565b610fde565b34801561062357600080fd5b506103cd6106323660046130bc565b611055565b34801561064357600080fd5b5061064c611096565b6040516103749190613258565b34801561066557600080fd5b506103cd610674366004613344565b6111a7565b34801561068557600080fd5b5061068e600181565b6040516001600160781b039091168152602001610374565b3480156106b257600080fd5b506103cd6106c13660046130bc565b6111bb565b3480156106d257600080fd5b506103cd6106e13660046133af565b61123e565b3480156106f257600080fd5b506103606107013660046130a3565b6113a9565b34801561071257600080fd5b506103e4611409565b34801561072757600080fd5b506103cd611497565b34801561073c57600080fd5b506104a761074b36600461321a565b611590565b34801561075c57600080fd5b506103cd611616565b34801561077157600080fd5b506104a760105481565b34801561078757600080fd5b506103cd6107963660046130a3565b611628565b3480156107a757600080fd5b50600b546001600160a01b0316610360565b3480156107c557600080fd5b506104a76107d436600461321a565b60136020526000908152604090205481565b3480156107f257600080fd5b506103e4611635565b34801561080757600080fd5b5061039d61081636600461321a565b611644565b34801561082757600080fd5b506103cd6108363660046130bc565b61170c565b34801561084757600080fd5b506104a760165481565b34801561085d57600080fd5b506103cd61086c3660046133fd565b6117d8565b34801561087d57600080fd5b506103cd61088c36600461321a565b6117e3565b34801561089d57600080fd5b506103cd6108ac36600461342b565b611904565b6103cd6108bf3660046134ab565b611936565b3480156108d057600080fd5b506108d9611a47565b604051610374919061352a565b3480156108f257600080fd5b506103e46109013660046130a3565b611b02565b34801561091257600080fd5b5061064c611b68565b34801561092757600080fd5b506104a7600f5481565b34801561093d57600080fd5b506104a761094c36600461321a565b60146020526000908152604090205481565b34801561096a57600080fd5b506103cd611c21565b34801561097f57600080fd5b5061039d61098e366004613566565b611d59565b34801561099f57600080fd5b506104a760185481565b3480156109b557600080fd5b506103cd6109c436600461321a565b611d87565b3480156109d557600080fd5b506103cd6109e4366004613594565b611e00565b60006109f482611ffc565b92915050565b610a02612021565b610a0c8282612029565b5050565b606060068054610a1f906135f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4b906135f0565b8015610a985780601f10610a6d57610100808354040283529160200191610a98565b820191906000526020600020905b815481529060010190602001808311610a7b57829003601f168201915b5050505050905090565b6000610aad8261207e565b506000908152600460205260409020546001600160a01b031690565b6000610ad4826113a9565b9050806001600160a01b0316836001600160a01b031603610b465760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610b625750610b628133611d59565b610bd45760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610b3d565b610bde83836120dd565b505050565b610beb612021565b60108490556016839055601782905560188190556040805185815260208101859052908101839052606081018290527f5481d5be192044d5679fda2417ebb981a47feb33774055c2ac9636e522b9652c9060800160405180910390a150505050565b6008546000906001600160a01b031615610cdb5760085460405163050bf71960e31b81526001600160a01b038681166004830152858116602483015284811660448301529091169063285fb8c89060640160006040518083038186803b158015610cb657600080fd5b505afa925050508015610cc7575060015b610cd357506000610cdf565b506001610cdf565b5060015b9392505050565b610cf0338261214b565b610d0c5760405162461bcd60e51b8152600401610b3d9061362a565b610bde8383836121aa565b6000828152600a602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092528291610d8c5750604080518082019091526009546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090610dab906001600160601b03168761368d565b610db591906136a4565b915196919550909350505050565b6008546000906001600160a01b031615610ec757600854604051635caaa2a960e11b81523060048201526001600160a01b039091169063d72dde5e90829063b955455290602401606060405180830381865afa158015610e27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4b91906136c6565b602001516040516001600160e01b031960e084901b1681526001600160781b0390911660048201526001600160a01b03851660248201526044015b602060405180830381865afa158015610ea3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f49190613738565b506000919050565b610ed7612021565b6015805482919060ff19166001836003811115610ef657610ef66130e8565b02179055507f2757d185fc153b2591e9d55b19b9e625d6c548ff923105c32ac05fd515ffaa1381604051610f2a91906130fe565b60405180910390a150565b610f3d612323565b610f45612021565b4780610f885760405162461bcd60e51b81526020600482015260126024820152714e6f2041504520746f20776974686472617760701b6044820152606401610b3d565b604051339082156108fc029083906000818181858888f19350505050158015610fb5573d6000803e3d6000fd5b5050610fc16001600c55565b565b610bde83838360405180602001604052806000815250611904565b610fe8338261214b565b6110345760405162461bcd60e51b815260206004820181905260248201527f43616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665646044820152606401610b3d565b61103d8161237c565b600e805490600061104d83613755565b919050555050565b61105d612021565b600f5481600e5461106e919061376c565b111561108c5760405162461bcd60e51b8152600401610b3d9061377f565b610a0c8282612429565b6008546060906001600160a01b03161561119457600854604051635caaa2a960e11b81523060048201526001600160a01b0390911690633fe5df9990829063b955455290602401606060405180830381865afa1580156110fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111e91906136c6565b602001516040516001600160e01b031960e084901b1681526001600160781b0390911660048201526024015b600060405180830381865afa158015611167573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261118f91908101906137ab565b905090565b5060408051600081526020810190915290565b6111af612021565b600d610a0c82826138ab565b6111c3612323565b6111cb612021565b604051632142170760e11b81523060048201523360248201526044810182905282906001600160a01b038216906342842e0e90606401600060405180830381600087803b15801561121b57600080fd5b505af115801561122f573d6000803e3d6000fd5b5050505050610a0c6001600c55565b611246612021565b600061125a6008546001600160a01b031690565b90506001600160a01b03811661128357604051631cffe3dd60e11b815260040160405180910390fd5b604051630368065360e61b81526001600160a01b0382169063da0194c0906112b1903090889060040161396b565b600060405180830381600087803b1580156112cb57600080fd5b505af11580156112df573d6000803e3d6000fd5b5050604051631182550160e11b81526001600160a01b0384169250632304aa0291506113119030908790600401613988565b600060405180830381600087803b15801561132b57600080fd5b505af115801561133f573d6000803e3d6000fd5b505060405163235d10c560e21b81526001600160a01b0384169250638d74431491506113719030908690600401613988565b600060405180830381600087803b15801561138b57600080fd5b505af115801561139f573d6000803e3d6000fd5b5050505050505050565b6000818152600260205260408120546001600160a01b0316806109f45760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610b3d565b600d8054611416906135f0565b80601f0160208091040260200160405190810160405280929190818152602001828054611442906135f0565b801561148f5780601f106114645761010080835404028352916020019161148f565b820191906000526020600020905b81548152906001019060200180831161147257829003601f168201915b505050505081565b61149f612021565b6114ba71721c310194ccfc01e523fc93c9cccfa2a0ac6117e3565b604051630368065360e61b815271721c310194ccfc01e523fc93c9cccfa2a0ac9063da0194c0906114f290309060019060040161396b565b600060405180830381600087803b15801561150c57600080fd5b505af1158015611520573d6000803e3d6000fd5b5050604051631182550160e11b815271721c310194ccfc01e523fc93c9cccfa2a0ac9250632304aa02915061155c903090600190600401613988565b600060405180830381600087803b15801561157657600080fd5b505af115801561158a573d6000803e3d6000fd5b50505050565b60006001600160a01b0382166115fa5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610b3d565b506001600160a01b031660009081526003602052604090205490565b61161e6124bf565b610fc16000612519565b611630612021565b601955565b606060078054610a1f906135f0565b6008546000906001600160a01b031615610ec757600854604051635caaa2a960e11b81523060048201526001600160a01b0390911690639445f53090829063b955455290602401606060405180830381865afa1580156116a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116cc91906136c6565b60409081015190516001600160e01b031960e084901b1681526001600160781b0390911660048201526001600160a01b0385166024820152604401610e86565b611714612323565b61171c612021565b60405163a9059cbb60e01b81523360048201526024810182905282906001600160a01b0382169063a9059cbb906044016020604051808303816000875af115801561176b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178f9190613738565b6117cd5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610b3d565b50610a0c6001600c55565b610a0c33838361256b565b6117eb612021565b60006001600160a01b0382163b15611866576040516301ffc9a760e01b8152600060048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa92505050801561185e575060408051601f3d908101601f1916820190925261185b91810190613738565b60015b156118665790505b6001600160a01b0382161580159061187c575080155b1561189a576040516332483afb60e01b815260040160405180910390fd5b600854604080516001600160a01b03928316815291841660208301527fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac910160405180910390a150600880546001600160a01b0319166001600160a01b0392909216919091179055565b61190e338361214b565b61192a5760405162461bcd60e51b8152600401610b3d9061362a565b61158a84848484612639565b61193e612323565b600060155460ff166003811115611957576119576130e8565b0361199c5760405162461bcd60e51b81526020600482015260156024820152744d696e74696e67206973206e6f742061637469766560581b6044820152606401610b3d565b600160155460ff1660038111156119b5576119b56130e8565b14806119d75750600260155460ff1660038111156119d5576119d56130e8565b145b15611a1657611a1183600160155460ff1660038111156119f9576119f96130e8565b14611a0657601754611a0a565b6016545b848461266c565b611a3d565b600360155460ff166003811115611a2f57611a2f6130e8565b03611a3d57611a3d836127c9565b610bde6001600c55565b60408051606081018252600080825260208201819052918101919091526008546001600160a01b031615611ae157600854604051635caaa2a960e11b81523060048201526001600160a01b039091169063b955455290602401606060405180830381865afa158015611abd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118f91906136c6565b50604080516060810182526000808252602082018190529181019190915290565b6060611b0d8261207e565b6000611b17612873565b90506000815111611b375760405180602001604052806000815250610cdf565b80611b4184612882565b604051602001611b529291906139aa565b6040516020818303038152906040529392505050565b6008546060906001600160a01b03161561119457600854604051635caaa2a960e11b81523060048201526001600160a01b03909116906317e94a6c90829063b955455290602401606060405180830381865afa158015611bcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf091906136c6565b60409081015190516001600160e01b031960e084901b1681526001600160781b03909116600482015260240161114a565b600f54600e541015611c755760405162461bcd60e51b815260206004820152601d60248201527f4f63756c6172207363616e206973206f7574206f6620736572766963650000006044820152606401610b3d565b6000611c8033611590565b3360009081526014602052604081205491925090611c9e90836139d9565b33600090815260146020526040902054909150821015611cf85760405162461bcd60e51b81526020600482015260156024820152742737903732bb903a37b5b2b739903a379039b1b0b760591b6044820152606401610b3d565b33600090815260146020526040812083905560128054839290611d1c90849061376c565b909155505060125461045711610a0c576040517ff9a43c096bfb9de71e55352d02f84e516cc6a454f59a2b2a21cc28397d2806e790600090a15050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b611d8f6124bf565b6001600160a01b038116611df45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b3d565b611dfd81612519565b50565b611e08612021565b611e11846117e3565b604051630368065360e61b81526001600160a01b0385169063da0194c090611e3f903090879060040161396b565b600060405180830381600087803b158015611e5957600080fd5b505af1158015611e6d573d6000803e3d6000fd5b5050604051631182550160e11b81526001600160a01b0387169250632304aa029150611e9f9030908690600401613988565b600060405180830381600087803b158015611eb957600080fd5b505af1158015611ecd573d6000803e3d6000fd5b505060405163235d10c560e21b81526001600160a01b0387169250638d74431491506113719030908590600401613988565b6127106001600160601b0382161115611f6d5760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608401610b3d565b6001600160a01b038216611fc35760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401610b3d565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600955565b60006001600160e01b0319821663152a902d60e11b14806109f457506109f482612915565b610fc16124bf565b6120338282611eff565b6040516001600160601b03821681526001600160a01b038316907f8a8bae378cb731c5c40b632330c6836c2f916f48edb967699c86736f9a6a76ef9060200160405180910390a25050565b6000818152600260205260409020546001600160a01b0316611dfd5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610b3d565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612112826113a9565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080612157836113a9565b9050806001600160a01b0316846001600160a01b0316148061217e575061217e8185611d59565b806121a25750836001600160a01b031661219784610aa2565b6001600160a01b0316145b949350505050565b826001600160a01b03166121bd826113a9565b6001600160a01b0316146121e35760405162461bcd60e51b8152600401610b3d906139ec565b6001600160a01b0382166122455760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610b3d565b612252838383600161293a565b826001600160a01b0316612265826113a9565b6001600160a01b03161461228b5760405162461bcd60e51b8152600401610b3d906139ec565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4610bde8383836001612968565b6002600c54036123755760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b3d565b6002600c55565b6000612387826113a9565b905061239781600084600161293a565b6123a0826113a9565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a4610a0c816000846001612968565b60115460005b8281101561245c5761244a84612445838561376c565b61298f565b8061245481613a31565b91505061242f565b50816011600082825461246f919061376c565b90915550506001600160a01b0383166000908152601360205260408120805484929061249c90849061376c565b9250508190555081600e60008282546124b5919061376c565b9091555050505050565b600b546001600160a01b03163314610fc15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b3d565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b0316036125cc5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610b3d565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6126448484846121aa565b612650848484846129a9565b61158a5760405162461bcd60e51b8152600401610b3d90613a4a565b81816126e3828280806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506019546040516bffffffffffffffffffffffff193360601b166020820152909250603401905060405160208183030381529060405280519060200120612aaa565b6127215760405162461bcd60e51b815260206004820152600f60248201526e139bdd081dda1a5d195b1a5cdd1959608a1b6044820152606401610b3d565b3360009081526013602052604090205486908690819061274290849061376c565b11156127875760405162461bcd60e51b8152602060048201526014602482015273115e18d959591cc81dd85b1b195d081b1a5b5a5d60621b6044820152606401610b3d565b600f5482600e54612798919061376c565b11156127b65760405162461bcd60e51b8152600401610b3d9061377f565b6127bf88612ac0565b61139f3389612429565b6018543360009081526013602052604090205482919081906127ec90849061376c565b11156128315760405162461bcd60e51b8152602060048201526014602482015273115e18d959591cc81dd85b1b195d081b1a5b5a5d60621b6044820152606401610b3d565b600f5482600e54612842919061376c565b11156128605760405162461bcd60e51b8152600401610b3d9061377f565b61286983612ac0565b610bde3384612429565b6060600d8054610a1f906135f0565b6060600061288f83612b1a565b600101905060008167ffffffffffffffff8111156128af576128af6132a5565b6040519080825280601f01601f1916602001820160405280156128d9576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846128e357509392505050565b60006001600160e01b031982166310c8aba560e31b14806109f457506109f482612bf2565b60005b81811015612961576129598585612954848761376c565b612c42565b60010161293d565b5050505050565b60005b81811015612961576129878585612982848761376c565b612c98565b60010161296b565b610a0c828260405180602001604052806000815250612cdf565b60006001600160a01b0384163b15612a9f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906129ed903390899088908890600401613a9c565b6020604051808303816000875af1925050508015612a28575060408051601f3d908101601f19168201909252612a2591810190613ad9565b60015b612a85573d808015612a56576040519150601f19603f3d011682016040523d82523d6000602084013e612a5b565b606091505b508051600003612a7d5760405162461bcd60e51b8152600401610b3d90613a4a565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506121a2565b506001949350505050565b600082612ab78584612d12565b14949350505050565b600081601054612ad0919061368d565b905080341015610a0c5760405162461bcd60e51b8152602060048201526015602482015274125b9cdd59999a58da595b9d08105411481cd95b9d605a1b6044820152606401610b3d565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310612b595772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612b85576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310612ba357662386f26fc10000830492506010015b6305f5e1008310612bbb576305f5e100830492506008015b6127108310612bcf57612710830492506004015b60648310612be1576064830492506002015b600a83106109f45760010192915050565b60006001600160e01b031982166380ac58cd60e01b1480612c2357506001600160e01b03198216635b5e139f60e01b145b806109f457506301ffc9a760e01b6001600160e01b03198316146109f4565b6001600160a01b038381161590831615818015612c5c5750805b15612c7a57604051635cbd944160e01b815260040160405180910390fd5b8115612c86575b612961565b80612c81576129613386868634612d5f565b6001600160a01b038381161590831615818015612cb25750805b15612cd057604051635cbd944160e01b815260040160405180910390fd5b81612c815780612c8157612961565b612ce98383612de4565b612cf660008484846129a9565b610bde5760405162461bcd60e51b8152600401610b3d90613a4a565b600081815b8451811015612d5757612d4382868381518110612d3657612d36613af6565b6020026020010151612f87565b915080612d4f81613a31565b915050612d17565b509392505050565b6008546001600160a01b0316156129615760085460405163050bf71960e31b81526001600160a01b038781166004830152868116602483015285811660448301529091169063285fb8c89060640160006040518083038186803b158015612dc557600080fd5b505afa158015612dd9573d6000803e3d6000fd5b505050505050505050565b6001600160a01b038216612e3a5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610b3d565b6000818152600260205260409020546001600160a01b031615612e9f5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610b3d565b612ead60008383600161293a565b6000818152600260205260409020546001600160a01b031615612f125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610b3d565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4610a0c600083836001612968565b6000818310612fa3576000828152602084905260409020610cdf565b5060009182526020526040902090565b6001600160e01b031981168114611dfd57600080fd5b600060208284031215612fdb57600080fd5b8135610cdf81612fb3565b6001600160a01b0381168114611dfd57600080fd5b6000806040838503121561300e57600080fd5b823561301981612fe6565b915060208301356001600160601b038116811461303557600080fd5b809150509250929050565b60005b8381101561305b578181015183820152602001613043565b50506000910152565b6000815180845261307c816020860160208601613040565b601f01601f19169290920160200192915050565b602081526000610cdf6020830184613064565b6000602082840312156130b557600080fd5b5035919050565b600080604083850312156130cf57600080fd5b82356130da81612fe6565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b6020810160048310613112576131126130e8565b91905290565b6000806000806080858703121561312e57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060006060848603121561315f57600080fd5b833561316a81612fe6565b9250602084013561317a81612fe6565b9150604084013561318a81612fe6565b809150509250925092565b600781106131a5576131a56130e8565b9052565b602081016109f48284613195565b6000806000606084860312156131cc57600080fd5b83356131d781612fe6565b925060208401356131e781612fe6565b929592945050506040919091013590565b6000806040838503121561320b57600080fd5b50508035926020909101359150565b60006020828403121561322c57600080fd5b8135610cdf81612fe6565b60006020828403121561324957600080fd5b813560048110610cdf57600080fd5b6020808252825182820181905260009190848201906040850190845b818110156132995783516001600160a01b031683529284019291840191600101613274565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156132e4576132e46132a5565b604052919050565b600067ffffffffffffffff831115613306576133066132a5565b613319601f8401601f19166020016132bb565b905082815283838301111561332d57600080fd5b828260208301376000602084830101529392505050565b60006020828403121561335657600080fd5b813567ffffffffffffffff81111561336d57600080fd5b8201601f8101841361337e57600080fd5b6121a2848235602084016132ec565b60078110611dfd57600080fd5b6001600160781b0381168114611dfd57600080fd5b6000806000606084860312156133c457600080fd5b83356133cf8161338d565b925060208401356133df8161339a565b9150604084013561318a8161339a565b8015158114611dfd57600080fd5b6000806040838503121561341057600080fd5b823561341b81612fe6565b91506020830135613035816133ef565b6000806000806080858703121561344157600080fd5b843561344c81612fe6565b9350602085013561345c81612fe6565b925060408501359150606085013567ffffffffffffffff81111561347f57600080fd5b8501601f8101871361349057600080fd5b61349f878235602084016132ec565b91505092959194509250565b6000806000604084860312156134c057600080fd5b83359250602084013567ffffffffffffffff808211156134df57600080fd5b818601915086601f8301126134f357600080fd5b81358181111561350257600080fd5b8760208260051b850101111561351757600080fd5b6020830194508093505050509250925092565b600060608201905061353d828451613195565b60208301516001600160781b038082166020850152806040860151166040850152505092915050565b6000806040838503121561357957600080fd5b823561358481612fe6565b9150602083013561303581612fe6565b600080600080608085870312156135aa57600080fd5b84356135b581612fe6565b935060208501356135c58161338d565b925060408501356135d58161339a565b915060608501356135e58161339a565b939692955090935050565b600181811c9082168061360457607f821691505b60208210810361362457634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176109f4576109f4613677565b6000826136c157634e487b7160e01b600052601260045260246000fd5b500490565b6000606082840312156136d857600080fd5b6040516060810181811067ffffffffffffffff821117156136fb576136fb6132a5565b60405282516137098161338d565b815260208301516137198161339a565b6020820152604083015161372c8161339a565b60408201529392505050565b60006020828403121561374a57600080fd5b8151610cdf816133ef565b60008161376457613764613677565b506000190190565b808201808211156109f4576109f4613677565b60208082526012908201527145786365656473206d617820737570706c7960701b604082015260600190565b600060208083850312156137be57600080fd5b825167ffffffffffffffff808211156137d657600080fd5b818501915085601f8301126137ea57600080fd5b8151818111156137fc576137fc6132a5565b8060051b915061380d8483016132bb565b818152918301840191848101908884111561382757600080fd5b938501935b83851015613851578451925061384183612fe6565b828252938501939085019061382c565b98975050505050505050565b601f821115610bde57600081815260208120601f850160051c810160208610156138845750805b601f850160051c820191505b818110156138a357828155600101613890565b505050505050565b815167ffffffffffffffff8111156138c5576138c56132a5565b6138d9816138d384546135f0565b8461385d565b602080601f83116001811461390e57600084156138f65750858301515b600019600386901b1c1916600185901b1785556138a3565b600085815260208120601f198616915b8281101561393d5788860151825594840194600190910190840161391e565b508582101561395b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b038316815260408101610cdf6020830184613195565b6001600160a01b039290921682526001600160781b0316602082015260400190565b600083516139bc818460208801613040565b8351908301906139d0818360208801613040565b01949350505050565b818103818111156109f4576109f4613677565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b600060018201613a4357613a43613677565b5060010190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613acf90830184613064565b9695505050505050565b600060208284031215613aeb57600080fd5b8151610cdf81612fb3565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220c71401ac007c2f01c9e61738f0bc3d95f6a071ccd48a02043707e269bec7311b64736f6c63430008120033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000001ce0982849f847abd410e387843f61c00eed14c000000000000000000000000000000000000000000000000000000000000002b200000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000043697066733a2f2f626166796265696137717733326a71767a707073766675626e6d79796d737a6c36786c6c696f376a6170653579707875373664766a353268347a342f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000544656e6773000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000544454e4753000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : royaltyReceiver_ (address): 0x1ce0982849f847abD410e387843F61C00eeD14c0
Arg [1] : royaltyFeeNumerator_ (uint96): 690
Arg [2] : _baseUri (string): ipfs://bafybeia7qw32jqvzppsvfubnmyymszl6xllio7jape5ypxu76dvj52h4z4/
Arg [3] : name_ (string): Dengs
Arg [4] : symbol_ (string): DENGS
-----Encoded View---------------
13 Constructor Arguments found :
Arg [0] : 0000000000000000000000001ce0982849f847abd410e387843f61c00eed14c0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000002b2
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000043
Arg [6] : 697066733a2f2f626166796265696137717733326a71767a707073766675626e
Arg [7] : 6d79796d737a6c36786c6c696f376a6170653579707875373664766a35326834
Arg [8] : 7a342f0000000000000000000000000000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [10] : 44656e6773000000000000000000000000000000000000000000000000000000
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [12] : 44454e4753000000000000000000000000000000000000000000000000000000
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.