CRO Price: $0.08 (+1.33%)

Token

JoeyToken (JOEY)

Overview

Max Total Supply

1,000,000,000 JOEY

Holders

207

Market

Price

$0.00 @ 0.000000 CRO

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
800,000 JOEY

Value
$0.00
0x18f3bd138b6a272180a5c173ffe25288de9fc366
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
JoeyToken

Compiler Version
v0.8.5+commit.a4f2e591

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2023-02-20
*/

/**
 *Submitted for verification at Etherscan.io on 2023-2-19
 */

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.5;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

/**
 * BEP20 standard interface.
 */
interface IBEP20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, 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 sender, address recipient, 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);
}


/**
 * Allows for contract ownership along with multi-address authorization
 */
abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    /**
     * Function modifier to require caller to be contract owner
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    /**
     * Function modifier to require caller to be authorized
     */
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    /**
     * Authorize address. Owner only
     */
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    /**
     * Remove address' authorization. Owner only
     */
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    /**
     * Return address' authorization status
     */
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    /**
     * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract JoeyToken is IBEP20, Auth {
    using SafeMath for uint256;

    address WCRO = 0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "JoeyToken";
    string constant _symbol = "JOEY";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1000000000 * (10 ** _decimals);
    uint256 public _maxTxAmount = (_totalSupply * 1) / 100;  //1% max tx
    uint256 public _maxWalletSize = (_totalSupply * 1) / 100;  //1% max wallet

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;

    uint256 liquidityFee = 3;
    uint256 teamFee =0;
    uint256 marketingFee = 4;
    uint256 totalFee = 7;
    uint256 feeDenominator = 100;
    
    address private marketingFeeReceiver = 0xE62FdEb344DDed8bb5501D5c464A0D401e14f960;
    address private teamFeeReceiver = 0x3f25443B12e5254b6e6E04F81661243D56eda094;

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 1000 * 3; // 0.3%
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0xC6f863bCbecFD76cf17449573096F7aFb2d8bd07);
        pair = IDEXFactory(router.factory()).createPair(WCRO, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        address _owner = owner;
        isFeeExempt[_owner] = true;
        isTxLimitExempt[_owner] = true;

        _balances[_owner] = _totalSupply;
        emit Transfer(address(0), _owner, _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }
        
        checkTxLimit(sender, amount);
        
        if (recipient != pair && recipient != DEAD) {
            require(isTxLimitExempt[recipient] || _balances[recipient] + amount <= _maxWalletSize, "Transfer amount exceeds the bag size.");
        }
        
        if(shouldSwapBack()){ swapBack(); }

        if(!launched() && recipient == pair){ require(_balances[sender] > 0); launch(); }

        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }
    
    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function getTotalFee(bool selling) public view returns (uint256) {
        if(launchedAt + 1 >= block.number){ return feeDenominator.sub(1); }
        if(selling) { return totalFee.add(1); }
        return totalFee;
    }

    function takeFee(address sender, address receiver, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(getTotalFee(receiver == pair)).div(feeDenominator);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function swapBack() internal swapping {
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 amountToLiquify = contractTokenBalance.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WCRO;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 amountBNB = address(this).balance.sub(balanceBefore);
        uint256 totalBNBFee = totalFee.sub(liquidityFee.div(2));
        uint256 amountBNBLiquidity = amountBNB.mul(liquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBdevelopment = amountBNB.mul(teamFee).div(totalBNBFee);
        uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee);


        (bool MarketingSuccess, /* bytes memory data */) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");
        require(MarketingSuccess, "receiver rejected ETH transfer");
        (bool developmentSuccess, /* bytes memory data */) = payable(teamFeeReceiver).call{value: amountBNBdevelopment, gas: 30000}("");
        require(developmentSuccess, "receiver rejected ETH transfer");

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                marketingFeeReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountBNBLiquidity, amountToLiquify);
        }
    }

    function buyTokens(uint256 amount, address to) internal swapping {
        address[] memory path = new address[](2);
        path[0] = WCRO;
        path[1] = address(this);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0,
            path,
            to,
            block.timestamp
        );
    }

    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
    }

    function setTxLimit(uint256 amount) external authorized {
        require(amount >= _totalSupply / 1000);
        _maxTxAmount = amount;
    }

   function setMaxWallet(uint256 amount) external onlyOwner() {
        require(amount >= _totalSupply / 1000 );
        _maxWalletSize = amount;
    }    

    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external authorized {
        isTxLimitExempt[holder] = exempt;
    }

    function setFees(uint256 _liquidityFee, uint256 _teamFee, uint256 _marketingFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        teamFee = _teamFee;
        marketingFee = _marketingFee;
        totalFee = _liquidityFee.add(_teamFee).add(_marketingFee);
        feeDenominator = _feeDenominator;
    }

    function setFeeReceiver(address _marketingFeeReceiver, address _teamFeeReceiver) external authorized {
        marketingFeeReceiver = _marketingFeeReceiver;
        teamFeeReceiver = _teamFeeReceiver;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function manualSend() external authorized {
        uint256 contractETHBalance = address(this).balance;
        payable(marketingFeeReceiver).transfer(contractETHBalance);
    }

    function transferForeignToken(address _token) public authorized {
        require(_token != address(this), "Can't let you take all native token");
        uint256 _contractBalance = IBEP20(_token).balanceOf(address(this));
        payable(marketingFeeReceiver).transfer(_contractBalance);
    }
        
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }
    
    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);
}

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":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","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":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_teamFeeReceiver","type":"address"}],"name":"setFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"transferForeignToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b0319908116735c7f8a570d578ed84e63fdfa7b1ee72deae1ae231790915560038054821661dead179055600480549091169055620000506009600a620003de565b6200006090633b9aca006200049f565b600555606460055460016200007691906200049f565b62000082919062000372565b600655606460055460016200009891906200049f565b620000a4919062000372565b60079081556003600c556000600d556004600e55600f556064601055601180546001600160a01b031990811673e62fdeb344dded8bb5501d5c464a0d401e14f9601790915560128054909116733f25443b12e5254b6e6e04f81661243d56eda0941790556016805460ff1916600117905560055462000127906103e89062000372565b620001349060036200049f565b6017553480156200014457600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff19169092179091556013805473c6f863bcbecfd76cf17449573096f7afb2d8bd07931683179055825163c45a015560e01b81529251919263c45a01559260048083019392829003018186803b158015620001c657600080fd5b505afa158015620001db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000201919062000340565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c6539690604401602060405180830381600087803b1580156200024e57600080fd5b505af115801562000263573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000289919062000340565b601480546001600160a01b0319166001600160a01b0392831617905530600090815260096020908152604080832060135485168452825280832060001990558254909316808352600a8252838320805460ff199081166001908117909255600b845285852080549091169091179055600554600883528484208190559351938452928392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620004d7565b6000602082840312156200035357600080fd5b81516001600160a01b03811681146200036b57600080fd5b9392505050565b6000826200039057634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620003d6578160001904821115620003ba57620003ba620004c1565b80851615620003c857918102915b93841c93908002906200039a565b509250929050565b60006200036b60ff841683600082620003fa5750600162000499565b81620004095750600062000499565b81600181146200042257600281146200042d576200044d565b600191505062000499565b60ff841115620004415762000441620004c1565b50506001821b62000499565b5060208310610133831016604e8410600b841016171562000472575081810a62000499565b6200047e838362000395565b8060001904821115620004955762000495620004c1565b0290505b92915050565b6000816000190483118215151615620004bc57620004bc620004c1565b500290565b634e487b7160e01b600052601160045260246000fd5b611ce880620004e76000396000f3fe6080604052600436106102135760003560e01c80638f9a55c011610118578063df20fd49116100a0578063f2fde38b1161006f578063f2fde38b14610661578063f429389014610681578063f84ba65d14610696578063f887ea40146106b6578063fe9fbb80146106d657600080fd5b8063df20fd49146105e1578063e66db25e14610601578063f0b37c0414610621578063f1f3bca31461064157600080fd5b8063b6a5d7de116100e7578063b6a5d7de14610525578063bf56b37114610545578063d51ed1c81461055b578063dc93cf701461057b578063dd62ed3e1461059b57600080fd5b80638f9a55c0146104a257806395d89b41146104b8578063a8aa1b31146104e5578063a9059cbb1461050557600080fd5b8063571ac8b01161019b5780636ddd17131161016a5780636ddd1713146103ea5780636fcba3771461040457806370a08231146104245780637d1db4a51461045a578063893d20e81461047057600080fd5b8063571ac8b0146103685780635c85974f146103885780635d0044ca146103aa578063658d4b7f146103ca57600080fd5b806318160ddd116101e257806318160ddd146102d357806323b872dd146102e85780632b112e49146103085780632f54bf6e1461031d578063313ce5671461034c57600080fd5b80630445b6671461021f57806306fdde0314610248578063095ea7b3146102835780631161ae39146102b357600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b5061023560175481565b6040519081526020015b60405180910390f35b34801561025457600080fd5b506040805180820190915260098152682537b2bcaa37b5b2b760b91b60208201525b60405161023f9190611af3565b34801561028f57600080fd5b506102a361029e3660046119dc565b6106f6565b604051901515815260200161023f565b3480156102bf57600080fd5b506102a36102ce366004611a71565b610763565b3480156102df57600080fd5b50600554610235565b3480156102f457600080fd5b506102a3610303366004611966565b610777565b34801561031457600080fd5b50610235610839565b34801561032957600080fd5b506102a3610338366004611910565b6000546001600160a01b0391821691161490565b34801561035857600080fd5b506040516009815260200161023f565b34801561037457600080fd5b506102a3610383366004611910565b61088b565b34801561039457600080fd5b506103a86103a3366004611a3f565b610899565b005b3480156103b657600080fd5b506103a86103c5366004611a3f565b6108e8565b3480156103d657600080fd5b506103a86103e53660046119a7565b610933565b3480156103f657600080fd5b506016546102a39060ff1681565b34801561041057600080fd5b506103a861041f366004611ac1565b610983565b34801561043057600080fd5b5061023561043f366004611910565b6001600160a01b031660009081526008602052604090205490565b34801561046657600080fd5b5061023560065481565b34801561047c57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161023f565b3480156104ae57600080fd5b5061023560075481565b3480156104c457600080fd5b506040805180820190915260048152634a4f455960e01b6020820152610276565b3480156104f157600080fd5b5060145461048a906001600160a01b031681565b34801561051157600080fd5b506102a36105203660046119dc565b6109d6565b34801561053157600080fd5b506103a8610540366004611910565b6109e3565b34801561055157600080fd5b5061023560155481565b34801561056757600080fd5b50610235610576366004611a3f565b610a34565b34801561058757600080fd5b506103a8610596366004611910565b610a78565b3480156105a757600080fd5b506102356105b636600461192d565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156105ed57600080fd5b506103a86105fc366004611a23565b610bbc565b34801561060d57600080fd5b506103a861061c36600461192d565b610bf8565b34801561062d57600080fd5b506103a861063c366004611910565b610c4b565b34801561064d57600080fd5b5061023561065c366004611a08565b610c96565b34801561066d57600080fd5b506103a861067c366004611910565b610cd7565b34801561068d57600080fd5b506103a8610d6d565b3480156106a257600080fd5b506103a86106b13660046119a7565b610dd0565b3480156106c257600080fd5b5060135461048a906001600160a01b031681565b3480156106e257600080fd5b506102a36106f1366004611910565b610e20565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107519086815260200190565b60405180910390a35060015b92915050565b60008261076f83610a34565b119392505050565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610824576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526009825283812033825290915291909120546107ff918490610e3e565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b61082f848484610e78565b90505b9392505050565b6004546001600160a01b0316600090815260086020526040812054610886906003546001600160a01b031660009081526008602052604090205461088090600554906110fa565b906110fa565b905090565b600061075d826000196106f6565b6108a233610e20565b6108c75760405162461bcd60e51b81526004016108be90611b68565b60405180910390fd5b6103e86005546108d79190611c16565b8110156108e357600080fd5b600655565b6000546001600160a01b031633146109125760405162461bcd60e51b81526004016108be90611b48565b6103e86005546109229190611c16565b81101561092e57600080fd5b600755565b61093c33610e20565b6109585760405162461bcd60e51b81526004016108be90611b68565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b61098c33610e20565b6109a85760405162461bcd60e51b81526004016108be90611b68565b600c849055600d839055600e8290556109cb826109c5868661113c565b9061113c565b600f55601055505050565b6000610832338484610e78565b6000546001600160a01b03163314610a0d5760405162461bcd60e51b81526004016108be90611b48565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b600061075d610a41610839565b6014546001600160a01b0316600090815260086020526040902054610a7290610a6b90600261119b565b859061119b565b9061121a565b610a8133610e20565b610a9d5760405162461bcd60e51b81526004016108be90611b68565b6001600160a01b038116301415610b025760405162461bcd60e51b815260206004820152602360248201527f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60448201526235b2b760e91b60648201526084016108be565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b158015610b4457600080fd5b505afa158015610b58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7c9190611a58565b6011546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015610bb7573d6000803e3d6000fd5b505050565b610bc533610e20565b610be15760405162461bcd60e51b81526004016108be90611b68565b6016805460ff191692151592909217909155601755565b610c0133610e20565b610c1d5760405162461bcd60e51b81526004016108be90611b68565b601180546001600160a01b039384166001600160a01b03199182161790915560128054929093169116179055565b6000546001600160a01b03163314610c755760405162461bcd60e51b81526004016108be90611b48565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000436015546001610ca89190611bfe565b10610cbb5760105461075d9060016110fa565b8115610ccf57600f5461075d90600161113c565b5050600f5490565b6000546001600160a01b03163314610d015760405162461bcd60e51b81526004016108be90611b48565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b610d7633610e20565b610d925760405162461bcd60e51b81526004016108be90611b68565b60115460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610dcc573d6000803e3d6000fd5b5050565b610dd933610e20565b610df55760405162461bcd60e51b81526004016108be90611b68565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b60008184841115610e625760405162461bcd60e51b81526004016108be9190611af3565b506000610e6f8486611c57565b95945050505050565b60185460009060ff1615610e9857610e9184848461125c565b9050610832565b610ea28483611342565b6014546001600160a01b03848116911614801590610ece57506003546001600160a01b03848116911614155b15610f79576001600160a01b0383166000908152600b602052604090205460ff1680610f1f57506007546001600160a01b038416600090815260086020526040902054610f1c908490611bfe565b11155b610f795760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b60648201526084016108be565b610f816113ab565b15610f8e57610f8e6113fa565b601554158015610fab57506014546001600160a01b038481169116145b15610fdb576001600160a01b038416600090815260086020526040902054610fd257600080fd5b610fdb43601555565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526008909152919091205461102d918490610e3e565b6001600160a01b038516600090815260086020908152604080832093909355600a90529081205460ff1615611062578261106d565b61106d85858561181b565b6001600160a01b038516600090815260086020526040902054909150611093908261113c565b6001600160a01b0380861660008181526008602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110e79085815260200190565b60405180910390a3506001949350505050565b600061083283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e3e565b6000806111498385611bfe565b9050838110156108325760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108be565b6000826111aa5750600061075d565b60006111b68385611c38565b9050826111c38583611c16565b146108325760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108be565b600061083283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118cd565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526008909152918220546112ad918490610e3e565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546112dc908361113c565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113309086815260200190565b60405180910390a35060019392505050565b6006548111158061136b57506001600160a01b0382166000908152600b602052604090205460ff165b610dcc5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108be565b6014546000906001600160a01b031633148015906113cc575060185460ff16155b80156113da575060165460ff165b801561088657505060175430600090815260086020526040902054101590565b6018805460ff19166001179055306000908152600860205260408120549050600061143b6002610a72600f54610a72600c548761119b90919063ffffffff16565b9050600061144983836110fa565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061148357611483611c84565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106114b4576114b4611c84565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b81524792919091169063791ac947906114fe908690600090879030904290600401611b8d565b600060405180830381600087803b15801561151857600080fd5b505af115801561152c573d6000803e3d6000fd5b50505050600061154582476110fa90919063ffffffff16565b9050600061156b6115626002600c5461121a90919063ffffffff16565b600f54906110fa565b9050600061158d6002610a7284610a72600c548861119b90919063ffffffff16565b905060006115aa83610a72600d548761119b90919063ffffffff16565b905060006115c784610a72600e548861119b90919063ffffffff16565b6011546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d806000811461161e576040519150601f19603f3d011682016040523d82523d6000602084013e611623565b606091505b50509050806116745760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e73666572000060448201526064016108be565b6012546040516000916001600160a01b03169061753090869084818181858888f193505050503d80600081146116c6576040519150601f19603f3d011682016040523d82523d6000602084013e6116cb565b606091505b505090508061171c5760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e73666572000060448201526064016108be565b8a156118035760135460115460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c4016060604051808303818588803b15801561178d57600080fd5b505af11580156117a1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117c69190611a93565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506018805460ff1916905550505050505050505050565b601054601454600091829161184d9190610a7290611846906001600160a01b03898116911614610c96565b869061119b565b3060009081526008602052604090205490915061186a908261113c565b30600081815260086020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118bb9085815260200190565b60405180910390a3610e6f83826110fa565b600081836118ee5760405162461bcd60e51b81526004016108be9190611af3565b506000610e6f8486611c16565b8035801515811461190b57600080fd5b919050565b60006020828403121561192257600080fd5b813561083281611c9a565b6000806040838503121561194057600080fd5b823561194b81611c9a565b9150602083013561195b81611c9a565b809150509250929050565b60008060006060848603121561197b57600080fd5b833561198681611c9a565b9250602084013561199681611c9a565b929592945050506040919091013590565b600080604083850312156119ba57600080fd5b82356119c581611c9a565b91506119d3602084016118fb565b90509250929050565b600080604083850312156119ef57600080fd5b82356119fa81611c9a565b946020939093013593505050565b600060208284031215611a1a57600080fd5b610832826118fb565b60008060408385031215611a3657600080fd5b6119fa836118fb565b600060208284031215611a5157600080fd5b5035919050565b600060208284031215611a6a57600080fd5b5051919050565b60008060408385031215611a8457600080fd5b50508035926020909101359150565b600080600060608486031215611aa857600080fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215611ad757600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b81811015611b2057858101830151858201604001528201611b04565b81811115611b32576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611bdd5784516001600160a01b031683529383019391830191600101611bb8565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611c1157611c11611c6e565b500190565b600082611c3357634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611c5257611c52611c6e565b500290565b600082821015611c6957611c69611c6e565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114611caf57600080fd5b5056fea2646970667358221220e48e46bfc73ae7f7bd20c1a3c44e782410cfc94d088bce15086d469de7433a8f64736f6c63430008050033

