ETH Price: $4,001.62 (+2.90%)

Token

Crypto Cannibals V2 (CNBL)
 

Overview

Max Total Supply

661 CNBL

Holders

388

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
2 CNBL
0x59C282dB7301f81bDbB0998F6a53376b44a72C76
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
CryptoCannibalsV2

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-01-28
*/

// SPDX-License-Identifier: MIT


//  https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/IERC165.sol
pragma solidity ^0.8.0;

interface IERC165 {
   
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/IERC721.sol
pragma solidity ^0.8.0;

interface IERC721 is IERC165 {
  
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

  
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

 
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    
    function balanceOf(address owner) external view returns (uint256 balance);

 
    function ownerOf(uint256 tokenId) external view returns (address owner);

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

   
    function approve(address to, uint256 tokenId) external;

 
    function getApproved(uint256 tokenId) external view returns (address operator);

    function setApprovalForAll(address operator, bool _approved) external;

   
    function isApprovedForAll(address owner, address operator) external view returns (bool);

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}


// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/extensions/IERC721Enumerable.sol
pragma solidity ^0.8.0;

interface IERC721Enumerable is IERC721 {
  
    function totalSupply() external view returns (uint256);

    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);

    function tokenByIndex(uint256 index) external view returns (uint256);
}


// File: @openzeppelin/contracts/utils/introspection/ERC165.sol
pragma solidity ^0.8.0;

abstract contract ERC165 is IERC165 {
 
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}


pragma solidity ^0.8.0;
// conerts to ASCII
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";


    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

  
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

   
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}

// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Address.sol

pragma solidity ^0.8.0;
//address functions
library Address {
  
    function isContract(address account) internal view returns (bool) {

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

 
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }


    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

  
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

  
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

   
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

   
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

   
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

  
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }


    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

  
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/extensions/IERC721Metadata.sol

pragma solidity ^0.8.0;


//ERC-721 Token Standard
 
interface IERC721Metadata is IERC721 {
   
    function name() external view returns (string memory);

   
    function symbol() external view returns (string memory);

  
    function tokenURI(uint256 tokenId) external view returns (string memory);
}

// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/IERC721Receiver.sol

pragma solidity ^0.8.0;



interface IERC721Receiver {

    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}

// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Context.sol
pragma solidity ^0.8.0;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}


// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/ERC721.sol
pragma solidity ^0.8.0;

contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;

    string private _name;

    string private _symbol;

    mapping(uint256 => address) private _owners;

    mapping(address => uint256) private _balances;

    mapping(uint256 => address) private _tokenApprovals;

    mapping(address => mapping(address => bool)) private _operatorApprovals;
//coolection constructor
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

   
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            super.supportsInterface(interfaceId);
    }


    function balanceOf(address owner) public view virtual override returns (uint256) {
        require(owner != address(0), "ERC721: balance query for the zero address");
        return _balances[owner];
    }


    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _owners[tokenId];
        require(owner != address(0), "ERC721: owner query for nonexistent token");
        return owner;
    }

   
    function name() public view virtual override returns (string memory) {
        return _name;
    }

 
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

  
    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");

        string memory baseURI = _baseURI();
        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : "";
    }

 
    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }

    function approve(address to, uint256 tokenId) public virtual override {
        address owner = ERC721.ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");

        require(
            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "ERC721: approve caller is not owner nor approved for all"
        );

        _approve(to, tokenId);
    }

   
    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        require(_exists(tokenId), "ERC721: approved query for nonexistent token");

        return _tokenApprovals[tokenId];
    }

   
    function setApprovalForAll(address operator, bool approved) public virtual override {
        require(operator != _msgSender(), "ERC721: approve to caller");

        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }

  
    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[owner][operator];
    }

    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");

        _transfer(from, to, tokenId);
    }

 
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        safeTransferFrom(from, to, tokenId, "");
    }

  
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
        _safeTransfer(from, to, tokenId, _data);
    }

   
    function _safeTransfer(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
    }


    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _owners[tokenId] != address(0);
    }

  
    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
        require(_exists(tokenId), "ERC721: operator query for nonexistent token");
        address owner = ERC721.ownerOf(tokenId);
        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
    }

   
    function _safeMint(address to, uint256 tokenId) internal virtual {
        _safeMint(to, tokenId, "");
    }

  
    function _safeMint(
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _mint(to, tokenId);
        require(
            _checkOnERC721Received(address(0), to, tokenId, _data),
            "ERC721: transfer to non ERC721Receiver implementer"
        );
    }

 
    function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "ERC721: mint to the zero address");
        require(!_exists(tokenId), "ERC721: token already minted");

        _beforeTokenTransfer(address(0), to, tokenId);

        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(address(0), to, tokenId);
    }

   
    function _burn(uint256 tokenId) internal virtual {
        address owner = ERC721.ownerOf(tokenId);

        _beforeTokenTransfer(owner, address(0), tokenId);


        _approve(address(0), tokenId);

        _balances[owner] -= 1;
        delete _owners[tokenId];

        emit Transfer(owner, address(0), tokenId);
    }

   
    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {
        require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own");
        require(to != address(0), "ERC721: transfer to the zero address");

        _beforeTokenTransfer(from, to, tokenId);

    
        _approve(address(0), tokenId);

        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(from, to, tokenId);
    }

  
    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
    }

    
    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver.onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721: transfer to non ERC721Receiver implementer");
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {}
}

// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/extensions/ERC721Enumerable.sol


pragma solidity ^0.8.0;


abstract contract ERC721Enumerable is ERC721, IERC721Enumerable {
  
    mapping(address => mapping(uint256 => uint256)) private _ownedTokens;

    mapping(uint256 => uint256) private _ownedTokensIndex;

    uint256[] private _allTokens;

    mapping(uint256 => uint256) private _allTokensIndex;

    function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) {
        return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId);
    }

    
    function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds");
        return _ownedTokens[owner][index];
    }

 
    function totalSupply() public view virtual override returns (uint256) {
        return _allTokens.length;
    }

    function tokenByIndex(uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds");
        return _allTokens[index];
    }

  
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual override {
        super._beforeTokenTransfer(from, to, tokenId);

        if (from == address(0)) {
            _addTokenToAllTokensEnumeration(tokenId);
        } else if (from != to) {
            _removeTokenFromOwnerEnumeration(from, tokenId);
        }
        if (to == address(0)) {
            _removeTokenFromAllTokensEnumeration(tokenId);
        } else if (to != from) {
            _addTokenToOwnerEnumeration(to, tokenId);
        }
    }

    
    function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {
        uint256 length = ERC721.balanceOf(to);
        _ownedTokens[to][length] = tokenId;
        _ownedTokensIndex[tokenId] = length;
    }

  
    function _addTokenToAllTokensEnumeration(uint256 tokenId) private {
        _allTokensIndex[tokenId] = _allTokens.length;
        _allTokens.push(tokenId);
    }

   
    function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {
 

        uint256 lastTokenIndex = ERC721.balanceOf(from) - 1;
        uint256 tokenIndex = _ownedTokensIndex[tokenId];

      
        if (tokenIndex != lastTokenIndex) {
            uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];

            _ownedTokens[from][tokenIndex] = lastTokenId; 
            _ownedTokensIndex[lastTokenId] = tokenIndex; 
        }
        
        delete _ownedTokensIndex[tokenId];
        delete _ownedTokens[from][lastTokenIndex];
    }

  
    function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {

        uint256 lastTokenIndex = _allTokens.length - 1;
        uint256 tokenIndex = _allTokensIndex[tokenId];

     
        uint256 lastTokenId = _allTokens[lastTokenIndex];

        _allTokens[tokenIndex] = lastTokenId; 
        _allTokensIndex[lastTokenId] = tokenIndex; 


        delete _allTokensIndex[tokenId];
        _allTokens.pop();
    }
}
// contract inspired by hashlips git hub repositoroy
// https://github.com/HashLips


// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol

pragma solidity ^0.8.0;
// owner only commands
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

 //owner constructor
    constructor() {
        _setOwner(_msgSender());
    }

  
    function owner() public view virtual returns (address) {
        return _owner;
    }

   
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }


    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

 
    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);
    }
}
/*
                   _____     _______   ___    ___  _______   ________    _______
        	      /  __  \  |   _   |  \  \  /  / |   _   | |___  ___|  /       \
                 |  /  \_|  |  |_|  |   \  \/  /  |  |_|  |    |  |    |   ___   |
                 |  |   __  |   __  \    \    /   |  _____|    |  |    |  |___|  |
                 |  \__/  | |  |  |  |    |  |    |  |         |  |    |         |
                  \_____ /  |__|  |__|    |__|    |__|         |__|     \_______/
	
	 _____     _______   _____  ___  ____   ___   ________    _______   ________   __      __________
	/  __  \  |   _   | |     \|  | |     \|  |  |__    __|  |       | |   __   | |  |     |  _______|
   |  /  \_|  |  |_|  | |  |\  |  | |  |\  |  |     |  |     |  |_|  | |  |_|   | |  |     |  |___
   |  |   __  |   __  | |  | \    | |  | \    |     |  |     |      <  |   __   | |  |     |       \
   |  \__/  | |  |  | | |  |  \   | |  |  \   |    _|  |__   |  |_|  | |  |  |  | |  |____  \____  |
    \_____ /  |__|  |_| |__|   \__| |__|   \__|   |_______|  |_______| |__|  |__| |_______|     /  /
	 __________________________________________________________________________________________/  /
	 \___________________________________________________________________________________________/
	
    */
pragma solidity >=0.7.0 <0.9.0;

