ETH Price: $2,635.72 (+1.74%)

Token

BoneR Inu (BONER)
 

Overview

Max Total Supply

1,000,000 BONER

Holders

11

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,469.51472514197566589 BONER

Value
$0.00
0x29a0e60a6200d2d7985b5db04cbae858095d1494
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:
BoneRInu

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 42069 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-30
*/

//SPDX-License-Identifier: MIT
/**

And with this $BONER I shall shower upon my citizens $BONE.

Total supply - 1,000,000
Max wallet - 20,000 (2%)
Max txn - 5,000 (0.5%)

Tax Distribution - 8%
Rewards - 3% 
Marketing - 3%
Liquidity - 2%

Medium - https://medium.com/@bonerinu/the-king-of-chads-vitalik-boner-3361ff9de6c
Telegram - https://t.me/BonerInuETH

 */
pragma solidity 0.8.16;

library TransferHelper {
    function safeApprove(
        address token,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(
            abi.encodeWithSelector(0x095ea7b3, to, value)
        );
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            "TransferHelper: APPROVE_FAILED"
        );
    }

    function safeTransfer(
        address token,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(
            abi.encodeWithSelector(0xa9059cbb, to, value)
        );
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            "TransferHelper: TRANSFER_FAILED"
        );
    }

    function safeTransferFrom(
        address token,
        address from,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(
            abi.encodeWithSelector(0x23b872dd, from, to, value)
        );
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            "TransferHelper: TRANSFER_FROM_FAILED"
        );
    }

    function safeTransferETH(address to, uint256 value) internal {
        (bool success, ) = to.call{value: value}(new bytes(0));
        require(success, "TransferHelper: ETH_TRANSFER_FAILED");
    }
}

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) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

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);
}

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 swapExactETHForTokens(
        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;
}

interface IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
}