Deployed Bytecode

0x6080604052600436106102135760003560e01c80638f9a55c011610118578063df20fd49116100a0578063f2fde38b1161006f578063f2fde38b14610661578063f429389014610681578063f84ba65d14610696578063f887ea40146106b6578063fe9fbb80146106d657600080fd5b8063df20fd49146105e1578063e66db25e14610601578063f0b37c0414610621578063f1f3bca31461064157600080fd5b8063b6a5d7de116100e7578063b6a5d7de14610525578063bf56b37114610545578063d51ed1c81461055b578063dc93cf701461057b578063dd62ed3e1461059b57600080fd5b80638f9a55c0146104a257806395d89b41146104b8578063a8aa1b31146104e5578063a9059cbb1461050557600080fd5b8063571ac8b01161019b5780636ddd17131161016a5780636ddd1713146103ea5780636fcba3771461040457806370a08231146104245780637d1db4a51461045a578063893d20e81461047057600080fd5b8063571ac8b0146103685780635c85974f146103885780635d0044ca146103aa578063658d4b7f146103ca57600080fd5b806318160ddd116101e257806318160ddd146102d357806323b872dd146102e85780632b112e49146103085780632f54bf6e1461031d578063313ce5671461034c57600080fd5b80630445b6671461021f57806306fdde0314610248578063095ea7b3146102835780631161ae39146102b357600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b5061023560175481565b6040519081526020015b60405180910390f35b34801561025457600080fd5b506040805180820190915260098152682537b2bcaa37b5b2b760b91b60208201525b60405161023f9190611af3565b34801561028f57600080fd5b506102a361029e3660046119dc565b6106f6565b604051901515815260200161023f565b3480156102bf57600080fd5b506102a36102ce366004611a71565b610763565b3480156102df57600080fd5b50600554610235565b3480156102f457600080fd5b506102a3610303366004611966565b610777565b34801561031457600080fd5b50610235610839565b34801561032957600080fd5b506102a3610338366004611910565b6000546001600160a01b0391821691161490565b34801561035857600080fd5b506040516009815260200161023f565b34801561037457600080fd5b506102a3610383366004611910565b61088b565b34801561039457600080fd5b506103a86103a3366004611a3f565b610899565b005b3480156103b657600080fd5b506103a86103c5366004611a3f565b6108e8565b3480156103d657600080fd5b506103a86103e53660046119a7565b610933565b3480156103f657600080fd5b506016546102a39060ff1681565b34801561041057600080fd5b506103a861041f366004611ac1565b610983565b34801561043057600080fd5b5061023561043f366004611910565b6001600160a01b031660009081526008602052604090205490565b34801561046657600080fd5b5061023560065481565b34801561047c57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161023f565b3480156104ae57600080fd5b5061023560075481565b3480156104c457600080fd5b506040805180820190915260048152634a4f455960e01b6020820152610276565b3480156104f157600080fd5b5060145461048a906001600160a01b031681565b34801561051157600080fd5b506102a36105203660046119dc565b6109d6565b34801561053157600080fd5b506103a8610540366004611910565b6109e3565b34801561055157600080fd5b5061023560155481565b34801561056757600080fd5b50610235610576366004611a3f565b610a34565b34801561058757600080fd5b506103a8610596366004611910565b610a78565b3480156105a757600080fd5b506102356105b636600461192d565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156105ed57600080fd5b506103a86105fc366004611a23565b610bbc565b34801561060d57600080fd5b506103a861061c36600461192d565b610bf8565b34801561062d57600080fd5b506103a861063c366004611910565b610c4b565b34801561064d57600080fd5b5061023561065c366004611a08565b610c96565b34801561066d57600080fd5b506103a861067c366004611910565b610cd7565b34801561068d57600080fd5b506103a8610d6d565b3480156106a257600080fd5b506103a86106b13660046119a7565b610dd0565b3480156106c257600080fd5b5060135461048a906001600160a01b031681565b3480156106e257600080fd5b506102a36106f1366004611910565b610e20565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107519086815260200190565b60405180910390a35060015b92915050565b60008261076f83610a34565b119392505050565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610824576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526009825283812033825290915291909120546107ff918490610e3e565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b61082f848484610e78565b90505b9392505050565b6004546001600160a01b0316600090815260086020526040812054610886906003546001600160a01b031660009081526008602052604090205461088090600554906110fa565b906110fa565b905090565b600061075d826000196106f6565b6108a233610e20565b6108c75760405162461bcd60e51b81526004016108be90611b68565b60405180910390fd5b6103e86005546108d79190611c16565b8110156108e357600080fd5b600655565b6000546001600160a01b031633146109125760405162461bcd60e51b81526004016108be90611b48565b6103e86005546109229190611c16565b81101561092e57600080fd5b600755565b61093c33610e20565b6109585760405162461bcd60e51b81526004016108be90611b68565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b61098c33610e20565b6109a85760405162461bcd60e51b81526004016108be90611b68565b600c849055600d839055600e8290556109cb826109c5868661113c565b9061113c565b600f55601055505050565b6000610832338484610e78565b6000546001600160a01b03163314610a0d5760405162461bcd60e51b81526004016108be90611b48565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b600061075d610a41610839565b6014546001600160a01b0316600090815260086020526040902054610a7290610a6b90600261119b565b859061119b565b9061121a565b610a8133610e20565b610a9d5760405162461bcd60e51b81526004016108be90611b68565b6001600160a01b038116301415610b025760405162461bcd60e51b815260206004820152602360248201527f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60448201526235b2b760e91b60648201526084016108be565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b158015610b4457600080fd5b505afa158015610b58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7c9190611a58565b6011546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015610bb7573d6000803e3d6000fd5b505050565b610bc533610e20565b610be15760405162461bcd60e51b81526004016108be90611b68565b6016805460ff191692151592909217909155601755565b610c0133610e20565b610c1d5760405162461bcd60e51b81526004016108be90611b68565b601180546001600160a01b039384166001600160a01b03199182161790915560128054929093169116179055565b6000546001600160a01b03163314610c755760405162461bcd60e51b81526004016108be90611b48565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000436015546001610ca89190611bfe565b10610cbb5760105461075d9060016110fa565b8115610ccf57600f5461075d90600161113c565b5050600f5490565b6000546001600160a01b03163314610d015760405162461bcd60e51b81526004016108be90611b48565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b610d7633610e20565b610d925760405162461bcd60e51b81526004016108be90611b68565b60115460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610dcc573d6000803e3d6000fd5b5050565b610dd933610e20565b610df55760405162461bcd60e51b81526004016108be90611b68565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b60008184841115610e625760405162461bcd60e51b81526004016108be9190611af3565b506000610e6f8486611c57565b95945050505050565b60185460009060ff1615610e9857610e9184848461125c565b9050610832565b610ea28483611342565b6014546001600160a01b03848116911614801590610ece57506003546001600160a01b03848116911614155b15610f79576001600160a01b0383166000908152600b602052604090205460ff1680610f1f57506007546001600160a01b038416600090815260086020526040902054610f1c908490611bfe565b11155b610f795760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b60648201526084016108be565b610f816113ab565b15610f8e57610f8e6113fa565b601554158015610fab57506014546001600160a01b038481169116145b15610fdb576001600160a01b038416600090815260086020526040902054610fd257600080fd5b610fdb43601555565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526008909152919091205461102d918490610e3e565b6001600160a01b038516600090815260086020908152604080832093909355600a90529081205460ff1615611062578261106d565b61106d85858561181b565b6001600160a01b038516600090815260086020526040902054909150611093908261113c565b6001600160a01b0380861660008181526008602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110e79085815260200190565b60405180910390a3506001949350505050565b600061083283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e3e565b6000806111498385611bfe565b9050838110156108325760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108be565b6000826111aa5750600061075d565b60006111b68385611c38565b9050826111c38583611c16565b146108325760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108be565b600061083283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118cd565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526008909152918220546112ad918490610e3e565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546112dc908361113c565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113309086815260200190565b60405180910390a35060019392505050565b6006548111158061136b57506001600160a01b0382166000908152600b602052604090205460ff165b610dcc5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108be565b6014546000906001600160a01b031633148015906113cc575060185460ff16155b80156113da575060165460ff165b801561088657505060175430600090815260086020526040902054101590565b6018805460ff19166001179055306000908152600860205260408120549050600061143b6002610a72600f54610a72600c548761119b90919063ffffffff16565b9050600061144983836110fa565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061148357611483611c84565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106114b4576114b4611c84565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b81524792919091169063791ac947906114fe908690600090879030904290600401611b8d565b600060405180830381600087803b15801561151857600080fd5b505af115801561152c573d6000803e3d6000fd5b50505050600061154582476110fa90919063ffffffff16565b9050600061156b6115626002600c5461121a90919063ffffffff16565b600f54906110fa565b9050600061158d6002610a7284610a72600c548861119b90919063ffffffff16565b905060006115aa83610a72600d548761119b90919063ffffffff16565b905060006115c784610a72600e548861119b90919063ffffffff16565b6011546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d806000811461161e576040519150601f19603f3d011682016040523d82523d6000602084013e611623565b606091505b50509050806116745760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e73666572000060448201526064016108be565b6012546040516000916001600160a01b03169061753090869084818181858888f193505050503d80600081146116c6576040519150601f19603f3d011682016040523d82523d6000602084013e6116cb565b606091505b505090508061171c5760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e73666572000060448201526064016108be565b8a156118035760135460115460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c4016060604051808303818588803b15801561178d57600080fd5b505af11580156117a1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117c69190611a93565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506018805460ff1916905550505050505050505050565b601054601454600091829161184d9190610a7290611846906001600160a01b03898116911614610c96565b869061119b565b3060009081526008602052604090205490915061186a908261113c565b30600081815260086020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118bb9085815260200190565b60405180910390a3610e6f83826110fa565b600081836118ee5760405162461bcd60e51b81526004016108be9190611af3565b506000610e6f8486611c16565b8035801515811461190b57600080fd5b919050565b60006020828403121561192257600080fd5b813561083281611c9a565b6000806040838503121561194057600080fd5b823561194b81611c9a565b9150602083013561195b81611c9a565b809150509250929050565b60008060006060848603121561197b57600080fd5b833561198681611c9a565b9250602084013561199681611c9a565b929592945050506040919091013590565b600080604083850312156119ba57600080fd5b82356119c581611c9a565b91506119d3602084016118fb565b90509250929050565b600080604083850312156119ef57600080fd5b82356119fa81611c9a565b946020939093013593505050565b600060208284031215611a1a57600080fd5b610832826118fb565b60008060408385031215611a3657600080fd5b6119fa836118fb565b600060208284031215611a5157600080fd5b5035919050565b600060208284031215611a6a57600080fd5b5051919050565b60008060408385031215611a8457600080fd5b50508035926020909101359150565b600080600060608486031215611aa857600080fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215611ad757600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b81811015611b2057858101830151858201604001528201611b04565b81811115611b32576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611bdd5784516001600160a01b031683529383019391830191600101611bb8565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611c1157611c11611c6e565b500190565b600082611c3357634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611c5257611c52611c6e565b500290565b600082821015611c6957611c69611c6e565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114611caf57600080fd5b5056fea2646970667358221220e48e46bfc73ae7f7bd20c1a3c44e782410cfc94d088bce15086d469de7433a8f64736f6c63430008050033