contract CryptoCannibalsV2 is ERC721Enumerable, Ownable {
  using Strings for uint256;

  string baseURI;
  string public baseExtension = ".json";
  uint256 public cost = 0.07 ether;
  uint256 public maxSupply = 3700;
  uint256 public maxMintAmount = 10;
  bool public paused = true;
  bool public revealed = false;
  string public notRevealedUri;
  //cap stops
  bool public cap = false; 
  bool public cap2 =false;
  //claim list toggle
  bool public claimListActive=false;
  //cap amounts
  uint256 public capCount=3001;
  uint256 public capCount2=3501;
    //payable adresses on withdraw
    address private addressOne = 0xf3447A408cea54D7790449f848439657eAa52258;
    address private addressTwo = 0x9FC1CF0F742bD165910ba8F7C1c95742E2723434;
    //claimable mapping
    mapping(address => uint256) private _claimList;
    uint256 public addressCount=0;

  constructor(
    string memory _name,
    string memory _symbol,
    string memory _initBaseURI,
    string memory _initNotRevealedUri
  ) ERC721(_name, _symbol) {
    setBaseURI(_initBaseURI);
    setNotRevealedURI(_initNotRevealedUri);
  }

  function _baseURI() internal view virtual override returns (string memory) {
    return baseURI;
  }

  // public minting fuction
  function mint(uint256 _mintAmount) public payable {

    uint256 supply = totalSupply();

        //added 3k cap to cut off for claimable time period
    if(cap==false && (supply+_mintAmount) >= capCount){
        paused=true;
        cap=true;
    }
        //added 3.5k cap to cut off for alan
    if(cap2==false && (supply+ _mintAmount) >= capCount2){
        paused=true;
        cap2=true;
    }
  
    require(!paused, "Contract is paused");
    require(_mintAmount > 0, "mint amount cant be 0");
    require(_mintAmount <= maxMintAmount, "Cant mint over the max mint amount");
    require(supply + _mintAmount <= maxSupply, "Mint amount is too high there may not be enough left to mint that many");

    if (msg.sender != owner()) {
      require(msg.value >= cost * _mintAmount);
    }
  

    for (uint256 i = 1; i <= _mintAmount; i++) {
      _safeMint(msg.sender, supply + i);
    }
  }
//claimable list mint funtion

function mintClaimList(uint256 numberOfTokens) external payable {
    uint256 currentSupply = totalSupply();

      //added 3k cap to cut off for claimable time period
    if(cap==false && (currentSupply+numberOfTokens) >= capCount){
        paused=true;
        cap=true;
    }
        //added 3.5k cap to cut off for alan
    if(cap2==false && (currentSupply+ numberOfTokens) >= capCount2){
        paused=true;
        cap2=true;
    }

    require(claimListActive, "Claim list is not active");
    require(numberOfTokens <= _claimList[msg.sender], "Exceeded max available to purchase");
    require(currentSupply + numberOfTokens <= maxSupply, "Purchase would exceed max supply");
    // cost taken down to 0 for claims
    //require(cost * numberOfTokens <= msg.value, "Eth value sent is not correct");

    _claimList[msg.sender] -= numberOfTokens;
    for (uint256 i = 1; i <= (numberOfTokens); i++) {
        _safeMint(msg.sender, currentSupply + i);
    }
 }

  function walletOfOwner(address _owner)
    public
    view
     returns (uint256[] memory)
  {
    uint256 ownerTokenCount = balanceOf(_owner);
    uint256[] memory tokenIds = new uint256[](ownerTokenCount);
    for (uint256 i; i < ownerTokenCount; i++) {
      tokenIds[i] = tokenOfOwnerByIndex(_owner, i);
    }
    return tokenIds;
  }

  function tokenURI(uint256 tokenId)
    public
    view
    virtual
    override
    returns (string memory)
  {
    require(
      _exists(tokenId),
      "ERC721Metadata: URI query for nonexistent token"
    );
    
    if(revealed == false) {
        return notRevealedUri;
    }

    string memory currentBaseURI = _baseURI();
    return bytes(currentBaseURI).length > 0
        ? string(abi.encodePacked(currentBaseURI, tokenId.toString(), baseExtension))
        : "";
  }

  //actions for the owner to interact with contract
  function reveal() public onlyOwner() {
      revealed = true;
  }
  //adjust claimable cut off point
  function setClaimableCap(uint256 _newCap) public onlyOwner() {
    capCount=_newCap;
  }

  function setClaimableCap2(uint256 _newCap) public onlyOwner() {
    capCount2=_newCap;
  }

  function setCapBool(bool _newCap) public onlyOwner() {
    cap=_newCap;
  }

 function setCap2Bool(bool _newCap) public onlyOwner() {
    cap2=_newCap;
  }

  function setCost(uint256 _newCost) public onlyOwner() {
    cost = _newCost;
  }

  function setmaxMintAmount(uint256 _newmaxMintAmount) public onlyOwner() {
    maxMintAmount = _newmaxMintAmount;
  }
  
  function setNotRevealedURI(string memory _notRevealedURI) public onlyOwner {
    notRevealedUri = _notRevealedURI;
  }

  function setBaseURI(string memory _newBaseURI) public onlyOwner {
    baseURI = _newBaseURI;
  }

  function setBaseExtension(string memory _newBaseExtension) public onlyOwner {
    baseExtension = _newBaseExtension;
  }

  function pause(bool _state) public onlyOwner {
    paused = _state;
  }

  function setClaimList(address addressInput, uint256 numAllowedToMint) external onlyOwner {
       
            _claimList[addressInput] = numAllowedToMint;
            addressCount+=1;
    }
//set claim list to true or false for active
    function setClaimListActive(bool _claimListActive) external onlyOwner {
        claimListActive = _claimListActive;
    }
//reset addressCount (claim list count)
    function addressCountReset(uint256 _newCount) public onlyOwner {
        addressCount=_newCount;
    }
//set a full address list 
function setFullClaimList(address[] calldata addresses, uint256 numAllowedToMint) external onlyOwner {
    for (uint256 i = 0; i < addresses.length; i++) {
        _claimList[addresses[i]] = numAllowedToMint;
        addressCount+=1;
    }
}


 //primary withdraw withdraw 10% to address 1 90% to address 2
  function primaryWithdraw() public payable onlyOwner {
   uint256 CurrentBalance = address(this).balance;
        payable(addressOne).transfer((CurrentBalance * 10) / 100);
        payable(addressTwo).transfer((CurrentBalance * 90) / 100);

  }
//backup witdraw to retrieve all funds to deployment account 
  function backupWithdraw() public payable onlyOwner {
 
    (bool success, ) = payable(msg.sender).call{value: address(this).balance}("");
    require(success);
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_initBaseURI","type":"string"},{"internalType":"string","name":"_initNotRevealedUri","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addressCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCount","type":"uint256"}],"name":"addressCountReset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"backupWithdraw","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cap2","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"capCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"capCount2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimListActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numberOfTokens","type":"uint256"}],"name":"mintClaimList","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notRevealedUri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"primaryWithdraw","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseExtension","type":"string"}],"name":"setBaseExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_newCap","type":"bool"}],"name":"setCap2Bool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_newCap","type":"bool"}],"name":"setCapBool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addressInput","type":"address"},{"internalType":"uint256","name":"numAllowedToMint","type":"uint256"}],"name":"setClaimList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_claimListActive","type":"bool"}],"name":"setClaimListActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCap","type":"uint256"}],"name":"setClaimableCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCap","type":"uint256"}],"name":"setClaimableCap2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"numAllowedToMint","type":"uint256"}],"name":"setFullClaimList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_notRevealedURI","type":"string"}],"name":"setNotRevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newmaxMintAmount","type":"uint256"}],"name":"setmaxMintAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"}]

