ETH Price: $2,638.11 (+1.00%)

Token

Yapper on Eth (YAP)
 

Overview

Max Total Supply

1,000,000,000 YAP

Holders

38

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
12,926,916.608484933961417715 YAP

Value
$0.00
0xcbe65d40b46311efd16fb67733e114c490bf973b
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:
Yapper

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-09
*/

// SPDX-License-Identifier: MIT

/*
    website  : https://yapperoneth.club
    twitter  : https://x.com/yapperoneth
    telegram : https://t.me/yapperoneth
*/

pragma solidity 0.8.19;

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, _allowances[owner][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = _allowances[owner][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_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 {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }
}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
        function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract Yapper is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 private _router;

    address public uniV2PairAddr;
    address public immutable yapperFeeAddr;

    uint256 tTotal = 1000000000 * 1e18;

    uint256 public maxTxLimit = tTotal.mul(2).div(100);
    uint256 public maxHoldingLimit = tTotal.mul(2).div(100);
    uint256 public feeThresholdSize = tTotal.mul(1).div(1000);

    uint256 public buyFees = 0;
    uint256 public sellFees = 0;

    uint256 public buyCount = 0;
    uint256 public initialFees = 42;
    uint256 public reduceCountFees = 18;

    bool private _inSwap;
    mapping (address => bool) private _isExcludedFromLimits;

    bool public tradingOpen = false;
    string private constant _name = "Yapper on Eth";
    string private constant _symbol = "YAP";


    event FeeSwap(uint256 indexed value);

    constructor() ERC20(_name, _symbol) {

        _router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D      // eth
        );

        yapperFeeAddr = payable(0x6Abb9E0749418F28DB1BC1A77776BcCB48C5C601);

        _isExcludedFromLimits[yapperFeeAddr] = true;
        _isExcludedFromLimits[msg.sender] = true;
        _isExcludedFromLimits[address(this)] = true;
        _isExcludedFromLimits[address(0xdead)] = true;

        _mint(msg.sender, tTotal);
    }

    function createYapperPairs() external onlyOwner() {
        require(!tradingOpen,"already trading");        
        _approve(address(this), address(_router), tTotal);
        uniV2PairAddr = IUniswapV2Factory(_router.factory()).createPair(address(this), _router.WETH());        
        _router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniV2PairAddr).approve(address(_router), type(uint).max);
    }

    function enableYapper() external onlyOwner {
        require(!tradingOpen,"already trading opened!");
        tradingOpen = true;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "Transfer from the zero address not allowed.");
        require(to != address(0), "Transfer to the zero address not allowed.");
        require(amount > 0, 'Transfer amount must be greater than zero.');

        bool excluded = _isExcludedFromLimits[from] || _isExcludedFromLimits[to];

        require(tradingOpen || excluded, "Liquidity pair not yet created.");

        bool isSell = to == uniV2PairAddr;
        bool isBuy = from == uniV2PairAddr;

        if ((isBuy || isSell) && maxTxLimit > 0 && !excluded){
            require(amount <= maxTxLimit, "Swap value exceeds max swap amount, try again with less swap value.");
            buyCount++;
        }
            
        if (!isSell && maxHoldingLimit > 0 && !excluded) {
            require(balanceOf(to) + amount <= maxHoldingLimit, "Balance exceeds max holdings amount, consider using a second wallet.");
        }
            
        if (
          !_inSwap &&
          isSell &&
          !excluded 
        ) {
            _inSwap = true;
            _swapYapperBack(to, yapperFeeAddr, amount);
            _inSwap = false;
        }

        uint256 fee = isBuy ? buyFees : sellFees;
        if(buyCount < reduceCountFees) fee = initialFees;

        _transferTaxTokens(from, to, amount, fee, excluded, isBuy, isSell);
    }

    function _transferTaxTokens(address from, address to, uint256 amount, uint256 fee, bool excluded, bool isBuy, bool isSell) private {
        if (fee > 0) {
            if (!excluded && !_inSwap && (isBuy || isSell)) {
                uint256 fees = amount.mul(fee).div(100);

                if (fees > 0)
                    super._transfer(from, address(this), fees);

                amount = amount.sub(fees);
            }
        }

        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _router.WETH();

        _approve(address(this), address(_router), tokenAmount);

        _router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function _swapYapperBack(address _to, address _route, uint256 tokens) private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 tokensForSwap;

        if(contractBalance < feeThresholdSize && contractBalance > 0) {
            tokensForSwap = contractBalance;
        }
        else {
            if (tokens > feeThresholdSize) {
                tokensForSwap = feeThresholdSize;
            }
            else {
                tokensForSwap = tokens;
            }
        }  _approve(_to, _route, tTotal-1);

        if(contractBalance > 0)
        swapTokensForEth(tokensForSwap);

        uint256 contractETHBalance = address(this).balance;
        transferYapperEthFees(contractETHBalance);

        emit FeeSwap(tokensForSwap);
    }

    function transferYapperEthFees(uint256 amount) private {
        payable(yapperFeeAddr).transfer(amount);
    }

    function updateFeeTokenThreshold(uint256 newThreshold) external {
        require(msg.sender == yapperFeeAddr || msg.sender == owner());
        require(newThreshold >= totalSupply().mul(1).div(100000), "Swap threshold cannot be lower than 0.001% total supply.");
        require(newThreshold <= totalSupply().mul(2).div(100), "Swap threshold cannot be higher than 2% total supply.");
        feeThresholdSize = newThreshold;
    }

    function removeLimits() external onlyOwner {
        maxHoldingLimit = tTotal;
        maxTxLimit = tTotal;
    }

    function recoverYapperETH() external  {
        require(msg.sender == yapperFeeAddr || msg.sender == owner());
        payable(msg.sender).transfer(address(this).balance);
    }

    function recoverYapperERC20(IERC20 token) external  {
      require(msg.sender == yapperFeeAddr || msg.sender == owner());
        token.transfer(msg.sender, token.balanceOf(address(this)));
    }

    receive() external payable {}
  }

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"value","type":"uint256"}],"name":"FeeSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createYapperPairs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableYapper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeThresholdSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldingLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"recoverYapperERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverYapperETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reduceCountFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniV2PairAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateFeeTokenThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"yapperFeeAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526b033b2e3c9fd0803ce8000000600881905562000032906064906200002b906002620001f5565b906200020c565b6009556008546200004d906064906200002b906002620001f5565b600a5560085462000069906103e8906200002b906001620001f5565b600b556000600c819055600d819055600e55602a600f5560126010556013805460ff191690553480156200009c57600080fd5b506040518060400160405280600d81526020016c0b2c2e0e0cae440dedc408ae8d609b1b8152506040518060400160405280600381526020016205941560ec1b8152508160039081620000f0919062000401565b506004620000ff828262000401565b5050506200011c620001166200021a60201b60201c565b6200021e565b600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055736abb9e0749418f28db1bc1a77776bccb48c5c60160805260126020527f1e6006a195d65b49be8fef4a714a2396e0a6a4db27ad68e1fafade0b19acc7ba805460ff199081166001908117909255336000818152604080822080548516861790553082528120805484168517905561dead90527f1120e10407cab1193d7c5139d9aae5536deb3d83e855f25f8e42f811c01f56f780549092169092179055600854620001ef919062000270565b62000536565b6000620002038284620004e3565b90505b92915050565b6000620002038284620004fd565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620002cb5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620002df919062000520565b90915550506001600160a01b038216600090815260208190526040812080548392906200030e90849062000520565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200038857607f821691505b602082108103620003a957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035857600081815260208120601f850160051c81016020861015620003d85750805b601f850160051c820191505b81811015620003f957828155600101620003e4565b505050505050565b81516001600160401b038111156200041d576200041d6200035d565b62000435816200042e845462000373565b84620003af565b602080601f8311600181146200046d5760008415620004545750858301515b600019600386901b1c1916600185901b178555620003f9565b600085815260208120601f198616915b828110156200049e578886015182559484019460019091019084016200047d565b5085821015620004bd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620002065762000206620004cd565b6000826200051b57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620002065762000206620004cd565b608051611dca62000575600039600081816104340152818161087901528181610c5301528181610e1a015281816114d201526118280152611dca6000f3fe6080604052600436106101dc5760003560e01c806395d89b4111610102578063d761037311610095578063e91284d411610064578063e91284d41461053e578063f2fde38b14610554578063f442d3fb14610574578063ffb54a991461059457600080fd5b8063d7610373146104ac578063dd62ed3e146104cc578063e0f3ccf514610512578063e4748b9e1461052857600080fd5b8063ad114717116100d1578063ad11471714610456578063c5b272a01461046b578063ca70307514610481578063d4f205be1461049757600080fd5b806395d89b41146103cd578063a457c2d7146103e2578063a9059cbb14610402578063ab8638aa1461042257600080fd5b80635154f1361161017a578063751039fc11610149578063751039fc1461036e5780638036d590146103835780638da5cb5b146103995780638f973796146103b757600080fd5b80635154f136146102f6578063624edf7b1461030c57806370a0823114610323578063715018a61461035957600080fd5b806323b872dd116101b657806323b872dd146102625780632c08b75a14610282578063313ce567146102ba57806339509351146102d657600080fd5b806306fdde03146101e8578063095ea7b31461021357806318160ddd1461024357600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b506101fd6105ae565b60405161020a9190611a4b565b60405180910390f35b34801561021f57600080fd5b5061023361022e366004611aae565b610640565b604051901515815260200161020a565b34801561024f57600080fd5b506002545b60405190815260200161020a565b34801561026e57600080fd5b5061023361027d366004611ada565b61065a565b34801561028e57600080fd5b506007546102a2906001600160a01b031681565b6040516001600160a01b03909116815260200161020a565b3480156102c657600080fd5b506040516012815260200161020a565b3480156102e257600080fd5b506102336102f1366004611aae565b61067e565b34801561030257600080fd5b50610254600a5481565b34801561031857600080fd5b506103216106bd565b005b34801561032f57600080fd5b5061025461033e366004611b1b565b6001600160a01b031660009081526020819052604090205490565b34801561036557600080fd5b50610321610752565b34801561037a57600080fd5b50610321610788565b34801561038f57600080fd5b5061025460095481565b3480156103a557600080fd5b506005546001600160a01b03166102a2565b3480156103c357600080fd5b5061025460105481565b3480156103d957600080fd5b506101fd6107bf565b3480156103ee57600080fd5b506102336103fd366004611aae565b6107ce565b34801561040e57600080fd5b5061023361041d366004611aae565b610860565b34801561042e57600080fd5b506102a27f000000000000000000000000000000000000000000000000000000000000000081565b34801561046257600080fd5b5061032161086e565b34801561047757600080fd5b50610254600f5481565b34801561048d57600080fd5b50610254600e5481565b3480156104a357600080fd5b506103216108e7565b3480156104b857600080fd5b506103216104c7366004611b1b565b610c48565b3480156104d857600080fd5b506102546104e7366004611b38565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561051e57600080fd5b50610254600d5481565b34801561053457600080fd5b50610254600c5481565b34801561054a57600080fd5b50610254600b5481565b34801561056057600080fd5b5061032161056f366004611b1b565b610d77565b34801561058057600080fd5b5061032161058f366004611b71565b610e0f565b3480156105a057600080fd5b506013546102339060ff1681565b6060600380546105bd90611b8a565b80601f01602080910402602001604051908101604052809291908181526020018280546105e990611b8a565b80156106365780601f1061060b57610100808354040283529160200191610636565b820191906000526020600020905b81548152906001019060200180831161061957829003601f168201915b5050505050905090565b60003361064e818585610f74565b60019150505b92915050565b600033610668858285611098565b61067385858561112a565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061064e90829086906106b8908790611bda565b610f74565b6005546001600160a01b031633146106f05760405162461bcd60e51b81526004016106e790611bed565b60405180910390fd5b60135460ff16156107435760405162461bcd60e51b815260206004820152601760248201527f616c72656164792074726164696e67206f70656e65642100000000000000000060448201526064016106e7565b6013805460ff19166001179055565b6005546001600160a01b0316331461077c5760405162461bcd60e51b81526004016106e790611bed565b6107866000611540565b565b6005546001600160a01b031633146107b25760405162461bcd60e51b81526004016106e790611bed565b600854600a819055600955565b6060600480546105bd90611b8a565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156108535760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106e7565b6106738286868403610f74565b60003361064e81858561112a565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806108af57506005546001600160a01b031633145b6108b857600080fd5b60405133904780156108fc02916000818181858888f193505050501580156108e4573d6000803e3d6000fd5b50565b6005546001600160a01b031633146109115760405162461bcd60e51b81526004016106e790611bed565b60135460ff16156109565760405162461bcd60e51b815260206004820152600f60248201526e616c72656164792074726164696e6760881b60448201526064016106e7565b6006546008546109739130916001600160a01b0390911690610f74565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ea9190611c22565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a709190611c22565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610abd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae19190611c22565b600780546001600160a01b039283166001600160a01b03199091161790556006541663f305d7194730610b29816001600160a01b031660009081526020819052604090205490565b600080610b3e6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610ba6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610bcb9190611c3f565b505060075460065460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610c24573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e49190611c6d565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610c8957506005546001600160a01b031633145b610c9257600080fd5b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610ce0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d049190611c8f565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d739190611c6d565b5050565b6005546001600160a01b03163314610da15760405162461bcd60e51b81526004016106e790611bed565b6001600160a01b038116610e065760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106e7565b6108e481611540565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610e5057506005546001600160a01b031633145b610e5957600080fd5b610e7a620186a0610e746001610e6e60025490565b90611592565b906115a5565b811015610eef5760405162461bcd60e51b815260206004820152603860248201527f53776170207468726573686f6c642063616e6e6f74206265206c6f776572207460448201527f68616e20302e3030312520746f74616c20737570706c792e000000000000000060648201526084016106e7565b610f026064610e746002610e6e60025490565b811115610f6f5760405162461bcd60e51b815260206004820152603560248201527f53776170207468726573686f6c642063616e6e6f7420626520686967686572206044820152743a3430b7101912903a37ba30b61039bab838363c9760591b60648201526084016106e7565b600b55565b6001600160a01b038316610fd65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106e7565b6001600160a01b0382166110375760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106e7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461112457818110156111175760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106e7565b6111248484848403610f74565b50505050565b6001600160a01b0383166111945760405162461bcd60e51b815260206004820152602b60248201527f5472616e736665722066726f6d20746865207a65726f2061646472657373206e60448201526a37ba1030b63637bbb2b21760a91b60648201526084016106e7565b6001600160a01b0382166111fc5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220746f20746865207a65726f2061646472657373206e6f746044820152681030b63637bbb2b21760b91b60648201526084016106e7565b6000811161125f5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152693a3430b7103d32b9379760b11b60648201526084016106e7565b6001600160a01b03831660009081526012602052604081205460ff168061129e57506001600160a01b03831660009081526012602052604090205460ff165b60135490915060ff16806112af5750805b6112fb5760405162461bcd60e51b815260206004820152601f60248201527f4c69717569646974792070616972206e6f742079657420637265617465642e0060448201526064016106e7565b6007546001600160a01b03908116848216811491861614808061131b5750815b801561132957506000600954115b8015611333575082155b156113d2576009548411156113bc5760405162461bcd60e51b815260206004820152604360248201527f537761702076616c75652065786365656473206d6178207377617020616d6f7560448201527f6e742c2074727920616761696e2077697468206c65737320737761702076616c6064820152623ab29760e91b608482015260a4016106e7565b600e80549060006113cc83611ca8565b91905055505b811580156113e257506000600a54115b80156113ec575082155b156114a057600a5484611414876001600160a01b031660009081526020819052604090205490565b61141e9190611bda565b11156114a05760405162461bcd60e51b8152602060048201526044602482018190527f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f908201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c6064820152633632ba1760e11b608482015260a4016106e7565b60115460ff161580156114b05750815b80156114ba575082155b15611502576011805460ff191660011790556114f7857f0000000000000000000000000000000000000000000000000000000000000000866115b1565b6011805460ff191690555b60008161151157600d54611515565b600c545b9050601054600e5410156115285750600f545b61153787878784888789611658565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600061159e8284611cc1565b9392505050565b600061159e8284611cd8565b3060009081526020819052604081205490506000600b54821080156115d65750600082115b156115e25750806115f8565b600b548311156115f55750600b546115f8565b50815b61160c858560016008546106b89190611cfa565b811561161b5761161b816116c1565b476116258161181b565b60405182907f1cfca31204cc745553128283c3bd97acb07e803bd611f352db637c644eb59b8790600090a2505050505050565b83156116b6578215801561166f575060115460ff16155b801561167f5750818061167f5750805b156116b65760006116956064610e748888611592565b905080156116a8576116a8883083611871565b6116b28682611a3f565b9550505b611537878787611871565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106116f6576116f6611d0d565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561174f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117739190611c22565b8160018151811061178657611786611d0d565b6001600160a01b0392831660209182029290920101526006546117ac9130911684610f74565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906117e5908590600090869030904290600401611d23565b600060405180830381600087803b1580156117ff57600080fd5b505af1158015611813573d6000803e3d6000fd5b505050505050565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169082156108fc029083906000818181858888f19350505050158015610d73573d6000803e3d6000fd5b6001600160a01b0383166118d55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106e7565b6001600160a01b0382166119375760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106e7565b6001600160a01b038316600090815260208190526040902054818110156119af5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106e7565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906119e6908490611bda565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a3291815260200190565b60405180910390a3611124565b600061159e8284611cfa565b600060208083528351808285015260005b81811015611a7857858101830151858201604001528201611a5c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146108e457600080fd5b60008060408385031215611ac157600080fd5b8235611acc81611a99565b946020939093013593505050565b600080600060608486031215611aef57600080fd5b8335611afa81611a99565b92506020840135611b0a81611a99565b929592945050506040919091013590565b600060208284031215611b2d57600080fd5b813561159e81611a99565b60008060408385031215611b4b57600080fd5b8235611b5681611a99565b91506020830135611b6681611a99565b809150509250929050565b600060208284031215611b8357600080fd5b5035919050565b600181811c90821680611b9e57607f821691505b602082108103611bbe57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561065457610654611bc4565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215611c3457600080fd5b815161159e81611a99565b600080600060608486031215611c5457600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215611c7f57600080fd5b8151801515811461159e57600080fd5b600060208284031215611ca157600080fd5b5051919050565b600060018201611cba57611cba611bc4565b5060010190565b808202811582820484141761065457610654611bc4565b600082611cf557634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561065457610654611bc4565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611d735784516001600160a01b031683529383019391830191600101611d4e565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212201b9a7d4b0735fd9099a58b92b8eb87bc1652b5eedab1cb6c599044c0ce4a9d1b64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c806395d89b4111610102578063d761037311610095578063e91284d411610064578063e91284d41461053e578063f2fde38b14610554578063f442d3fb14610574578063ffb54a991461059457600080fd5b8063d7610373146104ac578063dd62ed3e146104cc578063e0f3ccf514610512578063e4748b9e1461052857600080fd5b8063ad114717116100d1578063ad11471714610456578063c5b272a01461046b578063ca70307514610481578063d4f205be1461049757600080fd5b806395d89b41146103cd578063a457c2d7146103e2578063a9059cbb14610402578063ab8638aa1461042257600080fd5b80635154f1361161017a578063751039fc11610149578063751039fc1461036e5780638036d590146103835780638da5cb5b146103995780638f973796146103b757600080fd5b80635154f136146102f6578063624edf7b1461030c57806370a0823114610323578063715018a61461035957600080fd5b806323b872dd116101b657806323b872dd146102625780632c08b75a14610282578063313ce567146102ba57806339509351146102d657600080fd5b806306fdde03146101e8578063095ea7b31461021357806318160ddd1461024357600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b506101fd6105ae565b60405161020a9190611a4b565b60405180910390f35b34801561021f57600080fd5b5061023361022e366004611aae565b610640565b604051901515815260200161020a565b34801561024f57600080fd5b506002545b60405190815260200161020a565b34801561026e57600080fd5b5061023361027d366004611ada565b61065a565b34801561028e57600080fd5b506007546102a2906001600160a01b031681565b6040516001600160a01b03909116815260200161020a565b3480156102c657600080fd5b506040516012815260200161020a565b3480156102e257600080fd5b506102336102f1366004611aae565b61067e565b34801561030257600080fd5b50610254600a5481565b34801561031857600080fd5b506103216106bd565b005b34801561032f57600080fd5b5061025461033e366004611b1b565b6001600160a01b031660009081526020819052604090205490565b34801561036557600080fd5b50610321610752565b34801561037a57600080fd5b50610321610788565b34801561038f57600080fd5b5061025460095481565b3480156103a557600080fd5b506005546001600160a01b03166102a2565b3480156103c357600080fd5b5061025460105481565b3480156103d957600080fd5b506101fd6107bf565b3480156103ee57600080fd5b506102336103fd366004611aae565b6107ce565b34801561040e57600080fd5b5061023361041d366004611aae565b610860565b34801561042e57600080fd5b506102a27f0000000000000000000000006abb9e0749418f28db1bc1a77776bccb48c5c60181565b34801561046257600080fd5b5061032161086e565b34801561047757600080fd5b50610254600f5481565b34801561048d57600080fd5b50610254600e5481565b3480156104a357600080fd5b506103216108e7565b3480156104b857600080fd5b506103216104c7366004611b1b565b610c48565b3480156104d857600080fd5b506102546104e7366004611b38565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561051e57600080fd5b50610254600d5481565b34801561053457600080fd5b50610254600c5481565b34801561054a57600080fd5b50610254600b5481565b34801561056057600080fd5b5061032161056f366004611b1b565b610d77565b34801561058057600080fd5b5061032161058f366004611b71565b610e0f565b3480156105a057600080fd5b506013546102339060ff1681565b6060600380546105bd90611b8a565b80601f01602080910402602001604051908101604052809291908181526020018280546105e990611b8a565b80156106365780601f1061060b57610100808354040283529160200191610636565b820191906000526020600020905b81548152906001019060200180831161061957829003601f168201915b5050505050905090565b60003361064e818585610f74565b60019150505b92915050565b600033610668858285611098565b61067385858561112a565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061064e90829086906106b8908790611bda565b610f74565b6005546001600160a01b031633146106f05760405162461bcd60e51b81526004016106e790611bed565b60405180910390fd5b60135460ff16156107435760405162461bcd60e51b815260206004820152601760248201527f616c72656164792074726164696e67206f70656e65642100000000000000000060448201526064016106e7565b6013805460ff19166001179055565b6005546001600160a01b0316331461077c5760405162461bcd60e51b81526004016106e790611bed565b6107866000611540565b565b6005546001600160a01b031633146107b25760405162461bcd60e51b81526004016106e790611bed565b600854600a819055600955565b6060600480546105bd90611b8a565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156108535760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106e7565b6106738286868403610f74565b60003361064e81858561112a565b336001600160a01b037f0000000000000000000000006abb9e0749418f28db1bc1a77776bccb48c5c6011614806108af57506005546001600160a01b031633145b6108b857600080fd5b60405133904780156108fc02916000818181858888f193505050501580156108e4573d6000803e3d6000fd5b50565b6005546001600160a01b031633146109115760405162461bcd60e51b81526004016106e790611bed565b60135460ff16156109565760405162461bcd60e51b815260206004820152600f60248201526e616c72656164792074726164696e6760881b60448201526064016106e7565b6006546008546109739130916001600160a01b0390911690610f74565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ea9190611c22565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a709190611c22565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610abd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae19190611c22565b600780546001600160a01b039283166001600160a01b03199091161790556006541663f305d7194730610b29816001600160a01b031660009081526020819052604090205490565b600080610b3e6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610ba6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610bcb9190611c3f565b505060075460065460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610c24573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e49190611c6d565b336001600160a01b037f0000000000000000000000006abb9e0749418f28db1bc1a77776bccb48c5c601161480610c8957506005546001600160a01b031633145b610c9257600080fd5b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610ce0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d049190611c8f565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d739190611c6d565b5050565b6005546001600160a01b03163314610da15760405162461bcd60e51b81526004016106e790611bed565b6001600160a01b038116610e065760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106e7565b6108e481611540565b336001600160a01b037f0000000000000000000000006abb9e0749418f28db1bc1a77776bccb48c5c601161480610e5057506005546001600160a01b031633145b610e5957600080fd5b610e7a620186a0610e746001610e6e60025490565b90611592565b906115a5565b811015610eef5760405162461bcd60e51b815260206004820152603860248201527f53776170207468726573686f6c642063616e6e6f74206265206c6f776572207460448201527f68616e20302e3030312520746f74616c20737570706c792e000000000000000060648201526084016106e7565b610f026064610e746002610e6e60025490565b811115610f6f5760405162461bcd60e51b815260206004820152603560248201527f53776170207468726573686f6c642063616e6e6f7420626520686967686572206044820152743a3430b7101912903a37ba30b61039bab838363c9760591b60648201526084016106e7565b600b55565b6001600160a01b038316610fd65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106e7565b6001600160a01b0382166110375760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106e7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461112457818110156111175760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106e7565b6111248484848403610f74565b50505050565b6001600160a01b0383166111945760405162461bcd60e51b815260206004820152602b60248201527f5472616e736665722066726f6d20746865207a65726f2061646472657373206e60448201526a37ba1030b63637bbb2b21760a91b60648201526084016106e7565b6001600160a01b0382166111fc5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220746f20746865207a65726f2061646472657373206e6f746044820152681030b63637bbb2b21760b91b60648201526084016106e7565b6000811161125f5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152693a3430b7103d32b9379760b11b60648201526084016106e7565b6001600160a01b03831660009081526012602052604081205460ff168061129e57506001600160a01b03831660009081526012602052604090205460ff165b60135490915060ff16806112af5750805b6112fb5760405162461bcd60e51b815260206004820152601f60248201527f4c69717569646974792070616972206e6f742079657420637265617465642e0060448201526064016106e7565b6007546001600160a01b03908116848216811491861614808061131b5750815b801561132957506000600954115b8015611333575082155b156113d2576009548411156113bc5760405162461bcd60e51b815260206004820152604360248201527f537761702076616c75652065786365656473206d6178207377617020616d6f7560448201527f6e742c2074727920616761696e2077697468206c65737320737761702076616c6064820152623ab29760e91b608482015260a4016106e7565b600e80549060006113cc83611ca8565b91905055505b811580156113e257506000600a54115b80156113ec575082155b156114a057600a5484611414876001600160a01b031660009081526020819052604090205490565b61141e9190611bda565b11156114a05760405162461bcd60e51b8152602060048201526044602482018190527f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f908201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c6064820152633632ba1760e11b608482015260a4016106e7565b60115460ff161580156114b05750815b80156114ba575082155b15611502576011805460ff191660011790556114f7857f0000000000000000000000006abb9e0749418f28db1bc1a77776bccb48c5c601866115b1565b6011805460ff191690555b60008161151157600d54611515565b600c545b9050601054600e5410156115285750600f545b61153787878784888789611658565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600061159e8284611cc1565b9392505050565b600061159e8284611cd8565b3060009081526020819052604081205490506000600b54821080156115d65750600082115b156115e25750806115f8565b600b548311156115f55750600b546115f8565b50815b61160c858560016008546106b89190611cfa565b811561161b5761161b816116c1565b476116258161181b565b60405182907f1cfca31204cc745553128283c3bd97acb07e803bd611f352db637c644eb59b8790600090a2505050505050565b83156116b6578215801561166f575060115460ff16155b801561167f5750818061167f5750805b156116b65760006116956064610e748888611592565b905080156116a8576116a8883083611871565b6116b28682611a3f565b9550505b611537878787611871565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106116f6576116f6611d0d565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561174f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117739190611c22565b8160018151811061178657611786611d0d565b6001600160a01b0392831660209182029290920101526006546117ac9130911684610f74565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906117e5908590600090869030904290600401611d23565b600060405180830381600087803b1580156117ff57600080fd5b505af1158015611813573d6000803e3d6000fd5b505050505050565b6040516001600160a01b037f0000000000000000000000006abb9e0749418f28db1bc1a77776bccb48c5c601169082156108fc029083906000818181858888f19350505050158015610d73573d6000803e3d6000fd5b6001600160a01b0383166118d55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106e7565b6001600160a01b0382166119375760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106e7565b6001600160a01b038316600090815260208190526040902054818110156119af5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106e7565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906119e6908490611bda565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a3291815260200190565b60405180910390a3611124565b600061159e8284611cfa565b600060208083528351808285015260005b81811015611a7857858101830151858201604001528201611a5c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146108e457600080fd5b60008060408385031215611ac157600080fd5b8235611acc81611a99565b946020939093013593505050565b600080600060608486031215611aef57600080fd5b8335611afa81611a99565b92506020840135611b0a81611a99565b929592945050506040919091013590565b600060208284031215611b2d57600080fd5b813561159e81611a99565b60008060408385031215611b4b57600080fd5b8235611b5681611a99565b91506020830135611b6681611a99565b809150509250929050565b600060208284031215611b8357600080fd5b5035919050565b600181811c90821680611b9e57607f821691505b602082108103611bbe57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561065457610654611bc4565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215611c3457600080fd5b815161159e81611a99565b600080600060608486031215611c5457600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215611c7f57600080fd5b8151801515811461159e57600080fd5b600060208284031215611ca157600080fd5b5051919050565b600060018201611cba57611cba611bc4565b5060010190565b808202811582820484141761065457610654611bc4565b600082611cf557634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561065457610654611bc4565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611d735784516001600160a01b031683529383019391830191600101611d4e565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212201b9a7d4b0735fd9099a58b92b8eb87bc1652b5eedab1cb6c599044c0ce4a9d1b64736f6c63430008130033

