Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
47,455,154.4581278238874122 LEEDO
Holders
238
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
4,411.35539533765987984 LEEDOValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
LeedoERC20
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-11-05 */ // SPDX-License-Identifier: MIT // File: @openzeppelin/contracts/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 // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } // File: @openzeppelin/contracts/utils/math/SafeMath.sol pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } // File: @openzeppelin/contracts/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; } } // File: @openzeppelin/contracts/access/Ownable.sol pragma solidity ^0.8.0; /** * @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. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @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); } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol pragma solidity ^0.8.0; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // File: @openzeppelin/contracts/token/ERC20/ERC20.sol pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } // File: contracts/LeedoERC20.sol /** * @dev LEEDO ERC20 Token Contract * * _ ______ * | | | _ \ * | | ___ ___| | | |___ * | | / _ \/ _ \ | | / _ \ * | |___| __/ __/ |/ / (_) | * \_____/\___|\___|___/ \___/ * LEEDO Project */ pragma solidity ^0.8.0; interface ILeedoNft { function balanceOf(address owner) external view returns (uint balance); function ownerOf(uint tokenId) external view returns (address owner); function getConsonants(uint tokenId) external view returns(string[3] memory); function getGenes(uint tokenId) external view returns (uint8[8] memory); function getConsonantsIndex(uint tokenId) external view returns (uint8[3] memory); } interface ILeedoNftVault { function ownerOf(uint tokenId) external view returns (address owner); function lastBlocks(address addr) external view returns (uint black); } contract LeedoERC20 is ERC20, Ownable, ReentrancyGuard { using SafeMath for uint; bool public daoInitialized = false; address private _daoAddr; address private _nftAddr; address private _nftVaultAddr; address private _raffleAddr; uint public claimBlocksRequired = 200000; //about 31 days uint private _decimal = 10**uint(decimals()); uint public rafflePrize = 100000 * 20; uint public nftMintableWeiAmount = (138000000 - 21000000) * _decimal; //117,000,000 * decimal uint public daoMintableAmount = 175000000 + 70000000 + 70000000 + 210000000; //525,000,000 uint public marketingMintableAmount = 35000000; uint public daoTimelock; uint public timeLockDuration = 24 hours; uint public season = 0; mapping(uint => mapping(uint => bool)) public claims; //season => (tokendId => bool) mapping(uint => uint) public claimCount; //season => count modifier onlyDao() { require(_daoAddr == _msgSender(), "ERC20: caller is not the DAO address!"); _; } modifier onlyNftVault() { require(_nftVaultAddr == _msgSender(), "ERC20: caller is not the NftVault address!"); _; } //nftAddr = 0xBE5C953DD0ddB0Ce033a98f36C981F1B74d3B33f; //mainnet //raffleAddr = 0xb109173Ab57Dab7F954Ef8F10D87a5bFDB740EEB; //mainnet constructor(address _nftAddress, address _raffleAddress) ERC20('LEEDO Project ERC20', 'LEEDO') { _nftAddr = _nftAddress; _raffleAddr = _raffleAddress; } function mintRafflePrize() external onlyOwner returns (bool) { require(_safeMint(_raffleAddr, rafflePrize.mul(_decimal)), 'ERC20: Minting failed'); rafflePrize = 0; return true; } function setNftVaultAddr(address _vault) external onlyOwner { _nftVaultAddr = _vault; } function mintNftVaultRewards(address _to, uint _amount) external onlyNftVault returns (bool) { //_amount is in wei require(_amount <= nftMintableWeiAmount, 'ERC20: Amount is more than allowed'); nftMintableWeiAmount = nftMintableWeiAmount.sub(_amount); require(_safeMint(_to, _amount), 'ERC20: Minting failed'); return true; } function mintDev(address _devAddr, uint _amount) external onlyOwner returns (bool) { require(_amount <= marketingMintableAmount, 'ERC20: Amount is more than allowed'); marketingMintableAmount = marketingMintableAmount.sub(_amount); require(_safeMint(_devAddr, _amount.mul(_decimal)), 'ERC20: Minting failed'); return true; } function initializeDao(address _daoAddress) public onlyOwner { require(!daoInitialized, 'ERC20: DAO is already initialized'); _daoAddr = _daoAddress; daoInitialized = true; } function setDaoAddr(address _daoAddress) public onlyDao { require(daoInitialized, 'ERC20: DAO is not initialized'); _daoAddr = _daoAddress; } function unlockDaoMint() public onlyDao { daoTimelock = block.timestamp + timeLockDuration; } function daoMint(uint _amount) public onlyDao returns (bool) { require(daoTimelock != 0 && daoTimelock <= block.timestamp, 'ERC20: Wait _daoTimelock passes'); require(_amount <= daoMintableAmount, 'ERC20: Amount is more than allowed'); daoMintableAmount = daoMintableAmount.sub(_amount); require(_safeMint(_daoAddr, _amount.mul(_decimal)), 'ERC20: Minting failed'); daoTimelock = 0; return true; } function daoSetSeason(uint _season) external onlyDao { season = _season; } function setDaoMintable(uint _amount) external onlyDao { daoMintableAmount = _amount; } function setNftAddress(address _newAddress) external onlyDao { _nftAddr = _newAddress; } function setNftVaultAddrByDao(address _vault) external onlyDao { _nftVaultAddr = _vault; } function _safeMint(address _to, uint _amount) private nonReentrant returns (bool) { _mint(_to, _amount); //in wei return true; } function claim(uint[] calldata _tokenIds) external returns (uint) { require(_tokenIds.length <= 20, 'ERC20: maximum bulk claims is 20 cards per tx'); ILeedoNftVault sNFT = ILeedoNftVault(_nftVaultAddr); //only Staked NFT can claim require(sNFT.lastBlocks(_msgSender()) + claimBlocksRequired < block.number, 'ERC20: does not meet claimBlockRequired'); uint total; for (uint i=0; i<_tokenIds.length; i++) { uint tokenId = _tokenIds[i]; require(tokenId > 0 && tokenId < 9577, 'ERC20: tokenId is invalid'); require(claims[season][tokenId] == false, 'ERC20: tokenId is already claimed'); require(_msgSender() == sNFT.ownerOf(tokenId), 'ERC20: Only Staked NFT owner can claim'); uint amount = calcRewards(tokenId); claims[season][tokenId] = true; claimCount[season] += 1; total = total.add(amount); } require(_safeMint(_msgSender(), total.mul(_decimal)), 'SquidERC20: Minting failed'); return total; } function calcRewards(uint _tokenId) public view returns (uint) { ILeedoNft NFT = ILeedoNft(_nftAddr); uint8[3] memory consonants = NFT.getConsonantsIndex(_tokenId); uint8[8] memory genes = NFT.getGenes(_tokenId); uint geneSSum; uint left = consonants[0]; uint center = consonants[1]; uint right = consonants[2]; uint consFactor; uint timeFactor = 141 * (16000 - claimCount[season]) / 9000; //1 -> 250 9576 -> 100 uint tokenIdFactor; if (_tokenId <= 100) { tokenIdFactor = 200; } else if (_tokenId <= 1000) { tokenIdFactor = 150; } else { tokenIdFactor = 100; } for (uint i=0; i<8; i++) { geneSSum += uint(genes[i]).mul(uint(genes[i])); } if (geneSSum < 100) { geneSSum = 100; } else if (geneSSum > 648) { geneSSum = 648; } if (timeFactor < 100) { timeFactor = 100; } if (left == 7 && center == 14 && right == 4) { consFactor = 2; } else if (left == center && left == center && center == right) { consFactor = 10; } else if (left == 7 && left == 4 && center == 14) { consFactor = 5; } else if (left == 4 && left == 7 && center == 14) { consFactor = 5; } else if (left == 4 && left == 14 && center == 7) { consFactor = 5; } else if (left == 14 && left == 7 && center == 4) { consFactor = 5; } else if (left == 14 && left == 4 && center == 7) { consFactor = 5; } else if ((left == 4 && left == center) || (left == 4 && left == right)) { consFactor = 3; } else if ((left == 14 && left == center) || (left == 14 && left == right)) { consFactor = 3; } else if ((left == 7 && left == center) || (left == 7 && left == right)) { consFactor = 3; } else if (center == 4 && center == right ) { consFactor = 3; } else if (center == 14 && center == right ) { consFactor = 3; } else if (center == 7 && center == right ) { consFactor = 3; } else { consFactor = 1; } return (geneSSum * tokenIdFactor * consFactor * timeFactor) / 2000; } function daoAddr() external view returns (address) { return _daoAddr; } function nftAddr() external view returns (address) { return _nftAddr; } function nftVaultAddr() external view returns (address) { return _nftVaultAddr; } function raffleAddr() external view returns (address) { return _raffleAddr; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_nftAddress","type":"address"},{"internalType":"address","name":"_raffleAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"calcRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"claim","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimBlocksRequired","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"claimCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"claims","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"daoAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"daoInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"daoMint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"daoMintableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_season","type":"uint256"}],"name":"daoSetSeason","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"daoTimelock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_daoAddress","type":"address"}],"name":"initializeDao","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingMintableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_devAddr","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintDev","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintNftVaultRewards","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintRafflePrize","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftMintableWeiAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftVaultAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"raffleAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rafflePrize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"season","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_daoAddress","type":"address"}],"name":"setDaoAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setDaoMintable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAddress","type":"address"}],"name":"setNftAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"setNftVaultAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"setNftVaultAddrByDao","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeLockDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockDaoMint","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526007805460ff1916905562030d40600b55620000236012600a6200036b565b600c819055621e8480600d556200003f906306f9474062000380565b600e55631f4add40600f556302160ec06010556201518060125560006013553480156200006b57600080fd5b5060405162002599380380620025998339810160408190526200008e91620003bf565b604080518082018252601381527f4c4545444f2050726f6a656374204552433230000000000000000000000000006020808301918252835180850190945260058452644c4545444f60d81b908401528151919291620000f091600391620001b0565b50805162000106906004906020840190620001b0565b505050620001236200011d6200015a60201b60201c565b6200015e565b6001600655600880546001600160a01b039384166001600160a01b031991821617909155600a805492909316911617905562000434565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620001be90620003f7565b90600052602060002090601f016020900481019282620001e257600085556200022d565b82601f10620001fd57805160ff19168380011785556200022d565b828001600101855582156200022d579182015b828111156200022d57825182559160200191906001019062000210565b506200023b9291506200023f565b5090565b5b808211156200023b576000815560010162000240565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002ad57816000190482111562000291576200029162000256565b808516156200029f57918102915b93841c939080029062000271565b509250929050565b600082620002c65750600162000365565b81620002d55750600062000365565b8160018114620002ee5760028114620002f95762000319565b600191505062000365565b60ff8411156200030d576200030d62000256565b50506001821b62000365565b5060208310610133831016604e8410600b84101617156200033e575081810a62000365565b6200034a83836200026c565b806000190482111562000361576200036162000256565b0290505b92915050565b6000620003798383620002b5565b9392505050565b60008160001904831182151516156200039d576200039d62000256565b500290565b80516001600160a01b0381168114620003ba57600080fd5b919050565b60008060408385031215620003d357600080fd5b620003de83620003a2565b9150620003ee60208401620003a2565b90509250929050565b600181811c908216806200040c57607f821691505b602082108114156200042e57634e487b7160e01b600052602260045260246000fd5b50919050565b61215580620004446000396000f3fe608060405234801561001057600080fd5b50600436106102695760003560e01c8063715018a611610151578063b7d142e5116100c3578063d4eba61911610087578063d4eba6191461050d578063d69d2c8614610516578063dd62ed3e14610529578063f2fde38b14610562578063f894160e14610575578063ff96df44146105a357600080fd5b8063b7d142e5146104cd578063b85962e3146104e0578063bab607e5146104e9578063c50b0fb0146104fc578063c572e35c1461050557600080fd5b806395d89b411161011557806395d89b411461046f578063970e09d914610477578063a457c2d714610488578063a8d2e46a1461049b578063a9059cbb146104b1578063b19c2470146104c457600080fd5b8063715018a61461042a578063740f1e18146104325780637650186c146104435780637a4e3e3c1461044b5780638da5cb5b1461045e57600080fd5b8063313ce567116101ea57806354d59675116101ae57806354d596751461038957806355d4b56f146103a9578063607cb2ce146103b657806362759f6c146103db5780636ba4c138146103ee57806370a082311461040157600080fd5b8063313ce5671461032e578063324c6adc1461033d57806339509351146103505780633bf896811461036357806342e473151461037657600080fd5b806318160ddd1161023157806318160ddd146102ee5780631da8dc6e146102f657806320705f06146102ff57806323b872dd146103085780632f7b73de1461031b57600080fd5b806306fdde031461026e57806308a0c6b71461028c578063095ea7b3146102a15780630b102d1a146102c4578063143b1f2c146102d7575b600080fd5b6102766105ac565b6040516102839190611bfd565b60405180910390f35b61029f61029a366004611c52565b61063e565b005b6102b46102af366004611c80565b61067c565b6040519015158152602001610283565b61029f6102d2366004611cac565b610692565b6102e0600e5481565b604051908152602001610283565b6002546102e0565b6102e0600d5481565b6102e0600b5481565b6102b4610316366004611cc9565b6106e4565b61029f610329366004611cac565b61078e565b60405160128152602001610283565b6102b461034b366004611c80565b610846565b6102b461035e366004611c80565b6108da565b6102b4610371366004611c80565b610916565b61029f610384366004611c52565b6109c2565b6102e0610397366004611c52565b60156020526000908152604090205481565b6007546102b49060ff1681565b600a546001600160a01b03165b6040516001600160a01b039091168152602001610283565b6102b46103e9366004611c52565b6109f7565b6102e06103fc366004611d0a565b610b45565b6102e061040f366004611cac565b6001600160a01b031660009081526020819052604090205490565b61029f610f6c565b6008546001600160a01b03166103c3565b6102b4610fa2565b61029f610459366004611cac565b611017565b6005546001600160a01b03166103c3565b610276611063565b6009546001600160a01b03166103c3565b6102b4610496366004611c80565b611072565b60075461010090046001600160a01b03166103c3565b6102b46104bf366004611c80565b61110b565b6102e060105481565b6102e06104db366004611c52565b611118565b6102e060115481565b61029f6104f7366004611cac565b611586565b6102e060135481565b61029f611630565b6102e0600f5481565b61029f610524366004611cac565b611672565b6102e0610537366004611d7f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61029f610570366004611cac565b6116a2565b6102b4610583366004611db8565b601460209081526000928352604080842090915290825290205460ff1681565b6102e060125481565b6060600380546105bb90611dda565b80601f01602080910402602001604051908101604052809291908181526020018280546105e790611dda565b80156106345780601f1061060957610100808354040283529160200191610634565b820191906000526020600020905b81548152906001019060200180831161061757829003601f168201915b5050505050905090565b6007546001600160a01b036101009091041633146106775760405162461bcd60e51b815260040161066e90611e15565b60405180910390fd5b600f55565b600061068933848461173d565b50600192915050565b6007546001600160a01b036101009091041633146106c25760405162461bcd60e51b815260040161066e90611e15565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b60006106f1848484611861565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156107765760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161066e565b610783853385840361173d565b506001949350505050565b6005546001600160a01b031633146107b85760405162461bcd60e51b815260040161066e90611e5a565b60075460ff16156108155760405162461bcd60e51b815260206004820152602160248201527f45524332303a2044414f20697320616c726561647920696e697469616c697a656044820152601960fa1b606482015260840161066e565b6007805460ff196001600160a01b0390931661010002929092166001600160a81b0319909216919091176001179055565b6005546000906001600160a01b031633146108735760405162461bcd60e51b815260040161066e90611e5a565b6010548211156108955760405162461bcd60e51b815260040161066e90611e8f565b6010546108a29083611a30565b601055600c546108be9084906108b9908590611a43565b611a4f565b6106895760405162461bcd60e51b815260040161066e90611ed1565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610689918590610911908690611f16565b61173d565b6009546000906001600160a01b031633146109865760405162461bcd60e51b815260206004820152602a60248201527f45524332303a2063616c6c6572206973206e6f7420746865204e66745661756c6044820152697420616464726573732160b01b606482015260840161066e565b600e548211156109a85760405162461bcd60e51b815260040161066e90611e8f565b600e546109b59083611a30565b600e556108be8383611a4f565b6007546001600160a01b036101009091041633146109f25760405162461bcd60e51b815260040161066e90611e15565b601355565b6007546000906001600160a01b03610100909104163314610a2a5760405162461bcd60e51b815260040161066e90611e15565b60115415801590610a3d57504260115411155b610a895760405162461bcd60e51b815260206004820152601f60248201527f45524332303a2057616974205f64616f54696d656c6f636b2070617373657300604482015260640161066e565b600f54821115610ae75760405162461bcd60e51b815260206004820152602360248201527f45524332303a2020416d6f756e74206973206d6f7265207468616e20616c6c6f6044820152621dd95960ea1b606482015260840161066e565b600f54610af49083611a30565b600f55600754600c54610b1b9161010090046001600160a01b0316906108b9908590611a43565b610b375760405162461bcd60e51b815260040161066e90611ed1565b50600060115560015b919050565b60006014821115610bae5760405162461bcd60e51b815260206004820152602d60248201527f45524332303a206d6178696d756d2062756c6b20636c61696d7320697320323060448201526c040c6c2e4c8e640e0cae440e8f609b1b606482015260840161066e565b600954600b546001600160a01b0390911690439082635f71dadc336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b158015610c0857600080fd5b505afa158015610c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c409190611f2e565b610c4a9190611f16565b10610ca75760405162461bcd60e51b815260206004820152602760248201527f45524332303a20646f6573206e6f74206d65657420636c61696d426c6f636b52604482015266195c5d5a5c995960ca1b606482015260840161066e565b6000805b84811015610f05576000868683818110610cc757610cc7611f47565b905060200201359050600081118015610ce1575061256981105b610d2d5760405162461bcd60e51b815260206004820152601960248201527f45524332303a20746f6b656e496420697320696e76616c696400000000000000604482015260640161066e565b601354600090815260146020908152604080832084845290915290205460ff1615610da45760405162461bcd60e51b815260206004820152602160248201527f45524332303a20746f6b656e496420697320616c726561647920636c61696d656044820152601960fa1b606482015260840161066e565b6040516331a9108f60e11b8152600481018290526001600160a01b03851690636352211e9060240160206040518083038186803b158015610de457600080fd5b505afa158015610df8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1c9190611f5d565b6001600160a01b0316336001600160a01b031614610e8b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a204f6e6c79205374616b6564204e4654206f776e65722063616e60448201526520636c61696d60d01b606482015260840161066e565b6000610e9682611118565b6013805460009081526014602090815260408083208784528252808320805460ff19166001908117909155935483526015909152812080549394509192610ede908490611f16565b90915550610eee90508482611ac0565b935050508080610efd90611f7a565b915050610cab565b50610f1833600c546108b9908490611a43565b610f645760405162461bcd60e51b815260206004820152601a60248201527f537175696445524332303a204d696e74696e67206661696c6564000000000000604482015260640161066e565b949350505050565b6005546001600160a01b03163314610f965760405162461bcd60e51b815260040161066e90611e5a565b610fa06000611acc565b565b6005546000906001600160a01b03163314610fcf5760405162461bcd60e51b815260040161066e90611e5a565b600a54600c54600d54610ff0926001600160a01b0316916108b99190611a43565b61100c5760405162461bcd60e51b815260040161066e90611ed1565b506000600d55600190565b6005546001600160a01b031633146110415760405162461bcd60e51b815260040161066e90611e5a565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6060600480546105bb90611dda565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156110f45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161066e565b611101338585840361173d565b5060019392505050565b6000610689338484611861565b60085460405163cb8af74560e01b8152600481018390526000916001600160a01b0316908290829063cb8af7459060240160606040518083038186803b15801561116157600080fd5b505afa158015611175573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111999190611fbc565b604051635172589760e11b8152600481018690529091506000906001600160a01b0384169063a2e4b12e906024016101006040518083038186803b1580156111e057600080fd5b505afa1580156111f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112189190612041565b82516020808501516040808701516013546000908152601590945290832054949550919360ff938416939182169290911690849081906123289061125e90613e806120c7565b61126990608d6120de565b61127391906120fd565b9050600060648c11611287575060c861129c565b6103e88c116112985750609661129c565b5060645b60005b6008811015611303576112e58982600881106112bd576112bd611f47565b602002015160ff168a83600881106112d7576112d7611f47565b602002015160ff1690611a43565b6112ef9089611f16565b9750806112fb81611f7a565b91505061129f565b5060648710156113165760649650611326565b6102888711156113265761028896505b606482101561133457606491505b856007148015611344575084600e145b80156113505750836004145b1561135e5760029250611549565b848614801561136c57508486145b801561137757508385145b1561138557600a9250611549565b8560071480156113955750856004145b80156113a1575084600e145b156113af5760059250611549565b8560041480156113bf5750856007145b80156113cb575084600e145b156113d95760059250611549565b8560041480156113e9575085600e145b80156113f55750846007145b156114035760059250611549565b85600e1480156114135750856007145b801561141f5750846004145b1561142d5760059250611549565b85600e14801561143d5750856004145b80156114495750846007145b156114575760059250611549565b85600414801561146657508486145b8061147b575085600414801561147b57508386145b156114895760039250611549565b85600e14801561149857508486145b806114ad575085600e1480156114ad57508386145b156114bb5760039250611549565b8560071480156114ca57508486145b806114df57508560071480156114df57508386145b156114ed5760039250611549565b8460041480156114fc57508385145b1561150a5760039250611549565b84600e14801561151957508385145b156115275760039250611549565b84600714801561153657508385145b156115445760039250611549565b600192505b6107d08284611558848b6120de565b61156291906120de565b61156c91906120de565b61157691906120fd565b9c9b505050505050505050505050565b6007546001600160a01b036101009091041633146115b65760405162461bcd60e51b815260040161066e90611e15565b60075460ff166116085760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2044414f206973206e6f7420696e697469616c697a6564000000604482015260640161066e565b600780546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6007546001600160a01b036101009091041633146116605760405162461bcd60e51b815260040161066e90611e15565b60125461166d9042611f16565b601155565b6007546001600160a01b036101009091041633146110415760405162461bcd60e51b815260040161066e90611e15565b6005546001600160a01b031633146116cc5760405162461bcd60e51b815260040161066e90611e5a565b6001600160a01b0381166117315760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161066e565b61173a81611acc565b50565b6001600160a01b03831661179f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161066e565b6001600160a01b0382166118005760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161066e565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166118c55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161066e565b6001600160a01b0382166119275760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161066e565b6001600160a01b0383166000908152602081905260409020548181101561199f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161066e565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906119d6908490611f16565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a2291815260200190565b60405180910390a350505050565b6000611a3c82846120c7565b9392505050565b6000611a3c82846120de565b600060026006541415611aa45760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161066e565b6002600655611ab38383611b1e565b5060018060065592915050565b6000611a3c8284611f16565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216611b745760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161066e565b8060026000828254611b869190611f16565b90915550506001600160a01b03821660009081526020819052604081208054839290611bb3908490611f16565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600060208083528351808285015260005b81811015611c2a57858101830151858201604001528201611c0e565b81811115611c3c576000604083870101525b50601f01601f1916929092016040019392505050565b600060208284031215611c6457600080fd5b5035919050565b6001600160a01b038116811461173a57600080fd5b60008060408385031215611c9357600080fd5b8235611c9e81611c6b565b946020939093013593505050565b600060208284031215611cbe57600080fd5b8135611a3c81611c6b565b600080600060608486031215611cde57600080fd5b8335611ce981611c6b565b92506020840135611cf981611c6b565b929592945050506040919091013590565b60008060208385031215611d1d57600080fd5b823567ffffffffffffffff80821115611d3557600080fd5b818501915085601f830112611d4957600080fd5b813581811115611d5857600080fd5b8660208260051b8501011115611d6d57600080fd5b60209290920196919550909350505050565b60008060408385031215611d9257600080fd5b8235611d9d81611c6b565b91506020830135611dad81611c6b565b809150509250929050565b60008060408385031215611dcb57600080fd5b50508035926020909101359150565b600181811c90821680611dee57607f821691505b60208210811415611e0f57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526025908201527f45524332303a2063616c6c6572206973206e6f74207468652044414f20616464604082015264726573732160d81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526022908201527f45524332303a20416d6f756e74206973206d6f7265207468616e20616c6c6f77604082015261195960f21b606082015260800190565b602080825260159082015274115490cc8c0e88135a5b9d1a5b99c819985a5b1959605a1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611f2957611f29611f00565b500190565b600060208284031215611f4057600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611f6f57600080fd5b8151611a3c81611c6b565b6000600019821415611f8e57611f8e611f00565b5060010190565b634e487b7160e01b600052604160045260246000fd5b805160ff81168114610b4057600080fd5b600060608284031215611fce57600080fd5b82601f830112611fdd57600080fd5b6040516060810181811067ffffffffffffffff8211171561200057612000611f95565b60405280606084018581111561201557600080fd5b845b818110156120365761202881611fab565b835260209283019201612017565b509195945050505050565b600061010080838503121561205557600080fd5b83601f84011261206457600080fd5b60405181810181811067ffffffffffffffff8211171561208657612086611f95565b60405290830190808583111561209b57600080fd5b845b838110156120bc576120ae81611fab565b82526020918201910161209d565b509095945050505050565b6000828210156120d9576120d9611f00565b500390565b60008160001904831182151516156120f8576120f8611f00565b500290565b60008261211a57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220e3fc0117305ee0c82e18c2bfe0a2d4a00cd5c5b33813f37bbaab82767d3daf3764736f6c63430008090033000000000000000000000000be5c953dd0ddb0ce033a98f36c981f1b74d3b33f000000000000000000000000b109173ab57dab7f954ef8f10d87a5bfdb740eeb
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102695760003560e01c8063715018a611610151578063b7d142e5116100c3578063d4eba61911610087578063d4eba6191461050d578063d69d2c8614610516578063dd62ed3e14610529578063f2fde38b14610562578063f894160e14610575578063ff96df44146105a357600080fd5b8063b7d142e5146104cd578063b85962e3146104e0578063bab607e5146104e9578063c50b0fb0146104fc578063c572e35c1461050557600080fd5b806395d89b411161011557806395d89b411461046f578063970e09d914610477578063a457c2d714610488578063a8d2e46a1461049b578063a9059cbb146104b1578063b19c2470146104c457600080fd5b8063715018a61461042a578063740f1e18146104325780637650186c146104435780637a4e3e3c1461044b5780638da5cb5b1461045e57600080fd5b8063313ce567116101ea57806354d59675116101ae57806354d596751461038957806355d4b56f146103a9578063607cb2ce146103b657806362759f6c146103db5780636ba4c138146103ee57806370a082311461040157600080fd5b8063313ce5671461032e578063324c6adc1461033d57806339509351146103505780633bf896811461036357806342e473151461037657600080fd5b806318160ddd1161023157806318160ddd146102ee5780631da8dc6e146102f657806320705f06146102ff57806323b872dd146103085780632f7b73de1461031b57600080fd5b806306fdde031461026e57806308a0c6b71461028c578063095ea7b3146102a15780630b102d1a146102c4578063143b1f2c146102d7575b600080fd5b6102766105ac565b6040516102839190611bfd565b60405180910390f35b61029f61029a366004611c52565b61063e565b005b6102b46102af366004611c80565b61067c565b6040519015158152602001610283565b61029f6102d2366004611cac565b610692565b6102e0600e5481565b604051908152602001610283565b6002546102e0565b6102e0600d5481565b6102e0600b5481565b6102b4610316366004611cc9565b6106e4565b61029f610329366004611cac565b61078e565b60405160128152602001610283565b6102b461034b366004611c80565b610846565b6102b461035e366004611c80565b6108da565b6102b4610371366004611c80565b610916565b61029f610384366004611c52565b6109c2565b6102e0610397366004611c52565b60156020526000908152604090205481565b6007546102b49060ff1681565b600a546001600160a01b03165b6040516001600160a01b039091168152602001610283565b6102b46103e9366004611c52565b6109f7565b6102e06103fc366004611d0a565b610b45565b6102e061040f366004611cac565b6001600160a01b031660009081526020819052604090205490565b61029f610f6c565b6008546001600160a01b03166103c3565b6102b4610fa2565b61029f610459366004611cac565b611017565b6005546001600160a01b03166103c3565b610276611063565b6009546001600160a01b03166103c3565b6102b4610496366004611c80565b611072565b60075461010090046001600160a01b03166103c3565b6102b46104bf366004611c80565b61110b565b6102e060105481565b6102e06104db366004611c52565b611118565b6102e060115481565b61029f6104f7366004611cac565b611586565b6102e060135481565b61029f611630565b6102e0600f5481565b61029f610524366004611cac565b611672565b6102e0610537366004611d7f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61029f610570366004611cac565b6116a2565b6102b4610583366004611db8565b601460209081526000928352604080842090915290825290205460ff1681565b6102e060125481565b6060600380546105bb90611dda565b80601f01602080910402602001604051908101604052809291908181526020018280546105e790611dda565b80156106345780601f1061060957610100808354040283529160200191610634565b820191906000526020600020905b81548152906001019060200180831161061757829003601f168201915b5050505050905090565b6007546001600160a01b036101009091041633146106775760405162461bcd60e51b815260040161066e90611e15565b60405180910390fd5b600f55565b600061068933848461173d565b50600192915050565b6007546001600160a01b036101009091041633146106c25760405162461bcd60e51b815260040161066e90611e15565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b60006106f1848484611861565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156107765760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161066e565b610783853385840361173d565b506001949350505050565b6005546001600160a01b031633146107b85760405162461bcd60e51b815260040161066e90611e5a565b60075460ff16156108155760405162461bcd60e51b815260206004820152602160248201527f45524332303a2044414f20697320616c726561647920696e697469616c697a656044820152601960fa1b606482015260840161066e565b6007805460ff196001600160a01b0390931661010002929092166001600160a81b0319909216919091176001179055565b6005546000906001600160a01b031633146108735760405162461bcd60e51b815260040161066e90611e5a565b6010548211156108955760405162461bcd60e51b815260040161066e90611e8f565b6010546108a29083611a30565b601055600c546108be9084906108b9908590611a43565b611a4f565b6106895760405162461bcd60e51b815260040161066e90611ed1565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610689918590610911908690611f16565b61173d565b6009546000906001600160a01b031633146109865760405162461bcd60e51b815260206004820152602a60248201527f45524332303a2063616c6c6572206973206e6f7420746865204e66745661756c6044820152697420616464726573732160b01b606482015260840161066e565b600e548211156109a85760405162461bcd60e51b815260040161066e90611e8f565b600e546109b59083611a30565b600e556108be8383611a4f565b6007546001600160a01b036101009091041633146109f25760405162461bcd60e51b815260040161066e90611e15565b601355565b6007546000906001600160a01b03610100909104163314610a2a5760405162461bcd60e51b815260040161066e90611e15565b60115415801590610a3d57504260115411155b610a895760405162461bcd60e51b815260206004820152601f60248201527f45524332303a2057616974205f64616f54696d656c6f636b2070617373657300604482015260640161066e565b600f54821115610ae75760405162461bcd60e51b815260206004820152602360248201527f45524332303a2020416d6f756e74206973206d6f7265207468616e20616c6c6f6044820152621dd95960ea1b606482015260840161066e565b600f54610af49083611a30565b600f55600754600c54610b1b9161010090046001600160a01b0316906108b9908590611a43565b610b375760405162461bcd60e51b815260040161066e90611ed1565b50600060115560015b919050565b60006014821115610bae5760405162461bcd60e51b815260206004820152602d60248201527f45524332303a206d6178696d756d2062756c6b20636c61696d7320697320323060448201526c040c6c2e4c8e640e0cae440e8f609b1b606482015260840161066e565b600954600b546001600160a01b0390911690439082635f71dadc336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b158015610c0857600080fd5b505afa158015610c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c409190611f2e565b610c4a9190611f16565b10610ca75760405162461bcd60e51b815260206004820152602760248201527f45524332303a20646f6573206e6f74206d65657420636c61696d426c6f636b52604482015266195c5d5a5c995960ca1b606482015260840161066e565b6000805b84811015610f05576000868683818110610cc757610cc7611f47565b905060200201359050600081118015610ce1575061256981105b610d2d5760405162461bcd60e51b815260206004820152601960248201527f45524332303a20746f6b656e496420697320696e76616c696400000000000000604482015260640161066e565b601354600090815260146020908152604080832084845290915290205460ff1615610da45760405162461bcd60e51b815260206004820152602160248201527f45524332303a20746f6b656e496420697320616c726561647920636c61696d656044820152601960fa1b606482015260840161066e565b6040516331a9108f60e11b8152600481018290526001600160a01b03851690636352211e9060240160206040518083038186803b158015610de457600080fd5b505afa158015610df8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1c9190611f5d565b6001600160a01b0316336001600160a01b031614610e8b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a204f6e6c79205374616b6564204e4654206f776e65722063616e60448201526520636c61696d60d01b606482015260840161066e565b6000610e9682611118565b6013805460009081526014602090815260408083208784528252808320805460ff19166001908117909155935483526015909152812080549394509192610ede908490611f16565b90915550610eee90508482611ac0565b935050508080610efd90611f7a565b915050610cab565b50610f1833600c546108b9908490611a43565b610f645760405162461bcd60e51b815260206004820152601a60248201527f537175696445524332303a204d696e74696e67206661696c6564000000000000604482015260640161066e565b949350505050565b6005546001600160a01b03163314610f965760405162461bcd60e51b815260040161066e90611e5a565b610fa06000611acc565b565b6005546000906001600160a01b03163314610fcf5760405162461bcd60e51b815260040161066e90611e5a565b600a54600c54600d54610ff0926001600160a01b0316916108b99190611a43565b61100c5760405162461bcd60e51b815260040161066e90611ed1565b506000600d55600190565b6005546001600160a01b031633146110415760405162461bcd60e51b815260040161066e90611e5a565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6060600480546105bb90611dda565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156110f45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161066e565b611101338585840361173d565b5060019392505050565b6000610689338484611861565b60085460405163cb8af74560e01b8152600481018390526000916001600160a01b0316908290829063cb8af7459060240160606040518083038186803b15801561116157600080fd5b505afa158015611175573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111999190611fbc565b604051635172589760e11b8152600481018690529091506000906001600160a01b0384169063a2e4b12e906024016101006040518083038186803b1580156111e057600080fd5b505afa1580156111f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112189190612041565b82516020808501516040808701516013546000908152601590945290832054949550919360ff938416939182169290911690849081906123289061125e90613e806120c7565b61126990608d6120de565b61127391906120fd565b9050600060648c11611287575060c861129c565b6103e88c116112985750609661129c565b5060645b60005b6008811015611303576112e58982600881106112bd576112bd611f47565b602002015160ff168a83600881106112d7576112d7611f47565b602002015160ff1690611a43565b6112ef9089611f16565b9750806112fb81611f7a565b91505061129f565b5060648710156113165760649650611326565b6102888711156113265761028896505b606482101561133457606491505b856007148015611344575084600e145b80156113505750836004145b1561135e5760029250611549565b848614801561136c57508486145b801561137757508385145b1561138557600a9250611549565b8560071480156113955750856004145b80156113a1575084600e145b156113af5760059250611549565b8560041480156113bf5750856007145b80156113cb575084600e145b156113d95760059250611549565b8560041480156113e9575085600e145b80156113f55750846007145b156114035760059250611549565b85600e1480156114135750856007145b801561141f5750846004145b1561142d5760059250611549565b85600e14801561143d5750856004145b80156114495750846007145b156114575760059250611549565b85600414801561146657508486145b8061147b575085600414801561147b57508386145b156114895760039250611549565b85600e14801561149857508486145b806114ad575085600e1480156114ad57508386145b156114bb5760039250611549565b8560071480156114ca57508486145b806114df57508560071480156114df57508386145b156114ed5760039250611549565b8460041480156114fc57508385145b1561150a5760039250611549565b84600e14801561151957508385145b156115275760039250611549565b84600714801561153657508385145b156115445760039250611549565b600192505b6107d08284611558848b6120de565b61156291906120de565b61156c91906120de565b61157691906120fd565b9c9b505050505050505050505050565b6007546001600160a01b036101009091041633146115b65760405162461bcd60e51b815260040161066e90611e15565b60075460ff166116085760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2044414f206973206e6f7420696e697469616c697a6564000000604482015260640161066e565b600780546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6007546001600160a01b036101009091041633146116605760405162461bcd60e51b815260040161066e90611e15565b60125461166d9042611f16565b601155565b6007546001600160a01b036101009091041633146110415760405162461bcd60e51b815260040161066e90611e15565b6005546001600160a01b031633146116cc5760405162461bcd60e51b815260040161066e90611e5a565b6001600160a01b0381166117315760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161066e565b61173a81611acc565b50565b6001600160a01b03831661179f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161066e565b6001600160a01b0382166118005760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161066e565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166118c55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161066e565b6001600160a01b0382166119275760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161066e565b6001600160a01b0383166000908152602081905260409020548181101561199f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161066e565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906119d6908490611f16565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a2291815260200190565b60405180910390a350505050565b6000611a3c82846120c7565b9392505050565b6000611a3c82846120de565b600060026006541415611aa45760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161066e565b6002600655611ab38383611b1e565b5060018060065592915050565b6000611a3c8284611f16565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216611b745760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161066e565b8060026000828254611b869190611f16565b90915550506001600160a01b03821660009081526020819052604081208054839290611bb3908490611f16565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600060208083528351808285015260005b81811015611c2a57858101830151858201604001528201611c0e565b81811115611c3c576000604083870101525b50601f01601f1916929092016040019392505050565b600060208284031215611c6457600080fd5b5035919050565b6001600160a01b038116811461173a57600080fd5b60008060408385031215611c9357600080fd5b8235611c9e81611c6b565b946020939093013593505050565b600060208284031215611cbe57600080fd5b8135611a3c81611c6b565b600080600060608486031215611cde57600080fd5b8335611ce981611c6b565b92506020840135611cf981611c6b565b929592945050506040919091013590565b60008060208385031215611d1d57600080fd5b823567ffffffffffffffff80821115611d3557600080fd5b818501915085601f830112611d4957600080fd5b813581811115611d5857600080fd5b8660208260051b8501011115611d6d57600080fd5b60209290920196919550909350505050565b60008060408385031215611d9257600080fd5b8235611d9d81611c6b565b91506020830135611dad81611c6b565b809150509250929050565b60008060408385031215611dcb57600080fd5b50508035926020909101359150565b600181811c90821680611dee57607f821691505b60208210811415611e0f57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526025908201527f45524332303a2063616c6c6572206973206e6f74207468652044414f20616464604082015264726573732160d81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526022908201527f45524332303a20416d6f756e74206973206d6f7265207468616e20616c6c6f77604082015261195960f21b606082015260800190565b602080825260159082015274115490cc8c0e88135a5b9d1a5b99c819985a5b1959605a1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611f2957611f29611f00565b500190565b600060208284031215611f4057600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611f6f57600080fd5b8151611a3c81611c6b565b6000600019821415611f8e57611f8e611f00565b5060010190565b634e487b7160e01b600052604160045260246000fd5b805160ff81168114610b4057600080fd5b600060608284031215611fce57600080fd5b82601f830112611fdd57600080fd5b6040516060810181811067ffffffffffffffff8211171561200057612000611f95565b60405280606084018581111561201557600080fd5b845b818110156120365761202881611fab565b835260209283019201612017565b509195945050505050565b600061010080838503121561205557600080fd5b83601f84011261206457600080fd5b60405181810181811067ffffffffffffffff8211171561208657612086611f95565b60405290830190808583111561209b57600080fd5b845b838110156120bc576120ae81611fab565b82526020918201910161209d565b509095945050505050565b6000828210156120d9576120d9611f00565b500390565b60008160001904831182151516156120f8576120f8611f00565b500290565b60008261211a57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220e3fc0117305ee0c82e18c2bfe0a2d4a00cd5c5b33813f37bbaab82767d3daf3764736f6c63430008090033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000be5c953dd0ddb0ce033a98f36c981f1b74d3b33f000000000000000000000000b109173ab57dab7f954ef8f10d87a5bfdb740eeb
-----Decoded View---------------
Arg [0] : _nftAddress (address): 0xBE5C953DD0ddB0Ce033a98f36C981F1B74d3B33f
Arg [1] : _raffleAddress (address): 0xb109173Ab57Dab7F954Ef8F10D87a5bFDB740EEB
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000be5c953dd0ddb0ce033a98f36c981f1b74d3b33f
Arg [1] : 000000000000000000000000b109173ab57dab7f954ef8f10d87a5bfdb740eeb
Deployed Bytecode Sourcemap
29281:8496:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18364:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33033:101;;;;;;:::i;:::-;;:::i;:::-;;20531:169;;;;;;:::i;:::-;;:::i;:::-;;;1422:14:1;;1415:22;1397:41;;1385:2;1370:18;20531:169:0;1257:187:1;33142:102:0;;;;;;:::i;:::-;;:::i;29710:68::-;;;;;;;;;1847:25:1;;;1835:2;1820:18;29710:68:0;1701:177:1;19484:108:0;19572:12;;19484:108;;29666:37;;;;;;29548:40;;;;;;21182:492;;;;;;:::i;:::-;;:::i;31950:206::-;;;;;;:::i;:::-;;:::i;19326:93::-;;;19409:2;2486:36:1;;2474:2;2459:18;19326:93:0;2344:184:1;31577:365:0;;;;;;:::i;:::-;;:::i;22083:215::-;;;;;;:::i;:::-;;:::i;31189:376::-;;;;;;:::i;:::-;;:::i;32929:88::-;;;;;;:::i;:::-;;:::i;30155:39::-;;;;;;:::i;:::-;;;;;;;;;;;;;;29375:34;;;;;;;;;37683:91;37755:11;;-1:-1:-1;;;;;37755:11:0;37683:91;;;-1:-1:-1;;;;;2697:32:1;;;2679:51;;2667:2;2652:18;37683:91:0;2533:203:1;32459:458:0;;;;;;:::i;:::-;;:::i;33535:1108::-;;;;;;:::i;:::-;;:::i;19655:127::-;;;;;;:::i;:::-;-1:-1:-1;;;;;19756:18:0;19729:7;19756:18;;;;;;;;;;;;19655:127;12168:94;;;:::i;37479:85::-;37548:8;;-1:-1:-1;;;;;37548:8:0;37479:85;;30853:211;;;:::i;31076:101::-;;;;;;:::i;:::-;;:::i;11517:87::-;11590:6;;-1:-1:-1;;;;;11590:6:0;11517:87;;18583:104;;;:::i;37576:95::-;37650:13;;-1:-1:-1;;;;;37650:13:0;37576:95;;22801:413;;;;;;:::i;:::-;;:::i;37382:85::-;37451:8;;;;;-1:-1:-1;;;;;37451:8:0;37382:85;;19995:175;;;;;;:::i;:::-;;:::i;29905:46::-;;;;;;34659:2711;;;;;;:::i;:::-;;:::i;29958:23::-;;;;;;32168:164;;;;;;:::i;:::-;;:::i;30034:22::-;;;;;;32344:107;;;:::i;29809:75::-;;;;;;33252:104;;;;;;:::i;:::-;;:::i;20233:151::-;;;;;;:::i;:::-;-1:-1:-1;;;;;20349:18:0;;;20322:7;20349:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;20233:151;12417:192;;;;;;:::i;:::-;;:::i;30065:52::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;29988:39;;;;;;18364:100;18418:13;18451:5;18444:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18364:100;:::o;33033:101::-;30259:8;;-1:-1:-1;;;;;30259:8:0;;;;;10385:10;30259:24;30251:74;;;;-1:-1:-1;;;30251:74:0;;;;;;;:::i;:::-;;;;;;;;;33099:17:::1;:27:::0;33033:101::o;20531:169::-;20614:4;20631:39;10385:10;20654:7;20663:6;20631:8;:39::i;:::-;-1:-1:-1;20688:4:0;20531:169;;;;:::o;33142:102::-;30259:8;;-1:-1:-1;;;;;30259:8:0;;;;;10385:10;30259:24;30251:74;;;;-1:-1:-1;;;30251:74:0;;;;;;;:::i;:::-;33214:8:::1;:22:::0;;-1:-1:-1;;;;;;33214:22:0::1;-1:-1:-1::0;;;;;33214:22:0;;;::::1;::::0;;;::::1;::::0;;33142:102::o;21182:492::-;21322:4;21339:36;21349:6;21357:9;21368:6;21339:9;:36::i;:::-;-1:-1:-1;;;;;21415:19:0;;21388:24;21415:19;;;:11;:19;;;;;;;;10385:10;21415:33;;;;;;;;21467:26;;;;21459:79;;;;-1:-1:-1;;;21459:79:0;;5000:2:1;21459:79:0;;;4982:21:1;5039:2;5019:18;;;5012:30;5078:34;5058:18;;;5051:62;-1:-1:-1;;;5129:18:1;;;5122:38;5177:19;;21459:79:0;4798:404:1;21459:79:0;21574:57;21583:6;10385:10;21624:6;21605:16;:25;21574:8;:57::i;:::-;-1:-1:-1;21662:4:0;;21182:492;-1:-1:-1;;;;21182:492:0:o;31950:206::-;11590:6;;-1:-1:-1;;;;;11590:6:0;10385:10;11737:23;11729:68;;;;-1:-1:-1;;;11729:68:0;;;;;;;:::i;:::-;32031:14:::1;::::0;::::1;;32030:15;32022:61;;;::::0;-1:-1:-1;;;32022:61:0;;5770:2:1;32022:61:0::1;::::0;::::1;5752:21:1::0;5809:2;5789:18;;;5782:30;5848:34;5828:18;;;5821:62;-1:-1:-1;;;5899:18:1;;;5892:31;5940:19;;32022:61:0::1;5568:397:1::0;32022:61:0::1;32094:8;:22:::0;;-1:-1:-1;;;;;;;32094:22:0;;::::1;;;32127:21:::0;;;;-1:-1:-1;;;;;;32127:21:0;;;;;;;32094:8:::1;32127:21;::::0;;31950:206::o;31577:365::-;11590:6;;31654:4;;-1:-1:-1;;;;;11590:6:0;10385:10;11737:23;11729:68;;;;-1:-1:-1;;;11729:68:0;;;;;;;:::i;:::-;31690:23:::1;;31679:7;:34;;31671:81;;;;-1:-1:-1::0;;;31671:81:0::1;;;;;;;:::i;:::-;31789:23;::::0;:36:::1;::::0;31817:7;31789:27:::1;:36::i;:::-;31763:23;:62:::0;31876:8:::1;::::0;31844:42:::1;::::0;31854:8;;31864:21:::1;::::0;:7;;:11:::1;:21::i;:::-;31844:9;:42::i;:::-;31836:76;;;;-1:-1:-1::0;;;31836:76:0::1;;;;;;;:::i;22083:215::-:0;10385:10;22171:4;22220:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;22220:34:0;;;;;;;;;;22171:4;;22188:80;;22211:7;;22220:47;;22257:10;;22220:47;:::i;:::-;22188:8;:80::i;31189:376::-;30401:13;;31276:4;;-1:-1:-1;;;;;30401:13:0;10385:10;30401:29;30393:84;;;;-1:-1:-1;;;30393:84:0;;7190:2:1;30393:84:0;;;7172:21:1;7229:2;7209:18;;;7202:30;7268:34;7248:18;;;7241:62;-1:-1:-1;;;7319:18:1;;;7312:40;7369:19;;30393:84:0;6988:406:1;30393:84:0;31341:20:::1;;31330:7;:31;;31322:78;;;;-1:-1:-1::0;;;31322:78:0::1;;;;;;;:::i;:::-;31434:20;::::0;:33:::1;::::0;31459:7;31434:24:::1;:33::i;:::-;31411:20;:56:::0;31486:23:::1;31496:3:::0;31501:7;31486:9:::1;:23::i;32929:88::-:0;30259:8;;-1:-1:-1;;;;;30259:8:0;;;;;10385:10;30259:24;30251:74;;;;-1:-1:-1;;;30251:74:0;;;;;;;:::i;:::-;32993:6:::1;:16:::0;32929:88::o;32459:458::-;30259:8;;32514:4;;-1:-1:-1;;;;;30259:8:0;;;;;10385:10;30259:24;30251:74;;;;-1:-1:-1;;;30251:74:0;;;;;;;:::i;:::-;32539:11:::1;::::0;:16;;::::1;::::0;:50:::1;;;32574:15;32559:11;;:30;;32539:50;32531:94;;;::::0;-1:-1:-1;;;32531:94:0;;7601:2:1;32531:94:0::1;::::0;::::1;7583:21:1::0;7640:2;7620:18;;;7613:30;7679:33;7659:18;;;7652:61;7730:18;;32531:94:0::1;7399:355:1::0;32531:94:0::1;32655:17;;32644:7;:28;;32636:76;;;::::0;-1:-1:-1;;;32636:76:0;;7961:2:1;32636:76:0::1;::::0;::::1;7943:21:1::0;8000:2;7980:18;;;7973:30;8039:34;8019:18;;;8012:62;-1:-1:-1;;;8090:18:1;;;8083:33;8133:19;;32636:76:0::1;7759:399:1::0;32636:76:0::1;32743:17;::::0;:30:::1;::::0;32765:7;32743:21:::1;:30::i;:::-;32723:17;:50:::0;32803:8:::1;::::0;32825::::1;::::0;32793:42:::1;::::0;32803:8:::1;::::0;::::1;-1:-1:-1::0;;;;;32803:8:0::1;::::0;32813:21:::1;::::0;:7;;:11:::1;:21::i;32793:42::-;32785:76;;;;-1:-1:-1::0;;;32785:76:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;32886:1:0::1;32872:11;:15:::0;32905:4:::1;30336:1;32459:458:::0;;;:::o;33535:1108::-;33595:4;33640:2;33620:22;;;33612:80;;;;-1:-1:-1;;;33612:80:0;;8365:2:1;33612:80:0;;;8347:21:1;8404:2;8384:18;;;8377:30;8443:34;8423:18;;;8416:62;-1:-1:-1;;;8494:18:1;;;8487:43;8547:19;;33612:80:0;8163:409:1;33612:80:0;33740:13;;33835:19;;-1:-1:-1;;;;;33740:13:0;;;;33857:12;;33740:13;33803:15;10385:10;33803:29;;-1:-1:-1;;;;;;33803:29:0;;;;;;;-1:-1:-1;;;;;2697:32:1;;;33803:29:0;;;2679:51:1;2652:18;;33803:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:51;;;;:::i;:::-;:66;33795:118;;;;-1:-1:-1;;;33795:118:0;;8968:2:1;33795:118:0;;;8950:21:1;9007:2;8987:18;;;8980:30;9046:34;9026:18;;;9019:62;-1:-1:-1;;;9097:18:1;;;9090:37;9144:19;;33795:118:0;8766:403:1;33795:118:0;33924:10;;33945:568;33960:18;;;33945:568;;;34000:12;34015:9;;34025:1;34015:12;;;;;;;:::i;:::-;;;;;;;34000:27;;34060:1;34050:7;:11;:29;;;;;34075:4;34065:7;:14;34050:29;34042:67;;;;-1:-1:-1;;;34042:67:0;;9508:2:1;34042:67:0;;;9490:21:1;9547:2;9527:18;;;9520:30;9586:27;9566:18;;;9559:55;9631:18;;34042:67:0;9306:349:1;34042:67:0;34140:6;;34133:14;;;;:6;:14;;;;;;;;:23;;;;;;;;;;;:32;34125:78;;;;-1:-1:-1;;;34125:78:0;;9862:2:1;34125:78:0;;;9844:21:1;9901:2;9881:18;;;9874:30;9940:34;9920:18;;;9913:62;-1:-1:-1;;;9991:18:1;;;9984:31;10032:19;;34125:78:0;9660:397:1;34125:78:0;34242:21;;-1:-1:-1;;;34242:21:0;;;;;1847:25:1;;;-1:-1:-1;;;;;34242:12:0;;;;;1820:18:1;;34242:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;34226:37:0;10385:10;-1:-1:-1;;;;;34226:37:0;;34218:88;;;;-1:-1:-1;;;34218:88:0;;10520:2:1;34218:88:0;;;10502:21:1;10559:2;10539:18;;;10532:30;10598:34;10578:18;;;10571:62;-1:-1:-1;;;10649:18:1;;;10642:36;10695:19;;34218:88:0;10318:402:1;34218:88:0;34335:11;34349:20;34361:7;34349:11;:20::i;:::-;34392:6;;;34385:14;;;;:6;:14;;;;;;;;:23;;;;;;;;:30;;-1:-1:-1;;34385:30:0;34411:4;34385:30;;;;;;34449:6;;34438:18;;:10;:18;;;;;:23;;34335:34;;-1:-1:-1;34411:4:0;;34438:23;;34411:4;;34438:23;:::i;:::-;;;;-1:-1:-1;34484:17:0;;-1:-1:-1;34484:5:0;34494:6;34484:9;:17::i;:::-;34476:25;;33985:528;;33980:3;;;;;:::i;:::-;;;;33945:568;;;-1:-1:-1;34531:44:0;10385:10;34565:8;;34555:19;;:5;;:9;:19::i;34531:44::-;34523:83;;;;-1:-1:-1;;;34523:83:0;;11067:2:1;34523:83:0;;;11049:21:1;11106:2;11086:18;;;11079:30;11145:28;11125:18;;;11118:56;11191:18;;34523:83:0;10865:350:1;34523:83:0;34630:5;33535:1108;-1:-1:-1;;;;33535:1108:0:o;12168:94::-;11590:6;;-1:-1:-1;;;;;11590:6:0;10385:10;11737:23;11729:68;;;;-1:-1:-1;;;11729:68:0;;;;;;;:::i;:::-;12233:21:::1;12251:1;12233:9;:21::i;:::-;12168:94::o:0;30853:211::-;11590:6;;30908:4;;-1:-1:-1;;;;;11590:6:0;10385:10;11737:23;11729:68;;;;-1:-1:-1;;;11729:68:0;;;;;;;:::i;:::-;30943:11:::1;::::0;30972:8:::1;::::0;30956:11:::1;::::0;30933:49:::1;::::0;-1:-1:-1;;;;;30943:11:0::1;::::0;30956:25:::1;::::0;:11;:15:::1;:25::i;30933:49::-;30925:83;;;;-1:-1:-1::0;;;30925:83:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;31033:1:0::1;31019:11;:15:::0;31052:4:::1;30853:211:::0;:::o;31076:101::-;11590:6;;-1:-1:-1;;;;;11590:6:0;10385:10;11737:23;11729:68;;;;-1:-1:-1;;;11729:68:0;;;;;;;:::i;:::-;31147:13:::1;:22:::0;;-1:-1:-1;;;;;;31147:22:0::1;-1:-1:-1::0;;;;;31147:22:0;;;::::1;::::0;;;::::1;::::0;;31076:101::o;18583:104::-;18639:13;18672:7;18665:14;;;;;:::i;22801:413::-;10385:10;22894:4;22938:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;22938:34:0;;;;;;;;;;22991:35;;;;22983:85;;;;-1:-1:-1;;;22983:85:0;;11422:2:1;22983:85:0;;;11404:21:1;11461:2;11441:18;;;11434:30;11500:34;11480:18;;;11473:62;-1:-1:-1;;;11551:18:1;;;11544:35;11596:19;;22983:85:0;11220:401:1;22983:85:0;23104:67;10385:10;23127:7;23155:15;23136:16;:34;23104:8;:67::i;:::-;-1:-1:-1;23202:4:0;;22801:413;-1:-1:-1;;;22801:413:0:o;19995:175::-;20081:4;20098:42;10385:10;20122:9;20133:6;20098:9;:42::i;34659:2711::-;34767:8;;34824:32;;-1:-1:-1;;;34824:32:0;;;;;1847:25:1;;;34716:4:0;;-1:-1:-1;;;;;34767:8:0;;34716:4;;34767:8;;34824:22;;1820:18:1;;34824:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34891:22;;-1:-1:-1;;;34891:22:0;;;;;1847:25:1;;;34795:61:0;;-1:-1:-1;34867:21:0;;-1:-1:-1;;;;;34891:12:0;;;;;1820:18:1;;34891:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34978:13;;;35016;;;;35053;;;;;35147:6;;34942:13;35136:18;;;:10;:18;;;;;;;34867:46;;-1:-1:-1;34942:13:0;;34966:25;;;;;35002:27;;;;35040:26;;;;34942:13;;;;35158:4;;35128:26;;:5;:26;:::i;:::-;35121:34;;:3;:34;:::i;:::-;:41;;;;:::i;:::-;35103:59;;35198:18;35243:3;35231:8;:15;35227:193;;-1:-1:-1;35279:3:0;35227:193;;;35316:4;35304:8;:16;35300:120;;-1:-1:-1;35353:3:0;35300:120;;;-1:-1:-1;35405:3:0;35300:120;35445:6;35440:98;35457:1;35455;:3;35440:98;;;35492:34;35516:5;35522:1;35516:8;;;;;;;:::i;:::-;;;;;35511:14;;35497:5;35503:1;35497:8;;;;;;;:::i;:::-;;;;;35492:14;;;:18;:34::i;:::-;35480:46;;;;:::i;:::-;;-1:-1:-1;35460:3:0;;;;:::i;:::-;;;;35440:98;;;;35563:3;35552:8;:14;35548:128;;;35594:3;35583:14;;35548:128;;;35630:3;35619:8;:14;35615:61;;;35661:3;35650:14;;35615:61;35703:3;35690:10;:16;35686:65;;;35736:3;35723:16;;35686:65;35767:4;35775:1;35767:9;:25;;;;;35780:6;35790:2;35780:12;35767:25;:39;;;;;35796:5;35805:1;35796:10;35767:39;35763:1520;;;35837:1;35824:14;;35763:1520;;;35868:6;35860:4;:14;:32;;;;;35886:6;35878:4;:14;35860:32;:51;;;;;35906:5;35896:6;:15;35860:51;35856:1427;;;35941:2;35928:15;;35856:1427;;;35965:4;35973:1;35965:9;:22;;;;;35978:4;35986:1;35978:9;35965:22;:38;;;;;35991:6;36001:2;35991:12;35965:38;35961:1322;;;36045:1;36032:14;;35961:1322;;;36068:4;36076:1;36068:9;:22;;;;;36081:4;36089:1;36081:9;36068:22;:38;;;;;36094:6;36104:2;36094:12;36068:38;36064:1219;;;36160:1;36147:14;;36064:1219;;;36183:4;36191:1;36183:9;:23;;;;;36196:4;36204:2;36196:10;36183:23;:38;;;;;36210:6;36220:1;36210:11;36183:38;36179:1104;;;36275:1;36262:14;;36179:1104;;;36298:4;36306:2;36298:10;:23;;;;;36312:4;36320:1;36312:9;36298:23;:38;;;;;36325:6;36335:1;36325:11;36298:38;36294:989;;;36398:1;36385:14;;36294:989;;;36421:4;36429:2;36421:10;:23;;;;;36435:4;36443:1;36435:9;36421:23;:38;;;;;36448:6;36458:1;36448:11;36421:38;36417:866;;;36537:1;36524:14;;36417:866;;;36561:4;36569:1;36561:9;:27;;;;;36582:6;36574:4;:14;36561:27;36560:61;;;;36594:4;36602:1;36594:9;:26;;;;;36615:5;36607:4;:13;36594:26;36556:727;;;36663:1;36650:14;;36556:727;;;36687:4;36695:2;36687:10;:28;;;;;36709:6;36701:4;:14;36687:28;36686:63;;;;36721:4;36729:2;36721:10;:27;;;;;36743:5;36735:4;:13;36721:27;36682:601;;;36779:1;36766:14;;36682:601;;;36803:4;36811:1;36803:9;:27;;;;;36824:6;36816:4;:14;36803:27;36802:61;;;;36836:4;36844:1;36836:9;:26;;;;;36857:5;36849:4;:13;36836:26;36798:485;;;36893:1;36880:14;;36798:485;;;36916:6;36926:1;36916:11;:30;;;;;36941:5;36931:6;:15;36916:30;36912:371;;;36990:1;36977:14;;36912:371;;;37013:6;37023:2;37013:12;:31;;;;;37039:5;37029:6;:15;37013:31;37009:274;;;37095:1;37082:14;;37009:274;;;37118:6;37128:1;37118:11;:30;;;;;37143:5;37133:6;:15;37118:30;37114:169;;;37211:1;37198:14;;37114:169;;;37270:1;37257:14;;37114:169;37356:4;37342:10;37329;37302:24;37313:13;37302:8;:24;:::i;:::-;:37;;;;:::i;:::-;:50;;;;:::i;:::-;37301:59;;;;:::i;:::-;37293:67;34659:2711;-1:-1:-1;;;;;;;;;;;;34659:2711:0:o;32168:164::-;30259:8;;-1:-1:-1;;;;;30259:8:0;;;;;10385:10;30259:24;30251:74;;;;-1:-1:-1;;;30251:74:0;;;;;;;:::i;:::-;32243:14:::1;::::0;::::1;;32235:56;;;::::0;-1:-1:-1;;;32235:56:0;;14246:2:1;32235:56:0::1;::::0;::::1;14228:21:1::0;14285:2;14265:18;;;14258:30;14324:31;14304:18;;;14297:59;14373:18;;32235:56:0::1;14044:353:1::0;32235:56:0::1;32302:8;:22:::0;;-1:-1:-1;;;;;32302:22:0;;::::1;;;-1:-1:-1::0;;;;;;32302:22:0;;::::1;::::0;;;::::1;::::0;;32168:164::o;32344:107::-;30259:8;;-1:-1:-1;;;;;30259:8:0;;;;;10385:10;30259:24;30251:74;;;;-1:-1:-1;;;30251:74:0;;;;;;;:::i;:::-;32427:16:::1;::::0;32409:34:::1;::::0;:15:::1;:34;:::i;:::-;32395:11;:48:::0;32344:107::o;33252:104::-;30259:8;;-1:-1:-1;;;;;30259:8:0;;;;;10385:10;30259:24;30251:74;;;;-1:-1:-1;;;30251:74:0;;;;;;;:::i;12417:192::-;11590:6;;-1:-1:-1;;;;;11590:6:0;10385:10;11737:23;11729:68;;;;-1:-1:-1;;;11729:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12506:22:0;::::1;12498:73;;;::::0;-1:-1:-1;;;12498:73:0;;14604:2:1;12498:73:0::1;::::0;::::1;14586:21:1::0;14643:2;14623:18;;;14616:30;14682:34;14662:18;;;14655:62;-1:-1:-1;;;14733:18:1;;;14726:36;14779:19;;12498:73:0::1;14402:402:1::0;12498:73:0::1;12582:19;12592:8;12582:9;:19::i;:::-;12417:192:::0;:::o;26485:380::-;-1:-1:-1;;;;;26621:19:0;;26613:68;;;;-1:-1:-1;;;26613:68:0;;15011:2:1;26613:68:0;;;14993:21:1;15050:2;15030:18;;;15023:30;15089:34;15069:18;;;15062:62;-1:-1:-1;;;15140:18:1;;;15133:34;15184:19;;26613:68:0;14809:400:1;26613:68:0;-1:-1:-1;;;;;26700:21:0;;26692:68;;;;-1:-1:-1;;;26692:68:0;;15416:2:1;26692:68:0;;;15398:21:1;15455:2;15435:18;;;15428:30;15494:34;15474:18;;;15467:62;-1:-1:-1;;;15545:18:1;;;15538:32;15587:19;;26692:68:0;15214:398:1;26692:68:0;-1:-1:-1;;;;;26773:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;26825:32;;1847:25:1;;;26825:32:0;;1820:18:1;26825:32:0;;;;;;;26485:380;;;:::o;23704:733::-;-1:-1:-1;;;;;23844:20:0;;23836:70;;;;-1:-1:-1;;;23836:70:0;;15819:2:1;23836:70:0;;;15801:21:1;15858:2;15838:18;;;15831:30;15897:34;15877:18;;;15870:62;-1:-1:-1;;;15948:18:1;;;15941:35;15993:19;;23836:70:0;15617:401:1;23836:70:0;-1:-1:-1;;;;;23925:23:0;;23917:71;;;;-1:-1:-1;;;23917:71:0;;16225:2:1;23917:71:0;;;16207:21:1;16264:2;16244:18;;;16237:30;16303:34;16283:18;;;16276:62;-1:-1:-1;;;16354:18:1;;;16347:33;16397:19;;23917:71:0;16023:399:1;23917:71:0;-1:-1:-1;;;;;24085:17:0;;24061:21;24085:17;;;;;;;;;;;24121:23;;;;24113:74;;;;-1:-1:-1;;;24113:74:0;;16629:2:1;24113:74:0;;;16611:21:1;16668:2;16648:18;;;16641:30;16707:34;16687:18;;;16680:62;-1:-1:-1;;;16758:18:1;;;16751:36;16804:19;;24113:74:0;16427:402:1;24113:74:0;-1:-1:-1;;;;;24223:17:0;;;:9;:17;;;;;;;;;;;24243:22;;;24223:42;;24287:20;;;;;;;;:30;;24259:6;;24223:9;24287:30;;24259:6;;24287:30;:::i;:::-;;;;;;;;24352:9;-1:-1:-1;;;;;24335:35:0;24344:6;-1:-1:-1;;;;;24335:35:0;;24363:6;24335:35;;;;1847:25:1;;1835:2;1820:18;;1701:177;24335:35:0;;;;;;;;23825:612;23704:733;;;:::o;5896:98::-;5954:7;5981:5;5985:1;5981;:5;:::i;:::-;5974:12;5896:98;-1:-1:-1;;;5896:98:0:o;6253:::-;6311:7;6338:5;6342:1;6338;:5;:::i;33372:151::-;33448:4;1778:1;2374:7;;:19;;2366:63;;;;-1:-1:-1;;;2366:63:0;;17036:2:1;2366:63:0;;;17018:21:1;17075:2;17055:18;;;17048:30;17114:33;17094:18;;;17087:61;17165:18;;2366:63:0;16834:355:1;2366:63:0;1778:1;2507:7;:18;33465:19:::1;33471:3:::0;33476:7;33465:5:::1;:19::i;:::-;-1:-1:-1::0;33511:4:0::1;1734:1:::0;2686:7;:22;33372:151;;-1:-1:-1;;33372:151:0:o;5515:98::-;5573:7;5600:5;5604:1;5600;:5;:::i;12617:173::-;12692:6;;;-1:-1:-1;;;;;12709:17:0;;;-1:-1:-1;;;;;;12709:17:0;;;;;;;12742:40;;12692:6;;;12709:17;12692:6;;12742:40;;12673:16;;12742:40;12662:128;12617:173;:::o;24724:399::-;-1:-1:-1;;;;;24808:21:0;;24800:65;;;;-1:-1:-1;;;24800:65:0;;17396:2:1;24800:65:0;;;17378:21:1;17435:2;17415:18;;;17408:30;17474:33;17454:18;;;17447:61;17525:18;;24800:65:0;17194:355:1;24800:65:0;24956:6;24940:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;24973:18:0;;:9;:18;;;;;;;;;;:28;;24995:6;;24973:9;:28;;24995:6;;24973:28;:::i;:::-;;;;-1:-1:-1;;25017:37:0;;1847:25:1;;;-1:-1:-1;;;;;25017:37:0;;;25034:1;;25017:37;;1835:2:1;1820:18;25017:37:0;;;;;;;24724:399;;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:180::-;675:6;728:2;716:9;707:7;703:23;699:32;696:52;;;744:1;741;734:12;696:52;-1:-1:-1;767:23:1;;616:180;-1:-1:-1;616:180:1:o;801:131::-;-1:-1:-1;;;;;876:31:1;;866:42;;856:70;;922:1;919;912:12;937:315;1005:6;1013;1066:2;1054:9;1045:7;1041:23;1037:32;1034:52;;;1082:1;1079;1072:12;1034:52;1121:9;1108:23;1140:31;1165:5;1140:31;:::i;:::-;1190:5;1242:2;1227:18;;;;1214:32;;-1:-1:-1;;;937:315:1:o;1449:247::-;1508:6;1561:2;1549:9;1540:7;1536:23;1532:32;1529:52;;;1577:1;1574;1567:12;1529:52;1616:9;1603:23;1635:31;1660:5;1635:31;:::i;1883:456::-;1960:6;1968;1976;2029:2;2017:9;2008:7;2004:23;2000:32;1997:52;;;2045:1;2042;2035:12;1997:52;2084:9;2071:23;2103:31;2128:5;2103:31;:::i;:::-;2153:5;-1:-1:-1;2210:2:1;2195:18;;2182:32;2223:33;2182:32;2223:33;:::i;:::-;1883:456;;2275:7;;-1:-1:-1;;;2329:2:1;2314:18;;;;2301:32;;1883:456::o;2741:615::-;2827:6;2835;2888:2;2876:9;2867:7;2863:23;2859:32;2856:52;;;2904:1;2901;2894:12;2856:52;2944:9;2931:23;2973:18;3014:2;3006:6;3003:14;3000:34;;;3030:1;3027;3020:12;3000:34;3068:6;3057:9;3053:22;3043:32;;3113:7;3106:4;3102:2;3098:13;3094:27;3084:55;;3135:1;3132;3125:12;3084:55;3175:2;3162:16;3201:2;3193:6;3190:14;3187:34;;;3217:1;3214;3207:12;3187:34;3270:7;3265:2;3255:6;3252:1;3248:14;3244:2;3240:23;3236:32;3233:45;3230:65;;;3291:1;3288;3281:12;3230:65;3322:2;3314:11;;;;;3344:6;;-1:-1:-1;2741:615:1;;-1:-1:-1;;;;2741:615:1:o;3361:388::-;3429:6;3437;3490:2;3478:9;3469:7;3465:23;3461:32;3458:52;;;3506:1;3503;3496:12;3458:52;3545:9;3532:23;3564:31;3589:5;3564:31;:::i;:::-;3614:5;-1:-1:-1;3671:2:1;3656:18;;3643:32;3684:33;3643:32;3684:33;:::i;:::-;3736:7;3726:17;;;3361:388;;;;;:::o;3754:248::-;3822:6;3830;3883:2;3871:9;3862:7;3858:23;3854:32;3851:52;;;3899:1;3896;3889:12;3851:52;-1:-1:-1;;3922:23:1;;;3992:2;3977:18;;;3964:32;;-1:-1:-1;3754:248:1:o;4007:380::-;4086:1;4082:12;;;;4129;;;4150:61;;4204:4;4196:6;4192:17;4182:27;;4150:61;4257:2;4249:6;4246:14;4226:18;4223:38;4220:161;;;4303:10;4298:3;4294:20;4291:1;4284:31;4338:4;4335:1;4328:15;4366:4;4363:1;4356:15;4220:161;;4007:380;;;:::o;4392:401::-;4594:2;4576:21;;;4633:2;4613:18;;;4606:30;4672:34;4667:2;4652:18;;4645:62;-1:-1:-1;;;4738:2:1;4723:18;;4716:35;4783:3;4768:19;;4392:401::o;5207:356::-;5409:2;5391:21;;;5428:18;;;5421:30;5487:34;5482:2;5467:18;;5460:62;5554:2;5539:18;;5207:356::o;5970:398::-;6172:2;6154:21;;;6211:2;6191:18;;;6184:30;6250:34;6245:2;6230:18;;6223:62;-1:-1:-1;;;6316:2:1;6301:18;;6294:32;6358:3;6343:19;;5970:398::o;6373:345::-;6575:2;6557:21;;;6614:2;6594:18;;;6587:30;-1:-1:-1;;;6648:2:1;6633:18;;6626:51;6709:2;6694:18;;6373:345::o;6723:127::-;6784:10;6779:3;6775:20;6772:1;6765:31;6815:4;6812:1;6805:15;6839:4;6836:1;6829:15;6855:128;6895:3;6926:1;6922:6;6919:1;6916:13;6913:39;;;6932:18;;:::i;:::-;-1:-1:-1;6968:9:1;;6855:128::o;8577:184::-;8647:6;8700:2;8688:9;8679:7;8675:23;8671:32;8668:52;;;8716:1;8713;8706:12;8668:52;-1:-1:-1;8739:16:1;;8577:184;-1:-1:-1;8577:184:1:o;9174:127::-;9235:10;9230:3;9226:20;9223:1;9216:31;9266:4;9263:1;9256:15;9290:4;9287:1;9280:15;10062:251;10132:6;10185:2;10173:9;10164:7;10160:23;10156:32;10153:52;;;10201:1;10198;10191:12;10153:52;10233:9;10227:16;10252:31;10277:5;10252:31;:::i;10725:135::-;10764:3;-1:-1:-1;;10785:17:1;;10782:43;;;10805:18;;:::i;:::-;-1:-1:-1;10852:1:1;10841:13;;10725:135::o;11626:127::-;11687:10;11682:3;11678:20;11675:1;11668:31;11718:4;11715:1;11708:15;11742:4;11739:1;11732:15;11758:160;11835:13;;11888:4;11877:16;;11867:27;;11857:55;;11908:1;11905;11898:12;11923:782;12014:6;12067:2;12055:9;12046:7;12042:23;12038:32;12035:52;;;12083:1;12080;12073:12;12035:52;12132:7;12125:4;12114:9;12110:20;12106:34;12096:62;;12154:1;12151;12144:12;12096:62;12187:2;12181:9;12229:2;12221:6;12217:15;12298:6;12286:10;12283:22;12262:18;12250:10;12247:34;12244:62;12241:88;;;12309:18;;:::i;:::-;12345:2;12338:22;12380:6;12424:2;12409:18;;12439:19;;;12436:39;;;12471:1;12468;12461:12;12436:39;12495:9;12513:161;12529:6;12524:3;12521:15;12513:161;;;12597:32;12625:3;12597:32;:::i;:::-;12585:45;;12659:4;12650:14;;;;12546;12513:161;;;-1:-1:-1;12693:6:1;;11923:782;-1:-1:-1;;;;;11923:782:1:o;12710:804::-;12801:6;12832:3;12876:2;12864:9;12855:7;12851:23;12847:32;12844:52;;;12892:1;12889;12882:12;12844:52;12941:7;12934:4;12923:9;12919:20;12915:34;12905:62;;12963:1;12960;12953:12;12905:62;12996:2;12990:9;13038:2;13030:6;13026:15;13107:6;13095:10;13092:22;13071:18;13059:10;13056:34;13053:62;13050:88;;;13118:18;;:::i;:::-;13154:2;13147:22;13218:18;;;;13189:6;13248:19;;;13245:39;;;13280:1;13277;13270:12;13245:39;13304:9;13322:161;13338:6;13333:3;13330:15;13322:161;;;13406:32;13434:3;13406:32;:::i;:::-;13394:45;;13468:4;13459:14;;;;13355;13322:161;;;-1:-1:-1;13502:6:1;;12710:804;-1:-1:-1;;;;;12710:804:1:o;13519:125::-;13559:4;13587:1;13584;13581:8;13578:34;;;13592:18;;:::i;:::-;-1:-1:-1;13629:9:1;;13519:125::o;13649:168::-;13689:7;13755:1;13751;13747:6;13743:14;13740:1;13737:21;13732:1;13725:9;13718:17;13714:45;13711:71;;;13762:18;;:::i;:::-;-1:-1:-1;13802:9:1;;13649:168::o;13822:217::-;13862:1;13888;13878:132;;13932:10;13927:3;13923:20;13920:1;13913:31;13967:4;13964:1;13957:15;13995:4;13992:1;13985:15;13878:132;-1:-1:-1;14024:9:1;;13822:217::o
Swarm Source
ipfs://e3fc0117305ee0c82e18c2bfe0a2d4a00cd5c5b33813f37bbaab82767d3daf37
Loading...
Loading
Loading...
Loading
[ 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.