60c06040526005608081905264173539b7b760d91b60a09081526200002891600c919062000267565b5066f8b0a10e470000600d55610e74600e55600a600f556010805461ffff191660011790556012805462ffffff19169055610bb9601355610dad601455601580546001600160a01b031990811673f3447a408cea54d7790449f848439657eaa522581790915560168054909116739fc1cf0f742bd165910ba8f7c1c95742e27234341790556000601855348015620000bf57600080fd5b50604051620032ff380380620032ff833981016040819052620000e291620003c4565b835184908490620000fb90600090602085019062000267565b5080516200011190600190602084019062000267565b5050506200012e620001286200014e60201b60201c565b62000152565b6200013982620001a4565b62000144816200020c565b50505050620004d0565b3390565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600a546001600160a01b03163314620001f35760405162461bcd60e51b81526020600482018190526024820152600080516020620032df83398151915260448201526064015b60405180910390fd5b80516200020890600b90602084019062000267565b5050565b600a546001600160a01b03163314620002575760405162461bcd60e51b81526020600482018190526024820152600080516020620032df8339815191526044820152606401620001ea565b8051620002089060119060208401905b82805462000275906200047d565b90600052602060002090601f016020900481019282620002995760008555620002e4565b82601f10620002b457805160ff1916838001178555620002e4565b82800160010185558215620002e4579182015b82811115620002e4578251825591602001919060010190620002c7565b50620002f2929150620002f6565b5090565b5b80821115620002f25760008155600101620002f7565b600082601f8301126200031f57600080fd5b81516001600160401b03808211156200033c576200033c620004ba565b604051601f8301601f19908116603f01168101908282118183101715620003675762000367620004ba565b816040528381526020925086838588010111156200038457600080fd5b600091505b83821015620003a8578582018301518183018401529082019062000389565b83821115620003ba5760008385830101525b9695505050505050565b60008060008060808587031215620003db57600080fd5b84516001600160401b0380821115620003f357600080fd5b62000401888389016200030d565b955060208701519150808211156200041857600080fd5b62000426888389016200030d565b945060408701519150808211156200043d57600080fd5b6200044b888389016200030d565b935060608701519150808211156200046257600080fd5b5062000471878288016200030d565b91505092959194509250565b600181811c908216806200049257607f821691505b60208210811415620004b457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b612dff80620004e06000396000f3fe6080604052600436106102ff5760003560e01c80636352211e11610190578063ae188f9d116100dc578063d5abeb0111610095578063e985e9c51161006f578063e985e9c514610879578063f2c4ce1e146108c2578063f2fde38b146108e2578063f50cbff91461090257600080fd5b8063d5abeb011461083b578063da38708214610851578063da3ef23f1461085957600080fd5b8063ae188f9d1461079e578063b518f0ea146107be578063b88d4fde146107de578063ba07689e146107fe578063c668286214610806578063c87b56dd1461081b57600080fd5b80638e74ca01116101495780639d80c818116101235780639d80c81814610740578063a0712d6814610756578063a22cb46514610769578063a475b5dd1461078957600080fd5b80638e74ca01146106f557806395d89b411461070b5780639b2c36df1461072057600080fd5b80636352211e1461064257806370a0823114610662578063715018a614610682578063776e9e12146106975780637f00c7a6146106b75780638da5cb5b146106d757600080fd5b80632dca33661161024f57806344a0d68a1161020857806351830227116101e257806351830227146105c957806355f804b3146105e857806359391040146106085780635c975abb1461062857600080fd5b806344a0d68a146105695780634dc6c0cc146105895780634f6ccce7146105a957600080fd5b80632dca3366146104af5780632f745c59146104c2578063355274ea146104e2578063367c718f146104fc57806342842e0e1461051c578063438b63001461053c57600080fd5b806310e7e716116102bc5780631bd558cf116102965780631bd558cf14610443578063239c70ae1461046357806323b872dd14610479578063278c345f1461049957600080fd5b806310e7e716146103ea57806313faede61461040a57806318160ddd1461042e57600080fd5b806301ffc9a71461030457806302329a291461033957806306fdde031461035b578063081812fc1461037d578063081c8c44146103b5578063095ea7b3146103ca575b600080fd5b34801561031057600080fd5b5061032461031f366004612955565b610921565b60405190151581526020015b60405180910390f35b34801561034557600080fd5b5061035961035436600461293a565b61094c565b005b34801561036757600080fd5b50610370610992565b6040516103309190612b62565b34801561038957600080fd5b5061039d6103983660046129d8565b610a24565b6040516001600160a01b039091168152602001610330565b3480156103c157600080fd5b50610370610ab9565b3480156103d657600080fd5b506103596103e5366004612895565b610b47565b3480156103f657600080fd5b5061035961040536600461293a565b610c5d565b34801561041657600080fd5b50610420600d5481565b604051908152602001610330565b34801561043a57600080fd5b50600854610420565b34801561044f57600080fd5b506012546103249062010000900460ff1681565b34801561046f57600080fd5b50610420600f5481565b34801561048557600080fd5b506103596104943660046127b3565b610ca1565b3480156104a557600080fd5b5061042060145481565b6103596104bd3660046129d8565b610cd2565b3480156104ce57600080fd5b506104206104dd366004612895565b610ed7565b3480156104ee57600080fd5b506012546103249060ff1681565b34801561050857600080fd5b5061035961051736600461293a565b610f6d565b34801561052857600080fd5b506103596105373660046127b3565b610fb3565b34801561054857600080fd5b5061055c610557366004612765565b610fce565b6040516103309190612b1e565b34801561057557600080fd5b506103596105843660046129d8565b611070565b34801561059557600080fd5b506103596105a43660046129d8565b61109f565b3480156105b557600080fd5b506104206105c43660046129d8565b6110ce565b3480156105d557600080fd5b5060105461032490610100900460ff1681565b3480156105f457600080fd5b5061035961060336600461298f565b611161565b34801561061457600080fd5b50610359610623366004612895565b6111a2565b34801561063457600080fd5b506010546103249060ff1681565b34801561064e57600080fd5b5061039d61065d3660046129d8565b611203565b34801561066e57600080fd5b5061042061067d366004612765565b61127a565b34801561068e57600080fd5b50610359611301565b3480156106a357600080fd5b506103596106b236600461293a565b611337565b3480156106c357600080fd5b506103596106d23660046129d8565b611374565b3480156106e357600080fd5b50600a546001600160a01b031661039d565b34801561070157600080fd5b5061042060135481565b34801561071757600080fd5b506103706113a3565b34801561072c57600080fd5b5061035961073b3660046128bf565b6113b2565b34801561074c57600080fd5b5061042060185481565b6103596107643660046129d8565b611468565b34801561077557600080fd5b5061035961078436600461286b565b6116cf565b34801561079557600080fd5b50610359611794565b3480156107aa57600080fd5b506103596107b93660046129d8565b6117cf565b3480156107ca57600080fd5b506103596107d93660046129d8565b6117fe565b3480156107ea57600080fd5b506103596107f93660046127ef565b61182d565b61035961185f565b34801561081257600080fd5b50610370611928565b34801561082757600080fd5b506103706108363660046129d8565b611935565b34801561084757600080fd5b50610420600e5481565b610359611ab4565b34801561086557600080fd5b5061035961087436600461298f565b611b36565b34801561088557600080fd5b50610324610894366004612780565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b3480156108ce57600080fd5b506103596108dd36600461298f565b611b73565b3480156108ee57600080fd5b506103596108fd366004612765565b611bb0565b34801561090e57600080fd5b5060125461032490610100900460ff1681565b60006001600160e01b0319821663780e9d6360e01b1480610946575061094682611c48565b92915050565b600a546001600160a01b0316331461097f5760405162461bcd60e51b815260040161097690612bc7565b60405180910390fd5b6010805460ff1916911515919091179055565b6060600080546109a190612cdb565b80601f01602080910402602001604051908101604052809291908181526020018280546109cd90612cdb565b8015610a1a5780601f106109ef57610100808354040283529160200191610a1a565b820191906000526020600020905b8154815290600101906020018083116109fd57829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b0316610a9d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610976565b506000908152600460205260409020546001600160a01b031690565b60118054610ac690612cdb565b80601f0160208091040260200160405190810160405280929190818152602001828054610af290612cdb565b8015610b3f5780601f10610b1457610100808354040283529160200191610b3f565b820191906000526020600020905b815481529060010190602001808311610b2257829003601f168201915b505050505081565b6000610b5282611203565b9050806001600160a01b0316836001600160a01b03161415610bc05760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610976565b336001600160a01b0382161480610bdc5750610bdc8133610894565b610c4e5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610976565b610c588383611c98565b505050565b600a546001600160a01b03163314610c875760405162461bcd60e51b815260040161097690612bc7565b601280549115156101000261ff0019909216919091179055565b610cab3382611d06565b610cc75760405162461bcd60e51b815260040161097690612bfc565b610c58838383611dfd565b6000610cdd60085490565b60125490915060ff16158015610cfe5750601354610cfb8383612c4d565b10155b15610d215760108054600160ff1991821681179092556012805490911690911790555b601254610100900460ff16158015610d445750601454610d418383612c4d565b10155b15610d66576010805460ff191660011790556012805461ff0019166101001790555b60125462010000900460ff16610dbe5760405162461bcd60e51b815260206004820152601860248201527f436c61696d206c697374206973206e6f742061637469766500000000000000006044820152606401610976565b33600090815260176020526040902054821115610e285760405162461bcd60e51b815260206004820152602260248201527f4578636565646564206d617820617661696c61626c6520746f20707572636861604482015261736560f01b6064820152608401610976565b600e54610e358383612c4d565b1115610e835760405162461bcd60e51b815260206004820181905260248201527f507572636861736520776f756c6420657863656564206d617820737570706c796044820152606401610976565b3360009081526017602052604081208054849290610ea2908490612c98565b90915550600190505b828111610c5857610ec533610ec08385612c4d565b611fa8565b80610ecf81612d16565b915050610eab565b6000610ee28361127a565b8210610f445760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610976565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b600a546001600160a01b03163314610f975760405162461bcd60e51b815260040161097690612bc7565b60128054911515620100000262ff000019909216919091179055565b610c588383836040518060200160405280600081525061182d565b60606000610fdb8361127a565b905060008167ffffffffffffffff811115610ff857610ff8612d9d565b604051908082528060200260200182016040528015611021578160200160208202803683370190505b50905060005b82811015611068576110398582610ed7565b82828151811061104b5761104b612d87565b60209081029190910101528061106081612d16565b915050611027565b509392505050565b600a546001600160a01b0316331461109a5760405162461bcd60e51b815260040161097690612bc7565b600d55565b600a546001600160a01b031633146110c95760405162461bcd60e51b815260040161097690612bc7565b601355565b60006110d960085490565b821061113c5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610976565b6008828154811061114f5761114f612d87565b90600052602060002001549050919050565b600a546001600160a01b0316331461118b5760405162461bcd60e51b815260040161097690612bc7565b805161119e90600b90602084019061262a565b5050565b600a546001600160a01b031633146111cc5760405162461bcd60e51b815260040161097690612bc7565b6001600160a01b038216600090815260176020526040812082905560188054600192906111fa908490612c4d565b90915550505050565b6000818152600260205260408120546001600160a01b0316806109465760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610976565b60006001600160a01b0382166112e55760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610976565b506001600160a01b031660009081526003602052604090205490565b600a546001600160a01b0316331461132b5760405162461bcd60e51b815260040161097690612bc7565b6113356000611fc2565b565b600a546001600160a01b031633146113615760405162461bcd60e51b815260040161097690612bc7565b6012805460ff1916911515919091179055565b600a546001600160a01b0316331461139e5760405162461bcd60e51b815260040161097690612bc7565b600f55565b6060600180546109a190612cdb565b600a546001600160a01b031633146113dc5760405162461bcd60e51b815260040161097690612bc7565b60005b828110156114625781601760008686858181106113fe576113fe612d87565b90506020020160208101906114139190612765565b6001600160a01b03166001600160a01b031681526020019081526020016000208190555060016018600082825461144a9190612c4d565b9091555081905061145a81612d16565b9150506113df565b50505050565b600061147360085490565b60125490915060ff1615801561149457506013546114918383612c4d565b10155b156114b75760108054600160ff1991821681179092556012805490911690911790555b601254610100900460ff161580156114da57506014546114d78383612c4d565b10155b156114fc576010805460ff191660011790556012805461ff0019166101001790555b60105460ff16156115445760405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b6044820152606401610976565b6000821161158c5760405162461bcd60e51b815260206004820152601560248201527406d696e7420616d6f756e742063616e74206265203605c1b6044820152606401610976565b600f548211156115e95760405162461bcd60e51b815260206004820152602260248201527f43616e74206d696e74206f76657220746865206d6178206d696e7420616d6f756044820152611b9d60f21b6064820152608401610976565b600e546115f68383612c4d565b11156116795760405162461bcd60e51b815260206004820152604660248201527f4d696e7420616d6f756e7420697320746f6f2068696768207468657265206d6160448201527f79206e6f7420626520656e6f756768206c65667420746f206d696e742074686160648201526574206d616e7960d01b608482015260a401610976565b600a546001600160a01b031633146116a55781600d546116999190612c79565b3410156116a557600080fd5b60015b828111610c58576116bd33610ec08385612c4d565b806116c781612d16565b9150506116a8565b6001600160a01b0382163314156117285760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610976565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600a546001600160a01b031633146117be5760405162461bcd60e51b815260040161097690612bc7565b6010805461ff001916610100179055565b600a546001600160a01b031633146117f95760405162461bcd60e51b815260040161097690612bc7565b601455565b600a546001600160a01b031633146118285760405162461bcd60e51b815260040161097690612bc7565b601855565b6118373383611d06565b6118535760405162461bcd60e51b815260040161097690612bfc565b61146284848484612014565b600a546001600160a01b031633146118895760405162461bcd60e51b815260040161097690612bc7565b60155447906001600160a01b03166108fc60646118a784600a612c79565b6118b19190612c65565b6040518115909202916000818181858888f193505050501580156118d9573d6000803e3d6000fd5b506016546001600160a01b03166108fc60646118f684605a612c79565b6119009190612c65565b6040518115909202916000818181858888f1935050505015801561119e573d6000803e3d6000fd5b600c8054610ac690612cdb565b6000818152600260205260409020546060906001600160a01b03166119b45760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610976565b601054610100900460ff16611a5557601180546119d090612cdb565b80601f01602080910402602001604051908101604052809291908181526020018280546119fc90612cdb565b8015611a495780601f10611a1e57610100808354040283529160200191611a49565b820191906000526020600020905b815481529060010190602001808311611a2c57829003601f168201915b50505050509050919050565b6000611a5f612047565b90506000815111611a7f5760405180602001604052806000815250611aad565b80611a8984612056565b600c604051602001611a9d93929190612a1d565b6040516020818303038152906040525b9392505050565b600a546001600160a01b03163314611ade5760405162461bcd60e51b815260040161097690612bc7565b604051600090339047908381818185875af1925050503d8060008114611b20576040519150601f19603f3d011682016040523d82523d6000602084013e611b25565b606091505b5050905080611b3357600080fd5b50565b600a546001600160a01b03163314611b605760405162461bcd60e51b815260040161097690612bc7565b805161119e90600c90602084019061262a565b600a546001600160a01b03163314611b9d5760405162461bcd60e51b815260040161097690612bc7565b805161119e90601190602084019061262a565b600a546001600160a01b03163314611bda5760405162461bcd60e51b815260040161097690612bc7565b6001600160a01b038116611c3f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610976565b611b3381611fc2565b60006001600160e01b031982166380ac58cd60e01b1480611c7957506001600160e01b03198216635b5e139f60e01b145b8061094657506301ffc9a760e01b6001600160e01b0319831614610946565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611ccd82611203565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b0316611d7f5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610976565b6000611d8a83611203565b9050806001600160a01b0316846001600160a01b03161480611dc55750836001600160a01b0316611dba84610a24565b6001600160a01b0316145b80611df557506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316611e1082611203565b6001600160a01b031614611e785760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610976565b6001600160a01b038216611eda5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610976565b611ee5838383612154565b611ef0600082611c98565b6001600160a01b0383166000908152600360205260408120805460019290611f19908490612c98565b90915550506001600160a01b0382166000908152600360205260408120805460019290611f47908490612c4d565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61119e82826040518060200160405280600081525061220c565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61201f848484611dfd565b61202b8484848461223f565b6114625760405162461bcd60e51b815260040161097690612b75565b6060600b80546109a190612cdb565b60608161207a5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156120a4578061208e81612d16565b915061209d9050600a83612c65565b915061207e565b60008167ffffffffffffffff8111156120bf576120bf612d9d565b6040519080825280601f01601f1916602001820160405280156120e9576020820181803683370190505b5090505b8415611df5576120fe600183612c98565b915061210b600a86612d31565b612116906030612c4d565b60f81b81838151811061212b5761212b612d87565b60200101906001600160f81b031916908160001a90535061214d600a86612c65565b94506120ed565b6001600160a01b0383166121af576121aa81600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b6121d2565b816001600160a01b0316836001600160a01b0316146121d2576121d2838261234c565b6001600160a01b0382166121e957610c58816123e9565b826001600160a01b0316826001600160a01b031614610c5857610c588282612498565b61221683836124dc565b612223600084848461223f565b610c585760405162461bcd60e51b815260040161097690612b75565b60006001600160a01b0384163b1561234157604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612283903390899088908890600401612ae1565b602060405180830381600087803b15801561229d57600080fd5b505af19250505080156122cd575060408051601f3d908101601f191682019092526122ca91810190612972565b60015b612327573d8080156122fb576040519150601f19603f3d011682016040523d82523d6000602084013e612300565b606091505b50805161231f5760405162461bcd60e51b815260040161097690612b75565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611df5565b506001949350505050565b600060016123598461127a565b6123639190612c98565b6000838152600760205260409020549091508082146123b6576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b6008546000906123fb90600190612c98565b6000838152600960205260408120546008805493945090928490811061242357612423612d87565b90600052602060002001549050806008838154811061244457612444612d87565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061247c5761247c612d71565b6001900381819060005260206000200160009055905550505050565b60006124a38361127a565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160a01b0382166125325760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610976565b6000818152600260205260409020546001600160a01b0316156125975760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610976565b6125a360008383612154565b6001600160a01b03821660009081526003602052604081208054600192906125cc908490612c4d565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461263690612cdb565b90600052602060002090601f016020900481019282612658576000855561269e565b82601f1061267157805160ff191683800117855561269e565b8280016001018555821561269e579182015b8281111561269e578251825591602001919060010190612683565b506126aa9291506126ae565b5090565b5b808211156126aa57600081556001016126af565b600067ffffffffffffffff808411156126de576126de612d9d565b604051601f8501601f19908116603f0116810190828211818310171561270657612706612d9d565b8160405280935085815286868601111561271f57600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b038116811461275057600080fd5b919050565b8035801515811461275057600080fd5b60006020828403121561277757600080fd5b611aad82612739565b6000806040838503121561279357600080fd5b61279c83612739565b91506127aa60208401612739565b90509250929050565b6000806000606084860312156127c857600080fd5b6127d184612739565b92506127df60208501612739565b9150604084013590509250925092565b6000806000806080858703121561280557600080fd5b61280e85612739565b935061281c60208601612739565b925060408501359150606085013567ffffffffffffffff81111561283f57600080fd5b8501601f8101871361285057600080fd5b61285f878235602084016126c3565b91505092959194509250565b6000806040838503121561287e57600080fd5b61288783612739565b91506127aa60208401612755565b600080604083850312156128a857600080fd5b6128b183612739565b946020939093013593505050565b6000806000604084860312156128d457600080fd5b833567ffffffffffffffff808211156128ec57600080fd5b818601915086601f83011261290057600080fd5b81358181111561290f57600080fd5b8760208260051b850101111561292457600080fd5b6020928301989097509590910135949350505050565b60006020828403121561294c57600080fd5b611aad82612755565b60006020828403121561296757600080fd5b8135611aad81612db3565b60006020828403121561298457600080fd5b8151611aad81612db3565b6000602082840312156129a157600080fd5b813567ffffffffffffffff8111156129b857600080fd5b8201601f810184136129c957600080fd5b611df5848235602084016126c3565b6000602082840312156129ea57600080fd5b5035919050565b60008151808452612a09816020860160208601612caf565b601f01601f19169290920160200192915050565b600084516020612a308285838a01612caf565b855191840191612a438184848a01612caf565b8554920191600090600181811c9080831680612a6057607f831692505b858310811415612a7e57634e487b7160e01b85526022600452602485fd5b808015612a925760018114612aa357612ad0565b60ff19851688528388019550612ad0565b60008b81526020902060005b85811015612ac85781548a820152908401908801612aaf565b505083880195505b50939b9a5050505050505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612b14908301846129f1565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015612b5657835183529284019291840191600101612b3a565b50909695505050505050565b602081526000611aad60208301846129f1565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b60008219821115612c6057612c60612d45565b500190565b600082612c7457612c74612d5b565b500490565b6000816000190483118215151615612c9357612c93612d45565b500290565b600082821015612caa57612caa612d45565b500390565b60005b83811015612cca578181015183820152602001612cb2565b838111156114625750506000910152565b600181811c90821680612cef57607f821691505b60208210811415612d1057634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612d2a57612d2a612d45565b5060010190565b600082612d4057612d40612d5b565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114611b3357600080fdfea264697066735822122062d80cb202b4b592988c379b3e538c8a586edd02e272225af2f46a665b28641364736f6c634300080700334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000001343727970746f2043616e6e6962616c73205632000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004434e424c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002f516d55727a413952456531697859376e35347678386f696b706532323563624a74637a466f474b5a7456384268672f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049697066733a2f2f516d50665555514a5277486b37726664564347666e6a746f346137384154463154484b5151586437775872796f642f48696464656e4d657461646174612e6a736f6e0000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106102ff5760003560e01c80636352211e11610190578063ae188f9d116100dc578063d5abeb0111610095578063e985e9c51161006f578063e985e9c514610879578063f2c4ce1e146108c2578063f2fde38b146108e2578063f50cbff91461090257600080fd5b8063d5abeb011461083b578063da38708214610851578063da3ef23f1461085957600080fd5b8063ae188f9d1461079e578063b518f0ea146107be578063b88d4fde146107de578063ba07689e146107fe578063c668286214610806578063c87b56dd1461081b57600080fd5b80638e74ca01116101495780639d80c818116101235780639d80c81814610740578063a0712d6814610756578063a22cb46514610769578063a475b5dd1461078957600080fd5b80638e74ca01146106f557806395d89b411461070b5780639b2c36df1461072057600080fd5b80636352211e1461064257806370a0823114610662578063715018a614610682578063776e9e12146106975780637f00c7a6146106b75780638da5cb5b146106d757600080fd5b80632dca33661161024f57806344a0d68a1161020857806351830227116101e257806351830227146105c957806355f804b3146105e857806359391040146106085780635c975abb1461062857600080fd5b806344a0d68a146105695780634dc6c0cc146105895780634f6ccce7146105a957600080fd5b80632dca3366146104af5780632f745c59146104c2578063355274ea146104e2578063367c718f146104fc57806342842e0e1461051c578063438b63001461053c57600080fd5b806310e7e716116102bc5780631bd558cf116102965780631bd558cf14610443578063239c70ae1461046357806323b872dd14610479578063278c345f1461049957600080fd5b806310e7e716146103ea57806313faede61461040a57806318160ddd1461042e57600080fd5b806301ffc9a71461030457806302329a291461033957806306fdde031461035b578063081812fc1461037d578063081c8c44146103b5578063095ea7b3146103ca575b600080fd5b34801561031057600080fd5b5061032461031f366004612955565b610921565b60405190151581526020015b60405180910390f35b34801561034557600080fd5b5061035961035436600461293a565b61094c565b005b34801561036757600080fd5b50610370610992565b6040516103309190612b62565b34801561038957600080fd5b5061039d6103983660046129d8565b610a24565b6040516001600160a01b039091168152602001610330565b3480156103c157600080fd5b50610370610ab9565b3480156103d657600080fd5b506103596103e5366004612895565b610b47565b3480156103f657600080fd5b5061035961040536600461293a565b610c5d565b34801561041657600080fd5b50610420600d5481565b604051908152602001610330565b34801561043a57600080fd5b50600854610420565b34801561044f57600080fd5b506012546103249062010000900460ff1681565b34801561046f57600080fd5b50610420600f5481565b34801561048557600080fd5b506103596104943660046127b3565b610ca1565b3480156104a557600080fd5b5061042060145481565b6103596104bd3660046129d8565b610cd2565b3480156104ce57600080fd5b506104206104dd366004612895565b610ed7565b3480156104ee57600080fd5b506012546103249060ff1681565b34801561050857600080fd5b5061035961051736600461293a565b610f6d565b34801561052857600080fd5b506103596105373660046127b3565b610fb3565b34801561054857600080fd5b5061055c610557366004612765565b610fce565b6040516103309190612b1e565b34801561057557600080fd5b506103596105843660046129d8565b611070565b34801561059557600080fd5b506103596105a43660046129d8565b61109f565b3480156105b557600080fd5b506104206105c43660046129d8565b6110ce565b3480156105d557600080fd5b5060105461032490610100900460ff1681565b3480156105f457600080fd5b5061035961060336600461298f565b611161565b34801561061457600080fd5b50610359610623366004612895565b6111a2565b34801561063457600080fd5b506010546103249060ff1681565b34801561064e57600080fd5b5061039d61065d3660046129d8565b611203565b34801561066e57600080fd5b5061042061067d366004612765565b61127a565b34801561068e57600080fd5b50610359611301565b3480156106a357600080fd5b506103596106b236600461293a565b611337565b3480156106c357600080fd5b506103596106d23660046129d8565b611374565b3480156106e357600080fd5b50600a546001600160a01b031661039d565b34801561070157600080fd5b5061042060135481565b34801561071757600080fd5b506103706113a3565b34801561072c57600080fd5b5061035961073b3660046128bf565b6113b2565b34801561074c57600080fd5b5061042060185481565b6103596107643660046129d8565b611468565b34801561077557600080fd5b5061035961078436600461286b565b6116cf565b34801561079557600080fd5b50610359611794565b3480156107aa57600080fd5b506103596107b93660046129d8565b6117cf565b3480156107ca57600080fd5b506103596107d93660046129d8565b6117fe565b3480156107ea57600080fd5b506103596107f93660046127ef565b61182d565b61035961185f565b34801561081257600080fd5b50610370611928565b34801561082757600080fd5b506103706108363660046129d8565b611935565b34801561084757600080fd5b50610420600e5481565b610359611ab4565b34801561086557600080fd5b5061035961087436600461298f565b611b36565b34801561088557600080fd5b50610324610894366004612780565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b3480156108ce57600080fd5b506103596108dd36600461298f565b611b73565b3480156108ee57600080fd5b506103596108fd366004612765565b611bb0565b34801561090e57600080fd5b5060125461032490610100900460ff1681565b60006001600160e01b0319821663780e9d6360e01b1480610946575061094682611c48565b92915050565b600a546001600160a01b0316331461097f5760405162461bcd60e51b815260040161097690612bc7565b60405180910390fd5b6010805460ff1916911515919091179055565b6060600080546109a190612cdb565b80601f01602080910402602001604051908101604052809291908181526020018280546109cd90612cdb565b8015610a1a5780601f106109ef57610100808354040283529160200191610a1a565b820191906000526020600020905b8154815290600101906020018083116109fd57829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b0316610a9d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610976565b506000908152600460205260409020546001600160a01b031690565b60118054610ac690612cdb565b80601f0160208091040260200160405190810160405280929190818152602001828054610af290612cdb565b8015610b3f5780601f10610b1457610100808354040283529160200191610b3f565b820191906000526020600020905b815481529060010190602001808311610b2257829003601f168201915b505050505081565b6000610b5282611203565b9050806001600160a01b0316836001600160a01b03161415610bc05760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610976565b336001600160a01b0382161480610bdc5750610bdc8133610894565b610c4e5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610976565b610c588383611c98565b505050565b600a546001600160a01b03163314610c875760405162461bcd60e51b815260040161097690612bc7565b601280549115156101000261ff0019909216919091179055565b610cab3382611d06565b610cc75760405162461bcd60e51b815260040161097690612bfc565b610c58838383611dfd565b6000610cdd60085490565b60125490915060ff16158015610cfe5750601354610cfb8383612c4d565b10155b15610d215760108054600160ff1991821681179092556012805490911690911790555b601254610100900460ff16158015610d445750601454610d418383612c4d565b10155b15610d66576010805460ff191660011790556012805461ff0019166101001790555b60125462010000900460ff16610dbe5760405162461bcd60e51b815260206004820152601860248201527f436c61696d206c697374206973206e6f742061637469766500000000000000006044820152606401610976565b33600090815260176020526040902054821115610e285760405162461bcd60e51b815260206004820152602260248201527f4578636565646564206d617820617661696c61626c6520746f20707572636861604482015261736560f01b6064820152608401610976565b600e54610e358383612c4d565b1115610e835760405162461bcd60e51b815260206004820181905260248201527f507572636861736520776f756c6420657863656564206d617820737570706c796044820152606401610976565b3360009081526017602052604081208054849290610ea2908490612c98565b90915550600190505b828111610c5857610ec533610ec08385612c4d565b611fa8565b80610ecf81612d16565b915050610eab565b6000610ee28361127a565b8210610f445760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610976565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b600a546001600160a01b03163314610f975760405162461bcd60e51b815260040161097690612bc7565b60128054911515620100000262ff000019909216919091179055565b610c588383836040518060200160405280600081525061182d565b60606000610fdb8361127a565b905060008167ffffffffffffffff811115610ff857610ff8612d9d565b604051908082528060200260200182016040528015611021578160200160208202803683370190505b50905060005b82811015611068576110398582610ed7565b82828151811061104b5761104b612d87565b60209081029190910101528061106081612d16565b915050611027565b509392505050565b600a546001600160a01b0316331461109a5760405162461bcd60e51b815260040161097690612bc7565b600d55565b600a546001600160a01b031633146110c95760405162461bcd60e51b815260040161097690612bc7565b601355565b60006110d960085490565b821061113c5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610976565b6008828154811061114f5761114f612d87565b90600052602060002001549050919050565b600a546001600160a01b0316331461118b5760405162461bcd60e51b815260040161097690612bc7565b805161119e90600b90602084019061262a565b5050565b600a546001600160a01b031633146111cc5760405162461bcd60e51b815260040161097690612bc7565b6001600160a01b038216600090815260176020526040812082905560188054600192906111fa908490612c4d565b90915550505050565b6000818152600260205260408120546001600160a01b0316806109465760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610976565b60006001600160a01b0382166112e55760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610976565b506001600160a01b031660009081526003602052604090205490565b600a546001600160a01b0316331461132b5760405162461bcd60e51b815260040161097690612bc7565b6113356000611fc2565b565b600a546001600160a01b031633146113615760405162461bcd60e51b815260040161097690612bc7565b6012805460ff1916911515919091179055565b600a546001600160a01b0316331461139e5760405162461bcd60e51b815260040161097690612bc7565b600f55565b6060600180546109a190612cdb565b600a546001600160a01b031633146113dc5760405162461bcd60e51b815260040161097690612bc7565b60005b828110156114625781601760008686858181106113fe576113fe612d87565b90506020020160208101906114139190612765565b6001600160a01b03166001600160a01b031681526020019081526020016000208190555060016018600082825461144a9190612c4d565b9091555081905061145a81612d16565b9150506113df565b50505050565b600061147360085490565b60125490915060ff1615801561149457506013546114918383612c4d565b10155b156114b75760108054600160ff1991821681179092556012805490911690911790555b601254610100900460ff161580156114da57506014546114d78383612c4d565b10155b156114fc576010805460ff191660011790556012805461ff0019166101001790555b60105460ff16156115445760405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b6044820152606401610976565b6000821161158c5760405162461bcd60e51b815260206004820152601560248201527406d696e7420616d6f756e742063616e74206265203605c1b6044820152606401610976565b600f548211156115e95760405162461bcd60e51b815260206004820152602260248201527f43616e74206d696e74206f76657220746865206d6178206d696e7420616d6f756044820152611b9d60f21b6064820152608401610976565b600e546115f68383612c4d565b11156116795760405162461bcd60e51b815260206004820152604660248201527f4d696e7420616d6f756e7420697320746f6f2068696768207468657265206d6160448201527f79206e6f7420626520656e6f756768206c65667420746f206d696e742074686160648201526574206d616e7960d01b608482015260a401610976565b600a546001600160a01b031633146116a55781600d546116999190612c79565b3410156116a557600080fd5b60015b828111610c58576116bd33610ec08385612c4d565b806116c781612d16565b9150506116a8565b6001600160a01b0382163314156117285760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610976565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600a546001600160a01b031633146117be5760405162461bcd60e51b815260040161097690612bc7565b6010805461ff001916610100179055565b600a546001600160a01b031633146117f95760405162461bcd60e51b815260040161097690612bc7565b601455565b600a546001600160a01b031633146118285760405162461bcd60e51b815260040161097690612bc7565b601855565b6118373383611d06565b6118535760405162461bcd60e51b815260040161097690612bfc565b61146284848484612014565b600a546001600160a01b031633146118895760405162461bcd60e51b815260040161097690612bc7565b60155447906001600160a01b03166108fc60646118a784600a612c79565b6118b19190612c65565b6040518115909202916000818181858888f193505050501580156118d9573d6000803e3d6000fd5b506016546001600160a01b03166108fc60646118f684605a612c79565b6119009190612c65565b6040518115909202916000818181858888f1935050505015801561119e573d6000803e3d6000fd5b600c8054610ac690612cdb565b6000818152600260205260409020546060906001600160a01b03166119b45760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610976565b601054610100900460ff16611a5557601180546119d090612cdb565b80601f01602080910402602001604051908101604052809291908181526020018280546119fc90612cdb565b8015611a495780601f10611a1e57610100808354040283529160200191611a49565b820191906000526020600020905b815481529060010190602001808311611a2c57829003601f168201915b50505050509050919050565b6000611a5f612047565b90506000815111611a7f5760405180602001604052806000815250611aad565b80611a8984612056565b600c604051602001611a9d93929190612a1d565b6040516020818303038152906040525b9392505050565b600a546001600160a01b03163314611ade5760405162461bcd60e51b815260040161097690612bc7565b604051600090339047908381818185875af1925050503d8060008114611b20576040519150601f19603f3d011682016040523d82523d6000602084013e611b25565b606091505b5050905080611b3357600080fd5b50565b600a546001600160a01b03163314611b605760405162461bcd60e51b815260040161097690612bc7565b805161119e90600c90602084019061262a565b600a546001600160a01b03163314611b9d5760405162461bcd60e51b815260040161097690612bc7565b805161119e90601190602084019061262a565b600a546001600160a01b03163314611bda5760405162461bcd60e51b815260040161097690612bc7565b6001600160a01b038116611c3f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610976565b611b3381611fc2565b60006001600160e01b031982166380ac58cd60e01b1480611c7957506001600160e01b03198216635b5e139f60e01b145b8061094657506301ffc9a760e01b6001600160e01b0319831614610946565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611ccd82611203565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b0316611d7f5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610976565b6000611d8a83611203565b9050806001600160a01b0316846001600160a01b03161480611dc55750836001600160a01b0316611dba84610a24565b6001600160a01b0316145b80611df557506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316611e1082611203565b6001600160a01b031614611e785760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610976565b6001600160a01b038216611eda5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610976565b611ee5838383612154565b611ef0600082611c98565b6001600160a01b0383166000908152600360205260408120805460019290611f19908490612c98565b90915550506001600160a01b0382166000908152600360205260408120805460019290611f47908490612c4d565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61119e82826040518060200160405280600081525061220c565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61201f848484611dfd565b61202b8484848461223f565b6114625760405162461bcd60e51b815260040161097690612b75565b6060600b80546109a190612cdb565b60608161207a5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156120a4578061208e81612d16565b915061209d9050600a83612c65565b915061207e565b60008167ffffffffffffffff8111156120bf576120bf612d9d565b6040519080825280601f01601f1916602001820160405280156120e9576020820181803683370190505b5090505b8415611df5576120fe600183612c98565b915061210b600a86612d31565b612116906030612c4d565b60f81b81838151811061212b5761212b612d87565b60200101906001600160f81b031916908160001a90535061214d600a86612c65565b94506120ed565b6001600160a01b0383166121af576121aa81600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b6121d2565b816001600160a01b0316836001600160a01b0316146121d2576121d2838261234c565b6001600160a01b0382166121e957610c58816123e9565b826001600160a01b0316826001600160a01b031614610c5857610c588282612498565b61221683836124dc565b612223600084848461223f565b610c585760405162461bcd60e51b815260040161097690612b75565b60006001600160a01b0384163b1561234157604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612283903390899088908890600401612ae1565b602060405180830381600087803b15801561229d57600080fd5b505af19250505080156122cd575060408051601f3d908101601f191682019092526122ca91810190612972565b60015b612327573d8080156122fb576040519150601f19603f3d011682016040523d82523d6000602084013e612300565b606091505b50805161231f5760405162461bcd60e51b815260040161097690612b75565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611df5565b506001949350505050565b600060016123598461127a565b6123639190612c98565b6000838152600760205260409020549091508082146123b6576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b6008546000906123fb90600190612c98565b6000838152600960205260408120546008805493945090928490811061242357612423612d87565b90600052602060002001549050806008838154811061244457612444612d87565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061247c5761247c612d71565b6001900381819060005260206000200160009055905550505050565b60006124a38361127a565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160a01b0382166125325760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610976565b6000818152600260205260409020546001600160a01b0316156125975760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610976565b6125a360008383612154565b6001600160a01b03821660009081526003602052604081208054600192906125cc908490612c4d565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461263690612cdb565b90600052602060002090601f016020900481019282612658576000855561269e565b82601f1061267157805160ff191683800117855561269e565b8280016001018555821561269e579182015b8281111561269e578251825591602001919060010190612683565b506126aa9291506126ae565b5090565b5b808211156126aa57600081556001016126af565b600067ffffffffffffffff808411156126de576126de612d9d565b604051601f8501601f19908116603f0116810190828211818310171561270657612706612d9d565b8160405280935085815286868601111561271f57600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b038116811461275057600080fd5b919050565b8035801515811461275057600080fd5b60006020828403121561277757600080fd5b611aad82612739565b6000806040838503121561279357600080fd5b61279c83612739565b91506127aa60208401612739565b90509250929050565b6000806000606084860312156127c857600080fd5b6127d184612739565b92506127df60208501612739565b9150604084013590509250925092565b6000806000806080858703121561280557600080fd5b61280e85612739565b935061281c60208601612739565b925060408501359150606085013567ffffffffffffffff81111561283f57600080fd5b8501601f8101871361285057600080fd5b61285f878235602084016126c3565b91505092959194509250565b6000806040838503121561287e57600080fd5b61288783612739565b91506127aa60208401612755565b600080604083850312156128a857600080fd5b6128b183612739565b946020939093013593505050565b6000806000604084860312156128d457600080fd5b833567ffffffffffffffff808211156128ec57600080fd5b818601915086601f83011261290057600080fd5b81358181111561290f57600080fd5b8760208260051b850101111561292457600080fd5b6020928301989097509590910135949350505050565b60006020828403121561294c57600080fd5b611aad82612755565b60006020828403121561296757600080fd5b8135611aad81612db3565b60006020828403121561298457600080fd5b8151611aad81612db3565b6000602082840312156129a157600080fd5b813567ffffffffffffffff8111156129b857600080fd5b8201601f810184136129c957600080fd5b611df5848235602084016126c3565b6000602082840312156129ea57600080fd5b5035919050565b60008151808452612a09816020860160208601612caf565b601f01601f19169290920160200192915050565b600084516020612a308285838a01612caf565b855191840191612a438184848a01612caf565b8554920191600090600181811c9080831680612a6057607f831692505b858310811415612a7e57634e487b7160e01b85526022600452602485fd5b808015612a925760018114612aa357612ad0565b60ff19851688528388019550612ad0565b60008b81526020902060005b85811015612ac85781548a820152908401908801612aaf565b505083880195505b50939b9a5050505050505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612b14908301846129f1565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015612b5657835183529284019291840191600101612b3a565b50909695505050505050565b602081526000611aad60208301846129f1565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b60008219821115612c6057612c60612d45565b500190565b600082612c7457612c74612d5b565b500490565b6000816000190483118215151615612c9357612c93612d45565b500290565b600082821015612caa57612caa612d45565b500390565b60005b83811015612cca578181015183820152602001612cb2565b838111156114625750506000910152565b600181811c90821680612cef57607f821691505b60208210811415612d1057634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612d2a57612d2a612d45565b5060010190565b600082612d4057612d40612d5b565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114611b3357600080fdfea264697066735822122062d80cb202b4b592988c379b3e538c8a586edd02e272225af2f46a665b28641364736f6c63430008070033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000001343727970746f2043616e6e6962616c73205632000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004434e424c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002f516d55727a413952456531697859376e35347678386f696b706532323563624a74637a466f474b5a7456384268672f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049697066733a2f2f516d50665555514a5277486b37726664564347666e6a746f346137384154463154484b5151586437775872796f642f48696464656e4d657461646174612e6a736f6e0000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): Crypto Cannibals V2
Arg [1] : _symbol (string): CNBL
Arg [2] : _initBaseURI (string): QmUrzA9REe1ixY7n54vx8oikpe225cbJtczFoGKZtV8Bhg/
Arg [3] : _initNotRevealedUri (string): ipfs://QmPfUUQJRwHk7rfdVCGfnjto4a78ATF1THKQQXd7wXryod/HiddenMetadata.json