contract DividendDistributor is IDividendDistributor {

    using SafeMath for uint256;
    address _token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    IDEXRouter router;
    address routerAddress = 0x03f7724180AA6b939894B5Ca4314783B0b36b329;
    IBEP20 RewardToken = IBEP20(0x9813037ee2218799597d83D4a5B6F3b6778218d9); //BONE REWARDS


    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;
    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;

    uint256 public minPeriod = 15 minutes;
    uint256 public minDistribution = 1 * (10 ** 18);

    uint256 currentIndex;

    bool initialized;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }

    constructor (address _router) {
        router = _router != address(0) ? IDEXRouter(_router) : IDEXRouter(routerAddress);
        _token = msg.sender;
    }

    function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external override onlyToken {
        minPeriod = newMinPeriod;
        minDistribution = newMinDistribution;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {

        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit() external payable override onlyToken {

        uint256 balanceBefore = RewardToken.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(RewardToken);

        router.swapExactETHForTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amount = RewardToken.balanceOf(address(this)).sub(balanceBefore);
        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

        uint256 iterations = 0;
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        while(gasUsed < gas && iterations < shareholderCount) {

            if(currentIndex >= shareholderCount){ currentIndex = 0; }

            if(shouldDistribute(shareholders[currentIndex])){
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }
    
    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
                && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            RewardToken.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
    
    function claimDividend() external {

        require(shouldDistribute(msg.sender), "Too quick. Please wait for a bit!");
        distributeDividend(msg.sender);
    }

    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }

        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}

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 RenounceOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

    string constant _name = "BoneR Inu";
    string constant _symbol = "BONER";
    uint8 constant _decimals = 18;

    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
	address marketingAddress = 0xF56659c5E5c18a02c88B49021B4A70E8AB88597A; 

    uint256 _totalSupply = 1 * 1000000 * (10 ** _decimals);
    uint256 public _maxTxAmount = 5000 * 10**18 ;
    uint256 public _walletMax = 20000 * 10**18 ;
    
    bool public restrictWhales = true;

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

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isDividendExempt;
	
    mapping (address => bool) public blackList;
	mapping (address => bool) public exchangePairs;

    uint256 public liquidityFee = 2;
    uint256 public rewardsFee = 3;
    uint256 public marketingFee = 3;
	
    uint256 public totalFee = 0;

    address public autoLiquidityReceiver = marketingAddress;

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;
    bool public tradingOpen = true;

    DividendDistributor public dividendDistributor;
    uint256 distributorGas = 500000;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

    address[] private burnAddressList;

    uint256 public swapThreshold = _totalSupply * 5 / 4000;
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor () Auth(msg.sender) {
        
        router = IDEXRouter(routerAddress);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = 2**256 - 1;
		
		exchangePairs[pair] = true;

        dividendDistributor = new DividendDistributor(0x03f7724180AA6b939894B5Ca4314783B0b36b329);

        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;

        isDividendExempt[pair] = true;
        isDividendExempt[msg.sender] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
        isDividendExempt[ZERO] = true;
        
        totalFee = liquidityFee.add(rewardsFee).add(marketingFee);

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }
    
    function name() external pure override returns (string memory) { return _name; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function getOwner() external view override returns (address) { return owner; }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    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, 2**256 - 1);
    }

    function changeTxLimit(uint256 newLimit) external authorized {
        _maxTxAmount = newLimit;
    }

    function changeWalletLimit(uint256 newLimit) external authorized {
        _walletMax  = newLimit;
    }

    function changeRestrictWhales(bool newValue) external authorized {
       restrictWhales = newValue;
    }
    
    function changeIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

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

    function changeIsDividendExempt(address holder, bool exempt) external authorized {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        
        if(exempt){
            dividendDistributor.setShare(holder, 0);
        }else{
            dividendDistributor.setShare(holder, _balances[holder]);
        }
    }

    function changeFees(uint256 newLiqFee, uint256 newRewardFee,uint256 newMarkingFee) external authorized {
        liquidityFee = newLiqFee;
        rewardsFee = newRewardFee;
	    marketingFee = newMarkingFee;
        
        totalFee = liquidityFee.add(rewardsFee);
    }

    function changeFeeReceivers(address newLiquidityReceiver) external authorized {
        autoLiquidityReceiver = newLiquidityReceiver;
    }

    function changeSwapBackSettings(bool enableSwapBack, uint256 newSwapBackLimit, bool swapByLimitOnly) external authorized {
        swapAndLiquifyEnabled  = enableSwapBack;
        swapThreshold = newSwapBackLimit;
        swapAndLiquifyByLimitOnly = swapByLimitOnly;
    }

    function changeDistributionCriteria(uint256 newinPeriod, uint256 newMinDistribution) external authorized {
        dividendDistributor.setDistributionCriteria(newinPeriod, newMinDistribution);
    }

    function changeDistributorSettings(uint256 gas) external authorized {
        require(gas < 750000);
        distributorGas = gas;
    }
	
	function addExchangePairs(address acc) external authorized {
	    exchangePairs[acc] = true;
	}
	
	function removExchangePairs(address acc) external authorized {
			delete exchangePairs[acc];
	}
    
    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] != 2**256 - 1){
            _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) {
		require(_balances[sender] > 0);
		
       
        if(inSwapAndLiquify){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen, "Trading not open yet");
        }

        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");

        if(msg.sender != pair && !inSwapAndLiquify && swapAndLiquifyEnabled && _balances[address(this)] >= swapThreshold){ swapBack(); }

        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        
        if(!isTxLimitExempt[recipient] && restrictWhales)
        {
            require(_balances[recipient].add(amount) <= _walletMax);
        }		        

        uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient] ? takeFee(sender, amount) : amount;
        _balances[recipient] = _balances[recipient].add(finalAmount);

        // Dividend tracker
        if(!isDividendExempt[sender]) {
            try dividendDistributor.setShare(sender, _balances[sender]) {} catch {}
        }

        if(!isDividendExempt[recipient]) {
            try dividendDistributor.setShare(recipient, _balances[recipient]) {} catch {} 
        }

        try dividendDistributor.process(distributorGas) {} catch {}

        emit Transfer(sender, recipient, finalAmount);
        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 takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(totalFee).div(100);
        if(block.number < launchedAt + 2){feeAmount = amount.mul(99).div(100);}
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function schwing() public onlyOwner {
        require(!tradingOpen);
        tradingOpen = true;
	    launchedAt = block.number;
    }

    function swapBack() internal lockTheSwap {
        
        uint256 tokenToSwap = _balances[address(this)];
        uint256 amountToLiquify = tokenToSwap.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = tokenToSwap.sub(amountToLiquify);

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

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;

        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
        uint256 amountETHReflection = amountETH.mul(rewardsFee).div(totalETHFee);
		uint256 amountETHMarking = amountETH.sub(amountETHReflection).sub(amountETHLiquidity);

        try dividendDistributor.deposit{value: amountETHReflection}() {} catch {}
        
        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
		
		if( amountETHMarking > 0){
			TransferHelper.safeTransferETH(marketingAddress, amountETHMarking);
		}
    }

    event AutoLiquify(uint256 amountETH, uint256 amountBONER);

}

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":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBONER","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":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"RenounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"acc","type":"address"}],"name":"addExchangePairs","outputs":[],"stateMutability":"nonpayable","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":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"changeDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"changeDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLiquidityReceiver","type":"address"}],"name":"changeFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiqFee","type":"uint256"},{"internalType":"uint256","name":"newRewardFee","type":"uint256"},{"internalType":"uint256","name":"newMarkingFee","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"changeRestrictWhales","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"},{"internalType":"bool","name":"swapByLimitOnly","type":"bool"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dividendDistributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exchangePairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","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":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","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":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","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":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"address","name":"acc","type":"address"}],"name":"removExchangePairs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"restrictWhales","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"schwing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","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":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b031990811661dead179091556003805482169055600480548216737a250d5630b4cf539739df2c5dacb4c659f2488d1790556005805490911673f56659c5e5c18a02c88b49021b4a70e8ab88597a1790556200006e6012600a6200066d565b6200007d90620f424062000685565b600681905569010f0cf064dd5920000060075569043c33c19375648000006008556009805460ff199081166001908117909255600260115560036012819055601355600060145560058054601580546001600160a01b0319166001600160a01b039092169190911790556019805490921690921790556207a120601a55601b805462ffff001916610100179055610fa091620001199162000685565b620001259190620006a7565b601d553480156200013557600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff191690921790915560048054601680546001600160a01b03909216919094168117909355835163c45a015560e01b81529351929363c45a015593818301939290918290030181865afa158015620001b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001df9190620006ca565b6001600160a01b031663c9c65396601660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000241573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002679190620006ca565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015620002b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002da9190620006ca565b601780546001600160a01b0319166001600160a01b03928316178155306000908152600b60209081526040808320601654861684528252808320600019905592549093168152601090925290819020805460ff19166001179055517303f7724180aa6b939894b5ca4314783b0b36b3299062000356906200054c565b6001600160a01b039091168152602001604051809103906000f08015801562000383573d6000803e3d6000fd5b5060198054610100600160a81b0319166101006001600160a01b0393841602179055336000818152600c60209081526040808320805460ff199081166001908117909255308086528386208054831684179055868652600d85528386208054831684179055601780548916875284872080548416851790555488168652600e85528386208054831684179055958552828520805482168317905594845281842080548616821790556002548616845281842080548616821790556003549095168352909120805490921690921790556013546012546011546200048993620004759290620004dd811b62001b7817901c565b620004dd60201b62001b781790919060201c565b601455600654336000818152600a6020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36200070b565b600080620004ec8385620006f5565b905083811015620005435760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b6114e2806200370483390190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005b15781600019048211156200059557620005956200055a565b80851615620005a357918102915b93841c939080029062000575565b509250929050565b600082620005ca5750600162000546565b81620005d95750600062000546565b8160018114620005f25760028114620005fd576200061d565b600191505062000546565b60ff8411156200061157620006116200055a565b50506001821b62000546565b5060208310610133831016604e8410600b841016171562000642575081810a62000546565b6200064e838362000570565b80600019048211156200066557620006656200055a565b029392505050565b60006200067e60ff841683620005b9565b9392505050565b6000816000190483118215151615620006a257620006a26200055a565b500290565b600082620006c557634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620006dd57600080fd5b81516001600160a01b03811681146200054357600080fd5b808201808211156200054657620005466200055a565b612fe9806200071b6000396000f3fe6080604052600436106103435760003560e01c8063807c2d9c116101b0578063ca33e64c116100ec578063e66b1d1e11610095578063f887ea401161006f578063f887ea4014610a67578063fabe628314610a94578063fe9fbb8014610ab4578063ffb54a9914610afa57600080fd5b8063e66b1d1e14610a07578063f0b37c0414610a27578063f796413514610a4757600080fd5b8063dd62ed3e116100c6578063dd62ed3e1461096f578063e5c85a6a146109c2578063e62245b6146109f257600080fd5b8063ca33e64c14610902578063d920334e1461092f578063da00097d1461094f57600080fd5b8063a8aa1b3111610159578063ad9ee39111610133578063ad9ee3911461087a578063b6a5d7de1461089a578063bad3ea6a146108ba578063bf56b371146108ec57600080fd5b8063a8aa1b311461080d578063a9059cbb1461083a578063a9f7864b1461085a57600080fd5b806395d89b411161018a57806395d89b411461079157806398118cb4146107d7578063a3a2e89e146107ed57600080fd5b8063807c2d9c146106ff578063893d20e8146107155780638b42507f1461076157600080fd5b8063436b1e641161027f5780636b67c4df1161022857806378051f4d1161020257806378051f4d146106895780637a319590146106a95780637d1db4a5146106c95780637db1342c146106df57600080fd5b80636b67c4df1461061057806370a0823114610626578063773fcb5c1461066957600080fd5b80634838d165116102595780634838d165146105a15780634a74bb02146105d1578063571ac8b0146105f057600080fd5b8063436b1e641461054757806344de2e4c14610567578063479f66d81461058157600080fd5b80632b112e49116102ec578063313ce567116102c6578063313ce567146104a957806334c70889146104c55780633f4218e0146104e75780634355855a1461051757600080fd5b80632b112e49146104425780632bb14e1d146104575780632f54bf6e1461046d57600080fd5b806318160ddd1161031d57806318160ddd146103f75780631df4ccfc1461040c57806323b872dd1461042257600080fd5b80630445b6671461034f57806306fdde0314610378578063095ea7b3146103c757600080fd5b3661034a57005b600080fd5b34801561035b57600080fd5b50610365601d5481565b6040519081526020015b60405180910390f35b34801561038457600080fd5b5060408051808201909152600981527f426f6e655220496e75000000000000000000000000000000000000000000000060208201525b60405161036f9190612b84565b3480156103d357600080fd5b506103e76103e2366004612bfa565b610b14565b604051901515815260200161036f565b34801561040357600080fd5b50600654610365565b34801561041857600080fd5b5061036560145481565b34801561042e57600080fd5b506103e761043d366004612c26565b610b8e565b34801561044e57600080fd5b50610365610c9c565b34801561046357600080fd5b5061036560125481565b34801561047957600080fd5b506103e7610488366004612c67565b60005473ffffffffffffffffffffffffffffffffffffffff91821691161490565b3480156104b557600080fd5b506040516012815260200161036f565b3480156104d157600080fd5b506104e56104e0366004612c99565b610d08565b005b3480156104f357600080fd5b506103e7610502366004612c67565b600c6020526000908152604090205460ff1681565b34801561052357600080fd5b506103e7610532366004612c67565b600e6020526000908152604090205460ff1681565b34801561055357600080fd5b506104e5610562366004612c67565b610df4565b34801561057357600080fd5b506009546103e79060ff1681565b34801561058d57600080fd5b506104e561059c366004612cd5565b610ebc565b3480156105ad57600080fd5b506103e76105bc366004612c67565b600f6020526000908152604090205460ff1681565b3480156105dd57600080fd5b50601b546103e790610100900460ff1681565b3480156105fc57600080fd5b506103e761060b366004612c67565b610f49565b34801561061c57600080fd5b5061036560135481565b34801561063257600080fd5b50610365610641366004612c67565b73ffffffffffffffffffffffffffffffffffffffff166000908152600a602052604090205490565b34801561067557600080fd5b506104e5610684366004612cee565b610f75565b34801561069557600080fd5b506104e56106a4366004612c67565b61119b565b3480156106b557600080fd5b506104e56106c4366004612d23565b6112cb565b3480156106d557600080fd5b5061036560075481565b3480156106eb57600080fd5b506104e56106fa366004612cd5565b611365565b34801561070b57600080fd5b5061036560085481565b34801561072157600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161036f565b34801561076d57600080fd5b506103e761077c366004612c67565b600d6020526000908152604090205460ff1681565b34801561079d57600080fd5b5060408051808201909152600581527f424f4e455200000000000000000000000000000000000000000000000000000060208201526103ba565b3480156107e357600080fd5b5061036560115481565b3480156107f957600080fd5b506104e5610808366004612cee565b6113e3565b34801561081957600080fd5b5060175461073c9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561084657600080fd5b506103e7610855366004612bfa565b6114b2565b34801561086657600080fd5b506104e5610875366004612d4f565b6114bf565b34801561088657600080fd5b506104e5610895366004612c67565b61159a565b3480156108a657600080fd5b506104e56108b5366004612c67565b61165f565b3480156108c657600080fd5b5060195461073c90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b3480156108f857600080fd5b5061036560185481565b34801561090e57600080fd5b5060155461073c9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561093b57600080fd5b506104e561094a366004612cd5565b611732565b34801561095b57600080fd5b50601b546103e79062010000900460ff1681565b34801561097b57600080fd5b5061036561098a366004612d71565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152600b6020908152604080832093909416825291909152205490565b3480156109ce57600080fd5b506103e76109dd366004612c67565b60106020526000908152604090205460ff1681565b3480156109fe57600080fd5b506104e56117b0565b348015610a1357600080fd5b506104e5610a22366004612daa565b611872565b348015610a3357600080fd5b506104e5610a42366004612c67565b61191c565b348015610a5357600080fd5b506104e5610a62366004612c67565b6119e9565b348015610a7357600080fd5b5060165461073c9073ffffffffffffffffffffffffffffffffffffffff1681565b348015610aa057600080fd5b506104e5610aaf366004612cee565b611aa9565b348015610ac057600080fd5b506103e7610acf366004612c67565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b348015610b0657600080fd5b506019546103e79060ff1681565b336000818152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b7c9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600b602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610c8757604080518082018252601681527f496e73756666696369656e7420416c6c6f77616e63650000000000000000000060208083019190915273ffffffffffffffffffffffffffffffffffffffff87166000908152600b82528381203382529091529190912054610c55918490611bf1565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600b602090815260408083203384529091529020555b610c92848484611c45565b90505b9392505050565b60035473ffffffffffffffffffffffffffffffffffffffff166000908152600a6020526040812054610d039060025473ffffffffffffffffffffffffffffffffffffffff166000908152600a6020526040902054610cfd9060065490612298565b90612298565b905090565b3360009081526001602052604090205460ff16610d86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a454400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b601b8054601d9390935590151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff93151561010002939093167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff90921691909117919091179055565b3360009081526001602052604090205460ff16610e6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610d7d565b73ffffffffffffffffffffffffffffffffffffffff16600090815260106020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b3360009081526001602052604090205460ff16610f35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610d7d565b620b71b08110610f4457600080fd5b601a55565b6000610b88827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b14565b3360009081526001602052604090205460ff16610fee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610d7d565b73ffffffffffffffffffffffffffffffffffffffff8216301480159061102f575060175473ffffffffffffffffffffffffffffffffffffffff838116911614155b61103857600080fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600e6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215801591909117909155611127576019546040517f14b6ca9600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260006024830152610100909204909116906314b6ca96906044015b600060405180830381600087803b15801561110b57600080fd5b505af115801561111f573d6000803e3d6000fd5b505050505050565b60195473ffffffffffffffffffffffffffffffffffffffff8381166000818152600a6020526040908190205490517f14b6ca960000000000000000000000000000000000000000000000000000000081526004810192909252602482015261010090920416906314b6ca96906044016110f1565b60005473ffffffffffffffffffffffffffffffffffffffff16331461121c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f214f574e455200000000000000000000000000000000000000000000000000006044820152606401610d7d565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811782558082526001602081815260409384902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b3360009081526001602052604090205460ff16611344576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610d7d565b60118390556012829055601381905561135d8383611b78565b601455505050565b3360009081526001602052604090205460ff166113de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610d7d565b600855565b3360009081526001602052604090205460ff1661145c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610d7d565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6000610c95338484611c45565b3360009081526001602052604090205460ff16611538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610d7d565b6019546040517f2d48e896000000000000000000000000000000000000000000000000000000008152600481018490526024810183905261010090910473ffffffffffffffffffffffffffffffffffffffff1690632d48e896906044016110f1565b3360009081526001602052604090205460ff16611613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610d7d565b73ffffffffffffffffffffffffffffffffffffffff16600090815260106020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146116e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f214f574e455200000000000000000000000000000000000000000000000000006044820152606401610d7d565b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b3360009081526001602052604090205460ff166117ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610d7d565b600755565b60005473ffffffffffffffffffffffffffffffffffffffff163314611831576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f214f574e455200000000000000000000000000000000000000000000000000006044820152606401610d7d565b60195460ff161561184157600080fd5b601980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905543601855565b3360009081526001602052604090205460ff166118eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610d7d565b600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461199d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f214f574e455200000000000000000000000000000000000000000000000000006044820152606401610d7d565b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b3360009081526001602052604090205460ff16611a62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610d7d565b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3360009081526001602052604090205460ff16611b22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610d7d565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600d6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b600080611b858385612df4565b905083811015610c95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610d7d565b60008184841115611c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7d9190612b84565b506000611c3c8486612e07565b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600a6020526040812054611c7457600080fd5b601b5460ff1615611c9157611c8a8484846122da565b9050610c95565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602052604090205460ff16158015611ced575073ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205460ff16155b15611d5e5760195460ff16611d5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f54726164696e67206e6f74206f70656e207965740000000000000000000000006044820152606401610d7d565b60075482111580611d94575073ffffffffffffffffffffffffffffffffffffffff84166000908152600d602052604090205460ff165b611dfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f5458204c696d69742045786365656465640000000000000000000000000000006044820152606401610d7d565b60175473ffffffffffffffffffffffffffffffffffffffff163314801590611e255750601b5460ff16155b8015611e385750601b54610100900460ff165b8015611e555750601d54306000908152600a602052604090205410155b15611e6257611e626123f0565b604080518082018252601481527f496e73756666696369656e742042616c616e636500000000000000000000000060208083019190915273ffffffffffffffffffffffffffffffffffffffff87166000908152600a9091529190912054611eca918490611bf1565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600a60209081526040808320949094559186168152600d909152205460ff16158015611f15575060095460ff165b15611f585760085473ffffffffffffffffffffffffffffffffffffffff84166000908152600a6020526040902054611f4d9084611b78565b1115611f5857600080fd5b73ffffffffffffffffffffffffffffffffffffffff84166000908152600c602052604081205460ff16158015611fb4575073ffffffffffffffffffffffffffffffffffffffff84166000908152600c602052604090205460ff16155b611fbe5782611fc8565b611fc88584612835565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600a6020526040902054909150611ffb9082611b78565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600a60209081526040808320949094559188168152600e909152205460ff166120d75760195473ffffffffffffffffffffffffffffffffffffffff8681166000818152600a6020526040908190205490517f14b6ca960000000000000000000000000000000000000000000000000000000081526004810192909252602482015261010090920416906314b6ca9690604401600060405180830381600087803b1580156120c457600080fd5b505af19250505080156120d5575060015b505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600e602052604090205460ff166121a05760195473ffffffffffffffffffffffffffffffffffffffff8581166000818152600a6020526040908190205490517f14b6ca960000000000000000000000000000000000000000000000000000000081526004810192909252602482015261010090920416906314b6ca9690604401600060405180830381600087803b15801561218d57600080fd5b505af192505050801561219e575060015b505b601954601a546040517fffb2c479000000000000000000000000000000000000000000000000000000008152600481019190915261010090910473ffffffffffffffffffffffffffffffffffffffff169063ffb2c47990602401600060405180830381600087803b15801561221457600080fd5b505af1925050508015612225575060015b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161228591815260200190565b60405180910390a3506001949350505050565b6000610c9583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bf1565b604080518082018252601481527f496e73756666696369656e742042616c616e636500000000000000000000000060208083019190915273ffffffffffffffffffffffffffffffffffffffff86166000908152600a90915291822054612341918490611bf1565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600a6020526040808220939093559085168152205461237d9083611b78565b73ffffffffffffffffffffffffffffffffffffffff8085166000818152600a602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906123de9086815260200190565b60405180910390a35060019392505050565b601b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055306000908152600a602052604081205460145460115491929161244f9160029161244991908290879061290f565b906129c7565b9050600061245d8383612298565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061249757612497612e1a565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152601654604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015612516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253a9190612e49565b8160018151811061254d5761254d612e1a565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526016546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac947906125b9908590600090869030904290600401612e66565b600060405180830381600087803b1580156125d357600080fd5b505af11580156125e7573d6000803e3d6000fd5b50506011544792506000915061260b906126029060026129c7565b60145490612298565b9050600061262d6002612449846124496011548861290f90919063ffffffff16565b9050600061264a836124496012548761290f90919063ffffffff16565b9050600061265c83610cfd8785612298565b9050601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b1580156126c857600080fd5b505af1935050505080156126da575060015b5087156127d9576016546015546040517ff305d719000000000000000000000000000000000000000000000000000000008152306004820152602481018b9052600060448201819052606482015273ffffffffffffffffffffffffffffffffffffffff91821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af1158015612777573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061279c9190612ef1565b505060408051858152602081018b90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b8015612802576005546128029073ffffffffffffffffffffffffffffffffffffffff1682612a09565b5050601b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905550505050505050565b60008061285260646124496014548661290f90919063ffffffff16565b905060185460026128639190612df4565b43101561287d5761287a606461244985606361290f565b90505b306000908152600a60205260409020546128979082611b78565b306000818152600a60205260409081902092909255905173ffffffffffffffffffffffffffffffffffffffff8616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906128f59085815260200190565b60405180910390a36129078382612298565b949350505050565b60008260000361292157506000610b88565b600061292d8385612f1f565b90508261293a8583612f5c565b14610c95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152608401610d7d565b6000610c9583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b18565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff8416908390604051612a409190612f97565b60006040518083038185875af1925050503d8060008114612a7d576040519150601f19603f3d011682016040523d82523d6000602084013e612a82565b606091505b5050905080612b13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960448201527f4c454400000000000000000000000000000000000000000000000000000000006064820152608401610d7d565b505050565b60008183612b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7d9190612b84565b506000611c3c8486612f5c565b60005b83811015612b7b578181015183820152602001612b63565b50506000910152565b6020815260008251806020840152612ba3816040850160208701612b60565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b73ffffffffffffffffffffffffffffffffffffffff81168114612bf757600080fd5b50565b60008060408385031215612c0d57600080fd5b8235612c1881612bd5565b946020939093013593505050565b600080600060608486031215612c3b57600080fd5b8335612c4681612bd5565b92506020840135612c5681612bd5565b929592945050506040919091013590565b600060208284031215612c7957600080fd5b8135610c9581612bd5565b80358015158114612c9457600080fd5b919050565b600080600060608486031215612cae57600080fd5b612cb784612c84565b925060208401359150612ccc60408501612c84565b90509250925092565b600060208284031215612ce757600080fd5b5035919050565b60008060408385031215612d0157600080fd5b8235612d0c81612bd5565b9150612d1a60208401612c84565b90509250929050565b600080600060608486031215612d3857600080fd5b505081359360208301359350604090920135919050565b60008060408385031215612d6257600080fd5b50508035926020909101359150565b60008060408385031215612d8457600080fd5b8235612d8f81612bd5565b91506020830135612d9f81612bd5565b809150509250929050565b600060208284031215612dbc57600080fd5b610c9582612c84565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610b8857610b88612dc5565b81810381811115610b8857610b88612dc5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215612e5b57600080fd5b8151610c9581612bd5565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612ec357845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101612e91565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b600080600060608486031215612f0657600080fd5b8351925060208401519150604084015190509250925092565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f5757612f57612dc5565b500290565b600082612f92577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008251612fa9818460208701612b60565b919091019291505056fea26469706673582212206cf11a597d06fa9c13420c4be5f33b9fd7bea9dd0679af3e0d38f985fb120ef364736f6c634300081000336080604052600280546001600160a01b03199081167303f7724180aa6b939894b5ca4314783b0b36b3291790915560038054909116739813037ee2218799597d83d4a5b6f3b6778218d91790556ec097ce7bc90715b34b9f1000000000600c55610384600d55670de0b6b3a7640000600e5534801561007d57600080fd5b506040516114e23803806114e283398101604081905261009c916100ed565b6001600160a01b0381166100bb576002546001600160a01b03166100bd565b805b600180546001600160a01b03929092166001600160a01b031992831617905560008054909116331790555061011d565b6000602082840312156100ff57600080fd5b81516001600160a01b038116811461011657600080fd5b9392505050565b6113b68061012c6000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610224578063f0fc6bca1461023a578063ffb2c4791461024f578063ffd49c841461026f57600080fd5b8063ce7c2ac2146101af578063d0e30db014610206578063e2d2e2191461020e57600080fd5b80632d48e896116100bb5780632d48e8961461014d5780633a98ef391461016d5780634fab0ae814610183578063997664d71461019957600080fd5b806311ce023d146100e257806314b6ca961461010b57806328fd31981461012d575b600080fd5b3480156100ee57600080fd5b506100f8600c5481565b6040519081526020015b60405180910390f35b34801561011757600080fd5b5061012b610126366004611051565b610285565b005b34801561013957600080fd5b506100f861014836600461107d565b61047d565b34801561015957600080fd5b5061012b61016836600461109a565b61052f565b34801561017957600080fd5b506100f860085481565b34801561018f57600080fd5b506100f8600e5481565b3480156101a557600080fd5b506100f860095481565b3480156101bb57600080fd5b506101eb6101ca36600461107d565b60076020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610102565b61012b61055e565b34801561021a57600080fd5b506100f8600b5481565b34801561023057600080fd5b506100f8600a5481565b34801561024657600080fd5b5061012b6108a0565b34801561025b57600080fd5b5061012b61026a3660046110bc565b610945565b34801561027b57600080fd5b506100f8600d5481565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102a957600080fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260076020526040902054156102dd576102dd82610a71565b600081118015610310575073ffffffffffffffffffffffffffffffffffffffff8216600090815260076020526040902054155b1561039b576004805473ffffffffffffffffffffffffffffffffffffffff84166000818152600560205260408120839055600183018455929092527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690911790556103db565b801580156103cd575073ffffffffffffffffffffffffffffffffffffffff821660009081526007602052604090205415155b156103db576103db82610bdc565b73ffffffffffffffffffffffffffffffffffffffff821660009081526007602052604090205460085461041991839161041391610d66565b90610db1565b60085573ffffffffffffffffffffffffffffffffffffffff8216600090815260076020526040902081905561044d81610e2a565b73ffffffffffffffffffffffffffffffffffffffff90921660009081526007602052604090206001019190915550565b73ffffffffffffffffffffffffffffffffffffffff811660009081526007602052604081205481036104b157506000919050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600760205260408120546104e090610e2a565b73ffffffffffffffffffffffffffffffffffffffff841660009081526007602052604090206001015490915080821161051d575060009392505050565b6105278282610d66565b949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461055357600080fd5b600d91909155600e55565b60005473ffffffffffffffffffffffffffffffffffffffff16331461058257600080fd5b6003546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156105f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061591906110d5565b60408051600280825260608201835292935060009290916020830190803683375050600154604080517fad5c4648000000000000000000000000000000000000000000000000000000008152905193945073ffffffffffffffffffffffffffffffffffffffff9091169263ad5c4648925060048083019260209291908290030181865afa1580156106aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ce91906110ee565b816000815181106106e1576106e161110b565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201015260035482519116908290600190811061071f5761071f61110b565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526001546040517f7ff36ab5000000000000000000000000000000000000000000000000000000008152911690637ff36ab590349061078b9060009086903090429060040161113a565b6000604051808303818588803b1580156107a457600080fd5b505af11580156107b8573d6000803e3d6000fd5b50506003546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000945061085e935086925073ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610834573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085891906110d5565b90610d66565b60095490915061086e9082610db1565b600955600854600c546108989161088f916108899085610e47565b90610eff565b600b5490610db1565b600b55505050565b6108a933610f41565b61093a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f546f6f20717569636b2e20506c65617365207761697420666f7220612062697460448201527f210000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61094333610a71565b565b60005473ffffffffffffffffffffffffffffffffffffffff16331461096957600080fd5b6004546000819003610979575050565b60008060005a90505b848210801561099057508383105b15610a695783600f54106109a4576000600f555b6109e36004600f54815481106109bc576109bc61110b565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16610f41565b15610a2757610a276004600f5481548110610a0057610a0061110b565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16610a71565b610a3c610a355a8390610d66565b8390610db1565b91505a600f80549192506000610a51836111ed565b91905055508280610a61906111ed565b935050610982565b505050505b50565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600760205260408120549003610aa05750565b6000610aab8261047d565b90508015610bd857600a54610ac09082610db1565b600a556003546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610b3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b609190611225565b5073ffffffffffffffffffffffffffffffffffffffff821660009081526006602090815260408083204290556007909152902060020154610ba19082610db1565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260076020526040902060028101919091555461044d90610e2a565b5050565b60048054610bec90600190611247565b81548110610bfc57610bfc61110b565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff84811684526005909252604090922054600480549290931692918110610c4757610c4761110b565b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff948516179055918316815260059182905260408120546004805491939291610cb890600190611247565b81548110610cc857610cc861110b565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff1683528201929092526040019020556004805480610d0b57610d0b61125a565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905501905550565b6000610da883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f93565b90505b92915050565b600080610dbe8385611289565b905083811015610da8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610931565b6000610dab600c54610889600b5485610e4790919063ffffffff16565b600082600003610e5957506000610dab565b6000610e65838561129c565b905082610e7285836112d9565b14610da8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152608401610931565b6000610da883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610fe7565b600d5473ffffffffffffffffffffffffffffffffffffffff821660009081526006602052604081205490914291610f789190611289565b108015610dab5750600e54610f8c8361047d565b1192915050565b60008184841115610fd1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109319190611314565b506000610fde8486611247565b95945050505050565b60008183611022576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109319190611314565b506000610fde84866112d9565b73ffffffffffffffffffffffffffffffffffffffff81168114610a6e57600080fd5b6000806040838503121561106457600080fd5b823561106f8161102f565b946020939093013593505050565b60006020828403121561108f57600080fd5b8135610da88161102f565b600080604083850312156110ad57600080fd5b50508035926020909101359150565b6000602082840312156110ce57600080fd5b5035919050565b6000602082840312156110e757600080fd5b5051919050565b60006020828403121561110057600080fd5b8151610da88161102f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b8181101561119157845173ffffffffffffffffffffffffffffffffffffffff168352938301939183019160010161115f565b505073ffffffffffffffffffffffffffffffffffffffff9690961660408501525050506060015292915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361121e5761121e6111be565b5060010190565b60006020828403121561123757600080fd5b81518015158114610da857600080fd5b81810381811115610dab57610dab6111be565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b80820180821115610dab57610dab6111be565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156112d4576112d46111be565b500290565b60008261130f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208083528351808285015260005b8181101561134157858101830151858201604001528201611325565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509291505056fea264697066735822122023e5a17f925b6e3e6c6de65c57a822e964bd962fb0c020b029b693a0dc95962064736f6c63430008100033