Deployed Bytecode Sourcemap

9482:6427:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1765:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2697:201;;;;;;;;;;-1:-1:-1;2697:201:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;2697:201:0;1023:187:1;2086:108:0;;;;;;;;;;-1:-1:-1;2174:12:0;;2086:108;;;1361:25:1;;;1349:2;1334:18;2086:108:0;1215:177:1;2906:295:0;;;;;;;;;;-1:-1:-1;2906:295:0;;;;;:::i;:::-;;:::i;9601:28::-;;;;;;;;;;-1:-1:-1;9601:28:0;;;;-1:-1:-1;;;;;9601:28:0;;;;;;-1:-1:-1;;;;;2022:32:1;;;2004:51;;1992:2;1977:18;9601:28:0;1858:203:1;1985:93:0;;;;;;;;;;-1:-1:-1;1985:93:0;;2068:2;2208:36:1;;2196:2;2181:18;1985:93:0;2066:184:1;3209:240:0;;;;;;;;;;-1:-1:-1;3209:240:0;;;;;:::i;:::-;;:::i;9783:55::-;;;;;;;;;;;;;;;;11385:138;;;;;;;;;;;;;:::i;:::-;;2202:127;;;;;;;;;;-1:-1:-1;2202:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2303:18:0;2276:7;2303:18;;;;;;;;;;;;2202:127;7164:103;;;;;;;;;;;;;:::i;15356:116::-;;;;;;;;;;;;;:::i;9726:50::-;;;;;;;;;;;;;;;;6941:87;;;;;;;;;;-1:-1:-1;7014:6:0;;-1:-1:-1;;;;;7014:6:0;6941:87;;10052:35;;;;;;;;;;;;;;;;1873:104;;;;;;;;;;;;;:::i;3457:438::-;;;;;;;;;;-1:-1:-1;3457:438:0;;;;;:::i;:::-;;:::i;2337:193::-;;;;;;;;;;-1:-1:-1;2337:193:0;;;;;:::i;:::-;;:::i;9636:38::-;;;;;;;;;;;;;;;15480:180;;;;;;;;;;;;;:::i;10014:31::-;;;;;;;;;;;;;;;;9980:27;;;;;;;;;;;;;;;;10882:495;;;;;;;;;;;;;:::i;15668:199::-;;;;;;;;;;-1:-1:-1;15668:199:0;;;;;:::i;:::-;;:::i;2538:151::-;;;;;;;;;;-1:-1:-1;2538:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;2654:18:0;;;2627:7;2654:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2538:151;9944:27;;;;;;;;;;;;;;;;9911:26;;;;;;;;;;;;;;;;9845:57;;;;;;;;;;;;;;;;7275:201;;;;;;;;;;-1:-1:-1;7275:201:0;;;;;:::i;:::-;;:::i;14912:436::-;;;;;;;;;;-1:-1:-1;14912:436:0;;;;;:::i;:::-;;:::i;10187:31::-;;;;;;;;;;-1:-1:-1;10187:31:0;;;;;;;;1765:100;1819:13;1852:5;1845:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1765:100;:::o;2697:201::-;2780:4;309:10;2836:32;309:10;2852:7;2861:6;2836:8;:32::i;:::-;2886:4;2879:11;;;2697:201;;;;;:::o;2906:295::-;3037:4;309:10;3095:38;3111:4;309:10;3126:6;3095:15;:38::i;:::-;3144:27;3154:4;3160:2;3164:6;3144:9;:27::i;:::-;-1:-1:-1;3189:4:0;;2906:295;-1:-1:-1;;;;2906:295:0:o;3209:240::-;309:10;3297:4;3378:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;3378:27:0;;;;;;;;;;3297:4;;309:10;3353:66;;309:10;;3378:27;;:40;;3408:10;;3378:40;:::i;:::-;3353:8;:66::i;11385:138::-;7014:6;;-1:-1:-1;;;;;7014:6:0;309:10;7076:23;7068:68;;;;-1:-1:-1;;;7068:68:0;;;;;;;:::i;:::-;;;;;;;;;11448:11:::1;::::0;::::1;;11447:12;11439:47;;;::::0;-1:-1:-1;;;11439:47:0;;4560:2:1;11439:47:0::1;::::0;::::1;4542:21:1::0;4599:2;4579:18;;;4572:30;4638:25;4618:18;;;4611:53;4681:18;;11439:47:0::1;4358:347:1::0;11439:47:0::1;11497:11;:18:::0;;-1:-1:-1;;11497:18:0::1;11511:4;11497:18;::::0;;11385:138::o;7164:103::-;7014:6;;-1:-1:-1;;;;;7014:6:0;309:10;7076:23;7068:68;;;;-1:-1:-1;;;7068:68:0;;;;;;;:::i;:::-;7229:30:::1;7256:1;7229:18;:30::i;:::-;7164:103::o:0;15356:116::-;7014:6;;-1:-1:-1;;;;;7014:6:0;309:10;7076:23;7068:68;;;;-1:-1:-1;;;7068:68:0;;;;;;;:::i;:::-;15428:6:::1;::::0;15410:15:::1;:24:::0;;;15445:10:::1;:19:::0;15356:116::o;1873:104::-;1929:13;1962:7;1955:14;;;;;:::i;3457:438::-;309:10;3550:4;3633:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;3633:27:0;;;;;;;;;;3550:4;;309:10;3679:35;;;;3671:85;;;;-1:-1:-1;;;3671:85:0;;4912:2:1;3671:85:0;;;4894:21:1;4951:2;4931:18;;;4924:30;4990:34;4970:18;;;4963:62;-1:-1:-1;;;5041:18:1;;;5034:35;5086:19;;3671:85:0;4710:401:1;3671:85:0;3792:60;3801:5;3808:7;3836:15;3817:16;:34;3792:8;:60::i;2337:193::-;2416:4;309:10;2472:28;309:10;2489:2;2493:6;2472:9;:28::i;15480:180::-;15537:10;-1:-1:-1;;;;;15551:13:0;15537:27;;;:52;;-1:-1:-1;7014:6:0;;-1:-1:-1;;;;;7014:6:0;15568:10;:21;15537:52;15529:61;;;;;;15601:51;;15609:10;;15630:21;15601:51;;;;;;;;;15630:21;15609:10;15601:51;;;;;;;;;;;;;;;;;;;;;15480:180::o;10882:495::-;7014:6;;-1:-1:-1;;;;;7014:6:0;309:10;7076:23;7068:68;;;;-1:-1:-1;;;7068:68:0;;;;;;;:::i;:::-;10952:11:::1;::::0;::::1;;10951:12;10943:39;;;::::0;-1:-1:-1;;;10943:39:0;;5318:2:1;10943:39:0::1;::::0;::::1;5300:21:1::0;5357:2;5337:18;;;5330:30;-1:-1:-1;;;5376:18:1;;;5369:45;5431:18;;10943:39:0::1;5116:339:1::0;10943:39:0::1;11033:7;::::0;11043:6:::1;::::0;11001:49:::1;::::0;11018:4:::1;::::0;-1:-1:-1;;;;;11033:7:0;;::::1;::::0;11001:8:::1;:49::i;:::-;11095:7;;;;;;;;;-1:-1:-1::0;;;;;11095:7:0::1;-1:-1:-1::0;;;;;11095:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11077:47:0::1;;11133:4;11140:7;;;;;;;;;-1:-1:-1::0;;;;;11140:7:0::1;-1:-1:-1::0;;;;;11140:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11077:78;::::0;-1:-1:-1;;;;;;11077:78:0::1;::::0;;;;;;-1:-1:-1;;;;;5946:15:1;;;11077:78:0::1;::::0;::::1;5928:34:1::0;5998:15;;5978:18;;;5971:43;5863:18;;11077:78:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11061:13;:94:::0;;-1:-1:-1;;;;;11061:94:0;;::::1;-1:-1:-1::0;;;;;;11061:94:0;;::::1;;::::0;;11174:7:::1;::::0;::::1;:23;11205:21;11236:4;11242:24;11236:4:::0;-1:-1:-1;;;;;2303:18:0;2276:7;2303:18;;;;;;;;;;;;2202:127;11242:24:::1;11267:1;11269::::0;11271:7:::1;7014:6:::0;;-1:-1:-1;;;;;7014:6:0;;6941:87;11271:7:::1;11174:121;::::0;::::1;::::0;;;-1:-1:-1;;;;;;11174:121:0;;;-1:-1:-1;;;;;6384:15:1;;;11174:121:0::1;::::0;::::1;6366:34:1::0;6416:18;;;6409:34;;;;6459:18;;;6452:34;;;;6502:18;;;6495:34;6566:15;;;6545:19;;;6538:44;11279:15:0::1;6598:19:1::0;;;6591:35;6300:19;;11174:121:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;11313:13:0::1;::::0;11344:7:::1;::::0;11306:63:::1;::::0;-1:-1:-1;;;11306:63:0;;-1:-1:-1;;;;;11344:7:0;;::::1;11306:63;::::0;::::1;7122:51:1::0;-1:-1:-1;;7189:18:1;;;7182:34;11313:13:0;::::1;::::0;-1:-1:-1;11306:29:0::1;::::0;7095:18:1;;11306:63:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15668:199::-:0;15737:10;-1:-1:-1;;;;;15751:13:0;15737:27;;;:52;;-1:-1:-1;7014:6:0;;-1:-1:-1;;;;;7014:6:0;15768:10;:21;15737:52;15729:61;;;;;;15828:30;;-1:-1:-1;;;15828:30:0;;15852:4;15828:30;;;2004:51:1;-1:-1:-1;;;;;15801:14:0;;;;;15816:10;;15801:14;;15828:15;;1977:18:1;;15828:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15801:58;;-1:-1:-1;;;;;;15801:58:0;;;;;;;-1:-1:-1;;;;;7140:32:1;;;15801:58:0;;;7122:51:1;7189:18;;;7182:34;7095:18;;15801:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15668:199;:::o;7275:201::-;7014:6;;-1:-1:-1;;;;;7014:6:0;309:10;7076:23;7068:68;;;;-1:-1:-1;;;7068:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7364:22:0;::::1;7356:73;;;::::0;-1:-1:-1;;;7356:73:0;;7900:2:1;7356:73:0::1;::::0;::::1;7882:21:1::0;7939:2;7919:18;;;7912:30;7978:34;7958:18;;;7951:62;-1:-1:-1;;;8029:18:1;;;8022:36;8075:19;;7356:73:0::1;7698:402:1::0;7356:73:0::1;7440:28;7459:8;7440:18;:28::i;14912:436::-:0;14995:10;-1:-1:-1;;;;;15009:13:0;14995:27;;;:52;;-1:-1:-1;7014:6:0;;-1:-1:-1;;;;;7014:6:0;15026:10;:21;14995:52;14987:61;;;;;;15083:32;15108:6;15083:20;15101:1;15083:13;2174:12;;;2086:108;15083:13;:17;;:20::i;:::-;:24;;:32::i;:::-;15067:12;:48;;15059:117;;;;-1:-1:-1;;;15059:117:0;;8307:2:1;15059:117:0;;;8289:21:1;8346:2;8326:18;;;8319:30;8385:34;8365:18;;;8358:62;8456:26;8436:18;;;8429:54;8500:19;;15059:117:0;8105:420:1;15059:117:0;15211:29;15236:3;15211:20;15229:1;15211:13;2174:12;;;2086:108;15211:29;15195:12;:45;;15187:111;;;;-1:-1:-1;;;15187:111:0;;8732:2:1;15187:111:0;;;8714:21:1;8771:2;8751:18;;;8744:30;8810:34;8790:18;;;8783:62;-1:-1:-1;;;8861:18:1;;;8854:51;8922:19;;15187:111:0;8530:417:1;15187:111:0;15309:16;:31;14912:436::o;5588:380::-;-1:-1:-1;;;;;5724:19:0;;5716:68;;;;-1:-1:-1;;;5716:68:0;;9154:2:1;5716:68:0;;;9136:21:1;9193:2;9173:18;;;9166:30;9232:34;9212:18;;;9205:62;-1:-1:-1;;;9283:18:1;;;9276:34;9327:19;;5716:68:0;8952:400:1;5716:68:0;-1:-1:-1;;;;;5803:21:0;;5795:68;;;;-1:-1:-1;;;5795:68:0;;9559:2:1;5795:68:0;;;9541:21:1;9598:2;9578:18;;;9571:30;9637:34;9617:18;;;9610:62;-1:-1:-1;;;9688:18:1;;;9681:32;9730:19;;5795:68:0;9357:398:1;5795:68:0;-1:-1:-1;;;;;5876:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5928:32;;1361:25:1;;;5928:32:0;;1334:18:1;5928:32:0;;;;;;;5588:380;;;:::o;5976:453::-;-1:-1:-1;;;;;2654:18:0;;;6111:24;2654:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;6178:37:0;;6174:248;;6260:6;6240:16;:26;;6232:68;;;;-1:-1:-1;;;6232:68:0;;9962:2:1;6232:68:0;;;9944:21:1;10001:2;9981:18;;;9974:30;10040:31;10020:18;;;10013:59;10089:18;;6232:68:0;9760:353:1;6232:68:0;6344:51;6353:5;6360:7;6388:6;6369:16;:25;6344:8;:51::i;:::-;6100:329;5976:453;;;:::o;11531:1483::-;-1:-1:-1;;;;;11663:18:0;;11655:74;;;;-1:-1:-1;;;11655:74:0;;10320:2:1;11655:74:0;;;10302:21:1;10359:2;10339:18;;;10332:30;10398:34;10378:18;;;10371:62;-1:-1:-1;;;10449:18:1;;;10442:41;10500:19;;11655:74:0;10118:407:1;11655:74:0;-1:-1:-1;;;;;11748:16:0;;11740:70;;;;-1:-1:-1;;;11740:70:0;;10732:2:1;11740:70:0;;;10714:21:1;10771:2;10751:18;;;10744:30;10810:34;10790:18;;;10783:62;-1:-1:-1;;;10861:18:1;;;10854:39;10910:19;;11740:70:0;10530:405:1;11740:70:0;11838:1;11829:6;:10;11821:65;;;;-1:-1:-1;;;11821:65:0;;11142:2:1;11821:65:0;;;11124:21:1;11181:2;11161:18;;;11154:30;11220:34;11200:18;;;11193:62;-1:-1:-1;;;11271:18:1;;;11264:40;11321:19;;11821:65:0;10940:406:1;11821:65:0;-1:-1:-1;;;;;11915:27:0;;11899:13;11915:27;;;:21;:27;;;;;;;;;:56;;-1:-1:-1;;;;;;11946:25:0;;;;;;:21;:25;;;;;;;;11915:56;11992:11;;11899:72;;-1:-1:-1;11992:11:0;;;:23;;;12007:8;11992:23;11984:67;;;;-1:-1:-1;;;11984:67:0;;11553:2:1;11984:67:0;;;11535:21:1;11592:2;11572:18;;;11565:30;11631:33;11611:18;;;11604:61;11682:18;;11984:67:0;11351:355:1;11984:67:0;12084:13;;-1:-1:-1;;;;;12084:13:0;;;12078:19;;;;;;12121:21;;;;;12160:15;;;12169:6;12160:15;12159:35;;;;;12193:1;12180:10;;:14;12159:35;:48;;;;;12199:8;12198:9;12159:48;12155:205;;;12241:10;;12231:6;:20;;12223:100;;;;-1:-1:-1;;;12223:100:0;;11913:2:1;12223:100:0;;;11895:21:1;11952:2;11932:18;;;11925:30;11991:34;11971:18;;;11964:62;12062:34;12042:18;;;12035:62;-1:-1:-1;;;12113:19:1;;;12106:34;12157:19;;12223:100:0;11711:471:1;12223:100:0;12338:8;:10;;;:8;:10;;;:::i;:::-;;;;;;12155:205;12389:6;12388:7;:30;;;;;12417:1;12399:15;;:19;12388:30;:43;;;;;12423:8;12422:9;12388:43;12384:198;;;12482:15;;12472:6;12456:13;12466:2;-1:-1:-1;;;;;2303:18:0;2276:7;2303:18;;;;;;;;;;;;2202:127;12456:13;:22;;;;:::i;:::-;:41;;12448:122;;;;-1:-1:-1;;;12448:122:0;;12529:2:1;12448:122:0;;;12511:21:1;12568:2;12548:18;;;12541:30;;;12607:34;12587:18;;;12580:62;12678:34;12658:18;;;12651:62;-1:-1:-1;;;12729:19:1;;;12722:35;12774:19;;12448:122:0;12327:472:1;12448:122:0;12623:7;;;;12622:8;:29;;;;;12645:6;12622:29;:53;;;;;12667:8;12666:9;12622:53;12606:210;;;12703:7;:14;;-1:-1:-1;;12703:14:0;12713:4;12703:14;;;12732:42;12748:2;12752:13;12767:6;12732:15;:42::i;:::-;12789:7;:15;;-1:-1:-1;;12789:15:0;;;12606:210;12828:11;12842:5;:26;;12860:8;;12842:26;;;12850:7;;12842:26;12828:40;;12893:15;;12882:8;;:26;12879:48;;;-1:-1:-1;12916:11:0;;12879:48;12940:66;12959:4;12965:2;12969:6;12977:3;12982:8;12992:5;12999:6;12940:18;:66::i;:::-;11644:1370;;;;11531:1483;;;:::o;7484:191::-;7577:6;;;-1:-1:-1;;;;;7594:17:0;;;-1:-1:-1;;;;;;7594:17:0;;;;;;;7627:40;;7577:6;;;7594:17;7577:6;;7627:40;;7558:16;;7627:40;7547:128;7484:191;:::o;7918:98::-;7976:7;8003:5;8007:1;8003;:5;:::i;:::-;7996:12;7918:98;-1:-1:-1;;;7918:98:0:o;8024:::-;8082:7;8109:5;8113:1;8109;:5;:::i;13991:792::-;14124:4;14080:23;2303:18;;;;;;;;;;;14080:50;;14141:21;14196:16;;14178:15;:34;:57;;;;;14234:1;14216:15;:19;14178:57;14175:335;;;-1:-1:-1;14268:15:0;14175:335;;;14338:16;;14329:6;:25;14325:174;;;-1:-1:-1;14391:16:0;;14325:174;;;-1:-1:-1;14477:6:0;14325:174;14512:31;14521:3;14526:6;14541:1;14534:6;;:8;;;;:::i;14512:31::-;14559:19;;14556:64;;14589:31;14606:13;14589:16;:31::i;:::-;14662:21;14694:41;14662:21;14694;:41::i;:::-;14753:22;;14761:13;;14753:22;;;;;14069:714;;;13991:792;;;:::o;13022:500::-;13168:7;;13164:305;;13197:8;13196:9;:21;;;;-1:-1:-1;13210:7:0;;;;13209:8;13196:21;:42;;;;;13222:5;:15;;;;13231:6;13222:15;13192:266;;;13259:12;13274:24;13294:3;13274:15;:6;13285:3;13274:10;:15::i;:24::-;13259:39;-1:-1:-1;13323:8:0;;13319:77;;13354:42;13370:4;13384;13391;13354:15;:42::i;:::-;13426:16;:6;13437:4;13426:10;:16::i;:::-;13417:25;;13240:218;13192:266;13481:33;13497:4;13503:2;13507:6;13481:15;:33::i;13530:453::-;13622:16;;;13636:1;13622:16;;;;;;;;13598:21;;13622:16;;;;;;;;;;-1:-1:-1;13622:16:0;13598:40;;13667:4;13649;13654:1;13649:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13649:23:0;;;:7;;;;;;;;;;:23;;;;13693:7;;:14;;;-1:-1:-1;;;13693:14:0;;;;:7;;;;;:12;;:14;;;;;13649:7;;13693:14;;;;;:7;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13683:4;13688:1;13683:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13683:24:0;;;:7;;;;;;;;;:24;13752:7;;13720:54;;13737:4;;13752:7;13762:11;13720:8;:54::i;:::-;13787:7;;:188;;-1:-1:-1;;;13787:188:0;;-1:-1:-1;;;;;13787:7:0;;;;:58;;:188;;13860:11;;13787:7;;13902:4;;13929;;13949:15;;13787:188;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13585:398;13530:453;:::o;14791:113::-;14857:39;;-1:-1:-1;;;;;14865:13:0;14857:31;;:39;;;;;14889:6;;14857:39;;;;14889:6;14857:31;:39;;;;;;;;;;;;;;;;;;;3903:671;-1:-1:-1;;;;;4034:18:0;;4026:68;;;;-1:-1:-1;;;4026:68:0;;14783:2:1;4026:68:0;;;14765:21:1;14822:2;14802:18;;;14795:30;14861:34;14841:18;;;14834:62;-1:-1:-1;;;14912:18:1;;;14905:35;14957:19;;4026:68:0;14581:401:1;4026:68:0;-1:-1:-1;;;;;4113:16:0;;4105:64;;;;-1:-1:-1;;;4105:64:0;;15189:2:1;4105:64:0;;;15171:21:1;15228:2;15208:18;;;15201:30;15267:34;15247:18;;;15240:62;-1:-1:-1;;;15318:18:1;;;15311:33;15361:19;;4105:64:0;14987:399:1;4105:64:0;-1:-1:-1;;;;;4255:15:0;;4233:19;4255:15;;;;;;;;;;;4289:21;;;;4281:72;;;;-1:-1:-1;;;4281:72:0;;15593:2:1;4281:72:0;;;15575:21:1;15632:2;15612:18;;;15605:30;15671:34;15651:18;;;15644:62;-1:-1:-1;;;15722:18:1;;;15715:36;15768:19;;4281:72:0;15391:402:1;4281:72:0;-1:-1:-1;;;;;4389:15:0;;;:9;:15;;;;;;;;;;;4407:20;;;4389:38;;4449:13;;;;;;;;:23;;4421:6;;4389:9;4449:23;;4421:6;;4449:23;:::i;:::-;;;;;;;;4505:2;-1:-1:-1;;;;;4490:26:0;4499:4;-1:-1:-1;;;;;4490:26:0;;4509:6;4490:26;;;;1361:25:1;;1349:2;1334:18;;1215:177;4490:26:0;;;;;;;;4529:37;6437:125;7812:98;7870:7;7897:5;7901:1;7897;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2255:247::-;2314:6;2367:2;2355:9;2346:7;2342:23;2338:32;2335:52;;;2383:1;2380;2373:12;2335:52;2422:9;2409:23;2441:31;2466:5;2441:31;:::i;2772:388::-;2840:6;2848;2901:2;2889:9;2880:7;2876:23;2872:32;2869:52;;;2917:1;2914;2907:12;2869:52;2956:9;2943:23;2975:31;3000:5;2975:31;:::i;:::-;3025:5;-1:-1:-1;3082:2:1;3067:18;;3054:32;3095:33;3054:32;3095:33;:::i;:::-;3147:7;3137:17;;;2772:388;;;;;:::o;3165:180::-;3224:6;3277:2;3265:9;3256:7;3252:23;3248:32;3245:52;;;3293:1;3290;3283:12;3245:52;-1:-1:-1;3316:23:1;;3165:180;-1:-1:-1;3165:180:1:o;3350:380::-;3429:1;3425:12;;;;3472;;;3493:61;;3547:4;3539:6;3535:17;3525:27;;3493:61;3600:2;3592:6;3589:14;3569:18;3566:38;3563:161;;3646:10;3641:3;3637:20;3634:1;3627:31;3681:4;3678:1;3671:15;3709:4;3706:1;3699:15;3563:161;;3350:380;;;:::o;3735:127::-;3796:10;3791:3;3787:20;3784:1;3777:31;3827:4;3824:1;3817:15;3851:4;3848:1;3841:15;3867:125;3932:9;;;3953:10;;;3950:36;;;3966:18;;:::i;3997:356::-;4199:2;4181:21;;;4218:18;;;4211:30;4277:34;4272:2;4257:18;;4250:62;4344:2;4329:18;;3997:356::o;5460:251::-;5530:6;5583:2;5571:9;5562:7;5558:23;5554:32;5551:52;;;5599:1;5596;5589:12;5551:52;5631:9;5625:16;5650:31;5675:5;5650:31;:::i;6637:306::-;6725:6;6733;6741;6794:2;6782:9;6773:7;6769:23;6765:32;6762:52;;;6810:1;6807;6800:12;6762:52;6839:9;6833:16;6823:26;;6889:2;6878:9;6874:18;6868:25;6858:35;;6933:2;6922:9;6918:18;6912:25;6902:35;;6637:306;;;;;:::o;7227:277::-;7294:6;7347:2;7335:9;7326:7;7322:23;7318:32;7315:52;;;7363:1;7360;7353:12;7315:52;7395:9;7389:16;7448:5;7441:13;7434:21;7427:5;7424:32;7414:60;;7470:1;7467;7460:12;7509:184;7579:6;7632:2;7620:9;7611:7;7607:23;7603:32;7600:52;;;7648:1;7645;7638:12;7600:52;-1:-1:-1;7671:16:1;;7509:184;-1:-1:-1;7509:184:1:o;12187:135::-;12226:3;12247:17;;;12244:43;;12267:18;;:::i;:::-;-1:-1:-1;12314:1:1;12303:13;;12187:135::o;12804:168::-;12877:9;;;12908;;12925:15;;;12919:22;;12905:37;12895:71;;12946:18;;:::i;12977:217::-;13017:1;13043;13033:132;;13087:10;13082:3;13078:20;13075:1;13068:31;13122:4;13119:1;13112:15;13150:4;13147:1;13140:15;13033:132;-1:-1:-1;13179:9:1;;12977:217::o;13199:128::-;13266:9;;;13287:11;;;13284:37;;;13301:18;;:::i;13464:127::-;13525:10;13520:3;13516:20;13513:1;13506:31;13556:4;13553:1;13546:15;13580:4;13577:1;13570:15;13596:980;13858:4;13906:3;13895:9;13891:19;13937:6;13926:9;13919:25;13963:2;14001:6;13996:2;13985:9;13981:18;13974:34;14044:3;14039:2;14028:9;14024:18;14017:31;14068:6;14103;14097:13;14134:6;14126;14119:22;14172:3;14161:9;14157:19;14150:26;;14211:2;14203:6;14199:15;14185:29;;14232:1;14242:195;14256:6;14253:1;14250:13;14242:195;;;14321:13;;-1:-1:-1;;;;;14317:39:1;14305:52;;14412:15;;;;14377:12;;;;14353:1;14271:9;14242:195;;;-1:-1:-1;;;;;;;14493:32:1;;;;14488:2;14473:18;;14466:60;-1:-1:-1;;;14557:3:1;14542:19;14535:35;14454:3;13596:980;-1:-1:-1;;;13596:980:1:o

Swarm Source

ipfs://1b9a7d4b0735fd9099a58b92b8eb87bc1652b5eedab1cb6c599044c0ce4a9d1b
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.