-----Encoded View---------------
15 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000013
Arg [5] : 43727970746f2043616e6e6962616c7320563200000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [7] : 434e424c00000000000000000000000000000000000000000000000000000000
Arg [8] : 000000000000000000000000000000000000000000000000000000000000002f
Arg [9] : 516d55727a413952456531697859376e35347678386f696b706532323563624a
Arg [10] : 74637a466f474b5a7456384268672f0000000000000000000000000000000000
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000049
Arg [12] : 697066733a2f2f516d50665555514a5277486b37726664564347666e6a746f34
Arg [13] : 6137384154463154484b5151586437775872796f642f48696464656e4d657461
Arg [14] : 646174612e6a736f6e0000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

22841:6618:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17361:224;;;;;;;;;;-1:-1:-1;17361:224:0;;;;;:::i;:::-;;:::i;:::-;;;8501:14:1;;8494:22;8476:41;;8464:2;8449:18;17361:224:0;;;;;;;;28027:73;;;;;;;;;;-1:-1:-1;28027:73:0;;;;;:::i;:::-;;:::i;:::-;;10542:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;11640:221::-;;;;;;;;;;-1:-1:-1;11640:221:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;7162:32:1;;;7144:51;;7132:2;7117:18;11640:221:0;6998:203:1;23169:28:0;;;;;;;;;;;;;:::i;11216:411::-;;;;;;;;;;-1:-1:-1;11216:411:0;;;;;:::i;:::-;;:::i;27370:79::-;;;;;;;;;;-1:-1:-1;27370:79:0;;;;;:::i;:::-;;:::i;22995:32::-;;;;;;;;;;;;;;;;;;;18801:25:1;;;18789:2;18774:18;22995:32:0;18655:177:1;17866:113:0;;;;;;;;;;-1:-1:-1;17954:10:0;:17;17866:113;;23297:33;;;;;;;;;;-1:-1:-1;23297:33:0;;;;;;;;;;;23068;;;;;;;;;;;;;;;;12353:296;;;;;;;;;;-1:-1:-1;12353:296:0;;;;;:::i;:::-;;:::i;23385:29::-;;;;;;;;;;;;;;;;25079:991;;;;;;:::i;:::-;;:::i;17599:256::-;;;;;;;;;;-1:-1:-1;17599:256:0;;;;;:::i;:::-;;:::i;23217:23::-;;;;;;;;;;-1:-1:-1;23217:23:0;;;;;;;;28352:123;;;;;;;;;;-1:-1:-1;28352:123:0;;;;;:::i;:::-;;:::i;12660:185::-;;;;;;;;;;-1:-1:-1;12660:185:0;;;;;:::i;:::-;;:::i;26076:349::-;;;;;;;;;;-1:-1:-1;26076:349:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;27455:82::-;;;;;;;;;;-1:-1:-1;27455:82:0;;;;;:::i;:::-;;:::i;27094:90::-;;;;;;;;;;-1:-1:-1;27094:90:0;;;;;:::i;:::-;;:::i;17987:233::-;;;;;;;;;;-1:-1:-1;17987:233:0;;;;;:::i;:::-;;:::i;23136:28::-;;;;;;;;;;-1:-1:-1;23136:28:0;;;;;;;;;;;27795:98;;;;;;;;;;-1:-1:-1;27795:98:0;;;;;:::i;:::-;;:::i;28106:194::-;;;;;;;;;;-1:-1:-1;28106:194:0;;;;;:::i;:::-;;:::i;23106:25::-;;;;;;;;;;-1:-1:-1;23106:25:0;;;;;;;;10290:239;;;;;;;;;;-1:-1:-1;10290:239:0;;;;;:::i;:::-;;:::i;10072:208::-;;;;;;;;;;-1:-1:-1;10072:208:0;;;;;:::i;:::-;;:::i;21006:94::-;;;;;;;;;;;;;:::i;27288:77::-;;;;;;;;;;-1:-1:-1;27288:77:0;;;;;:::i;:::-;;:::i;27543:118::-;;;;;;;;;;-1:-1:-1;27543:118:0;;;;;:::i;:::-;;:::i;20776:87::-;;;;;;;;;;-1:-1:-1;20849:6:0;;-1:-1:-1;;;;;20849:6:0;20776:87;;23352:28;;;;;;;;;;;;;;;;10653:104;;;;;;;;;;;;;:::i;28656:246::-;;;;;;;;;;-1:-1:-1;28656:246:0;;;;;:::i;:::-;;:::i;23691:29::-;;;;;;;;;;;;;;;;24119:925;;;;;;:::i;:::-;;:::i;11874:295::-;;;;;;;;;;-1:-1:-1;11874:295:0;;;;;:::i;:::-;;:::i;26987:67::-;;;;;;;;;;;;;:::i;27190:92::-;;;;;;;;;;-1:-1:-1;27190:92:0;;;;;:::i;:::-;;:::i;28522:104::-;;;;;;;;;;-1:-1:-1;28522:104:0;;;;;:::i;:::-;;:::i;12857:328::-;;;;;;;;;;-1:-1:-1;12857:328:0;;;;;:::i;:::-;;:::i;28974:248::-;;;:::i;22953:37::-;;;;;;;;;;;;;:::i;26431:497::-;;;;;;;;;;-1:-1:-1;26431:497:0;;;;;:::i;:::-;;:::i;23032:31::-;;;;;;;;;;;;;;;;29289:167;;;:::i;27899:122::-;;;;;;;;;;-1:-1:-1;27899:122:0;;;;;:::i;:::-;;:::i;12181:164::-;;;;;;;;;;-1:-1:-1;12181:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;12302:25:0;;;12278:4;12302:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;12181:164;27669:120;;;;;;;;;;-1:-1:-1;27669:120:0;;;;;:::i;:::-;;:::i;21111:192::-;;;;;;;;;;-1:-1:-1;21111:192:0;;;;;:::i;:::-;;:::i;23246:23::-;;;;;;;;;;-1:-1:-1;23246:23:0;;;;;;;;;;;17361:224;17463:4;-1:-1:-1;;;;;;17487:50:0;;-1:-1:-1;;;17487:50:0;;:90;;;17541:36;17565:11;17541:23;:36::i;:::-;17480:97;17361:224;-1:-1:-1;;17361:224:0:o;28027:73::-;20849:6;;-1:-1:-1;;;;;20849:6:0;8896:10;20916:23;20908:68;;;;-1:-1:-1;;;20908:68:0;;;;;;;:::i;:::-;;;;;;;;;28079:6:::1;:15:::0;;-1:-1:-1;;28079:15:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28027:73::o;10542:100::-;10596:13;10629:5;10622:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10542:100;:::o;11640:221::-;11716:7;13612:16;;;:7;:16;;;;;;-1:-1:-1;;;;;13612:16:0;11736:73;;;;-1:-1:-1;;;11736:73:0;;14924:2:1;11736:73:0;;;14906:21:1;14963:2;14943:18;;;14936:30;15002:34;14982:18;;;14975:62;-1:-1:-1;;;15053:18:1;;;15046:42;15105:19;;11736:73:0;14722:408:1;11736:73:0;-1:-1:-1;11829:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;11829:24:0;;11640:221::o;23169:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11216:411::-;11297:13;11313:23;11328:7;11313:14;:23::i;:::-;11297:39;;11361:5;-1:-1:-1;;;;;11355:11:0;:2;-1:-1:-1;;;;;11355:11:0;;;11347:57;;;;-1:-1:-1;;;11347:57:0;;16524:2:1;11347:57:0;;;16506:21:1;16563:2;16543:18;;;16536:30;16602:34;16582:18;;;16575:62;-1:-1:-1;;;16653:18:1;;;16646:31;16694:19;;11347:57:0;16322:397:1;11347:57:0;8896:10;-1:-1:-1;;;;;11439:21:0;;;;:62;;-1:-1:-1;11464:37:0;11481:5;8896:10;12181:164;:::i;11464:37::-;11417:168;;;;-1:-1:-1;;;11417:168:0;;12477:2:1;11417:168:0;;;12459:21:1;12516:2;12496:18;;;12489:30;12555:34;12535:18;;;12528:62;12626:26;12606:18;;;12599:54;12670:19;;11417:168:0;12275:420:1;11417:168:0;11598:21;11607:2;11611:7;11598:8;:21::i;:::-;11286:341;11216:411;;:::o;27370:79::-;20849:6;;-1:-1:-1;;;;;20849:6:0;8896:10;20916:23;20908:68;;;;-1:-1:-1;;;20908:68:0;;;;;;;:::i;:::-;27431:4:::1;:12:::0;;;::::1;;;;-1:-1:-1::0;;27431:12:0;;::::1;::::0;;;::::1;::::0;;27370:79::o;12353:296::-;12505:41;8896:10;12538:7;12505:18;:41::i;:::-;12497:103;;;;-1:-1:-1;;;12497:103:0;;;;;;;:::i;:::-;12613:28;12623:4;12629:2;12633:7;12613:9;:28::i;25079:991::-;25150:21;25174:13;17954:10;:17;;17866:113;25174:13;25258:3;;25150:37;;-1:-1:-1;25258:3:0;;:10;;;:56;;-1:-1:-1;25306:8:0;;25273:28;25287:14;25273:13;:28;:::i;:::-;25272:42;;25258:56;25255:109;;;25326:6;:11;;25333:4;-1:-1:-1;;25326:11:0;;;;;;;;25348:3;:8;;;;;;;;;;25255:109;25419:4;;;;;;;:11;;;:59;;-1:-1:-1;25469:9:0;;25435:29;25450:14;25435:13;:29;:::i;:::-;25434:44;;25419:59;25416:113;;;25490:6;:11;;-1:-1:-1;;25490:11:0;25497:4;25490:11;;;25512:4;:9;;-1:-1:-1;;25512:9:0;25490:11;25512:9;;;25416:113;25545:15;;;;;;;25537:52;;;;-1:-1:-1;;;25537:52:0;;8954:2:1;25537:52:0;;;8936:21:1;8993:2;8973:18;;;8966:30;9032:26;9012:18;;;9005:54;9076:18;;25537:52:0;8752:348:1;25537:52:0;25633:10;25622:22;;;;:10;:22;;;;;;25604:40;;;25596:87;;;;-1:-1:-1;;;25596:87:0;;17276:2:1;25596:87:0;;;17258:21:1;17315:2;17295:18;;;17288:30;17354:34;17334:18;;;17327:62;-1:-1:-1;;;17405:18:1;;;17398:32;17447:19;;25596:87:0;17074:398:1;25596:87:0;25732:9;;25698:30;25714:14;25698:13;:30;:::i;:::-;:43;;25690:88;;;;-1:-1:-1;;;25690:88:0;;14202:2:1;25690:88:0;;;14184:21:1;;;14221:18;;;14214:30;14280:34;14260:18;;;14253:62;14332:18;;25690:88:0;14000:356:1;25690:88:0;25923:10;25912:22;;;;:10;:22;;;;;:40;;25938:14;;25912:22;:40;;25938:14;;25912:40;:::i;:::-;;;;-1:-1:-1;25976:1:0;;-1:-1:-1;25959:107:0;25985:14;25979:1;:21;25959:107;;26018:40;26028:10;26040:17;26056:1;26040:13;:17;:::i;:::-;26018:9;:40::i;:::-;26002:3;;;;:::i;:::-;;;;25959:107;;17599:256;17696:7;17732:23;17749:5;17732:16;:23::i;:::-;17724:5;:31;17716:87;;;;-1:-1:-1;;;17716:87:0;;9710:2:1;17716:87:0;;;9692:21:1;9749:2;9729:18;;;9722:30;9788:34;9768:18;;;9761:62;-1:-1:-1;;;9839:18:1;;;9832:41;9890:19;;17716:87:0;9508:407:1;17716:87:0;-1:-1:-1;;;;;;17821:19:0;;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;17599:256::o;28352:123::-;20849:6;;-1:-1:-1;;;;;20849:6:0;8896:10;20916:23;20908:68;;;;-1:-1:-1;;;20908:68:0;;;;;;;:::i;:::-;28433:15:::1;:34:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;28433:34:0;;::::1;::::0;;;::::1;::::0;;28352:123::o;12660:185::-;12798:39;12815:4;12821:2;12825:7;12798:39;;;;;;;;;;;;:16;:39::i;26076:349::-;26152:16;26180:23;26206:17;26216:6;26206:9;:17::i;:::-;26180:43;;26230:25;26272:15;26258:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26258:30:0;;26230:58;;26300:9;26295:103;26315:15;26311:1;:19;26295:103;;;26360:30;26380:6;26388:1;26360:19;:30::i;:::-;26346:8;26355:1;26346:11;;;;;;;;:::i;:::-;;;;;;;;;;:44;26332:3;;;;:::i;:::-;;;;26295:103;;;-1:-1:-1;26411:8:0;26076:349;-1:-1:-1;;;26076:349:0:o;27455:82::-;20849:6;;-1:-1:-1;;;;;20849:6:0;8896:10;20916:23;20908:68;;;;-1:-1:-1;;;20908:68:0;;;;;;;:::i;:::-;27516:4:::1;:15:::0;27455:82::o;27094:90::-;20849:6;;-1:-1:-1;;;;;20849:6:0;8896:10;20916:23;20908:68;;;;-1:-1:-1;;;20908:68:0;;;;;;;:::i;:::-;27162:8:::1;:16:::0;27094:90::o;17987:233::-;18062:7;18098:30;17954:10;:17;;17866:113;18098:30;18090:5;:38;18082:95;;;;-1:-1:-1;;;18082:95:0;;18097:2:1;18082:95:0;;;18079:21:1;18136:2;18116:18;;;18109:30;18175:34;18155:18;;;18148:62;-1:-1:-1;;;18226:18:1;;;18219:42;18278:19;;18082:95:0;17895:408:1;18082:95:0;18195:10;18206:5;18195:17;;;;;;;;:::i;:::-;;;;;;;;;18188:24;;17987:233;;;:::o;27795:98::-;20849:6;;-1:-1:-1;;;;;20849:6:0;8896:10;20916:23;20908:68;;;;-1:-1:-1;;;20908:68:0;;;;;;;:::i;:::-;27866:21;;::::1;::::0;:7:::1;::::0;:21:::1;::::0;::::1;::::0;::::1;:::i;:::-;;27795:98:::0;:::o;28106:194::-;20849:6;;-1:-1:-1;;;;;20849:6:0;8896:10;20916:23;20908:68;;;;-1:-1:-1;;;20908:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28219:24:0;::::1;;::::0;;;:10:::1;:24;::::0;;;;:43;;;28277:12:::1;:15:::0;;28291:1:::1;::::0;28219:24;28277:15:::1;::::0;28291:1;;28277:15:::1;:::i;:::-;::::0;;;-1:-1:-1;;;;28106:194:0:o;10290:239::-;10362:7;10398:16;;;:7;:16;;;;;;-1:-1:-1;;;;;10398:16:0;10433:19;10425:73;;;;-1:-1:-1;;;10425:73:0;;13313:2:1;10425:73:0;;;13295:21:1;13352:2;13332:18;;;13325:30;13391:34;13371:18;;;13364:62;-1:-1:-1;;;13442:18:1;;;13435:39;13491:19;;10425:73:0;13111:405:1;10072:208:0;10144:7;-1:-1:-1;;;;;10172:19:0;;10164:74;;;;-1:-1:-1;;;10164:74:0;;12902:2:1;10164:74:0;;;12884:21:1;12941:2;12921:18;;;12914:30;12980:34;12960:18;;;12953:62;-1:-1:-1;;;13031:18:1;;;13024:40;13081:19;;10164:74:0;12700:406:1;10164:74:0;-1:-1:-1;;;;;;10256:16:0;;;;;:9;:16;;;;;;;10072:208::o;21006:94::-;20849:6;;-1:-1:-1;;;;;20849:6:0;8896:10;20916:23;20908:68;;;;-1:-1:-1;;;20908:68:0;;;;;;;:::i;:::-;21071:21:::1;21089:1;21071:9;:21::i;:::-;21006:94::o:0;27288:77::-;20849:6;;-1:-1:-1;;;;;20849:6:0;8896:10;20916:23;20908:68;;;;-1:-1:-1;;;20908:68:0;;;;;;;:::i;:::-;27348:3:::1;:11:::0;;-1:-1:-1;;27348:11:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27288:77::o;27543:118::-;20849:6;;-1:-1:-1;;;;;20849:6:0;8896:10;20916:23;20908:68;;;;-1:-1:-1;;;20908:68:0;;;;;;;:::i;:::-;27622:13:::1;:33:::0;27543:118::o;10653:104::-;10709:13;10742:7;10735:14;;;;;:::i;28656:246::-;20849:6;;-1:-1:-1;;;;;20849:6:0;8896:10;20916:23;20908:68;;;;-1:-1:-1;;;20908:68:0;;;;;;;:::i;:::-;28769:9:::1;28764:135;28784:20:::0;;::::1;28764:135;;;28849:16;28822:10;:24;28833:9;;28843:1;28833:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;28822:24:0::1;-1:-1:-1::0;;;;;28822:24:0::1;;;;;;;;;;;;:43;;;;28890:1;28876:12;;:15;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;28806:3:0;;-1:-1:-1;28806:3:0::1;::::0;::::1;:::i;:::-;;;;28764:135;;;;28656:246:::0;;;:::o;24119:925::-;24178:14;24195:13;17954:10;:17;;17866:113;24195:13;24281:3;;24178:30;;-1:-1:-1;24281:3:0;;:10;;;:46;;-1:-1:-1;24319:8:0;;24296:18;24303:11;24296:6;:18;:::i;:::-;24295:32;;24281:46;24278:99;;;24339:6;:11;;24346:4;-1:-1:-1;;24339:11:0;;;;;;;;24361:3;:8;;;;;;;;;;24278:99;24432:4;;;;;;;:11;;;:49;;-1:-1:-1;24472:9:0;;24448:19;24456:11;24448:6;:19;:::i;:::-;24447:34;;24432:49;24429:103;;;24493:6;:11;;-1:-1:-1;;24493:11:0;24500:4;24493:11;;;24515:4;:9;;-1:-1:-1;;24515:9:0;24493:11;24515:9;;;24429:103;24551:6;;;;24550:7;24542:38;;;;-1:-1:-1;;;24542:38:0;;18510:2:1;24542:38:0;;;18492:21:1;18549:2;18529:18;;;18522:30;-1:-1:-1;;;18568:18:1;;;18561:48;18626:18;;24542:38:0;18308:342:1;24542:38:0;24609:1;24595:11;:15;24587:49;;;;-1:-1:-1;;;24587:49:0;;16926:2:1;24587:49:0;;;16908:21:1;16965:2;16945:18;;;16938:30;-1:-1:-1;;;16984:18:1;;;16977:51;17045:18;;24587:49:0;16724:345:1;24587:49:0;24666:13;;24651:11;:28;;24643:75;;;;-1:-1:-1;;;24643:75:0;;9307:2:1;24643:75:0;;;9289:21:1;9346:2;9326:18;;;9319:30;9385:34;9365:18;;;9358:62;-1:-1:-1;;;9436:18:1;;;9429:32;9478:19;;24643:75:0;9105:398:1;24643:75:0;24757:9;;24733:20;24742:11;24733:6;:20;:::i;:::-;:33;;24725:116;;;;-1:-1:-1;;;24725:116:0;;13723:2:1;24725:116:0;;;13705:21:1;13762:2;13742:18;;;13735:30;13801:34;13781:18;;;13774:62;13872:34;13852:18;;;13845:62;-1:-1:-1;;;13923:19:1;;;13916:37;13970:19;;24725:116:0;13521:474:1;24725:116:0;20849:6;;-1:-1:-1;;;;;20849:6:0;24854:10;:21;24850:84;;24914:11;24907:4;;:18;;;;:::i;:::-;24894:9;:31;;24886:40;;;;;;24963:1;24946:93;24971:11;24966:1;:16;24946:93;;24998:33;25008:10;25020;25029:1;25020:6;:10;:::i;24998:33::-;24984:3;;;;:::i;:::-;;;;24946:93;;11874:295;-1:-1:-1;;;;;11977:24:0;;8896:10;11977:24;;11969:62;;;;-1:-1:-1;;;11969:62:0;;11710:2:1;11969:62:0;;;11692:21:1;11749:2;11729:18;;;11722:30;11788:27;11768:18;;;11761:55;11833:18;;11969:62:0;11508:349:1;11969:62:0;8896:10;12044:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;12044:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;12044:53:0;;;;;;;;;;12113:48;;8476:41:1;;;12044:42:0;;8896:10;12113:48;;8449:18:1;12113:48:0;;;;;;;11874:295;;:::o;26987:67::-;20849:6;;-1:-1:-1;;;;;20849:6:0;8896:10;20916:23;20908:68;;;;-1:-1:-1;;;20908:68:0;;;;;;;:::i;:::-;27033:8:::1;:15:::0;;-1:-1:-1;;27033:15:0::1;;;::::0;;26987:67::o;27190:92::-;20849:6;;-1:-1:-1;;;;;20849:6:0;8896:10;20916:23;20908:68;;;;-1:-1:-1;;;20908:68:0;;;;;;;:::i;:::-;27259:9:::1;:17:::0;27190:92::o;28522:104::-;20849:6;;-1:-1:-1;;;;;20849:6:0;8896:10;20916:23;20908:68;;;;-1:-1:-1;;;20908:68:0;;;;;;;:::i;:::-;28596:12:::1;:22:::0;28522:104::o;12857:328::-;13032:41;8896:10;13065:7;13032:18;:41::i;:::-;13024:103;;;;-1:-1:-1;;;13024:103:0;;;;;;;:::i;:::-;13138:39;13152:4;13158:2;13162:7;13171:5;13138:13;:39::i;28974:248::-;20849:6;;-1:-1:-1;;;;;20849:6:0;8896:10;20916:23;20908:68;;;;-1:-1:-1;;;20908:68:0;;;;;;;:::i;:::-;29097:10:::1;::::0;29057:21:::1;::::0;-1:-1:-1;;;;;29097:10:0::1;29089:57;29142:3;29119:19;29057:21:::0;29136:2:::1;29119:19;:::i;:::-;29118:27;;;;:::i;:::-;29089:57;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;29165:10:0::1;::::0;-1:-1:-1;;;;;29165:10:0::1;29157:57;29210:3;29187:19;:14:::0;29204:2:::1;29187:19;:::i;:::-;29186:27;;;;:::i;:::-;29157:57;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;22953:37:::0;;;;;;;:::i;26431:497::-;13588:4;13612:16;;;:7;:16;;;;;;26529:13;;-1:-1:-1;;;;;13612:16:0;26554:97;;;;-1:-1:-1;;;26554:97:0;;16108:2:1;26554:97:0;;;16090:21:1;16147:2;16127:18;;;16120:30;16186:34;16166:18;;;16159:62;-1:-1:-1;;;16237:18:1;;;16230:45;16292:19;;26554:97:0;15906:411:1;26554:97:0;26667:8;;;;;;;26664:62;;26704:14;26697:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26431:497;;;:::o;26664:62::-;26734:28;26765:10;:8;:10::i;:::-;26734:41;;26820:1;26795:14;26789:28;:32;:133;;;;;;;;;;;;;;;;;26857:14;26873:18;:7;:16;:18::i;:::-;26893:13;26840:67;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;26789:133;26782:140;26431:497;-1:-1:-1;;;26431:497:0:o;29289:167::-;20849:6;;-1:-1:-1;;;;;20849:6:0;8896:10;20916:23;20908:68;;;;-1:-1:-1;;;20908:68:0;;;;;;;:::i;:::-;29369:58:::1;::::0;29351:12:::1;::::0;29377:10:::1;::::0;29401:21:::1;::::0;29351:12;29369:58;29351:12;29369:58;29401:21;29377:10;29369:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29350:77;;;29442:7;29434:16;;;::::0;::::1;;29340:116;29289:167::o:0;27899:122::-;20849:6;;-1:-1:-1;;;;;20849:6:0;8896:10;20916:23;20908:68;;;;-1:-1:-1;;;20908:68:0;;;;;;;:::i;:::-;27982:33;;::::1;::::0;:13:::1;::::0;:33:::1;::::0;::::1;::::0;::::1;:::i;27669:120::-:0;20849:6;;-1:-1:-1;;;;;20849:6:0;8896:10;20916:23;20908:68;;;;-1:-1:-1;;;20908:68:0;;;;;;;:::i;:::-;27751:32;;::::1;::::0;:14:::1;::::0;:32:::1;::::0;::::1;::::0;::::1;:::i;21111:192::-:0;20849:6;;-1:-1:-1;;;;;20849:6:0;8896:10;20916:23;20908:68;;;;-1:-1:-1;;;20908:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21200:22:0;::::1;21192:73;;;::::0;-1:-1:-1;;;21192:73:0;;10541:2:1;21192:73:0::1;::::0;::::1;10523:21:1::0;10580:2;10560:18;;;10553:30;10619:34;10599:18;;;10592:62;-1:-1:-1;;;10670:18:1;;;10663:36;10716:19;;21192:73:0::1;10339:402:1::0;21192:73:0::1;21276:19;21286:8;21276:9;:19::i;9757:305::-:0;9859:4;-1:-1:-1;;;;;;9896:40:0;;-1:-1:-1;;;9896:40:0;;:105;;-1:-1:-1;;;;;;;9953:48:0;;-1:-1:-1;;;9953:48:0;9896:105;:158;;;-1:-1:-1;;;;;;;;;;2351:40:0;;;10018:36;2242:157;15763:174;15838:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;15838:29:0;-1:-1:-1;;;;;15838:29:0;;;;;;;;:24;;15892:23;15838:24;15892:14;:23::i;:::-;-1:-1:-1;;;;;15883:46:0;;;;;;;;;;;15763:174;;:::o;13662:348::-;13755:4;13612:16;;;:7;:16;;;;;;-1:-1:-1;;;;;13612:16:0;13772:73;;;;-1:-1:-1;;;13772:73:0;;12064:2:1;13772:73:0;;;12046:21:1;12103:2;12083:18;;;12076:30;12142:34;12122:18;;;12115:62;-1:-1:-1;;;12193:18:1;;;12186:42;12245:19;;13772:73:0;11862:408:1;13772:73:0;13856:13;13872:23;13887:7;13872:14;:23::i;:::-;13856:39;;13925:5;-1:-1:-1;;;;;13914:16:0;:7;-1:-1:-1;;;;;13914:16:0;;:51;;;;13958:7;-1:-1:-1;;;;;13934:31:0;:20;13946:7;13934:11;:20::i;:::-;-1:-1:-1;;;;;13934:31:0;;13914:51;:87;;;-1:-1:-1;;;;;;12302:25:0;;;12278:4;12302:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;13969:32;13906:96;13662:348;-1:-1:-1;;;;13662:348:0:o;15219:532::-;15378:4;-1:-1:-1;;;;;15351:31:0;:23;15366:7;15351:14;:23::i;:::-;-1:-1:-1;;;;;15351:31:0;;15343:85;;;;-1:-1:-1;;;15343:85:0;;15698:2:1;15343:85:0;;;15680:21:1;15737:2;15717:18;;;15710:30;15776:34;15756:18;;;15749:62;-1:-1:-1;;;15827:18:1;;;15820:39;15876:19;;15343:85:0;15496:405:1;15343:85:0;-1:-1:-1;;;;;15447:16:0;;15439:65;;;;-1:-1:-1;;;15439:65:0;;11305:2:1;15439:65:0;;;11287:21:1;11344:2;11324:18;;;11317:30;11383:34;11363:18;;;11356:62;-1:-1:-1;;;11434:18:1;;;11427:34;11478:19;;15439:65:0;11103:400:1;15439:65:0;15517:39;15538:4;15544:2;15548:7;15517:20;:39::i;:::-;15575:29;15592:1;15596:7;15575:8;:29::i;:::-;-1:-1:-1;;;;;15617:15:0;;;;;;:9;:15;;;;;:20;;15636:1;;15617:15;:20;;15636:1;;15617:20;:::i;:::-;;;;-1:-1:-1;;;;;;;15648:13:0;;;;;;:9;:13;;;;;:18;;15665:1;;15648:13;:18;;15665:1;;15648:18;:::i;:::-;;;;-1:-1:-1;;15677:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;15677:21:0;-1:-1:-1;;;;;15677:21:0;;;;;;;;;15716:27;;15677:16;;15716:27;;;;;;;15219:532;;;:::o;14023:110::-;14099:26;14109:2;14113:7;14099:26;;;;;;;;;;;;:9;:26::i;21311:173::-;21386:6;;;-1:-1:-1;;;;;21403:17:0;;;-1:-1:-1;;;;;;21403:17:0;;;;;;;21436:40;;21386:6;;;21403:17;21386:6;;21436:40;;21367:16;;21436:40;21356:128;21311:173;:::o;13198:315::-;13355:28;13365:4;13371:2;13375:7;13355:9;:28::i;:::-;13402:48;13425:4;13431:2;13435:7;13444:5;13402:22;:48::i;:::-;13394:111;;;;-1:-1:-1;;;13394:111:0;;;;;;;:::i;23982:102::-;24042:13;24071:7;24064:14;;;;;:::i;2546:723::-;2602:13;2823:10;2819:53;;-1:-1:-1;;2850:10:0;;;;;;;;;;;;-1:-1:-1;;;2850:10:0;;;;;2546:723::o;2819:53::-;2897:5;2882:12;2938:78;2945:9;;2938:78;;2971:8;;;;:::i;:::-;;-1:-1:-1;2994:10:0;;-1:-1:-1;3002:2:0;2994:10;;:::i;:::-;;;2938:78;;;3026:19;3058:6;3048:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3048:17:0;;3026:39;;3076:154;3083:10;;3076:154;;3110:11;3120:1;3110:11;;:::i;:::-;;-1:-1:-1;3179:10:0;3187:2;3179:5;:10;:::i;:::-;3166:24;;:2;:24;:::i;:::-;3153:39;;3136:6;3143;3136:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;3136:56:0;;;;;;;;-1:-1:-1;3207:11:0;3216:2;3207:11;;:::i;:::-;;;3076:154;;18232:589;-1:-1:-1;;;;;18438:18:0;;18434:187;;18473:40;18505:7;19172:10;:17;;19145:24;;;;:15;:24;;;;;:44;;;19200:24;;;;;;;;;;;;19068:164;18473:40;18434:187;;;18543:2;-1:-1:-1;;;;;18535:10:0;:4;-1:-1:-1;;;;;18535:10:0;;18531:90;;18562:47;18595:4;18601:7;18562:32;:47::i;:::-;-1:-1:-1;;;;;18635:16:0;;18631:183;;18668:45;18705:7;18668:36;:45::i;18631:183::-;18741:4;-1:-1:-1;;;;;18735:10:0;:2;-1:-1:-1;;;;;18735:10:0;;18731:83;;18762:40;18790:2;18794:7;18762:27;:40::i;14145:321::-;14275:18;14281:2;14285:7;14275:5;:18::i;:::-;14326:54;14357:1;14361:2;14365:7;14374:5;14326:22;:54::i;:::-;14304:154;;;;-1:-1:-1;;;14304:154:0;;;;;;;:::i;15951:799::-;16106:4;-1:-1:-1;;;;;16127:13:0;;4400:20;4448:8;16123:620;;16163:72;;-1:-1:-1;;;16163:72:0;;-1:-1:-1;;;;;16163:36:0;;;;;:72;;8896:10;;16214:4;;16220:7;;16229:5;;16163:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16163:72:0;;;;;;;;-1:-1:-1;;16163:72:0;;;;;;;;;;;;:::i;:::-;;;16159:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16405:13:0;;16401:272;;16448:60;;-1:-1:-1;;;16448:60:0;;;;;;;:::i;16401:272::-;16623:6;16617:13;16608:6;16604:2;16600:15;16593:38;16159:529;-1:-1:-1;;;;;;16286:51:0;-1:-1:-1;;;16286:51:0;;-1:-1:-1;16279:58:0;;16123:620;-1:-1:-1;16727:4:0;15951:799;;;;;;:::o;19245:578::-;19342:22;19392:1;19367:22;19384:4;19367:16;:22::i;:::-;:26;;;;:::i;:::-;19404:18;19425:26;;;:17;:26;;;;;;19342:51;;-1:-1:-1;19476:28:0;;;19472:238;;-1:-1:-1;;;;;19543:18:0;;19521:19;19543:18;;;:12;:18;;;;;;;;:34;;;;;;;;;19594:30;;;;;;:44;;;19654:30;;:17;:30;;;;;:43;;;19472:238;-1:-1:-1;19737:26:0;;;;:17;:26;;;;;;;;19730:33;;;-1:-1:-1;;;;;19781:18:0;;;;;:12;:18;;;;;:34;;;;;;;19774:41;19245:578::o;19835:438::-;19944:10;:17;19919:22;;19944:21;;19964:1;;19944:21;:::i;:::-;19976:18;19997:24;;;:15;:24;;;;;;20063:10;:26;;19919:46;;-1:-1:-1;19997:24:0;;19919:46;;20063:26;;;;;;:::i;:::-;;;;;;;;;20041:48;;20127:11;20102:10;20113;20102:22;;;;;;;;:::i;:::-;;;;;;;;;;;;:36;;;;20150:28;;;:15;:28;;;;;;;:41;;;20214:24;;;;;20207:31;20249:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;19906:367;;;19835:438;:::o;18835:221::-;18920:14;18937:20;18954:2;18937:16;:20::i;:::-;-1:-1:-1;;;;;18968:16:0;;;;;;;:12;:16;;;;;;;;:24;;;;;;;;:34;;;19013:26;;;:17;:26;;;;;;:35;;;;-1:-1:-1;18835:221:0:o;14477:382::-;-1:-1:-1;;;;;14557:16:0;;14549:61;;;;-1:-1:-1;;;14549:61:0;;14563:2:1;14549:61:0;;;14545:21:1;;;14582:18;;;14575:30;14641:34;14621:18;;;14614:62;14693:18;;14549:61:0;14361:356:1;14549:61:0;13588:4;13612:16;;;:7;:16;;;;;;-1:-1:-1;;;;;13612:16:0;:30;14621:58;;;;-1:-1:-1;;;14621:58:0;;10948:2:1;14621:58:0;;;10930:21:1;10987:2;10967:18;;;10960:30;11026;11006:18;;;10999:58;11074:18;;14621:58:0;10746:352:1;14621:58:0;14692:45;14721:1;14725:2;14729:7;14692:20;:45::i;:::-;-1:-1:-1;;;;;14750:13:0;;;;;;:9;:13;;;;;:18;;14767:1;;14750:13;:18;;14767:1;;14750:18;:::i;:::-;;;;-1:-1:-1;;14779:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;14779:21:0;-1:-1:-1;;;;;14779:21:0;;;;;;;;14818:33;;14779:16;;;14818:33;;14779:16;;14818:33;14477:382;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:631:1;78:5;108:18;149:2;141:6;138:14;135:40;;;155:18;;:::i;:::-;230:2;224:9;198:2;284:15;;-1:-1:-1;;280:24:1;;;306:2;276:33;272:42;260:55;;;330:18;;;350:22;;;327:46;324:72;;;376:18;;:::i;:::-;416:10;412:2;405:22;445:6;436:15;;475:6;467;460:22;515:3;506:6;501:3;497:16;494:25;491:45;;;532:1;529;522:12;491:45;582:6;577:3;570:4;562:6;558:17;545:44;637:1;630:4;621:6;613;609:19;605:30;598:41;;;;14:631;;;;;:::o;650:173::-;718:20;;-1:-1:-1;;;;;767:31:1;;757:42;;747:70;;813:1;810;803:12;747:70;650:173;;;:::o;828:160::-;893:20;;949:13;;942:21;932:32;;922:60;;978:1;975;968:12;993:186;1052:6;1105:2;1093:9;1084:7;1080:23;1076:32;1073:52;;;1121:1;1118;1111:12;1073:52;1144:29;1163:9;1144:29;:::i;1184:260::-;1252:6;1260;1313:2;1301:9;1292:7;1288:23;1284:32;1281:52;;;1329:1;1326;1319:12;1281:52;1352:29;1371:9;1352:29;:::i;:::-;1342:39;;1400:38;1434:2;1423:9;1419:18;1400:38;:::i;:::-;1390:48;;1184:260;;;;;:::o;1449:328::-;1526:6;1534;1542;1595:2;1583:9;1574:7;1570:23;1566:32;1563:52;;;1611:1;1608;1601:12;1563:52;1634:29;1653:9;1634:29;:::i;:::-;1624:39;;1682:38;1716:2;1705:9;1701:18;1682:38;:::i;:::-;1672:48;;1767:2;1756:9;1752:18;1739:32;1729:42;;1449:328;;;;;:::o;1782:666::-;1877:6;1885;1893;1901;1954:3;1942:9;1933:7;1929:23;1925:33;1922:53;;;1971:1;1968;1961:12;1922:53;1994:29;2013:9;1994:29;:::i;:::-;1984:39;;2042:38;2076:2;2065:9;2061:18;2042:38;:::i;:::-;2032:48;;2127:2;2116:9;2112:18;2099:32;2089:42;;2182:2;2171:9;2167:18;2154:32;2209:18;2201:6;2198:30;2195:50;;;2241:1;2238;2231:12;2195:50;2264:22;;2317:4;2309:13;;2305:27;-1:-1:-1;2295:55:1;;2346:1;2343;2336:12;2295:55;2369:73;2434:7;2429:2;2416:16;2411:2;2407;2403:11;2369:73;:::i;:::-;2359:83;;;1782:666;;;;;;;:::o;2453:254::-;2518:6;2526;2579:2;2567:9;2558:7;2554:23;2550:32;2547:52;;;2595:1;2592;2585:12;2547:52;2618:29;2637:9;2618:29;:::i;:::-;2608:39;;2666:35;2697:2;2686:9;2682:18;2666:35;:::i;2712:254::-;2780:6;2788;2841:2;2829:9;2820:7;2816:23;2812:32;2809:52;;;2857:1;2854;2847:12;2809:52;2880:29;2899:9;2880:29;:::i;:::-;2870:39;2956:2;2941:18;;;;2928:32;;-1:-1:-1;;;2712:254:1:o;2971:689::-;3066:6;3074;3082;3135:2;3123:9;3114:7;3110:23;3106:32;3103:52;;;3151:1;3148;3141:12;3103:52;3191:9;3178:23;3220:18;3261:2;3253:6;3250:14;3247:34;;;3277:1;3274;3267:12;3247:34;3315:6;3304:9;3300:22;3290:32;;3360:7;3353:4;3349:2;3345:13;3341:27;3331:55;;3382:1;3379;3372:12;3331:55;3422:2;3409:16;3448:2;3440:6;3437:14;3434:34;;;3464:1;3461;3454:12;3434:34;3519:7;3512:4;3502:6;3499:1;3495:14;3491:2;3487:23;3483:34;3480:47;3477:67;;;3540:1;3537;3530:12;3477:67;3571:4;3563:13;;;;3595:6;;-1:-1:-1;3633:20:1;;;;3620:34;;2971:689;-1:-1:-1;;;;2971:689:1:o;3665:180::-;3721:6;3774:2;3762:9;3753:7;3749:23;3745:32;3742:52;;;3790:1;3787;3780:12;3742:52;3813:26;3829:9;3813:26;:::i;3850:245::-;3908:6;3961:2;3949:9;3940:7;3936:23;3932:32;3929:52;;;3977:1;3974;3967:12;3929:52;4016:9;4003:23;4035:30;4059:5;4035:30;:::i;4100:249::-;4169:6;4222:2;4210:9;4201:7;4197:23;4193:32;4190:52;;;4238:1;4235;4228:12;4190:52;4270:9;4264:16;4289:30;4313:5;4289:30;:::i;4354:450::-;4423:6;4476:2;4464:9;4455:7;4451:23;4447:32;4444:52;;;4492:1;4489;4482:12;4444:52;4532:9;4519:23;4565:18;4557:6;4554:30;4551:50;;;4597:1;4594;4587:12;4551:50;4620:22;;4673:4;4665:13;;4661:27;-1:-1:-1;4651:55:1;;4702:1;4699;4692:12;4651:55;4725:73;4790:7;4785:2;4772:16;4767:2;4763;4759:11;4725:73;:::i;4809:180::-;4868:6;4921:2;4909:9;4900:7;4896:23;4892:32;4889:52;;;4937:1;4934;4927:12;4889:52;-1:-1:-1;4960:23:1;;4809:180;-1:-1:-1;4809:180:1:o;4994:257::-;5035:3;5073:5;5067:12;5100:6;5095:3;5088:19;5116:63;5172:6;5165:4;5160:3;5156:14;5149:4;5142:5;5138:16;5116:63;:::i;:::-;5233:2;5212:15;-1:-1:-1;;5208:29:1;5199:39;;;;5240:4;5195:50;;4994:257;-1:-1:-1;;4994:257:1:o;5256:1527::-;5480:3;5518:6;5512:13;5544:4;5557:51;5601:6;5596:3;5591:2;5583:6;5579:15;5557:51;:::i;:::-;5671:13;;5630:16;;;;5693:55;5671:13;5630:16;5715:15;;;5693:55;:::i;:::-;5837:13;;5770:20;;;5810:1;;5897;5919:18;;;;5972;;;;5999:93;;6077:4;6067:8;6063:19;6051:31;;5999:93;6140:2;6130:8;6127:16;6107:18;6104:40;6101:167;;;-1:-1:-1;;;6167:33:1;;6223:4;6220:1;6213:15;6253:4;6174:3;6241:17;6101:167;6284:18;6311:110;;;;6435:1;6430:328;;;;6277:481;;6311:110;-1:-1:-1;;6346:24:1;;6332:39;;6391:20;;;;-1:-1:-1;6311:110:1;;6430:328;18910:1;18903:14;;;18947:4;18934:18;;6525:1;6539:169;6553:8;6550:1;6547:15;6539:169;;;6635:14;;6620:13;;;6613:37;6678:16;;;;6570:10;;6539:169;;;6543:3;;6739:8;6732:5;6728:20;6721:27;;6277:481;-1:-1:-1;6774:3:1;;5256:1527;-1:-1:-1;;;;;;;;;;;5256:1527:1:o;7206:488::-;-1:-1:-1;;;;;7475:15:1;;;7457:34;;7527:15;;7522:2;7507:18;;7500:43;7574:2;7559:18;;7552:34;;;7622:3;7617:2;7602:18;;7595:31;;;7400:4;;7643:45;;7668:19;;7660:6;7643:45;:::i;:::-;7635:53;7206:488;-1:-1:-1;;;;;;7206:488:1:o;7699:632::-;7870:2;7922:21;;;7992:13;;7895:18;;;8014:22;;;7841:4;;7870:2;8093:15;;;;8067:2;8052:18;;;7841:4;8136:169;8150:6;8147:1;8144:13;8136:169;;;8211:13;;8199:26;;8280:15;;;;8245:12;;;;8172:1;8165:9;8136:169;;;-1:-1:-1;8322:3:1;;7699:632;-1:-1:-1;;;;;;7699:632:1:o;8528:219::-;8677:2;8666:9;8659:21;8640:4;8697:44;8737:2;8726:9;8722:18;8714:6;8697:44;:::i;9920:414::-;10122:2;10104:21;;;10161:2;10141:18;;;10134:30;10200:34;10195:2;10180:18;;10173:62;-1:-1:-1;;;10266:2:1;10251:18;;10244:48;10324:3;10309:19;;9920:414::o;15135:356::-;15337:2;15319:21;;;15356:18;;;15349:30;15415:34;15410:2;15395:18;;15388:62;15482:2;15467:18;;15135:356::o;17477:413::-;17679:2;17661:21;;;17718:2;17698:18;;;17691:30;17757:34;17752:2;17737:18;;17730:62;-1:-1:-1;;;17823:2:1;17808:18;;17801:47;17880:3;17865:19;;17477:413::o;18963:128::-;19003:3;19034:1;19030:6;19027:1;19024:13;19021:39;;;19040:18;;:::i;:::-;-1:-1:-1;19076:9:1;;18963:128::o;19096:120::-;19136:1;19162;19152:35;;19167:18;;:::i;:::-;-1:-1:-1;19201:9:1;;19096:120::o;19221:168::-;19261:7;19327:1;19323;19319:6;19315:14;19312:1;19309:21;19304:1;19297:9;19290:17;19286:45;19283:71;;;19334:18;;:::i;:::-;-1:-1:-1;19374:9:1;;19221:168::o;19394:125::-;19434:4;19462:1;19459;19456:8;19453:34;;;19467:18;;:::i;:::-;-1:-1:-1;19504:9:1;;19394:125::o;19524:258::-;19596:1;19606:113;19620:6;19617:1;19614:13;19606:113;;;19696:11;;;19690:18;19677:11;;;19670:39;19642:2;19635:10;19606:113;;;19737:6;19734:1;19731:13;19728:48;;;-1:-1:-1;;19772:1:1;19754:16;;19747:27;19524:258::o;19787:380::-;19866:1;19862:12;;;;19909;;;19930:61;;19984:4;19976:6;19972:17;19962:27;;19930:61;20037:2;20029:6;20026:14;20006:18;20003:38;20000:161;;;20083:10;20078:3;20074:20;20071:1;20064:31;20118:4;20115:1;20108:15;20146:4;20143:1;20136:15;20000:161;;19787:380;;;:::o;20172:135::-;20211:3;-1:-1:-1;;20232:17:1;;20229:43;;;20252:18;;:::i;:::-;-1:-1:-1;20299:1:1;20288:13;;20172:135::o;20312:112::-;20344:1;20370;20360:35;;20375:18;;:::i;:::-;-1:-1:-1;20409:9:1;;20312:112::o;20429:127::-;20490:10;20485:3;20481:20;20478:1;20471:31;20521:4;20518:1;20511:15;20545:4;20542:1;20535:15;20561:127;20622:10;20617:3;20613:20;20610:1;20603:31;20653:4;20650:1;20643:15;20677:4;20674:1;20667:15;20693:127;20754:10;20749:3;20745:20;20742:1;20735:31;20785:4;20782:1;20775:15;20809:4;20806:1;20799:15;20825:127;20886:10;20881:3;20877:20;20874:1;20867:31;20917:4;20914:1;20907:15;20941:4;20938:1;20931:15;20957:127;21018:10;21013:3;21009:20;21006:1;20999:31;21049:4;21046:1;21039:15;21073:4;21070:1;21063:15;21089:131;-1:-1:-1;;;;;;21163:32:1;;21153:43;;21143:71;;21210:1;21207;21200:12

Swarm Source

ipfs://62d80cb202b4b592988c379b3e538c8a586edd02e272225af2f46a665b286413
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.