Deployed Bytecode

0x6080604052600436106103435760003560e01c8063807c2d9c116101b0578063ca33e64c116100ec578063e66b1d1e11610095578063f887ea401161006f578063f887ea4014610a67578063fabe628314610a94578063fe9fbb8014610ab4578063ffb54a9914610afa57600080fd5b8063e66b1d1e14610a07578063f0b37c0414610a27578063f796413514610a4757600080fd5b8063dd62ed3e116100c6578063dd62ed3e1461096f578063e5c85a6a146109c2578063e62245b6146109f257600080fd5b8063ca33e64c14610902578063d920334e1461092f578063da00097d1461094f57600080fd5b8063a8aa1b3111610159578063ad9ee39111610133578063ad9ee3911461087a578063b6a5d7de1461089a578063bad3ea6a146108ba578063bf56b371146108ec57600080fd5b8063a8aa1b311461080d578063a9059cbb1461083a578063a9f7864b1461085a57600080fd5b806395d89b411161018a57806395d89b411461079157806398118cb4146107d7578063a3a2e89e146107ed57600080fd5b8063807c2d9c146106ff578063893d20e8146107155780638b42507f1461076157600080fd5b8063436b1e641161027f5780636b67c4df1161022857806378051f4d1161020257806378051f4d146106895780637a319590146106a95780637d1db4a5146106c95780637db1342c146106df57600080fd5b80636b67c4df1461061057806370a0823114610626578063773fcb5c1461066957600080fd5b80634838d165116102595780634838d165146105a15780634a74bb02146105d1578063571ac8b0146105f057600080fd5b8063436b1e641461054757806344de2e4c14610567578063479f66d81461058157600080fd5b80632b112e49116102ec578063313ce567116102c6578063313ce567146104a957806334c70889146104c55780633f4218e0146104e75780634355855a1461051757600080fd5b80632b112e49146104425780632bb14e1d146104575780632f54bf6e1461046d57600080fd5b806318160ddd1161031d57806318160ddd146103f75780631df4ccfc1461040c57806323b872dd1461042257600080fd5b80630445b6671461034f57806306fdde0314610378578063095ea7b3146103c757600080fd5b3661034a57005b600080fd5b34801561035b57600080fd5b50610365601d5481565b6040519081526020015b60405180910390f35b34801561038457600080fd5b5060408051808201909152600981527f426f6e655220496e75000000000000000000000000000000000000000000000060208201525b60405161036f9190612b84565b3480156103d357600080fd5b506103e76103e2366004612bfa565b610b14565b604051901515815260200161036f565b34801561040357600080fd5b50600654610365565b34801561041857600080fd5b5061036560145481565b34801561042e57600080fd5b506103e761043d366004612c26565b610b8e565b34801561044e57600080fd5b50610365610c9c565b34801561046357600080fd5b5061036560125481565b34801561047957600080fd5b506103e7610488366004612c67565b60005473ffffffffffffffffffffffffffffffffffffffff91821691161490565b3480156104b557600080fd5b506040516012815260200161036f565b3480156104d157600080fd5b506104e56104e0366004612c99565b610d08565b005b3480156104f357600080fd5b506103e7610502366004612c67565b600c6020526000908152604090205460ff1681565b34801561052357600080fd5b506103e7610532366004612c67565b600e6020526000908152604090205460ff1681565b34801561055357600080fd5b506104e5610562366004612c67565b610df4565b34801561057357600080fd5b506009546103e79060ff1681565b34801561058d57600080fd5b506104e561059c366004612cd5565b610ebc565b3480156105ad57600080fd5b506103e76105bc366004612c67565b600f6020526000908152604090205460ff1681565b3480156105dd57600080fd5b50601b546103e790610100900460ff1681565b3480156105fc57600080fd5b506103e761060b366004612c67565b610f49565b34801561061c57600080fd5b5061036560135481565b34801561063257600080fd5b50610365610641366004612c67565b73ffffffffffffffffffffffffffffffffffffffff166000908152600a602052604090205490565b34801561067557600080fd5b506104e5610684366004612cee565b610f75565b34801561069557600080fd5b506104e56106a4366004612c67565b61119b565b3480156106b557600080fd5b506104e56106c4366004612d23565b6112cb565b3480156106d557600080fd5b5061036560075481565b3480156106eb57600080fd5b506104e56106fa366004612cd5565b611365565b34801561070b57600080fd5b5061036560085481565b34801561072157600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161036f565b34801561076d57600080fd5b506103e761077c366004612c67565b600d6020526000908152604090205460ff1681565b34801561079d57600080fd5b5060408051808201909152600581527f424f4e455200000000000000000000000000000000000000000000000000000060208201526103ba565b3480156107e357600080fd5b5061036560115481565b3480156107f957600080fd5b506104e5610808366004612cee565b6113e3565b34801561081957600080fd5b5060175461073c9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561084657600080fd5b506103e7610855366004612bfa565b6114b2565b34801561086657600080fd5b506104e5610875366004612d4f565b6114bf565b34801561088657600080fd5b506104e5610895366004612c67565b61159a565b3480156108a657600080fd5b506104e56108b5366004612c67565b61165f565b3480156108c657600080fd5b5060195461073c90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b3480156108f857600080fd5b5061036560185481565b34801561090e57600080fd5b5060155461073c9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561093b57600080fd5b506104e561094a366004612cd5565b611732565b34801561095b57600080fd5b50601b546103e79062010000900460ff1681565b34801561097b57600080fd5b5061036561098a366004612d71565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152600b6020908152604080832093909416825291909152205490565b3480156109ce57600080fd5b506103e76109dd366004612c67565b60106020526000908152604090205460ff1681565b3480156109fe57600080fd5b506104e56117b0565b348015610a1357600080fd5b506104e5610a22366004612daa565b611872565b348015610a3357600080fd5b506104e5610a42366004612c67565b61191c565b348015610a5357600080fd5b506104e5610a62366004612c67565b6119e9565b348015610a7357600080fd5b5060165461073c9073ffffffffffffffffffffffffffffffffffffffff1681565b348015610aa057600080fd5b506104e5610aaf366004612cee565b611aa9565b348015610ac057600080fd5b506103e7610acf366004612c67565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b348015610b0657600080fd5b506019546103e79060ff1681565b336000818152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b7c9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600b602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610c8757604080518082018252601681527f496e73756666696369656e7420416c6c6f77616e63650000000000000000000060208083019190915273ffffffffffffffffffffffffffffffffffffffff87166000908152600b82528381203382529091529190912054610c55918490611bf1565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600b602090815260408083203384529091529020555b610c92848484611c45565b90505b9392505050565b60035473ffffffffffffffffffffffffffffffffffffffff166000908152600a6020526040812054610d039060025473ffffffffffffffffffffffffffffffffffffffff166000908152600a6020526040902054610cfd9060065490612298565b90612298565b905090565b3360009081526001602052604090205460ff16610d86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a454400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b601b8054601d9390935590151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff93151561010002939093167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff90921691909117919091179055565b3360009081526001602052604090205460ff16610e6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610d7d565b73ffffffffffffffffffffffffffffffffffffffff16600090815260106020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b3360009081526001602052604090205460ff16610f35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610d7d565b620b71b08110610f4457600080fd5b601a55565b6000610b88827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b14565b3360009081526001602052604090205460ff16610fee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610d7d565b73ffffffffffffffffffffffffffffffffffffffff8216301480159061102f575060175473ffffffffffffffffffffffffffffffffffffffff838116911614155b61103857600080fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600e6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215801591909117909155611127576019546040517f14b6ca9600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260006024830152610100909204909116906314b6ca96906044015b600060405180830381600087803b15801561110b57600080fd5b505af115801561111f573d6000803e3d6000fd5b505050505050565b60195473ffffffffffffffffffffffffffffffffffffffff8381166000818152600a6020526040908190205490517f14b6ca960000000000000000000000000000000000000000000000000000000081526004810192909252602482015261010090920416906314b6ca96906044016110f1565b60005473ffffffffffffffffffffffffffffffffffffffff16331461121c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f214f574e455200000000000000000000000000000000000000000000000000006044820152606401610d7d565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811782558082526001602081815260409384902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b3360009081526001602052604090205460ff16611344576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610d7d565b60118390556012829055601381905561135d8383611b78565b601455505050565b3360009081526001602052604090205460ff166113de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610d7d565b600855565b3360009081526001602052604090205460ff1661145c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610d7d565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6000610c95338484611c45565b3360009081526001602052604090205460ff16611538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610d7d565b6019546040517f2d48e896000000000000000000000000000000000000000000000000000000008152600481018490526024810183905261010090910473ffffffffffffffffffffffffffffffffffffffff1690632d48e896906044016110f1565b3360009081526001602052604090205460ff16611613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610d7d565b73ffffffffffffffffffffffffffffffffffffffff16600090815260106020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146116e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f214f574e455200000000000000000000000000000000000000000000000000006044820152606401610d7d565b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055565b3360009081526001602052604090205460ff166117ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610d7d565b600755565b60005473ffffffffffffffffffffffffffffffffffffffff163314611831576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f214f574e455200000000000000000000000000000000000000000000000000006044820152606401610d7d565b60195460ff161561184157600080fd5b601980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905543601855565b3360009081526001602052604090205460ff166118eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610d7d565b600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461199d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f214f574e455200000000000000000000000000000000000000000000000000006044820152606401610d7d565b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b3360009081526001602052604090205460ff16611a62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610d7d565b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3360009081526001602052604090205460ff16611b22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610d7d565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600d6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b600080611b858385612df4565b905083811015610c95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610d7d565b60008184841115611c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7d9190612b84565b506000611c3c8486612e07565b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600a6020526040812054611c7457600080fd5b601b5460ff1615611c9157611c8a8484846122da565b9050610c95565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602052604090205460ff16158015611ced575073ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205460ff16155b15611d5e5760195460ff16611d5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f54726164696e67206e6f74206f70656e207965740000000000000000000000006044820152606401610d7d565b60075482111580611d94575073ffffffffffffffffffffffffffffffffffffffff84166000908152600d602052604090205460ff165b611dfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f5458204c696d69742045786365656465640000000000000000000000000000006044820152606401610d7d565b60175473ffffffffffffffffffffffffffffffffffffffff163314801590611e255750601b5460ff16155b8015611e385750601b54610100900460ff165b8015611e555750601d54306000908152600a602052604090205410155b15611e6257611e626123f0565b604080518082018252601481527f496e73756666696369656e742042616c616e636500000000000000000000000060208083019190915273ffffffffffffffffffffffffffffffffffffffff87166000908152600a9091529190912054611eca918490611bf1565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600a60209081526040808320949094559186168152600d909152205460ff16158015611f15575060095460ff165b15611f585760085473ffffffffffffffffffffffffffffffffffffffff84166000908152600a6020526040902054611f4d9084611b78565b1115611f5857600080fd5b73ffffffffffffffffffffffffffffffffffffffff84166000908152600c602052604081205460ff16158015611fb4575073ffffffffffffffffffffffffffffffffffffffff84166000908152600c602052604090205460ff16155b611fbe5782611fc8565b611fc88584612835565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600a6020526040902054909150611ffb9082611b78565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600a60209081526040808320949094559188168152600e909152205460ff166120d75760195473ffffffffffffffffffffffffffffffffffffffff8681166000818152600a6020526040908190205490517f14b6ca960000000000000000000000000000000000000000000000000000000081526004810192909252602482015261010090920416906314b6ca9690604401600060405180830381600087803b1580156120c457600080fd5b505af19250505080156120d5575060015b505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600e602052604090205460ff166121a05760195473ffffffffffffffffffffffffffffffffffffffff8581166000818152600a6020526040908190205490517f14b6ca960000000000000000000000000000000000000000000000000000000081526004810192909252602482015261010090920416906314b6ca9690604401600060405180830381600087803b15801561218d57600080fd5b505af192505050801561219e575060015b505b601954601a546040517fffb2c479000000000000000000000000000000000000000000000000000000008152600481019190915261010090910473ffffffffffffffffffffffffffffffffffffffff169063ffb2c47990602401600060405180830381600087803b15801561221457600080fd5b505af1925050508015612225575060015b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161228591815260200190565b60405180910390a3506001949350505050565b6000610c9583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bf1565b604080518082018252601481527f496e73756666696369656e742042616c616e636500000000000000000000000060208083019190915273ffffffffffffffffffffffffffffffffffffffff86166000908152600a90915291822054612341918490611bf1565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600a6020526040808220939093559085168152205461237d9083611b78565b73ffffffffffffffffffffffffffffffffffffffff8085166000818152600a602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906123de9086815260200190565b60405180910390a35060019392505050565b601b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055306000908152600a602052604081205460145460115491929161244f9160029161244991908290879061290f565b906129c7565b9050600061245d8383612298565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061249757612497612e1a565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152601654604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015612516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253a9190612e49565b8160018151811061254d5761254d612e1a565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526016546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac947906125b9908590600090869030904290600401612e66565b600060405180830381600087803b1580156125d357600080fd5b505af11580156125e7573d6000803e3d6000fd5b50506011544792506000915061260b906126029060026129c7565b60145490612298565b9050600061262d6002612449846124496011548861290f90919063ffffffff16565b9050600061264a836124496012548761290f90919063ffffffff16565b9050600061265c83610cfd8785612298565b9050601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b1580156126c857600080fd5b505af1935050505080156126da575060015b5087156127d9576016546015546040517ff305d719000000000000000000000000000000000000000000000000000000008152306004820152602481018b9052600060448201819052606482015273ffffffffffffffffffffffffffffffffffffffff91821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af1158015612777573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061279c9190612ef1565b505060408051858152602081018b90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b8015612802576005546128029073ffffffffffffffffffffffffffffffffffffffff1682612a09565b5050601b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905550505050505050565b60008061285260646124496014548661290f90919063ffffffff16565b905060185460026128639190612df4565b43101561287d5761287a606461244985606361290f565b90505b306000908152600a60205260409020546128979082611b78565b306000818152600a60205260409081902092909255905173ffffffffffffffffffffffffffffffffffffffff8616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906128f59085815260200190565b60405180910390a36129078382612298565b949350505050565b60008260000361292157506000610b88565b600061292d8385612f1f565b90508261293a8583612f5c565b14610c95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152608401610d7d565b6000610c9583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b18565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff8416908390604051612a409190612f97565b60006040518083038185875af1925050503d8060008114612a7d576040519150601f19603f3d011682016040523d82523d6000602084013e612a82565b606091505b5050905080612b13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960448201527f4c454400000000000000000000000000000000000000000000000000000000006064820152608401610d7d565b505050565b60008183612b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7d9190612b84565b506000611c3c8486612f5c565b60005b83811015612b7b578181015183820152602001612b63565b50506000910152565b6020815260008251806020840152612ba3816040850160208701612b60565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b73ffffffffffffffffffffffffffffffffffffffff81168114612bf757600080fd5b50565b60008060408385031215612c0d57600080fd5b8235612c1881612bd5565b946020939093013593505050565b600080600060608486031215612c3b57600080fd5b8335612c4681612bd5565b92506020840135612c5681612bd5565b929592945050506040919091013590565b600060208284031215612c7957600080fd5b8135610c9581612bd5565b80358015158114612c9457600080fd5b919050565b600080600060608486031215612cae57600080fd5b612cb784612c84565b925060208401359150612ccc60408501612c84565b90509250925092565b600060208284031215612ce757600080fd5b5035919050565b60008060408385031215612d0157600080fd5b8235612d0c81612bd5565b9150612d1a60208401612c84565b90509250929050565b600080600060608486031215612d3857600080fd5b505081359360208301359350604090920135919050565b60008060408385031215612d6257600080fd5b50508035926020909101359150565b60008060408385031215612d8457600080fd5b8235612d8f81612bd5565b91506020830135612d9f81612bd5565b809150509250929050565b600060208284031215612dbc57600080fd5b610c9582612c84565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610b8857610b88612dc5565b81810381811115610b8857610b88612dc5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215612e5b57600080fd5b8151610c9581612bd5565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612ec357845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101612e91565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b600080600060608486031215612f0657600080fd5b8351925060208401519150604084015190509250925092565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f5757612f57612dc5565b500290565b600082612f92577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008251612fa9818460208701612b60565b919091019291505056fea26469706673582212206cf11a597d06fa9c13420c4be5f33b9fd7bea9dd0679af3e0d38f985fb120ef364736f6c63430008100033