Deployed Bytecode Sourcemap

5531:10716:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6803:54;;;;;;;;;;;;;;;;;;;9310:25:1;;;9298:2;9283:18;6803:54:0;;;;;;;;7754:80;;;;;;;;;;-1:-1:-1;7826:5:0;;;;;;;;;;;;-1:-1:-1;;;7826:5:0;;;;7754:80;;;;;;;:::i;8176:216::-;;;;;;;;;;-1:-1:-1;8176:216:0;;;;;:::i;:::-;;:::i;:::-;;;5362:14:1;;5355:22;5337:41;;5325:2;5310:18;8176:216:0;5292:92:1;16026:150:0;;;;;;;;;;-1:-1:-1;16026:150:0;;;;;:::i;:::-;;:::i;7484:88::-;;;;;;;;;;-1:-1:-1;7557:12:0;;7484:88;;8694:370;;;;;;;;;;-1:-1:-1;8694:370:0;;;;;:::i;:::-;;:::i;15701:142::-;;;;;;;;;;;;;:::i;3426:103::-;;;;;;;;;;-1:-1:-1;3426:103:0;;;;;:::i;:::-;3481:4;3516:5;-1:-1:-1;;;;;3505:16:0;;;3516:5;;3505:16;;3426:103;7578:80;;;;;;;;;;-1:-1:-1;7578:80:0;;5910:1;10726:36:1;;10714:2;10699:18;7578:80:0;10681:87:1;8400:122:0;;;;;;;;;;-1:-1:-1;8400:122:0;;;;;:::i;:::-;;:::i;13879:145::-;;;;;;;;;;-1:-1:-1;13879:145:0;;;;;:::i;:::-;;:::i;:::-;;14031:151;;;;;;;;;;-1:-1:-1;14031:151:0;;;;;:::i;:::-;;:::i;14194:120::-;;;;;;;;;;-1:-1:-1;14194:120:0;;;;;:::i;:::-;;:::i;6766:30::-;;;;;;;;;;-1:-1:-1;6766:30:0;;;;;;;;14458:352;;;;;;;;;;-1:-1:-1;14458:352:0;;;;;:::i;:::-;;:::i;7924:105::-;;;;;;;;;;-1:-1:-1;7924:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;8008:18:0;7990:7;8008:18;;;:9;:18;;;;;;;7924:105;5980:54;;;;;;;;;;;;;;;;7840:78;;;;;;;;;;-1:-1:-1;7892:7:0;7910:5;-1:-1:-1;;;;;7910:5:0;7840:78;;;-1:-1:-1;;;;;4325:32:1;;;4307:51;;4295:2;4280:18;7840:78:0;4262:102:1;6054:56:0;;;;;;;;;;;;;;;;7664:84;;;;;;;;;;-1:-1:-1;7738:7:0;;;;;;;;;;;;-1:-1:-1;;;7738:7:0;;;;7664:84;;6704:19;;;;;;;;;;-1:-1:-1;6704:19:0;;;;-1:-1:-1;;;;;6704:19:0;;;8530:156;;;;;;;;;;-1:-1:-1;8530:156:0;;;;;:::i;:::-;;:::i;3099:94::-;;;;;;;;;;-1:-1:-1;3099:94:0;;;;;:::i;:::-;;:::i;6732:25::-;;;;;;;;;;;;;;;;15851:167;;;;;;;;;;-1:-1:-1;15851:167:0;;;;;:::i;:::-;;:::i;15387:298::-;;;;;;;;;;-1:-1:-1;15387:298:0;;;;;:::i;:::-;;:::i;8035:133::-;;;;;;;;;;-1:-1:-1;8035:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;8137:19:0;;;8119:7;8137:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8035:133;15035:156;;;;;;;;;;-1:-1:-1;15035:156:0;;;;;:::i;:::-;;:::i;14818:209::-;;;;;;;;;;-1:-1:-1;14818:209:0;;;;;:::i;:::-;;:::i;3269:97::-;;;;;;;;;;-1:-1:-1;3269:97:0;;;;;:::i;:::-;;:::i;10664:225::-;;;;;;;;;;-1:-1:-1;10664:225:0;;;;;:::i;:::-;;:::i;3826:173::-;;;;;;;;;;-1:-1:-1;3826:173:0;;;;;:::i;:::-;;:::i;15199:180::-;;;;;;;;;;;;;:::i;14322:128::-;;;;;;;;;;-1:-1:-1;14322:128:0;;;;;:::i;:::-;;:::i;6673:24::-;;;;;;;;;;-1:-1:-1;6673:24:0;;;;-1:-1:-1;;;;;6673:24:0;;;3600:107;;;;;;;;;;-1:-1:-1;3600:107:0;;;;;:::i;:::-;;:::i;8176:216::-;8280:10;8251:4;8268:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8268:32:0;;;;;;;;;;:41;;;8325:37;8251:4;;8268:32;;8325:37;;;;8303:6;9310:25:1;;9298:2;9283:18;;9265:76;8325:37:0;;;;;;;;-1:-1:-1;8380:4:0;8176:216;;;;;:::o;16026:150::-;16106:4;16162:6;16130:29;16150:8;16130:19;:29::i;:::-;:38;;16026:150;-1:-1:-1;;;16026:150:0:o;8694:370::-;-1:-1:-1;;;;;8814:19:0;;8794:4;8814:19;;;:11;:19;;;;;;;;8834:10;8814:31;;;;;;;;-1:-1:-1;;8814:52:0;8811:186;;8916:69;;;;;;;;;;;-1:-1:-1;;;8916:69:0;;;;;;;;-1:-1:-1;;;;;8916:19:0;;-1:-1:-1;8916:19:0;;;:11;:19;;;;;8936:10;8916:31;;;;;;;;;;:69;;8952:6;;8916:35;:69::i;:::-;-1:-1:-1;;;;;8882:19:0;;;;;;:11;:19;;;;;;;;8902:10;8882:31;;;;;;;:103;8811:186;9016:40;9030:6;9038:9;9049:6;9016:13;:40::i;:::-;9009:47;;8694:370;;;;;;:::o;15701:142::-;15829:4;;-1:-1:-1;;;;;15829:4:0;15754:7;8008:18;;;:9;:18;;;;;;15781:54;;15808:4;;-1:-1:-1;;;;;15808:4:0;7990:7;8008:18;;;:9;:18;;;;;;15781:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;15774:61;;15701:142;:::o;8400:122::-;8455:4;8479:35;8487:7;-1:-1:-1;;8479:7:0;:35::i;13879:145::-;2984:24;2997:10;2984:12;:24::i;:::-;2976:48;;;;-1:-1:-1;;;2976:48:0;;;;;;;:::i;:::-;;;;;;;;;13979:4:::1;13964:12;;:19;;;;:::i;:::-;13954:6;:29;;13946:38;;;::::0;::::1;;13995:12;:21:::0;13879:145::o;14031:151::-;3481:4;3516:5;-1:-1:-1;;;;;3516:5:0;2823:10;3505:16;2807:38;;;;-1:-1:-1;;;2807:38:0;;;;;;;:::i;:::-;14134:4:::1;14119:12;;:19;;;;:::i;:::-;14109:6;:29;;14101:39;;;::::0;::::1;;14151:14;:23:::0;14031:151::o;14194:120::-;2984:24;2997:10;2984:12;:24::i;:::-;2976:48;;;;-1:-1:-1;;;2976:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14278:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;14278:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14194:120::o;14458:352::-;2984:24;2997:10;2984:12;:24::i;:::-;2976:48;;;;-1:-1:-1;;;2976:48:0;;;;;;;:::i;:::-;14595:12:::1;:28:::0;;;14634:7:::1;:18:::0;;;14663:12:::1;:28:::0;;;14713:46:::1;14678:13:::0;14713:27:::1;14610:13:::0;14644:8;14713:17:::1;:27::i;:::-;:31:::0;::::1;:46::i;:::-;14702:8;:57:::0;14770:14:::1;:32:::0;-1:-1:-1;;;14458:352:0:o;8530:156::-;8610:4;8634:44;8648:10;8660:9;8671:6;8634:13;:44::i;3099:94::-;3481:4;3516:5;-1:-1:-1;;;;;3516:5:0;2823:10;3505:16;2807:38;;;;-1:-1:-1;;;2807:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3159:19:0::1;;::::0;;;3181:4:::1;3159:19;::::0;;;;;;;:26;;-1:-1:-1;;3159:26:0::1;::::0;;::::1;::::0;;3099:94::o;15851:167::-;15919:7;15946:64;15987:22;:20;:22::i;:::-;15969:4;;-1:-1:-1;;;;;15969:4:0;7990:7;8008:18;;;:9;:18;;;;;;15946:36;;15959:22;;15979:1;15959:19;:22::i;:::-;15946:8;;:12;:36::i;:::-;:40;;:64::i;15387:298::-;2984:24;2997:10;2984:12;:24::i;:::-;2976:48;;;;-1:-1:-1;;;2976:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15470:23:0;::::1;15488:4;15470:23;;15462:71;;;::::0;-1:-1:-1;;;15462:71:0;;7171:2:1;15462:71:0::1;::::0;::::1;7153:21:1::0;7210:2;7190:18;;;7183:30;7249:34;7229:18;;;7222:62;-1:-1:-1;;;7300:18:1;;;7293:33;7343:19;;15462:71:0::1;7143:225:1::0;15462:71:0::1;15571:39;::::0;-1:-1:-1;;;15571:39:0;;15604:4:::1;15571:39;::::0;::::1;4307:51:1::0;15544:24:0::1;::::0;-1:-1:-1;;;;;15571:24:0;::::1;::::0;::::1;::::0;4280:18:1;;15571:39:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15629:20;::::0;15621:56:::1;::::0;15544:66;;-1:-1:-1;;;;;;15629:20:0::1;::::0;15621:56;::::1;;;::::0;15544:66;;15629:20:::1;15621:56:::0;15629:20;15621:56;15544:66;15629:20;15621:56;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15451:234;15387:298:::0;:::o;15035:156::-;2984:24;2997:10;2984:12;:24::i;:::-;2976:48;;;;-1:-1:-1;;;2976:48:0;;;;;;;:::i;:::-;15127:11:::1;:22:::0;;-1:-1:-1;;15127:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;15160:13:::1;:23:::0;15035:156::o;14818:209::-;2984:24;2997:10;2984:12;:24::i;:::-;2976:48;;;;-1:-1:-1;;;2976:48:0;;;;;;;:::i;:::-;14930:20:::1;:44:::0;;-1:-1:-1;;;;;14930:44:0;;::::1;-1:-1:-1::0;;;;;;14930:44:0;;::::1;;::::0;;;14985:15:::1;:34:::0;;;;;::::1;::::0;::::1;;::::0;;14818:209::o;3269:97::-;3481:4;3516:5;-1:-1:-1;;;;;3516:5:0;2823:10;3505:16;2807:38;;;;-1:-1:-1;;;2807:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3331:19:0::1;3353:5;3331:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;3331:27:0::1;::::0;;3269:97::o;10664:225::-;10720:7;10761:12;10743:10;;10756:1;10743:14;;;;:::i;:::-;:30;10740:67;;10783:14;;:21;;10802:1;10783:18;:21::i;10740:67::-;10820:7;10817:39;;;10838:8;;:15;;10851:1;10838:12;:15::i;10817:39::-;-1:-1:-1;;10873:8:0;;;10664:225::o;3826:173::-;3481:4;3516:5;-1:-1:-1;;;;;3516:5:0;2823:10;3505:16;2807:38;;;;-1:-1:-1;;;2807:38:0;;;;;;;:::i;:::-;3902:5:::1;:11:::0;;-1:-1:-1;;;;;;3902:11:0::1;-1:-1:-1::0;;;;;3902:11:0;::::1;::::0;;::::1;::::0;;3924:19;;;-1:-1:-1;3924:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;3924:26:0::1;::::0;;::::1;::::0;;;3966:25;;4307:51:1;;;3966:25:0::1;::::0;4280:18:1;3966:25:0::1;;;;;;;3826:173:::0;:::o;15199:180::-;2984:24;2997:10;2984:12;:24::i;:::-;2976:48;;;;-1:-1:-1;;;2976:48:0;;;;;;;:::i;:::-;15321:20:::1;::::0;15313:58:::1;::::0;15281:21:::1;::::0;-1:-1:-1;;;;;15321:20:0::1;::::0;15313:58;::::1;;;::::0;15281:21;;15252:26:::1;15313:58:::0;15252:26;15313:58;15281:21;15321:20;15313:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15241:138;15199:180::o:0;14322:128::-;2984:24;2997:10;2984:12;:24::i;:::-;2976:48;;;;-1:-1:-1;;;2976:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14410:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;14410:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14322:128::o;3600:107::-;-1:-1:-1;;;;;3680:19:0;3656:4;3680:19;;;:14;:19;;;;;;;;;3600:107::o;483:192::-;569:7;605:12;597:6;;;;589:29;;;;-1:-1:-1;;;589:29:0;;;;;;;;:::i;:::-;-1:-1:-1;629:9:0;641:5;645:1;641;:5;:::i;:::-;629:17;483:192;-1:-1:-1;;;;;483:192:0:o;9072:942::-;9184:6;;9164:4;;9184:6;;9181:63;;;9200:41;9215:6;9223:9;9234:6;9200:14;:41::i;:::-;9193:48;;;;9181:63;9264:28;9277:6;9285;9264:12;:28::i;:::-;9330:4;;-1:-1:-1;;;;;9317:17:0;;;9330:4;;9317:17;;;;:38;;-1:-1:-1;9351:4:0;;-1:-1:-1;;;;;9338:17:0;;;9351:4;;9338:17;;9317:38;9313:198;;;-1:-1:-1;;;;;9380:26:0;;;;;;:15;:26;;;;;;;;;:77;;-1:-1:-1;9443:14:0;;-1:-1:-1;;;;;9410:20:0;;;;;;:9;:20;;;;;;:29;;9433:6;;9410:29;:::i;:::-;:47;;9380:77;9372:127;;;;-1:-1:-1;;;9372:127:0;;6419:2:1;9372:127:0;;;6401:21:1;6458:2;6438:18;;;6431:30;6497:34;6477:18;;;6470:62;-1:-1:-1;;;6548:18:1;;;6541:35;6593:19;;9372:127:0;6391:227:1;9372:127:0;9534:16;:14;:16::i;:::-;9531:35;;;9553:10;:8;:10::i;:::-;13769;;:15;;;9581:32;;-1:-1:-1;9609:4:0;;-1:-1:-1;;;;;9596:17:0;;;9609:4;;9596:17;9581:32;9578:81;;;-1:-1:-1;;;;;9624:17:0;;9644:1;9624:17;;;:9;:17;;;;;;9616:30;;;;;;9648:8;13851:12;13838:10;:25;13800:71;9648:8;9691:53;;;;;;;;;;;-1:-1:-1;;;9691:53:0;;;;;;;;-1:-1:-1;;;;;9691:17:0;;-1:-1:-1;9691:17:0;;;:9;:17;;;;;;;;:53;;9713:6;;9691:21;:53::i;:::-;-1:-1:-1;;;;;9671:17:0;;;;;;:9;:17;;;;;;;;:73;;;;10629:11;:19;;;;;;;;10628:20;9782:67;;9843:6;9782:67;;;9806:34;9814:6;9822:9;9833:6;9806:7;:34::i;:::-;-1:-1:-1;;;;;9883:20:0;;;;;;:9;:20;;;;;;9757:92;;-1:-1:-1;9883:40:0;;9757:92;9883:24;:40::i;:::-;-1:-1:-1;;;;;9860:20:0;;;;;;;:9;:20;;;;;;;:63;;;;9941:43;;;;;;;;;;9969:14;9310:25:1;;9298:2;9283:18;;9265:76;9941:43:0;;;;;;;;-1:-1:-1;10002:4:0;;9072:942;-1:-1:-1;;;;9072:942:0:o;341:136::-;399:7;426:43;430:1;433;426:43;;;;;;;;;;;;;;;;;:3;:43::i;154:181::-;212:7;;244:5;248:1;244;:5;:::i;:::-;232:17;;273:1;268;:6;;260:46;;;;-1:-1:-1;;;260:46:0;;7575:2:1;260:46:0;;;7557:21:1;7614:2;7594:18;;;7587:30;7653:29;7633:18;;;7626:57;7700:18;;260:46:0;7547:177:1;681:250:0;739:7;763:6;759:47;;-1:-1:-1;793:1:0;786:8;;759:47;818:9;830:5;834:1;830;:5;:::i;:::-;818:17;-1:-1:-1;863:1:0;854:5;858:1;818:17;854:5;:::i;:::-;:10;846:56;;;;-1:-1:-1;;;846:56:0;;8290:2:1;846:56:0;;;8272:21:1;8329:2;8309:18;;;8302:30;8368:34;8348:18;;;8341:62;-1:-1:-1;;;8419:18:1;;;8412:31;8460:19;;846:56:0;8262:223:1;937:132:0;995:7;1022:39;1026:1;1029;1022:39;;;;;;;;;;;;;;;;;:3;:39::i;10026:330::-;10156:53;;;;;;;;;;;-1:-1:-1;;;10156:53:0;;;;;;;;-1:-1:-1;;;;;10156:17:0;;10119:4;10156:17;;;:9;:17;;;;;;;:53;;10178:6;;10156:21;:53::i;:::-;-1:-1:-1;;;;;10136:17:0;;;;;;;:9;:17;;;;;;:73;;;;10243:20;;;;;;;:32;;10268:6;10243:24;:32::i;:::-;-1:-1:-1;;;;;10220:20:0;;;;;;;:9;:20;;;;;;;:55;;;;10291:35;;;;;;;;;;10319:6;9310:25:1;;9298:2;9283:18;;9265:76;10291:35:0;;;;;;;;-1:-1:-1;10344:4:0;10026:330;;;;;:::o;10364:166::-;10461:12;;10451:6;:22;;:49;;;-1:-1:-1;;;;;;10477:23:0;;;;;;:15;:23;;;;;;;;10451:49;10443:79;;;;-1:-1:-1;;;10443:79:0;;6825:2:1;10443:79:0;;;6807:21:1;6864:2;6844:18;;;6837:30;-1:-1:-1;;;6883:18:1;;;6876:47;6940:18;;10443:79:0;6797:167:1;11277:197:0;11364:4;;11326;;-1:-1:-1;;;;;11364:4:0;11350:10;:18;;;;:38;;-1:-1:-1;11382:6:0;;;;11381:7;11350:38;:62;;;;-1:-1:-1;11401:11:0;;;;11350:62;:116;;;;-1:-1:-1;;11453:13:0;;11443:4;11425:24;;;;:9;:24;;;;;;:41;;;11277:197::o;11482:1843::-;6912:6;:13;;-1:-1:-1;;6912:13:0;6921:4;6912:13;;;11580:4:::1;-1:-1:-1::0;8008:18:0;;;:9;:18;;;;;;11531:55:::1;;11597:23;11623:59;11680:1;11623:52;11666:8;;11623:38;11648:12;;11623:20;:24;;:38;;;;:::i;:59::-;11597:85:::0;-1:-1:-1;11693:20:0::1;11716:41;:20:::0;11597:85;11716:24:::1;:41::i;:::-;11794:16;::::0;;11808:1:::1;11794:16:::0;;;;;::::1;::::0;;11693:64;;-1:-1:-1;11770:21:0::1;::::0;11794:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11794:16:0::1;11770:40;;11839:4;11821;11826:1;11821:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11821:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;11865:4:::1;::::0;11855:7;;11865:4;::::1;::::0;11855;;11865;;11855:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;11855:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;11940:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;11940:188:0;;11906:21:::1;::::0;11940:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;12012:12;;11882:21:::1;::::0;12055:4;;12082::::1;::::0;12102:15:::1;::::0;11940:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12139:17;12159:40;12185:13;12159:21;:25;;:40;;;;:::i;:::-;12139:60;;12210:19;12232:33;12245:19;12262:1;12245:12;;:16;;:19;;;;:::i;:::-;12232:8;::::0;;:12:::1;:33::i;:::-;12210:55;;12276:26;12305:51;12354:1;12305:44;12337:11;12305:27;12319:12;;12305:9;:13;;:27;;;;:::i;:51::-;12276:80;;12367:28;12398:39;12425:11;12398:22;12412:7;;12398:9;:13;;:22;;;;:::i;:39::-;12367:70;;12448:26;12477:44;12509:11;12477:27;12491:12;;12477:9;:13;;:27;;;;:::i;:44::-;12595:20;::::0;12587:77:::1;::::0;12448:73;;-1:-1:-1;12537:21:0::1;::::0;-1:-1:-1;;;;;12595:20:0;;::::1;::::0;12654:5:::1;::::0;12448:73;;12537:21;12587:77;12537:21;12587:77;12448:73;12595:20;12654:5;12587:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12536:128;;;12683:16;12675:59;;;::::0;-1:-1:-1;;;12675:59:0;;7931:2:1;12675:59:0::1;::::0;::::1;7913:21:1::0;7970:2;7950:18;;;7943:30;8009:32;7989:18;;;7982:60;8059:18;;12675:59:0::1;7903:180:1::0;12675:59:0::1;12806:15;::::0;12798:74:::1;::::0;12746:23:::1;::::0;-1:-1:-1;;;;;12806:15:0::1;::::0;12862:5:::1;::::0;12835:20;;12746:23;12798:74;12746:23;12798:74;12835:20;12806:15;12862:5;12798:74:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12745:127;;;12891:18;12883:61;;;::::0;-1:-1:-1;;;12883:61:0;;7931:2:1;12883:61:0::1;::::0;::::1;7913:21:1::0;7970:2;7950:18;;;7943:30;8009:32;7989:18;;;7982:60;8059:18;;12883:61:0::1;7903:180:1::0;12883:61:0::1;12960:19:::0;;12957:361:::1;;12995:6;::::0;13169:20:::1;::::0;12995:243:::1;::::0;-1:-1:-1;;;12995:243:0;;13071:4:::1;12995:243;::::0;::::1;4926:34:1::0;4976:18;;;4969:34;;;12995:6:0::1;5019:18:1::0;;;5012:34;;;5062:18;;;5055:34;-1:-1:-1;;;;;13169:20:0;;::::1;5105:19:1::0;;;5098:44;13208:15:0::1;5158:19:1::0;;;5151:35;12995:6:0;::::1;::::0;:22:::1;::::0;13025:18;;4860:19:1;;12995:243:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;13258:48:0::1;::::0;;10505:25:1;;;10561:2;10546:18;;10539:34;;;13258:48:0::1;::::0;-1:-1:-1;10478:18:1;13258:48:0::1;;;;;;;12957:361;-1:-1:-1::0;;6930:6:0;:14;;-1:-1:-1;;6930:14:0;;;-1:-1:-1;;;;;;;;;;11482:1843:0:o;10897:372::-;11068:14;;11057:4;;10982:7;;;;11022:61;;11068:14;11022:41;;11033:29;;-1:-1:-1;;;;;11045:16:0;;;11057:4;;11045:16;11033:11;:29::i;:::-;11022:6;;:10;:41::i;:61::-;11141:4;11123:24;;;;:9;:24;;;;;;11002:81;;-1:-1:-1;11123:39:0;;11002:81;11123:28;:39::i;:::-;11114:4;11096:24;;;;:9;:24;;;;;;;:66;;;;11178:42;;-1:-1:-1;;;;;11178:42:0;;;;;;;11210:9;9310:25:1;;9298:2;9283:18;;9265:76;11178:42:0;;;;;;;;11240:21;:6;11251:9;11240:10;:21::i;1075:345::-;1161:7;1263:12;1256:5;1248:28;;;;-1:-1:-1;;;1248:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1287:9:0;1299:5;1303:1;1299;:5;:::i;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;307:1;304;297:12;259:2;346:9;333:23;365:31;390:5;365:31;:::i;691:388::-;759:6;767;820:2;808:9;799:7;795:23;791:32;788:2;;;836:1;833;826:12;788:2;875:9;862:23;894:31;919:5;894:31;:::i;:::-;944:5;-1:-1:-1;1001:2:1;986:18;;973:32;1014:33;973:32;1014:33;:::i;:::-;1066:7;1056:17;;;778:301;;;;;:::o;1084:456::-;1161:6;1169;1177;1230:2;1218:9;1209:7;1205:23;1201:32;1198:2;;;1246:1;1243;1236:12;1198:2;1285:9;1272:23;1304:31;1329:5;1304:31;:::i;:::-;1354:5;-1:-1:-1;1411:2:1;1396:18;;1383:32;1424:33;1383:32;1424:33;:::i;:::-;1188:352;;1476:7;;-1:-1:-1;;;1530:2:1;1515:18;;;;1502:32;;1188:352::o;1545:315::-;1610:6;1618;1671:2;1659:9;1650:7;1646:23;1642:32;1639:2;;;1687:1;1684;1677:12;1639:2;1726:9;1713:23;1745:31;1770:5;1745:31;:::i;:::-;1795:5;-1:-1:-1;1819:35:1;1850:2;1835:18;;1819:35;:::i;:::-;1809:45;;1629:231;;;;;:::o;1865:315::-;1933:6;1941;1994:2;1982:9;1973:7;1969:23;1965:32;1962:2;;;2010:1;2007;2000:12;1962:2;2049:9;2036:23;2068:31;2093:5;2068:31;:::i;:::-;2118:5;2170:2;2155:18;;;;2142:32;;-1:-1:-1;;;1952:228:1:o;2185:180::-;2241:6;2294:2;2282:9;2273:7;2269:23;2265:32;2262:2;;;2310:1;2307;2300:12;2262:2;2333:26;2349:9;2333:26;:::i;2370:248::-;2435:6;2443;2496:2;2484:9;2475:7;2471:23;2467:32;2464:2;;;2512:1;2509;2502:12;2464:2;2535:26;2551:9;2535:26;:::i;2623:180::-;2682:6;2735:2;2723:9;2714:7;2710:23;2706:32;2703:2;;;2751:1;2748;2741:12;2703:2;-1:-1:-1;2774:23:1;;2693:110;-1:-1:-1;2693:110:1:o;2808:184::-;2878:6;2931:2;2919:9;2910:7;2906:23;2902:32;2899:2;;;2947:1;2944;2937:12;2899:2;-1:-1:-1;2970:16:1;;2889:103;-1:-1:-1;2889:103:1:o;2997:248::-;3065:6;3073;3126:2;3114:9;3105:7;3101:23;3097:32;3094:2;;;3142:1;3139;3132:12;3094:2;-1:-1:-1;;3165:23:1;;;3235:2;3220:18;;;3207:32;;-1:-1:-1;3084:161:1:o;3250:306::-;3338:6;3346;3354;3407:2;3395:9;3386:7;3382:23;3378:32;3375:2;;;3423:1;3420;3413:12;3375:2;3452:9;3446:16;3436:26;;3502:2;3491:9;3487:18;3481:25;3471:35;;3546:2;3535:9;3531:18;3525:25;3515:35;;3365:191;;;;;:::o;3561:385::-;3647:6;3655;3663;3671;3724:3;3712:9;3703:7;3699:23;3695:33;3692:2;;;3741:1;3738;3731:12;3692:2;-1:-1:-1;;3764:23:1;;;3834:2;3819:18;;3806:32;;-1:-1:-1;3885:2:1;3870:18;;3857:32;;3936:2;3921:18;3908:32;;-1:-1:-1;3682:264:1;-1:-1:-1;3682:264:1:o;5615:597::-;5727:4;5756:2;5785;5774:9;5767:21;5817:6;5811:13;5860:6;5855:2;5844:9;5840:18;5833:34;5885:1;5895:140;5909:6;5906:1;5903:13;5895:140;;;6004:14;;;6000:23;;5994:30;5970:17;;;5989:2;5966:26;5959:66;5924:10;;5895:140;;;6053:6;6050:1;6047:13;6044:2;;;6123:1;6118:2;6109:6;6098:9;6094:22;6090:31;6083:42;6044:2;-1:-1:-1;6196:2:1;6175:15;-1:-1:-1;;6171:29:1;6156:45;;;;6203:2;6152:54;;5736:476;-1:-1:-1;;;5736:476:1:o;8490:329::-;8692:2;8674:21;;;8731:1;8711:18;;;8704:29;-1:-1:-1;;;8764:2:1;8749:18;;8742:36;8810:2;8795:18;;8664:155::o;8824:335::-;9026:2;9008:21;;;9065:2;9045:18;;;9038:30;-1:-1:-1;;;9099:2:1;9084:18;;9077:41;9150:2;9135:18;;8998:161::o;9346:980::-;9608:4;9656:3;9645:9;9641:19;9687:6;9676:9;9669:25;9713:2;9751:6;9746:2;9735:9;9731:18;9724:34;9794:3;9789:2;9778:9;9774:18;9767:31;9818:6;9853;9847:13;9884:6;9876;9869:22;9922:3;9911:9;9907:19;9900:26;;9961:2;9953:6;9949:15;9935:29;;9982:1;9992:195;10006:6;10003:1;10000:13;9992:195;;;10071:13;;-1:-1:-1;;;;;10067:39:1;10055:52;;10162:15;;;;10127:12;;;;10103:1;10021:9;9992:195;;;-1:-1:-1;;;;;;;10243:32:1;;;;10238:2;10223:18;;10216:60;-1:-1:-1;;;10307:3:1;10292:19;10285:35;10204:3;9617:709;-1:-1:-1;;;9617:709:1:o;10773:128::-;10813:3;10844:1;10840:6;10837:1;10834:13;10831:2;;;10850:18;;:::i;:::-;-1:-1:-1;10886:9:1;;10821:80::o;10906:217::-;10946:1;10972;10962:2;;11016:10;11011:3;11007:20;11004:1;10997:31;11051:4;11048:1;11041:15;11079:4;11076:1;11069:15;10962:2;-1:-1:-1;11108:9:1;;10952:171::o;11128:168::-;11168:7;11234:1;11230;11226:6;11222:14;11219:1;11216:21;11211:1;11204:9;11197:17;11193:45;11190:2;;;11241:18;;:::i;:::-;-1:-1:-1;11281:9:1;;11180:116::o;11301:125::-;11341:4;11369:1;11366;11363:8;11360:2;;;11374:18;;:::i;:::-;-1:-1:-1;11411:9:1;;11350:76::o;11431:127::-;11492:10;11487:3;11483:20;11480:1;11473:31;11523:4;11520:1;11513:15;11547:4;11544:1;11537:15;11563:127;11624:10;11619:3;11615:20;11612:1;11605:31;11655:4;11652:1;11645:15;11679:4;11676:1;11669:15;11827:131;-1:-1:-1;;;;;11902:31:1;;11892:42;;11882:2;;11948:1;11945;11938:12;11882:2;11872:86;:::o

Swarm Source

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