Deployed Bytecode Sourcemap

13241:10987:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14920:54;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;14920:54:0;;;;;;;;16121:80;;;;;;;;;;-1:-1:-1;16193:5:0;;;;;;;;;;;;;;;;;16121:80;;;;;;;:::i;16965:216::-;;;;;;;;;;-1:-1:-1;16965:216:0;;;;;:::i;:::-;;:::i;:::-;;;1555:14:1;;1548:22;1530:41;;1518:2;1503:18;16965:216:0;1390:187:1;16383:88:0;;;;;;;;;;-1:-1:-1;16456:12:0;;16383:88;;14426:27;;;;;;;;;;;;;;;;19759:371;;;;;;;;;;-1:-1:-1;19759:371:0;;;;;:::i;:::-;;:::i;16563:142::-;;;;;;;;;;;;;:::i;14349:29::-;;;;;;;;;;;;;;;;12611:103;;;;;;;;;;-1:-1:-1;12611:103:0;;;;;:::i;:::-;12666:4;12701:5;;12690:16;;;12701:5;;12690:16;;12611:103;16297:80;;;;;;;;;;-1:-1:-1;16297:80:0;;13432:2;2437:36:1;;2425:2;2410:18;16297:80:0;2295:184:1;18746:276:0;;;;;;;;;;-1:-1:-1;18746:276:0;;;;;:::i;:::-;;:::i;:::-;;14045:44;;;;;;;;;;-1:-1:-1;14045:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14151:49;;;;;;;;;;-1:-1:-1;14151:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19383:97;;;;;;;;;;-1:-1:-1;19383:97:0;;;;;:::i;:::-;;:::i;13888:33::-;;;;;;;;;;-1:-1:-1;13888:33:0;;;;;;;;19238:139;;;;;;;;;;-1:-1:-1;19238:139:0;;;;;:::i;:::-;;:::i;14210:42::-;;;;;;;;;;-1:-1:-1;14210:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14777:40;;;;;;;;;;-1:-1:-1;14777:40:0;;;;;;;;;;;17189:115;;;;;;;;;;-1:-1:-1;17189:115:0;;;;;:::i;:::-;;:::i;14385:31::-;;;;;;;;;;;;;;;;16713:105;;;;;;;;;;-1:-1:-1;16713:105:0;;;;;:::i;:::-;16797:18;;16779:7;16797:18;;;:9;:18;;;;;;;16713:105;17927:376;;;;;;;;;;-1:-1:-1;17927:376:0;;;;;:::i;:::-;;:::i;13011:173::-;;;;;;;;;;-1:-1:-1;13011:173:0;;;;;:::i;:::-;;:::i;18311:278::-;;;;;;;;;;-1:-1:-1;18311:278:0;;;;;:::i;:::-;;:::i;13781:43::-;;;;;;;;;;;;;;;;17423:106;;;;;;;;;;-1:-1:-1;17423:106:0;;;;;:::i;:::-;;:::i;13832:42::-;;;;;;;;;;;;;;;;16477:78;;;;;;;;;;-1:-1:-1;16529:7:0;16547:5;;;16477:78;;;4232:42:1;4220:55;;;4202:74;;4190:2;4175:18;16477:78:0;4056:226:1;14096:48:0;;;;;;;;;;-1:-1:-1;14096:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16207:84;;;;;;;;;;-1:-1:-1;16281:7:0;;;;;;;;;;;;;;;;;16207:84;;14311:31;;;;;;;;;;;;;;;;17657:123;;;;;;;;;;-1:-1:-1;17657:123:0;;;;;:::i;:::-;;:::i;14557:19::-;;;;;;;;;;-1:-1:-1;14557:19:0;;;;;;;;19595:156;;;;;;;;;;-1:-1:-1;19595:156:0;;;;;:::i;:::-;;:::i;19030:200::-;;;;;;;;;;-1:-1:-1;19030:200:0;;;;;:::i;:::-;;:::i;19486:97::-;;;;;;;;;;-1:-1:-1;19486:97:0;;;;;:::i;:::-;;:::i;12284:94::-;;;;;;;;;;-1:-1:-1;12284:94:0;;;;;:::i;:::-;;:::i;14656:46::-;;;;;;;;;;-1:-1:-1;14656:46:0;;;;;;;;;;;14585:25;;;;;;;;;;;;;;;;14462:55;;;;;;;;;;-1:-1:-1;14462:55:0;;;;;;;;17312:103;;;;;;;;;;-1:-1:-1;17312:103:0;;;;;:::i;:::-;;:::i;14824:45::-;;;;;;;;;;-1:-1:-1;14824:45:0;;;;;;;;;;;16824:133;;;;;;;;;;-1:-1:-1;16824:133:0;;;;;:::i;:::-;16926:19;;;;16908:7;16926:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;16824:133;14256:46;;;;;;;;;;-1:-1:-1;14256:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;22446:138;;;;;;;;;;;;;:::i;17537:108::-;;;;;;;;;;-1:-1:-1;17537:108:0;;;;;:::i;:::-;;:::i;12454:97::-;;;;;;;;;;-1:-1:-1;12454:97:0;;;;;:::i;:::-;;:::i;18597:141::-;;;;;;;;;;-1:-1:-1;18597:141:0;;;;;:::i;:::-;;:::i;14526:24::-;;;;;;;;;;-1:-1:-1;14526:24:0;;;;;;;;17788:131;;;;;;;;;;-1:-1:-1;17788:131:0;;;;;:::i;:::-;;:::i;12785:107::-;;;;;;;;;;-1:-1:-1;12785:107:0;;;;;:::i;:::-;12865:19;;12841:4;12865:19;;;:14;:19;;;;;;;;;12785:107;14617:30;;;;;;;;;;-1:-1:-1;14617:30:0;;;;;;;;16965:216;17069:10;17040:4;17057:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;:41;;;17114:37;17040:4;;17057:32;;17114:37;;;;17092:6;160:25:1;;148:2;133:18;;14:177;17114:37:0;;;;;;;;-1:-1:-1;17169:4:0;16965:216;;;;;:::o;19759:371::-;19889:19;;;19859:4;19889:19;;;:11;:19;;;;;;;;19909:10;19889:31;;;;;;;;19924:10;19889:45;19886:179;;19984:69;;;;;;;;;;;;;;;;;;;;:19;;;-1:-1:-1;19984:19:0;;;:11;:19;;;;;20004:10;19984:31;;;;;;;;;;:69;;20020:6;;19984:35;:69::i;:::-;19950:19;;;;;;;:11;:19;;;;;;;;19970:10;19950:31;;;;;;;:103;19886:179;20082:40;20096:6;20104:9;20115:6;20082:13;:40::i;:::-;20075:47;;19759:371;;;;;;:::o;16563:142::-;16691:4;;;;16616:7;16797:18;;;:9;:18;;;;;;16643:54;;16670:4;;;;16779:7;16797:18;;;:9;:18;;;;;;16643:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;16636:61;;16563:142;:::o;18746:276::-;12182:10;12841:4;12865:19;;;:14;:19;;;;;;;;12161:48;;;;;;;5828:2:1;12161:48:0;;;5810:21:1;5867:2;5847:18;;;5840:30;5906:13;5886:18;;;5879:41;5937:18;;12161:48:0;;;;;;;;;18878:21:::1;:39:::0;;18928:13:::1;:32:::0;;;;18971:43;::::1;;::::0;::::1;::::0;18878:39;::::1;;;;18971:43:::0;;;;;;;;;;;;;;;::::1;::::0;;18746:276::o;19383:97::-;12182:10;12841:4;12865:19;;;:14;:19;;;;;;;;12161:48;;;;;;;5828:2:1;12161:48:0;;;5810:21:1;5867:2;5847:18;;;5840:30;5906:13;5886:18;;;5879:41;5937:18;;12161:48:0;5626:335:1;12161:48:0;19450:18:::1;;;::::0;;;:13:::1;:18;::::0;;;;:25;;;::::1;19471:4;19450:25;::::0;;19383:97::o;19238:139::-;12182:10;12841:4;12865:19;;;:14;:19;;;;;;;;12161:48;;;;;;;5828:2:1;12161:48:0;;;5810:21:1;5867:2;5847:18;;;5840:30;5906:13;5886:18;;;5879:41;5937:18;;12161:48:0;5626:335:1;12161:48:0;19331:6:::1;19325:3;:12;19317:21;;;::::0;::::1;;19349:14;:20:::0;19238:139::o;17189:115::-;17244:4;17268:28;17276:7;17285:10;17268:7;:28::i;17927:376::-;12182:10;12841:4;12865:19;;;:14;:19;;;;;;;;12161:48;;;;;;;5828:2:1;12161:48:0;;;5810:21:1;5867:2;5847:18;;;5840:30;5906:13;5886:18;;;5879:41;5937:18;;12161:48:0;5626:335:1;12161:48:0;18027:23:::1;::::0;::::1;18045:4;18027:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;18064:4:0::1;::::0;::::1;18054:14:::0;;::::1;18064:4:::0;::::1;18054:14;;18027:41;18019:50;;;::::0;::::1;;18080:24;::::0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;18134:162:::1;;18159:19;::::0;:39:::1;::::0;;;;:19:::1;6166:55:1::0;;;18159:39:0::1;::::0;::::1;6148:74:1::0;18196:1:0::1;6238:18:1::0;;;6231:34;18159:19:0::1;::::0;;::::1;::::0;;::::1;::::0;:28:::1;::::0;6121:18:1;;18159:39:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17927:376:::0;;:::o;18134:162::-:1;18229:19;::::0;::::1;18266:17:::0;;::::1;;::::0;;;:9:::1;:17;::::0;;;;;;;18229:55;;;;;::::1;::::0;::::1;6148:74:1::0;;;;6238:18;;;6231:34;18229:19:0::1;::::0;;::::1;;::::0;:28:::1;::::0;6121:18:1;;18229:55:0::1;5966:305:1::0;13011:173:0;12666:4;12701:5;;;12008:10;12690:16;11992:38;;;;;;;6780:2:1;11992:38:0;;;6762:21:1;6819:1;6799:18;;;6792:29;6857:8;6837:18;;;6830:36;6883:18;;11992:38:0;6578:329:1;11992:38:0;13087:5:::1;:11:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;13109:19;;;-1:-1:-1;13109:19:0::1;::::0;;;;;;;;:26;;;::::1;::::0;;::::1;::::0;;;13151:25;;4202:74:1;;;13151:25:0::1;::::0;4175:18:1;13151:25:0::1;;;;;;;13011:173:::0;:::o;18311:278::-;12182:10;12841:4;12865:19;;;:14;:19;;;;;;;;12161:48;;;;;;;5828:2:1;12161:48:0;;;5810:21:1;5867:2;5847:18;;;5840:30;5906:13;5886:18;;;5879:41;5937:18;;12161:48:0;5626:335:1;12161:48:0;18425:12:::1;:24:::0;;;18460:10:::1;:25:::0;;;18493:12:::1;:28:::0;;;18553::::1;18440:9:::0;18473:12;18553:16:::1;:28::i;:::-;18542:8;:39:::0;-1:-1:-1;;;18311:278:0:o;17423:106::-;12182:10;12841:4;12865:19;;;:14;:19;;;;;;;;12161:48;;;;;;;5828:2:1;12161:48:0;;;5810:21:1;5867:2;5847:18;;;5840:30;5906:13;5886:18;;;5879:41;5937:18;;12161:48:0;5626:335:1;12161:48:0;17499:10:::1;:22:::0;17423:106::o;17657:123::-;12182:10;12841:4;12865:19;;;:14;:19;;;;;;;;12161:48;;;;;;;5828:2:1;12161:48:0;;;5810:21:1;5867:2;5847:18;;;5840:30;5906:13;5886:18;;;5879:41;5937:18;;12161:48:0;5626:335:1;12161:48:0;17744:19:::1;::::0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;17657:123::o;19595:156::-;19675:4;19699:44;19713:10;19725:9;19736:6;19699:13;:44::i;19030:200::-;12182:10;12841:4;12865:19;;;:14;:19;;;;;;;;12161:48;;;;;;;5828:2:1;12161:48:0;;;5810:21:1;5867:2;5847:18;;;5840:30;5906:13;5886:18;;;5879:41;5937:18;;12161:48:0;5626:335:1;12161:48:0;19146:19:::1;::::0;:76:::1;::::0;;;;::::1;::::0;::::1;7325:25:1::0;;;7366:18;;;7359:34;;;19146:19:0::1;::::0;;::::1;;;::::0;:43:::1;::::0;7298:18:1;;19146:76:0::1;7151:248:1::0;19486:97:0;12182:10;12841:4;12865:19;;;:14;:19;;;;;;;;12161:48;;;;;;;5828:2:1;12161:48:0;;;5810:21:1;5867:2;5847:18;;;5840:30;5906:13;5886:18;;;5879:41;5937:18;;12161:48:0;5626:335:1;12161:48:0;19560:18:::1;;;::::0;;;:13:::1;:18;::::0;;;;19553:25;;;::::1;::::0;;19486:97::o;12284:94::-;12666:4;12701:5;;;12008:10;12690:16;11992:38;;;;;;;6780:2:1;11992:38:0;;;6762:21:1;6819:1;6799:18;;;6792:29;6857:8;6837:18;;;6830:36;6883:18;;11992:38:0;6578:329:1;11992:38:0;12344:19:::1;;;::::0;;;12366:4:::1;12344:19;::::0;;;;;;;:26;;;::::1;::::0;;::::1;::::0;;12284:94::o;17312:103::-;12182:10;12841:4;12865:19;;;:14;:19;;;;;;;;12161:48;;;;;;;5828:2:1;12161:48:0;;;5810:21:1;5867:2;5847:18;;;5840:30;5906:13;5886:18;;;5879:41;5937:18;;12161:48:0;5626:335:1;12161:48:0;17384:12:::1;:23:::0;17312:103::o;22446:138::-;12666:4;12701:5;;;12008:10;12690:16;11992:38;;;;;;;6780:2:1;11992:38:0;;;6762:21:1;6819:1;6799:18;;;6792:29;6857:8;6837:18;;;6830:36;6883:18;;11992:38:0;6578:329:1;11992:38:0;22502:11:::1;::::0;::::1;;22501:12;22493:21;;;::::0;::::1;;22525:11;:18:::0;;;::::1;22539:4;22525:18;::::0;;22564:12:::1;22551:10;:25:::0;22446:138::o;17537:108::-;12182:10;12841:4;12865:19;;;:14;:19;;;;;;;;12161:48;;;;;;;5828:2:1;12161:48:0;;;5810:21:1;5867:2;5847:18;;;5840:30;5906:13;5886:18;;;5879:41;5937:18;;12161:48:0;5626:335:1;12161:48:0;17612:14:::1;:25:::0;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;17537:108::o;12454:97::-;12666:4;12701:5;;;12008:10;12690:16;11992:38;;;;;;;6780:2:1;11992:38:0;;;6762:21:1;6819:1;6799:18;;;6792:29;6857:8;6837:18;;;6830:36;6883:18;;11992:38:0;6578:329:1;11992:38:0;12516:19:::1;;12538:5;12516:19:::0;;;:14:::1;:19;::::0;;;;:27;;;::::1;::::0;;12454:97::o;18597:141::-;12182:10;12841:4;12865:19;;;:14;:19;;;;;;;;12161:48;;;;;;;5828:2:1;12161:48:0;;;5810:21:1;5867:2;5847:18;;;5840:30;5906:13;5886:18;;;5879:41;5937:18;;12161:48:0;5626:335:1;12161:48:0;18686:21:::1;:44:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;18597:141::o;17788:131::-;12182:10;12841:4;12865:19;;;:14;:19;;;;;;;;12161:48;;;;;;;5828:2:1;12161:48:0;;;5810:21:1;5867:2;5847:18;;;5840:30;5906:13;5886:18;;;5879:41;5937:18;;12161:48:0;5626:335:1;12161:48:0;17879:23:::1;::::0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;17788:131::o;2117:179::-;2175:7;;2207:5;2211:1;2207;:5;:::i;:::-;2195:17;;2236:1;2231;:6;;2223:46;;;;;;;7925:2:1;2223:46:0;;;7907:21:1;7964:2;7944:18;;;7937:30;8003:29;7983:18;;;7976:57;8050:18;;2223:46:0;7723:351:1;2448:190:0;2534:7;2570:12;2562:6;;;;2554:29;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2594:9:0;2606:5;2610:1;2606;:5;:::i;:::-;2594:17;2448:190;-1:-1:-1;;;;;2448:190:0:o;20138:1549::-;20249:17;;;20230:4;20249:17;;;:9;:17;;;;;;20241:30;;;;;;20298:16;;;;20295:73;;;20324:41;20339:6;20347:9;20358:6;20324:14;:41::i;:::-;20317:48;;;;20295:73;20384:22;;;;;;;:14;:22;;;;;;;;20383:23;:53;;;;-1:-1:-1;20411:25:0;;;;;;;:14;:25;;;;;;;;20410:26;20383:53;20380:128;;;20460:11;;;;20452:44;;;;;;;8414:2:1;20452:44:0;;;8396:21:1;8453:2;8433:18;;;8426:30;8492:22;8472:18;;;8465:50;8532:18;;20452:44:0;8212:344:1;20452:44:0;20538:12;;20528:6;:22;;:49;;;-1:-1:-1;20554:23:0;;;;;;;:15;:23;;;;;;;;20528:49;20520:79;;;;;;;8763:2:1;20520:79:0;;;8745:21:1;8802:2;8782:18;;;8775:30;8841:19;8821:18;;;8814:47;8878:18;;20520:79:0;8561:341:1;20520:79:0;20629:4;;;;20615:10;:18;;;;:39;;-1:-1:-1;20638:16:0;;;;20637:17;20615:39;:64;;;;-1:-1:-1;20658:21:0;;;;;;;20615:64;:109;;;;-1:-1:-1;20711:13:0;;20701:4;20683:24;;;;:9;:24;;;;;;:41;;20615:109;20612:128;;;20727:10;:8;:10::i;:::-;20799:53;;;;;;;;;;;;;;;;;;;;:17;;;-1:-1:-1;20799:17:0;;;:9;:17;;;;;;;;:53;;20821:6;;20799:21;:53::i;:::-;20779:17;;;;;;;;:9;:17;;;;;;;;:73;;;;20877:26;;;;;:15;:26;;;;;;;20876:27;:45;;;;-1:-1:-1;20907:14:0;;;;20876:45;20873:141;;;20991:10;;20955:20;;;;;;;:9;:20;;;;;;:32;;20980:6;20955:24;:32::i;:::-;:46;;20947:55;;;;;;21059:19;;;21036;21059;;;:11;:19;;;;;;;;21058:20;:47;;;;-1:-1:-1;21083:22:0;;;;;;;:11;:22;;;;;;;;21082:23;21058:47;:82;;21134:6;21058:82;;;21108:23;21116:6;21124;21108:7;:23::i;:::-;21174:20;;;;;;;:9;:20;;;;;;21036:104;;-1:-1:-1;21174:37:0;;21036:104;21174:24;:37::i;:::-;21151:20;;;;;;;;:9;:20;;;;;;;;:60;;;;21257:24;;;;;:16;:24;;;;;;;21253:127;;21302:19;;;21339:17;;;;;;;:9;:17;;;;;;;;21302:55;;;;;;;;6148:74:1;;;;6238:18;;;6231:34;21302:19:0;;;;;;:28;;6121:18:1;;21302:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21298:71;;21396:27;;;;;;;:16;:27;;;;;;;;21392:137;;21444:19;;;21484:20;;;;;;;:9;:20;;;;;;;;21444:61;;;;;;;;6148:74:1;;;;6238:18;;;6231:34;21444:19:0;;;;;;:28;;6121:18:1;;21444:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21440:77;;21545:19;;21573:14;;21545:43;;;;;;;;160:25:1;;;;21545:19:0;;;;;;;:27;;133:18:1;;21545:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21541:59;21634:9;21617:40;;21626:6;21617:40;;;21645:11;21617:40;;;;160:25:1;;148:2;133:18;;14:177;21617:40:0;;;;;;;;-1:-1:-1;21675:4:0;;20138:1549;-1:-1:-1;;;;20138:1549:0:o;2304:136::-;2362:7;2389:43;2393:1;2396;2389:43;;;;;;;;;;;;;;;;;:3;:43::i;21699:330::-;21829:53;;;;;;;;;;;;;;;;;;;;:17;;;21792:4;21829:17;;;:9;:17;;;;;;;:53;;21851:6;;21829:21;:53::i;:::-;21809:17;;;;;;;;:9;:17;;;;;;:73;;;;21916:20;;;;;;;:32;;21941:6;21916:24;:32::i;:::-;21893:20;;;;;;;;:9;:20;;;;;;;:55;;;;21964:35;;;;;;;;;;21992:6;160:25:1;;148:2;133:18;;14:177;21964:35:0;;;;;;;;-1:-1:-1;22017:4:0;21699:330;;;;;:::o;22592:1565::-;15019:16;:23;;;;15038:4;15019:23;;;22694:4:::1;15019:16:::0;22676:24;;;:9:::1;:24;::::0;;;;;22771:8:::1;::::0;22753:12:::1;::::0;22676:24;;15019:16;22737:50:::1;::::0;22785:1:::1;::::0;22737:43:::1;::::0;22771:8;22737:43;;22676:24;;22737:15:::1;:29::i;:::-;:33:::0;::::1;:43::i;:50::-;22711:76:::0;-1:-1:-1;22798:20:0::1;22821:32;:11:::0;22711:76;22821:15:::1;:32::i;:::-;22890:16;::::0;;22904:1:::1;22890:16:::0;;;;;::::1;::::0;;22798:55;;-1:-1:-1;22866:21:0::1;::::0;22890:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;22890:16:0::1;22866:40;;22935:4;22917;22922:1;22917:7;;;;;;;;:::i;:::-;:23;::::0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;22961:6:::1;::::0;:13:::1;::::0;;;;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;22917:7;;22961:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22951:4;22956:1;22951:7;;;;;;;;:::i;:::-;:23;::::0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;22987:6:::1;::::0;:188:::1;::::0;;;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;23059:12;;22987:6:::1;::::0;23102:4;;23129::::1;::::0;23149:15:::1;::::0;22987:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;23277:12:0::1;::::0;23208:21:::1;::::0;-1:-1:-1;23188:17:0::1;::::0;-1:-1:-1;23264:33:0::1;::::0;23277:19:::1;::::0;23294:1:::1;23277:16;:19::i;:::-;23264:8;::::0;;:12:::1;:33::i;:::-;23242:55;;23318:26;23347:51;23396:1;23347:44;23379:11;23347:27;23361:12;;23347:9;:13;;:27;;;;:::i;:51::-;23318:80;;23409:27;23439:42;23469:11;23439:25;23453:10;;23439:9;:13;;:25;;;;:::i;:42::-;23409:72:::0;-1:-1:-1;23486:24:0::1;23513:58;23552:18:::0;23513:34:::1;:9:::0;23409:72;23513:13:::1;:34::i;:58::-;23486:85;;23588:19;;;;;;;;;;;:27;;;23623:19;23588:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;23584:73:::0;23680:19;;23677:362:::1;;23715:6;::::0;23889:21:::1;::::0;23715:244:::1;::::0;;;;23791:4:::1;23715:244;::::0;::::1;10936:34:1::0;10986:18;;;10979:34;;;23715:6:0::1;11029:18:1::0;;;11022:34;;;11072:18;;;11065:34;23715:6:0::1;23889:21:::0;;::::1;11115:19:1::0;;;11108:44;23929:15:0::1;11168:19:1::0;;;11161:35;23715:6:0;::::1;::::0;:22:::1;::::0;23745:18;;10847:19:1;;23715:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;23979:48:0::1;::::0;;7325:25:1;;;7381:2;7366:18;;7359:34;;;23979:48:0::1;::::0;-1:-1:-1;7298:18:1;23979:48:0::1;;;;;;;23677:362;24051:20:::0;;24047:103:::1;;24109:16;::::0;24078:66:::1;::::0;24109:16:::1;;24127::::0;24078:30:::1;:66::i;:::-;-1:-1:-1::0;;15065:16:0;:24;;;;;;-1:-1:-1;;;;;;;22592:1565:0:o;22037:401::-;22104:7;22124:17;22144:29;22169:3;22144:20;22155:8;;22144:6;:10;;:20;;;;:::i;:29::-;22124:49;;22202:10;;22215:1;22202:14;;;;:::i;:::-;22187:12;:29;22184:71;;;22230:23;22249:3;22230:14;:6;22241:2;22230:10;:14::i;:23::-;22218:35;;22184:71;22310:4;22292:24;;;;:9;:24;;;;;;:39;;22321:9;22292:28;:39::i;:::-;22283:4;22265:24;;;;:9;:24;;;;;;;:66;;;;22347:42;;22265:24;22347:42;;;;;;;22379:9;160:25:1;;148:2;133:18;;14:177;22347:42:0;;;;;;;;22409:21;:6;22420:9;22409:10;:21::i;:::-;22402:28;22037:401;-1:-1:-1;;;;22037:401:0:o;2646:224::-;2704:7;2728:1;2733;2728:6;2724:25;;-1:-1:-1;2745:1:0;2738:8;;2724:25;2759:9;2771:5;2775:1;2771;:5;:::i;:::-;2759:17;-1:-1:-1;2804:1:0;2795:5;2799:1;2759:17;2795:5;:::i;:::-;:10;2787:56;;;;;;;12232:2:1;2787:56:0;;;12214:21:1;12271:2;12251:18;;;12244:30;12310:34;12290:18;;;12283:62;12381:3;12361:18;;;12354:31;12402:19;;2787:56:0;12030:397:1;2878:132:0;2936:7;2963:39;2967:1;2970;2963:39;;;;;;;;;;;;;;;;;:3;:39::i;1884:200::-;1997:12;;;1957;1997;;;;;;;;;1975:7;;;;1990:5;;1975:35;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1956:54;;;2029:7;2021:55;;;;;;;12926:2:1;2021:55:0;;;12908:21:1;12965:2;12945:18;;;12938:30;13004:34;12984:18;;;12977:62;13075:5;13055:18;;;13048:33;13098:19;;2021:55:0;12724:399:1;2021:55:0;1945:139;1884:200;;:::o;3018:189::-;3104:7;3139:12;3132:5;3124:28;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3163:9:0;3175:5;3179:1;3175;:5;:::i;196:250:1:-;281:1;291:113;305:6;302:1;299:13;291:113;;;381:11;;;375:18;362:11;;;355:39;327:2;320:10;291:113;;;-1:-1:-1;;438:1:1;420:16;;413:27;196:250::o;451:455::-;600:2;589:9;582:21;563:4;632:6;626:13;675:6;670:2;659:9;655:18;648:34;691:79;763:6;758:2;747:9;743:18;738:2;730:6;726:15;691:79;:::i;:::-;822:2;810:15;827:66;806:88;791:104;;;;897:2;787:113;;451:455;-1:-1:-1;;451:455:1:o;911:154::-;997:42;990:5;986:54;979:5;976:65;966:93;;1055:1;1052;1045:12;966:93;911:154;:::o;1070:315::-;1138:6;1146;1199:2;1187:9;1178:7;1174:23;1170:32;1167:52;;;1215:1;1212;1205:12;1167:52;1254:9;1241:23;1273:31;1298:5;1273:31;:::i;:::-;1323:5;1375:2;1360:18;;;;1347:32;;-1:-1:-1;;;1070:315:1:o;1582:456::-;1659:6;1667;1675;1728:2;1716:9;1707:7;1703:23;1699:32;1696:52;;;1744:1;1741;1734:12;1696:52;1783:9;1770:23;1802:31;1827:5;1802:31;:::i;:::-;1852:5;-1:-1:-1;1909:2:1;1894:18;;1881:32;1922:33;1881:32;1922:33;:::i;:::-;1582:456;;1974:7;;-1:-1:-1;;;2028:2:1;2013:18;;;;2000:32;;1582:456::o;2043:247::-;2102:6;2155:2;2143:9;2134:7;2130:23;2126:32;2123:52;;;2171:1;2168;2161:12;2123:52;2210:9;2197:23;2229:31;2254:5;2229:31;:::i;2484:160::-;2549:20;;2605:13;;2598:21;2588:32;;2578:60;;2634:1;2631;2624:12;2578:60;2484:160;;;:::o;2649:316::-;2720:6;2728;2736;2789:2;2777:9;2768:7;2764:23;2760:32;2757:52;;;2805:1;2802;2795:12;2757:52;2828:26;2844:9;2828:26;:::i;:::-;2818:36;;2901:2;2890:9;2886:18;2873:32;2863:42;;2924:35;2955:2;2944:9;2940:18;2924:35;:::i;:::-;2914:45;;2649:316;;;;;:::o;2970:180::-;3029:6;3082:2;3070:9;3061:7;3057:23;3053:32;3050:52;;;3098:1;3095;3088:12;3050:52;-1:-1:-1;3121:23:1;;2970:180;-1:-1:-1;2970:180:1:o;3155:315::-;3220:6;3228;3281:2;3269:9;3260:7;3256:23;3252:32;3249:52;;;3297:1;3294;3287:12;3249:52;3336:9;3323:23;3355:31;3380:5;3355:31;:::i;:::-;3405:5;-1:-1:-1;3429:35:1;3460:2;3445:18;;3429:35;:::i;:::-;3419:45;;3155:315;;;;;:::o;3735:316::-;3812:6;3820;3828;3881:2;3869:9;3860:7;3856:23;3852:32;3849:52;;;3897:1;3894;3887:12;3849:52;-1:-1:-1;;3920:23:1;;;3990:2;3975:18;;3962:32;;-1:-1:-1;4041:2:1;4026:18;;;4013:32;;3735:316;-1:-1:-1;3735:316:1:o;4287:248::-;4355:6;4363;4416:2;4404:9;4395:7;4391:23;4387:32;4384:52;;;4432:1;4429;4422:12;4384:52;-1:-1:-1;;4455:23:1;;;4525:2;4510:18;;;4497:32;;-1:-1:-1;4287:248:1:o;4799:388::-;4867:6;4875;4928:2;4916:9;4907:7;4903:23;4899:32;4896:52;;;4944:1;4941;4934:12;4896:52;4983:9;4970:23;5002:31;5027:5;5002:31;:::i;:::-;5052:5;-1:-1:-1;5109:2:1;5094:18;;5081:32;5122:33;5081:32;5122:33;:::i;:::-;5174:7;5164:17;;;4799:388;;;;;:::o;5192:180::-;5248:6;5301:2;5289:9;5280:7;5276:23;5272:32;5269:52;;;5317:1;5314;5307:12;5269:52;5340:26;5356:9;5340:26;:::i;7404:184::-;7456:77;7453:1;7446:88;7553:4;7550:1;7543:15;7577:4;7574:1;7567:15;7593:125;7658:9;;;7679:10;;;7676:36;;;7692:18;;:::i;8079:128::-;8146:9;;;8167:11;;;8164:37;;;8181:18;;:::i;9096:184::-;9148:77;9145:1;9138:88;9245:4;9242:1;9235:15;9269:4;9266:1;9259:15;9285:251;9355:6;9408:2;9396:9;9387:7;9383:23;9379:32;9376:52;;;9424:1;9421;9414:12;9376:52;9456:9;9450:16;9475:31;9500:5;9475:31;:::i;9541:1026::-;9803:4;9851:3;9840:9;9836:19;9882:6;9871:9;9864:25;9908:2;9946:6;9941:2;9930:9;9926:18;9919:34;9989:3;9984:2;9973:9;9969:18;9962:31;10013:6;10048;10042:13;10079:6;10071;10064:22;10117:3;10106:9;10102:19;10095:26;;10156:2;10148:6;10144:15;10130:29;;10177:1;10187:218;10201:6;10198:1;10195:13;10187:218;;;10266:13;;10281:42;10262:62;10250:75;;10380:15;;;;10345:12;;;;10223:1;10216:9;10187:218;;;-1:-1:-1;;10473:42:1;10461:55;;;;10456:2;10441:18;;10434:83;-1:-1:-1;;;10548:3:1;10533:19;10526:35;10422:3;9541:1026;-1:-1:-1;;;9541:1026:1:o;11207:306::-;11295:6;11303;11311;11364:2;11352:9;11343:7;11339:23;11335:32;11332:52;;;11380:1;11377;11370:12;11332:52;11409:9;11403:16;11393:26;;11459:2;11448:9;11444:18;11438:25;11428:35;;11503:2;11492:9;11488:18;11482:25;11472:35;;11207:306;;;;;:::o;11518:228::-;11558:7;11684:1;11616:66;11612:74;11609:1;11606:81;11601:1;11594:9;11587:17;11583:105;11580:131;;;11691:18;;:::i;:::-;-1:-1:-1;11731:9:1;;11518:228::o;11751:274::-;11791:1;11817;11807:189;;11852:77;11849:1;11842:88;11953:4;11950:1;11943:15;11981:4;11978:1;11971:15;11807:189;-1:-1:-1;12010:9:1;;11751:274::o;12432:287::-;12561:3;12599:6;12593:13;12615:66;12674:6;12669:3;12662:4;12654:6;12650:17;12615:66;:::i;:::-;12697:16;;;;;12432:287;-1:-1:-1;;12432:287:1:o

Swarm Source

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