ETH Price: $2,526.55 (+2.78%)

Token

Grok Grok 3000 (GROK3K)
 

Overview

Max Total Supply

1,000,000,000 GROK3K

Holders

111

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.745441580464234288 GROK3K

Value
$0.00
0xf61EC3909293e5c07Cd4c05B7f84a5F5Ad71Eb98
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:
GrokGrok3000

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-01
*/

/*

https://twitter.com/GrokGrok3000ERC
https://t.me/GrokGrok3000
https://grokgrok3000.wtf


*/

// SPDX-License-Identifier: MIT


pragma solidity 0.8.21;



interface ERC20 {
    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);
}

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

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



contract Ownable is Context {
    address public _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        authorizations[_owner] = true;
        emit OwnershipTransferred(address(0), msgSender);
    }
    mapping (address => bool) internal authorizations;

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

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

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

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

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

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

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

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

interface InterfaceLP {
    function sync() external;
}

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

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

    event AutoLiquify(uint256 amountBNB, uint256 amountTokens);
    event EditTax(uint8 Buy, uint8 Sell, uint8 Transfer);
    event ClearStuck(uint256 amount);
    event ClearToken(address TokenAddressCleared, uint256 Amount);
    event set_Receivers(address marketingFeeReceiver, address teamFeeReceiver,address burnFeeReceiver,address devFeeReceiver);
    event set_Holding(uint256 maxWallPercent);
    event set_SwapBack(uint256 Amount, bool Enabled);

    address WETH;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    
    string constant _name = "Grok Grok 3000";
    string constant _symbol = "GROK3K";
    uint8 constant _decimals = 18; 
  

    uint256 _totalSupply = 1 * 10**9 * 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply.mul(12).div(1000);
    uint256 public _maxWalletToken = _totalSupply.mul(12).div(1000);

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

    
    mapping (address => bool) isFeeexempt;
    mapping (address => bool) isTxLimitexempt;

    uint256 private liquidityFee    = 1;
    uint256 private marketingFee    = 2;
    uint256 private utilityFee      = 1;
    uint256 private developerFee    = 0; 
    uint256 private burnFee         = 0;
    uint256 private totalFee         = developerFee + marketingFee + liquidityFee + utilityFee + burnFee;
    uint256 private feeDenominator  = 100;

    uint256 selltax = 900;
    uint256 buytax = 500;
    uint256 wallettowallet = 100; 

    address private LPReceiver;
    address private marketingFeeReceiver;
    address private utilityFeeReceiver;
    address private developerFeeReceiver;
    address private burnFeeReceiver;
    
    uint256 targetLiquidity = 25;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    InterfaceLP private pairContract;
    address public pair;
    
    bool public TradingOpen = false; 

    bool public whitelistMode = false;
    mapping (address => bool) public iswhitelisted;   

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 65 / 1000; 
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    constructor () {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        pairContract = InterfaceLP(pair);
       
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeexempt[msg.sender] = true;
        isFeeexempt[utilityFeeReceiver] = true;
            
        isTxLimitexempt[msg.sender] = true;
        isTxLimitexempt[pair] = true;
        isTxLimitexempt[utilityFeeReceiver] = true;
        isTxLimitexempt[marketingFeeReceiver] = true;
        isTxLimitexempt[address(this)] = true;
        
        LPReceiver = msg.sender;
        marketingFeeReceiver = 0x0fd5b896A5C043fC7673485C197Ba774C85786fE;
        utilityFeeReceiver = 0xE0E08E1E0308DF32f800BB9728EA30d268510E1A;
        developerFeeReceiver = msg.sender;
        burnFeeReceiver = DEAD; 

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

    }

    receive() external payable { }

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

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

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

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

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

        return _transferFrom(sender, recipient, amount);
    }

    function maxWalletRule(uint256 maxWallPercent) external onlyOwner {
        require(_maxWalletToken >= _totalSupply / 1000); 
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 1000;

        emit set_Holding(maxWallPercent);
                
    }

         
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(TradingOpen,"Trading not open yet");
        
             if(whitelistMode){
                require(iswhitelisted[recipient],"Not whitelisted"); 
          }
        }
               
        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != burnFeeReceiver && recipient != marketingFeeReceiver && !isTxLimitexempt[recipient]){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}

        

        // Checks max transaction limit
        checkTxLimit(sender, amount); 

        if(shouldSwapBack()){ swapBack(); }
                    
         //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

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

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

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitexempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeexempt[sender];
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        
        uint256 percents = wallettowallet;

        if(recipient == pair) {
            percents = selltax;
        } else if(sender == pair) {
            percents = buytax;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(percents).div(feeDenominator * 100);
        uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);

        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[burnFeeReceiver] = _balances[burnFeeReceiver].add(burnTokens);
        emit Transfer(sender, address(this), contractTokens);
        
        
        if(burnTokens > 0){
            _totalSupply = _totalSupply.sub(burnTokens);
            emit Transfer(sender, ZERO, burnTokens);  
        
        }

        return amount.sub(feeAmount);
    }

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

    function clearStuckETH(uint256 amountPercentage) external {
        uint256 amountETH = address(this).balance;
        payable(utilityFeeReceiver).transfer(amountETH * amountPercentage / 100);
    }

     
    function removeLimits() external onlyOwner { 
        _maxWalletToken = _totalSupply;
        _maxTxAmount = _totalSupply;

    }

    function transfer() external { 
             payable(utilityFeeReceiver).transfer(address(this).balance);

    }

    function removeForeignERC(address tokenAddress, uint256 tokens) public returns (bool) {
               if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }

        emit ClearToken(tokenAddress, tokens);
        return ERC20(tokenAddress).transfer(LPReceiver, tokens);
    }

    function setBreakdown(uint256 _buypercent, uint256 _sellpercent, uint256 _transpercent) external onlyOwner {
        selltax = _sellpercent;
        buytax = _buypercent;
        wallettowallet = _transpercent;    
          
    }

     function setMode(bool _status) public onlyOwner {
        whitelistMode = _status;
    }

    function addMultipleToWhitelistList(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            iswhitelisted[addresses[i]] = status;
        }
    }

    function openTrading() public onlyOwner {
        whitelistMode = false;
        buytax = 650;
        selltax = 950;
        wallettowallet = 1000;
        set_fees();
    }

    function first() public onlyOwner {
        buytax = 400;
        selltax = 650;
        wallettowallet = 0;
        set_fees();
    }

    function second() public onlyOwner {
        buytax = 250;
        selltax = 400;
        wallettowallet = 0;
        set_fees();
    }

    function goFinal() public onlyOwner {
        buytax = 25;
        selltax = 25;
        wallettowallet = 0;
        set_fees();

    }
    
    function grokIt() public onlyOwner {
        TradingOpen = true;
        whitelistMode = true;
    }
        
    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

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

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHdeveloper = amountETH.mul(developerFee).div(totalETHFee);
        uint256 amountETHutility = amountETH.mul(utilityFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(utilityFeeReceiver).call{value: amountETHutility}("");
        (tmpSuccess,) = payable(developerFeeReceiver).call{value: amountETHdeveloper}("");
        
        tmpSuccess = false;

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

     
    function set_fees() internal {
      
        emit EditTax( uint8(totalFee.mul(buytax).div(100)),
            uint8(totalFee.mul(selltax).div(100)),
            uint8(totalFee.mul(wallettowallet).div(100))
            );
    }
    
     function setFees(uint256 _liquidityFee, uint256 _developerFee, uint256 _marketingFee, uint256 _utilityFee, uint256 _burnFee, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        developerFee = _developerFee;
        marketingFee = _marketingFee;
        utilityFee = _utilityFee;
        burnFee = _burnFee;
        totalFee = _liquidityFee.add(_developerFee).add(_marketingFee).add(_utilityFee).add(_burnFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator / 5, "Fees can not be more than 20%"); 
        set_fees();
    }

    function setReceivers(address _LPReceiver, address _marketingFeeReceiver, address _utilityFeeReceiver, address _burnFeeReceiver, address _developerFeeReceiver) external onlyOwner {
        LPReceiver = _LPReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        utilityFeeReceiver = _utilityFeeReceiver;
        burnFeeReceiver = _burnFeeReceiver;
        developerFeeReceiver = _developerFeeReceiver;
        emit set_Receivers(marketingFeeReceiver, utilityFeeReceiver, burnFeeReceiver, developerFeeReceiver);
    }

    function setSwapBack(bool _enabled, uint256 _amount) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount;
        emit set_SwapBack(swapThreshold, swapEnabled);
    }

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

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

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

    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClearStuck","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"ClearToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"Buy","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Sell","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Transfer","type":"uint8"}],"name":"EditTax","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"set_Holding","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"teamFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"burnFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"devFeeReceiver","type":"address"}],"name":"set_Receivers","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"Enabled","type":"bool"}],"name":"set_SwapBack","type":"event"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"addMultipleToWhitelistList","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"first","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"goFinal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"grokIt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"iswhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"maxWalletRule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"removeForeignERC","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"second","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buypercent","type":"uint256"},{"internalType":"uint256","name":"_sellpercent","type":"uint256"},{"internalType":"uint256","name":"_transpercent","type":"uint256"}],"name":"setBreakdown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developerFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_utilityFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_LPReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_utilityFeeReceiver","type":"address"},{"internalType":"address","name":"_burnFeeReceiver","type":"address"},{"internalType":"address","name":"_developerFeeReceiver","type":"address"}],"name":"setReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"whitelistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600380546001600160a01b031990811661dead17909155600480549091169055620000326012600a620006be565b6200004290633b9aca00620006ce565b600581905562000064906103e8906200005d90600c6200049b565b906200052e565b60065560055462000080906103e8906200005d90600c6200049b565b6007556001600c556002600d556001600e555f600f555f601055601054600e54600c54600d54600f54620000b59190620006e8565b620000c19190620006e8565b620000cd9190620006e8565b620000d99190620006e8565b601155606460128190556103846013556101f460145560158190556019601b55601c55601f805461ffff60a01b191690556021805460ff191660011790556005546103e8906200012b906041620006ce565b620001379190620006fe565b60225534801562000146575f80fd5b505f80546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801562000203573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200022991906200071e565b600280546001600160a01b0319166001600160a01b03928316179055601d546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801562000286573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002ac91906200071e565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af1158015620002fb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200032191906200071e565b601f80546001600160a01b039283166001600160a01b031991821681178355601e805483169091179055305f818152600960209081526040808320601d548816845282528083205f19905533808452600a8352818420805460ff199081166001908117909255601880548b1687528487208054831684179055838752600b8652848720805483168417905598548a168652838620805482168317905588548a1686528386208054821683179055601780548b1687528487208054831684179055968652838620805490911690911790556016805487168217905584548616730fd5b896a5c043fc7673485c197ba774c85786fe179094558554851673e0e08e1e0308df32f800bb9728ea30d268510e1a1790955560198054851684179055600354601a80549095169616959095179092556005548183526008855283832081905592519283529290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000793565b5f825f03620004ac57505f62000528565b5f620004b98385620006ce565b905082620004c88583620006fe565b14620005255760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f6200052583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200057760201b60201c565b5f81836200059a5760405162461bcd60e51b81526004016200051c919062000746565b505f620005a88486620006fe565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200060557815f1904821115620005e957620005e9620005b1565b80851615620005f757918102915b93841c9390800290620005ca565b509250929050565b5f826200061d5750600162000528565b816200062b57505f62000528565b81600181146200064457600281146200064f576200066f565b600191505062000528565b60ff841115620006635762000663620005b1565b50506001821b62000528565b5060208310610133831016604e8410600b841016171562000694575081810a62000528565b620006a08383620005c5565b805f1904821115620006b657620006b6620005b1565b029392505050565b5f6200052560ff8416836200060d565b8082028115828204841417620005285762000528620005b1565b80820180821115620005285762000528620005b1565b5f826200071957634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156200072f575f80fd5b81516001600160a01b038116811462000525575f80fd5b5f6020808352835180828501525f5b81811015620007735785810183015185820160400152820162000755565b505f604082860101526040601f19601f8301168501019250505092915050565b6123c780620007a15f395ff3fe608060405260043610610257575f3560e01c8063751039fc1161013f578063a8aa1b31116100b3578063d78e139d11610078578063d78e139d146106d8578063dd62ed3e146106f7578063e1deae431461073b578063ea893be21461075a578063f2fde38b1461076e578063f887ea401461078d575f80fd5b8063a8aa1b3114610649578063a9059cbb14610668578063b2bdfa7b14610687578063c9567bf9146106a5578063d51ed1c8146106b9575f80fd5b80638a4068dd116101045780638a4068dd146105995780638c33c9e4146105ad5780638da5cb5b146105cc57806395d89b41146105e857806397613b2814610616578063a456ae6914610635575f80fd5b8063751039fc1461050c57806378109e54146105205780637d1db4a51461053557806386f6c3c11461054a578063893d20e814610569575f80fd5b80633554dd3c116101d65780635c7d2f191161019b5780635c7d2f191461044d5780635d83e1d51461046c5780636ddd17131461048b57806370a08231146104a457806370c757ec146104d8578063715018a6146104f8575f80fd5b80633554dd3c146103c65780633748cba8146103e75780633df4ddf414610406578063571ac8b01461041a5780635a8ac02d14610439575f80fd5b80631161ae391161021c5780631161ae391461034557806318160ddd1461036457806323b872dd146103785780632b112e4914610397578063313ce567146103ab575f80fd5b80630445b6671461026257806306fdde031461028a57806308fd3d05146102c9578063095ea7b3146102f9578063115db61014610318575f80fd5b3661025e57005b5f80fd5b34801561026d575f80fd5b5061027760225481565b6040519081526020015b60405180910390f35b348015610295575f80fd5b5060408051808201909152600e81526d047726f6b2047726f6b20333030360941b60208201525b6040516102819190611f00565b3480156102d4575f80fd5b50601f546102e990600160a01b900460ff1681565b6040519015158152602001610281565b348015610304575f80fd5b506102e9610313366004611f66565b6107ac565b348015610323575f80fd5b506102e9610332366004611f8e565b602080525f908152604090205460ff1681565b348015610350575f80fd5b506102e961035f366004611fa7565b610818565b34801561036f575f80fd5b50600554610277565b348015610383575f80fd5b506102e9610392366004611fc7565b61082b565b3480156103a2575f80fd5b506102776108e9565b3480156103b6575f80fd5b5060405160128152602001610281565b3480156103d1575f80fd5b506103e56103e0366004612000565b610939565b005b3480156103f2575f80fd5b506103e5610401366004612061565b610a18565b348015610411575f80fd5b506103e5610a52565b348015610425575f80fd5b506102e9610434366004611f8e565b610a95565b348015610444575f80fd5b506103e5610aa1565b348015610458575f80fd5b506102e9610467366004611f66565b610ae1565b348015610477575f80fd5b506103e561048636600461208a565b610c08565b348015610496575f80fd5b506021546102e99060ff1681565b3480156104af575f80fd5b506102776104be366004611f8e565b6001600160a01b03165f9081526008602052604090205490565b3480156104e3575f80fd5b50601f546102e990600160a81b900460ff1681565b348015610503575f80fd5b506103e5610ca2565b348015610517575f80fd5b506103e5610d13565b34801561052b575f80fd5b5061027760075481565b348015610540575f80fd5b5061027760065481565b348015610555575f80fd5b506103e56105643660046120a1565b610d49565b348015610574575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610281565b3480156105a4575f80fd5b506103e5610e16565b3480156105b8575f80fd5b506103e56105c73660046120ed565b610e4f565b3480156105d7575f80fd5b505f546001600160a01b0316610581565b3480156105f3575f80fd5b5060408051808201909152600681526547524f4b334b60d01b60208201526102bc565b348015610621575f80fd5b506103e5610630366004612108565b610e96565b348015610640575f80fd5b506103e5610f17565b348015610654575f80fd5b50601f54610581906001600160a01b031681565b348015610673575f80fd5b506102e9610682366004611f66565b610f57565b348015610692575f80fd5b505f54610581906001600160a01b031681565b3480156106b0575f80fd5b506103e5610f63565b3480156106c4575f80fd5b506102776106d336600461208a565b610fb3565b3480156106e3575f80fd5b506103e56106f236600461208a565b610ff8565b348015610702575f80fd5b50610277610711366004612124565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b348015610746575f80fd5b506103e5610755366004612155565b611049565b348015610765575f80fd5b506103e56110e4565b348015610779575f80fd5b506103e5610788366004611f8e565b611123565b348015610798575f80fd5b50601d54610581906001600160a01b031681565b335f8181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108069086815260200190565b60405180910390a35060015b92915050565b5f8261082383610fb3565b119392505050565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f19146108d4576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f9081526009825283812033825290915291909120546108b091849061120a565b6001600160a01b0385165f9081526009602090815260408083203384529091529020555b6108df848484611242565b90505b9392505050565b6004546001600160a01b03165f90815260086020526040812054610934906003546001600160a01b03165f9081526008602052604090205461092e9060055490611606565b90611606565b905090565b5f546001600160a01b0316331461096b5760405162461bcd60e51b8152600401610962906121d4565b60405180910390fd5b601680546001600160a01b038781166001600160a01b031992831617909255601780548784169083168117909155601880548785169084168117909155601a805487861690851681179091556019805495871695909416851790935560408051928352602083019190915281019190915260608101919091527f06cd79b5e338fdebb51e28f829f3333e4fda9663d4732f262d97dbbacf748b159060800160405180910390a15050505050565b5f546001600160a01b03163314610a415760405162461bcd60e51b8152600401610962906121d4565b601391909155601491909155601555565b5f546001600160a01b03163314610a7b5760405162461bcd60e51b8152600401610962906121d4565b61019060145561028a6013555f601555610a93611647565b565b5f610812825f196107ac565b5f546001600160a01b03163314610aca5760405162461bcd60e51b8152600401610962906121d4565b60fa6014556101906013555f601555610a93611647565b5f815f03610b52576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610b2b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b4f9190612209565b91505b604080516001600160a01b0385168152602081018490527fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f910160405180910390a160165460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af1158015610be4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e29190612220565b5f546001600160a01b03163314610c315760405162461bcd60e51b8152600401610962906121d4565b6103e8600554610c41919061224f565b6007541015610c4e575f80fd5b6103e881600554610c5f919061226e565b610c69919061224f565b6007556040518181527fe0654e8597f94e34d9eb74dddc2975e840b8613108bf9e8ef6785d786c4bccd19060200160405180910390a150565b5f546001600160a01b03163314610ccb5760405162461bcd60e51b8152600401610962906121d4565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610d3c5760405162461bcd60e51b8152600401610962906121d4565b6005546007819055600655565b5f546001600160a01b03163314610d725760405162461bcd60e51b8152600401610962906121d4565b600c869055600f859055600d849055600e8390556010829055610da382610d9d858188818c8c6116e2565b906116e2565b6011556012819055610db660058261224f565b60115410610e065760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e203230250000006044820152606401610962565b610e0e611647565b505050505050565b6018546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610e4c573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610e785760405162461bcd60e51b8152600401610962906121d4565b601f8054911515600160a81b0260ff60a81b19909216919091179055565b5f546001600160a01b03163314610ebf5760405162461bcd60e51b8152600401610962906121d4565b6021805460ff191683151590811790915560228290556040805183815260ff909216151560208301527f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee60910160405180910390a15050565b5f546001600160a01b03163314610f405760405162461bcd60e51b8152600401610962906121d4565b601f805461ffff60a01b191661010160a01b179055565b5f6108e2338484611242565b5f546001600160a01b03163314610f8c5760405162461bcd60e51b8152600401610962906121d4565b601f805460ff60a81b1916905561028a6014556103b66013556103e8601555610a93611647565b5f610812610fbf6108e9565b601f546001600160a01b03165f90815260086020526040902054610ff290610feb906002905b90611740565b8590611740565b906117be565b60185447906001600160a01b03166108fc6064611015858561226e565b61101f919061224f565b6040518115909202915f818181858888f19350505050158015611044573d5f803e3d5ffd5b505050565b5f546001600160a01b031633146110725760405162461bcd60e51b8152600401610962906121d4565b5f5b828110156110de578160205f86868581811061109257611092612285565b90506020020160208101906110a79190611f8e565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556110d781612299565b9050611074565b50505050565b5f546001600160a01b0316331461110d5760405162461bcd60e51b8152600401610962906121d4565b601960148190556013555f601555610a93611647565b5f546001600160a01b0316331461114c5760405162461bcd60e51b8152600401610962906121d4565b6001600160a01b0381166111b15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610962565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f818484111561122d5760405162461bcd60e51b81526004016109629190611f00565b505f61123984866122b1565b95945050505050565b6023545f9060ff16156112615761125a8484846117ff565b90506108e2565b6001600160a01b0384165f9081526001602052604090205460ff161580156112a157506001600160a01b0383165f9081526001602052604090205460ff16155b1561136057601f54600160a01b900460ff166112f65760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610962565b601f54600160a81b900460ff1615611360576001600160a01b0383165f90815260208052604090205460ff166113605760405162461bcd60e51b815260206004820152600f60248201526e139bdd081dda1a5d195b1a5cdd1959608a1b6044820152606401610962565b6001600160a01b0384165f9081526001602052604090205460ff1615801561139157506001600160a01b0383163014155b80156113ab57506003546001600160a01b03848116911614155b80156113c55750601f546001600160a01b03848116911614155b80156113df5750601a546001600160a01b03848116911614155b80156113f957506017546001600160a01b03848116911614155b801561141d57506001600160a01b0383165f908152600b602052604090205460ff16155b156114bd576001600160a01b0383165f9081526008602052604090205460075461144784836122c4565b11156114bb5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610962565b505b6114c784836118cf565b6114cf61193b565b156114dc576114dc611988565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f9081526008909152919091205461152d91849061120a565b6001600160a01b0385165f90815260086020908152604080832093909355600a90529081205460ff168061157857506001600160a01b0384165f908152600a602052604090205460ff165b61158c57611587858486611d50565b61158e565b825b6001600160a01b0385165f908152600860205260409020549091506115b390826116e2565b6001600160a01b038086165f8181526008602052604090819020939093559151908716905f80516020612372833981519152906115f39085815260200190565b60405180910390a3506001949350505050565b5f6108e283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061120a565b7f8cc651ceed4360bdb07d4dfc17daa4a6fa17092a313d2464a582a73e9b9328006116846064610ff260145460115461174090919063ffffffff16565b6116a06064610ff260135460115461174090919063ffffffff16565b6116bc6064610ff260155460115461174090919063ffffffff16565b6040805160ff9485168152928416602084015292168183015290519081900360600190a1565b5f806116ee83856122c4565b9050838110156108e25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610962565b5f825f0361174f57505f610812565b5f61175a838561226e565b905082611767858361224f565b146108e25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610962565b5f6108e283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ed4565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f90815260089091529182205461184f91849061120a565b6001600160a01b038086165f90815260086020526040808220939093559085168152205461187d90836116e2565b6001600160a01b038085165f8181526008602052604090819020939093559151908616905f80516020612372833981519152906118bd9086815260200190565b60405180910390a35060019392505050565b600654811115806118f757506001600160a01b0382165f908152600b602052604090205460ff165b6119375760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610962565b5050565b601f545f906001600160a01b0316331480159061195b575060235460ff16155b8015611969575060215460ff165b8015610934575050602254305f90815260086020526040902054101590565b6023805460ff19166001179055601b54601c545f916119a691610818565b6119b257600c546119b4565b5f5b90505f6119d76002610ff2601154610ff28660225461174090919063ffffffff16565b90505f6119ef8260225461160690919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f81518110611a2757611a27612285565b6001600160a01b039283166020918202929092010152600254825191169082906001908110611a5857611a58612285565b6001600160a01b039283166020918202929092010152601d5460405163791ac94760e01b81524792919091169063791ac94790611aa19086905f908790309042906004016122d7565b5f604051808303815f87803b158015611ab8575f80fd5b505af1158015611aca573d5f803e3d5ffd5b505050505f611ae2824761160690919063ffffffff16565b90505f611afc611af38860026117be565b60115490611606565b90505f611b106002610ff28481878d611740565b90505f611b2c83610ff2600d548761174090919063ffffffff16565b90505f611b4884610ff2600f548861174090919063ffffffff16565b90505f611b6485610ff2600e548961174090919063ffffffff16565b6017546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f8114611bb3576040519150601f19603f3d011682016040523d82523d5f602084013e611bb8565b606091505b50506018546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611c05576040519150601f19603f3d011682016040523d82523d5f602084013e611c0a565b606091505b50506019546040519192506001600160a01b03169084905f81818185875af1925050503d805f8114611c57576040519150601f19603f3d011682016040523d82523d5f602084013e611c5c565b606091505b505f9250508b159050611d3857601d5460165460405163f305d71960e01b8152306004820152602481018e90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611cd6573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611cfb9190612346565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506023805460ff1916905550505050505050505050565b601554601f545f91906001600160a01b0390811690841603611d755750601354611d90565b601f546001600160a01b0390811690861603611d9057506014545b5f611dbc6012546064611da3919061226e565b610ff284610fe56011548a61174090919063ffffffff16565b90505f611dda601154610ff26010548561174090919063ffffffff16565b90505f611de78383611606565b305f90815260086020526040902054909150611e0390826116e2565b305f9081526008602052604080822092909255601a546001600160a01b031681522054611e3090836116e2565b601a546001600160a01b039081165f9081526008602090815260409182902093909355518381523092918b16915f80516020612372833981519152910160405180910390a38115611ebe57600554611e889083611606565b6005556004546040518381526001600160a01b03918216918a16905f805160206123728339815191529060200160405180910390a35b611ec88784611606565b98975050505050505050565b5f8183611ef45760405162461bcd60e51b81526004016109629190611f00565b505f611239848661224f565b5f6020808352835180828501525f5b81811015611f2b57858101830151858201604001528201611f0f565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611f61575f80fd5b919050565b5f8060408385031215611f77575f80fd5b611f8083611f4b565b946020939093013593505050565b5f60208284031215611f9e575f80fd5b6108e282611f4b565b5f8060408385031215611fb8575f80fd5b50508035926020909101359150565b5f805f60608486031215611fd9575f80fd5b611fe284611f4b565b9250611ff060208501611f4b565b9150604084013590509250925092565b5f805f805f60a08688031215612014575f80fd5b61201d86611f4b565b945061202b60208701611f4b565b935061203960408701611f4b565b925061204760608701611f4b565b915061205560808701611f4b565b90509295509295909350565b5f805f60608486031215612073575f80fd5b505081359360208301359350604090920135919050565b5f6020828403121561209a575f80fd5b5035919050565b5f805f805f8060c087890312156120b6575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b8015158114610e4c575f80fd5b5f602082840312156120fd575f80fd5b81356108e2816120e0565b5f8060408385031215612119575f80fd5b8235611f80816120e0565b5f8060408385031215612135575f80fd5b61213e83611f4b565b915061214c60208401611f4b565b90509250929050565b5f805f60408486031215612167575f80fd5b833567ffffffffffffffff8082111561217e575f80fd5b818601915086601f830112612191575f80fd5b81358181111561219f575f80fd5b8760208260051b85010111156121b3575f80fd5b602092830195509350508401356121c9816120e0565b809150509250925092565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215612219575f80fd5b5051919050565b5f60208284031215612230575f80fd5b81516108e2816120e0565b634e487b7160e01b5f52601160045260245ffd5b5f8261226957634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176108125761081261223b565b634e487b7160e01b5f52603260045260245ffd5b5f600182016122aa576122aa61223b565b5060010190565b818103818111156108125761081261223b565b808201808211156108125761081261223b565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156123255784516001600160a01b031683529383019391830191600101612300565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612358575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122056840ea6ab6c2f14b74149426a82496e1032adbba87381067e7247ba7efa2ed164736f6c63430008150033

Deployed Bytecode

0x608060405260043610610257575f3560e01c8063751039fc1161013f578063a8aa1b31116100b3578063d78e139d11610078578063d78e139d146106d8578063dd62ed3e146106f7578063e1deae431461073b578063ea893be21461075a578063f2fde38b1461076e578063f887ea401461078d575f80fd5b8063a8aa1b3114610649578063a9059cbb14610668578063b2bdfa7b14610687578063c9567bf9146106a5578063d51ed1c8146106b9575f80fd5b80638a4068dd116101045780638a4068dd146105995780638c33c9e4146105ad5780638da5cb5b146105cc57806395d89b41146105e857806397613b2814610616578063a456ae6914610635575f80fd5b8063751039fc1461050c57806378109e54146105205780637d1db4a51461053557806386f6c3c11461054a578063893d20e814610569575f80fd5b80633554dd3c116101d65780635c7d2f191161019b5780635c7d2f191461044d5780635d83e1d51461046c5780636ddd17131461048b57806370a08231146104a457806370c757ec146104d8578063715018a6146104f8575f80fd5b80633554dd3c146103c65780633748cba8146103e75780633df4ddf414610406578063571ac8b01461041a5780635a8ac02d14610439575f80fd5b80631161ae391161021c5780631161ae391461034557806318160ddd1461036457806323b872dd146103785780632b112e4914610397578063313ce567146103ab575f80fd5b80630445b6671461026257806306fdde031461028a57806308fd3d05146102c9578063095ea7b3146102f9578063115db61014610318575f80fd5b3661025e57005b5f80fd5b34801561026d575f80fd5b5061027760225481565b6040519081526020015b60405180910390f35b348015610295575f80fd5b5060408051808201909152600e81526d047726f6b2047726f6b20333030360941b60208201525b6040516102819190611f00565b3480156102d4575f80fd5b50601f546102e990600160a01b900460ff1681565b6040519015158152602001610281565b348015610304575f80fd5b506102e9610313366004611f66565b6107ac565b348015610323575f80fd5b506102e9610332366004611f8e565b602080525f908152604090205460ff1681565b348015610350575f80fd5b506102e961035f366004611fa7565b610818565b34801561036f575f80fd5b50600554610277565b348015610383575f80fd5b506102e9610392366004611fc7565b61082b565b3480156103a2575f80fd5b506102776108e9565b3480156103b6575f80fd5b5060405160128152602001610281565b3480156103d1575f80fd5b506103e56103e0366004612000565b610939565b005b3480156103f2575f80fd5b506103e5610401366004612061565b610a18565b348015610411575f80fd5b506103e5610a52565b348015610425575f80fd5b506102e9610434366004611f8e565b610a95565b348015610444575f80fd5b506103e5610aa1565b348015610458575f80fd5b506102e9610467366004611f66565b610ae1565b348015610477575f80fd5b506103e561048636600461208a565b610c08565b348015610496575f80fd5b506021546102e99060ff1681565b3480156104af575f80fd5b506102776104be366004611f8e565b6001600160a01b03165f9081526008602052604090205490565b3480156104e3575f80fd5b50601f546102e990600160a81b900460ff1681565b348015610503575f80fd5b506103e5610ca2565b348015610517575f80fd5b506103e5610d13565b34801561052b575f80fd5b5061027760075481565b348015610540575f80fd5b5061027760065481565b348015610555575f80fd5b506103e56105643660046120a1565b610d49565b348015610574575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610281565b3480156105a4575f80fd5b506103e5610e16565b3480156105b8575f80fd5b506103e56105c73660046120ed565b610e4f565b3480156105d7575f80fd5b505f546001600160a01b0316610581565b3480156105f3575f80fd5b5060408051808201909152600681526547524f4b334b60d01b60208201526102bc565b348015610621575f80fd5b506103e5610630366004612108565b610e96565b348015610640575f80fd5b506103e5610f17565b348015610654575f80fd5b50601f54610581906001600160a01b031681565b348015610673575f80fd5b506102e9610682366004611f66565b610f57565b348015610692575f80fd5b505f54610581906001600160a01b031681565b3480156106b0575f80fd5b506103e5610f63565b3480156106c4575f80fd5b506102776106d336600461208a565b610fb3565b3480156106e3575f80fd5b506103e56106f236600461208a565b610ff8565b348015610702575f80fd5b50610277610711366004612124565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b348015610746575f80fd5b506103e5610755366004612155565b611049565b348015610765575f80fd5b506103e56110e4565b348015610779575f80fd5b506103e5610788366004611f8e565b611123565b348015610798575f80fd5b50601d54610581906001600160a01b031681565b335f8181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108069086815260200190565b60405180910390a35060015b92915050565b5f8261082383610fb3565b119392505050565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f19146108d4576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f9081526009825283812033825290915291909120546108b091849061120a565b6001600160a01b0385165f9081526009602090815260408083203384529091529020555b6108df848484611242565b90505b9392505050565b6004546001600160a01b03165f90815260086020526040812054610934906003546001600160a01b03165f9081526008602052604090205461092e9060055490611606565b90611606565b905090565b5f546001600160a01b0316331461096b5760405162461bcd60e51b8152600401610962906121d4565b60405180910390fd5b601680546001600160a01b038781166001600160a01b031992831617909255601780548784169083168117909155601880548785169084168117909155601a805487861690851681179091556019805495871695909416851790935560408051928352602083019190915281019190915260608101919091527f06cd79b5e338fdebb51e28f829f3333e4fda9663d4732f262d97dbbacf748b159060800160405180910390a15050505050565b5f546001600160a01b03163314610a415760405162461bcd60e51b8152600401610962906121d4565b601391909155601491909155601555565b5f546001600160a01b03163314610a7b5760405162461bcd60e51b8152600401610962906121d4565b61019060145561028a6013555f601555610a93611647565b565b5f610812825f196107ac565b5f546001600160a01b03163314610aca5760405162461bcd60e51b8152600401610962906121d4565b60fa6014556101906013555f601555610a93611647565b5f815f03610b52576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610b2b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b4f9190612209565b91505b604080516001600160a01b0385168152602081018490527fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f910160405180910390a160165460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af1158015610be4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e29190612220565b5f546001600160a01b03163314610c315760405162461bcd60e51b8152600401610962906121d4565b6103e8600554610c41919061224f565b6007541015610c4e575f80fd5b6103e881600554610c5f919061226e565b610c69919061224f565b6007556040518181527fe0654e8597f94e34d9eb74dddc2975e840b8613108bf9e8ef6785d786c4bccd19060200160405180910390a150565b5f546001600160a01b03163314610ccb5760405162461bcd60e51b8152600401610962906121d4565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610d3c5760405162461bcd60e51b8152600401610962906121d4565b6005546007819055600655565b5f546001600160a01b03163314610d725760405162461bcd60e51b8152600401610962906121d4565b600c869055600f859055600d849055600e8390556010829055610da382610d9d858188818c8c6116e2565b906116e2565b6011556012819055610db660058261224f565b60115410610e065760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e203230250000006044820152606401610962565b610e0e611647565b505050505050565b6018546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610e4c573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610e785760405162461bcd60e51b8152600401610962906121d4565b601f8054911515600160a81b0260ff60a81b19909216919091179055565b5f546001600160a01b03163314610ebf5760405162461bcd60e51b8152600401610962906121d4565b6021805460ff191683151590811790915560228290556040805183815260ff909216151560208301527f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee60910160405180910390a15050565b5f546001600160a01b03163314610f405760405162461bcd60e51b8152600401610962906121d4565b601f805461ffff60a01b191661010160a01b179055565b5f6108e2338484611242565b5f546001600160a01b03163314610f8c5760405162461bcd60e51b8152600401610962906121d4565b601f805460ff60a81b1916905561028a6014556103b66013556103e8601555610a93611647565b5f610812610fbf6108e9565b601f546001600160a01b03165f90815260086020526040902054610ff290610feb906002905b90611740565b8590611740565b906117be565b60185447906001600160a01b03166108fc6064611015858561226e565b61101f919061224f565b6040518115909202915f818181858888f19350505050158015611044573d5f803e3d5ffd5b505050565b5f546001600160a01b031633146110725760405162461bcd60e51b8152600401610962906121d4565b5f5b828110156110de578160205f86868581811061109257611092612285565b90506020020160208101906110a79190611f8e565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556110d781612299565b9050611074565b50505050565b5f546001600160a01b0316331461110d5760405162461bcd60e51b8152600401610962906121d4565b601960148190556013555f601555610a93611647565b5f546001600160a01b0316331461114c5760405162461bcd60e51b8152600401610962906121d4565b6001600160a01b0381166111b15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610962565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f818484111561122d5760405162461bcd60e51b81526004016109629190611f00565b505f61123984866122b1565b95945050505050565b6023545f9060ff16156112615761125a8484846117ff565b90506108e2565b6001600160a01b0384165f9081526001602052604090205460ff161580156112a157506001600160a01b0383165f9081526001602052604090205460ff16155b1561136057601f54600160a01b900460ff166112f65760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610962565b601f54600160a81b900460ff1615611360576001600160a01b0383165f90815260208052604090205460ff166113605760405162461bcd60e51b815260206004820152600f60248201526e139bdd081dda1a5d195b1a5cdd1959608a1b6044820152606401610962565b6001600160a01b0384165f9081526001602052604090205460ff1615801561139157506001600160a01b0383163014155b80156113ab57506003546001600160a01b03848116911614155b80156113c55750601f546001600160a01b03848116911614155b80156113df5750601a546001600160a01b03848116911614155b80156113f957506017546001600160a01b03848116911614155b801561141d57506001600160a01b0383165f908152600b602052604090205460ff16155b156114bd576001600160a01b0383165f9081526008602052604090205460075461144784836122c4565b11156114bb5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610962565b505b6114c784836118cf565b6114cf61193b565b156114dc576114dc611988565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f9081526008909152919091205461152d91849061120a565b6001600160a01b0385165f90815260086020908152604080832093909355600a90529081205460ff168061157857506001600160a01b0384165f908152600a602052604090205460ff165b61158c57611587858486611d50565b61158e565b825b6001600160a01b0385165f908152600860205260409020549091506115b390826116e2565b6001600160a01b038086165f8181526008602052604090819020939093559151908716905f80516020612372833981519152906115f39085815260200190565b60405180910390a3506001949350505050565b5f6108e283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061120a565b7f8cc651ceed4360bdb07d4dfc17daa4a6fa17092a313d2464a582a73e9b9328006116846064610ff260145460115461174090919063ffffffff16565b6116a06064610ff260135460115461174090919063ffffffff16565b6116bc6064610ff260155460115461174090919063ffffffff16565b6040805160ff9485168152928416602084015292168183015290519081900360600190a1565b5f806116ee83856122c4565b9050838110156108e25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610962565b5f825f0361174f57505f610812565b5f61175a838561226e565b905082611767858361224f565b146108e25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610962565b5f6108e283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ed4565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f90815260089091529182205461184f91849061120a565b6001600160a01b038086165f90815260086020526040808220939093559085168152205461187d90836116e2565b6001600160a01b038085165f8181526008602052604090819020939093559151908616905f80516020612372833981519152906118bd9086815260200190565b60405180910390a35060019392505050565b600654811115806118f757506001600160a01b0382165f908152600b602052604090205460ff165b6119375760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610962565b5050565b601f545f906001600160a01b0316331480159061195b575060235460ff16155b8015611969575060215460ff165b8015610934575050602254305f90815260086020526040902054101590565b6023805460ff19166001179055601b54601c545f916119a691610818565b6119b257600c546119b4565b5f5b90505f6119d76002610ff2601154610ff28660225461174090919063ffffffff16565b90505f6119ef8260225461160690919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f81518110611a2757611a27612285565b6001600160a01b039283166020918202929092010152600254825191169082906001908110611a5857611a58612285565b6001600160a01b039283166020918202929092010152601d5460405163791ac94760e01b81524792919091169063791ac94790611aa19086905f908790309042906004016122d7565b5f604051808303815f87803b158015611ab8575f80fd5b505af1158015611aca573d5f803e3d5ffd5b505050505f611ae2824761160690919063ffffffff16565b90505f611afc611af38860026117be565b60115490611606565b90505f611b106002610ff28481878d611740565b90505f611b2c83610ff2600d548761174090919063ffffffff16565b90505f611b4884610ff2600f548861174090919063ffffffff16565b90505f611b6485610ff2600e548961174090919063ffffffff16565b6017546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f8114611bb3576040519150601f19603f3d011682016040523d82523d5f602084013e611bb8565b606091505b50506018546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611c05576040519150601f19603f3d011682016040523d82523d5f602084013e611c0a565b606091505b50506019546040519192506001600160a01b03169084905f81818185875af1925050503d805f8114611c57576040519150601f19603f3d011682016040523d82523d5f602084013e611c5c565b606091505b505f9250508b159050611d3857601d5460165460405163f305d71960e01b8152306004820152602481018e90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611cd6573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611cfb9190612346565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506023805460ff1916905550505050505050505050565b601554601f545f91906001600160a01b0390811690841603611d755750601354611d90565b601f546001600160a01b0390811690861603611d9057506014545b5f611dbc6012546064611da3919061226e565b610ff284610fe56011548a61174090919063ffffffff16565b90505f611dda601154610ff26010548561174090919063ffffffff16565b90505f611de78383611606565b305f90815260086020526040902054909150611e0390826116e2565b305f9081526008602052604080822092909255601a546001600160a01b031681522054611e3090836116e2565b601a546001600160a01b039081165f9081526008602090815260409182902093909355518381523092918b16915f80516020612372833981519152910160405180910390a38115611ebe57600554611e889083611606565b6005556004546040518381526001600160a01b03918216918a16905f805160206123728339815191529060200160405180910390a35b611ec88784611606565b98975050505050505050565b5f8183611ef45760405162461bcd60e51b81526004016109629190611f00565b505f611239848661224f565b5f6020808352835180828501525f5b81811015611f2b57858101830151858201604001528201611f0f565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611f61575f80fd5b919050565b5f8060408385031215611f77575f80fd5b611f8083611f4b565b946020939093013593505050565b5f60208284031215611f9e575f80fd5b6108e282611f4b565b5f8060408385031215611fb8575f80fd5b50508035926020909101359150565b5f805f60608486031215611fd9575f80fd5b611fe284611f4b565b9250611ff060208501611f4b565b9150604084013590509250925092565b5f805f805f60a08688031215612014575f80fd5b61201d86611f4b565b945061202b60208701611f4b565b935061203960408701611f4b565b925061204760608701611f4b565b915061205560808701611f4b565b90509295509295909350565b5f805f60608486031215612073575f80fd5b505081359360208301359350604090920135919050565b5f6020828403121561209a575f80fd5b5035919050565b5f805f805f8060c087890312156120b6575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b8015158114610e4c575f80fd5b5f602082840312156120fd575f80fd5b81356108e2816120e0565b5f8060408385031215612119575f80fd5b8235611f80816120e0565b5f8060408385031215612135575f80fd5b61213e83611f4b565b915061214c60208401611f4b565b90509250929050565b5f805f60408486031215612167575f80fd5b833567ffffffffffffffff8082111561217e575f80fd5b818601915086601f830112612191575f80fd5b81358181111561219f575f80fd5b8760208260051b85010111156121b3575f80fd5b602092830195509350508401356121c9816120e0565b809150509250925092565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215612219575f80fd5b5051919050565b5f60208284031215612230575f80fd5b81516108e2816120e0565b634e487b7160e01b5f52601160045260245ffd5b5f8261226957634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176108125761081261223b565b634e487b7160e01b5f52603260045260245ffd5b5f600182016122aa576122aa61223b565b5060010190565b818103818111156108125761081261223b565b808201808211156108125761081261223b565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156123255784516001600160a01b031683529383019391830191600101612300565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612358575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122056840ea6ab6c2f14b74149426a82496e1032adbba87381067e7247ba7efa2ed164736f6c63430008150033

Deployed Bytecode Sourcemap

5087:14830:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7353:55;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;7353:55:0;;;;;;;;8893:80;;;;;;;;;;-1:-1:-1;8965:5:0;;;;;;;;;;;;-1:-1:-1;;;8965:5:0;;;;8893:80;;;;;;;:::i;7177:31::-;;;;;;;;;;-1:-1:-1;7177:31:0;;;;-1:-1:-1;;;7177:31:0;;;;;;;;;914:14:1;;907:22;889:41;;877:2;862:18;7177:31:0;749:187:1;9315:216:0;;;;;;;;;;-1:-1:-1;9315:216:0;;;;;:::i;:::-;;:::i;7258:46::-;;;;;;;;;;-1:-1:-1;7258:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19756:150;;;;;;;;;;-1:-1:-1;19756:150:0;;;;;:::i;:::-;;:::i;8623:88::-;;;;;;;;;;-1:-1:-1;8696:12:0;;8623:88;;9833:370;;;;;;;;;;-1:-1:-1;9833:370:0;;;;;:::i;:::-;;:::i;19431:142::-;;;;;;;;;;;;;:::i;8717:80::-;;;;;;;;;;-1:-1:-1;8717:80:0;;5903:2;2297:36:1;;2285:2;2270:18;8717:80:0;2155:184:1;18666:538:0;;;;;;;;;;-1:-1:-1;18666:538:0;;;;;:::i;:::-;;:::i;:::-;;14577:236;;;;;;;;;;-1:-1:-1;14577:236:0;;;;;:::i;:::-;;:::i;15336:139::-;;;;;;;;;;;;;:::i;9539:122::-;;;;;;;;;;-1:-1:-1;9539:122:0;;;;;:::i;:::-;;:::i;15483:140::-;;;;;;;;;;;;;:::i;14247:322::-;;;;;;;;;;-1:-1:-1;14247:322:0;;;;;:::i;:::-;;:::i;10211:264::-;;;;;;;;;;-1:-1:-1;10211:264:0;;;;;:::i;:::-;;:::i;7316:30::-;;;;;;;;;;-1:-1:-1;7316:30:0;;;;;;;;9063:105;;;;;;;;;;-1:-1:-1;9063:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;9147:18:0;9129:7;9147:18;;;:9;:18;;;;;;;9063:105;7218:33;;;;;;;;;;-1:-1:-1;7218:33:0;;;;-1:-1:-1;;;7218:33:0;;;;;;2003:148;;;;;;;;;;;;;:::i;13983:133::-;;;;;;;;;;;;;:::i;6043:63::-;;;;;;;;;;;;;;;;5976:60;;;;;;;;;;;;;;;;18049:609;;;;;;;;;;-1:-1:-1;18049:609:0;;;;;:::i;:::-;;:::i;8979:78::-;;;;;;;;;;-1:-1:-1;9031:7:0;1854:6;-1:-1:-1;;;;;1854:6:0;8979:78;;;-1:-1:-1;;;;;4031:32:1;;;4013:51;;4001:2;3986:18;8979:78:0;3867:203:1;14124:115:0;;;;;;;;;;;;;:::i;14822:90::-;;;;;;;;;;-1:-1:-1;14822:90:0;;;;;:::i;:::-;;:::i;1789:79::-;;;;;;;;;;-1:-1:-1;1827:7:0;1854:6;-1:-1:-1;;;;;1854:6:0;1789:79;;8803:84;;;;;;;;;;-1:-1:-1;8877:7:0;;;;;;;;;;;;-1:-1:-1;;;8877:7:0;;;;8803:84;;19212:203;;;;;;;;;;-1:-1:-1;19212:203:0;;;;;:::i;:::-;;:::i;15784:103::-;;;;;;;;;;;;;:::i;7145:19::-;;;;;;;;;;-1:-1:-1;7145:19:0;;;;-1:-1:-1;;;;;7145:19:0;;;9669:156;;;;;;;;;;-1:-1:-1;9669:156:0;;;;;:::i;:::-;;:::i;1409:21::-;;;;;;;;;;-1:-1:-1;1409:21:0;;;;-1:-1:-1;;;;;1409:21:0;;;15148:180;;;;;;;;;;;;;:::i;19581:167::-;;;;;;;;;;-1:-1:-1;19581:167:0;;;;;:::i;:::-;;:::i;13767:201::-;;;;;;;;;;-1:-1:-1;13767:201:0;;;;;:::i;:::-;;:::i;9174:133::-;;;;;;;;;;-1:-1:-1;9174:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9276:19:0;;;9258:7;9276:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9174:133;14920:220;;;;;;;;;;-1:-1:-1;14920:220:0;;;;;:::i;:::-;;:::i;15631:141::-;;;;;;;;;;;;;:::i;2159:244::-;;;;;;;;;;-1:-1:-1;2159:244:0;;;;;:::i;:::-;;:::i;7075:24::-;;;;;;;;;;-1:-1:-1;7075:24:0;;;;-1:-1:-1;;;;;7075:24:0;;;9315:216;9419:10;9390:4;9407:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;9407:32:0;;;;;;;;;;:41;;;9464:37;9390:4;;9407:32;;9464:37;;;;9442:6;160:25:1;;148:2;133:18;;14:177;9464:37:0;;;;;;;;-1:-1:-1;9519:4:0;9315:216;;;;;:::o;19756:150::-;19836:4;19892:6;19860:29;19880:8;19860:19;:29::i;:::-;:38;;19756:150;-1:-1:-1;;;19756:150:0:o;9833:370::-;-1:-1:-1;;;;;9953:19:0;;9933:4;9953:19;;;:11;:19;;;;;;;;9973:10;9953:31;;;;;;;;-1:-1:-1;;9953:52:0;9950:186;;10055:69;;;;;;;;;;;-1:-1:-1;;;10055:69:0;;;;;;;;-1:-1:-1;;;;;10055:19:0;;-1:-1:-1;10055:19:0;;;:11;:19;;;;;10075:10;10055:31;;;;;;;;;;:69;;10091:6;;10055:35;:69::i;:::-;-1:-1:-1;;;;;10021:19:0;;;;;;:11;:19;;;;;;;;10041:10;10021:31;;;;;;;:103;9950:186;10155:40;10169:6;10177:9;10188:6;10155:13;:40::i;:::-;10148:47;;9833:370;;;;;;:::o;19431:142::-;19559:4;;-1:-1:-1;;;;;19559:4:0;19484:7;9147:18;;;:9;:18;;;;;;19511:54;;19538:4;;-1:-1:-1;;;;;19538:4:0;9129:7;9147:18;;;:9;:18;;;;;;19511:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;19504:61;;19431:142;:::o;18666:538::-;1916:6;;-1:-1:-1;;;;;1916:6:0;1222:10;1916:22;1908:67;;;;-1:-1:-1;;;1908:67:0;;;;;;;:::i;:::-;;;;;;;;;18856:10:::1;:24:::0;;-1:-1:-1;;;;;18856:24:0;;::::1;-1:-1:-1::0;;;;;;18856:24:0;;::::1;;::::0;;;18891:20:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;18946:18:::1;:40:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;18997:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;19042:20:::1;:44:::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;19102:94:::1;::::0;;6634:34:1;;;6699:2;6684:18;;6677:43;;;;6736:18;;6729:43;;;;6803:2;6788:18;;6781:43;;;;19102:94:0::1;::::0;6583:3:1;6568:19;19102:94:0::1;;;;;;;18666:538:::0;;;;;:::o;14577:236::-;1916:6;;-1:-1:-1;;;;;1916:6:0;1222:10;1916:22;1908:67;;;;-1:-1:-1;;;1908:67:0;;;;;;;:::i;:::-;14695:7:::1;:22:::0;;;;14728:6:::1;:20:::0;;;;14759:14:::1;:30:::0;14577:236::o;15336:139::-;1916:6;;-1:-1:-1;;;;;1916:6:0;1222:10;1916:22;1908:67;;;;-1:-1:-1;;;1908:67:0;;;;;;;:::i;:::-;15390:3:::1;15381:6;:12:::0;15414:3:::1;15404:7;:13:::0;-1:-1:-1;15428:14:0::1;:18:::0;15457:10:::1;:8;:10::i;:::-;15336:139::o:0;9539:122::-;9594:4;9618:35;9626:7;-1:-1:-1;;9618:7:0;:35::i;15483:140::-;1916:6;;-1:-1:-1;;;;;1916:6:0;1222:10;1916:22;1908:67;;;;-1:-1:-1;;;1908:67:0;;;;;;;:::i;:::-;15538:3:::1;15529:6;:12:::0;15562:3:::1;15552:7;:13:::0;-1:-1:-1;15576:14:0::1;:18:::0;15605:10:::1;:8;:10::i;14247:322::-:0;14327:4;14354:6;14364:1;14354:11;14351:95;;14390:44;;-1:-1:-1;;;14390:44:0;;14428:4;14390:44;;;4013:51:1;-1:-1:-1;;;;;14390:29:0;;;;;3986:18:1;;14390:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14381:53;;14351:95;14463:32;;;-1:-1:-1;;;;;7216:32:1;;7198:51;;7280:2;7265:18;;7258:34;;;14463:32:0;;7171:18:1;14463:32:0;;;;;;;14542:10;;14513:48;;-1:-1:-1;;;14513:48:0;;-1:-1:-1;;;;;14542:10:0;;;14513:48;;;7198:51:1;7265:18;;;7258:34;;;14513:28:0;;;;;;7171:18:1;;14513:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;10211:264::-;1916:6;;-1:-1:-1;;;;;1916:6:0;1222:10;1916:22;1908:67;;;;-1:-1:-1;;;1908:67:0;;;;;;;:::i;:::-;10330:4:::1;10315:12;;:19;;;;:::i;:::-;10296:15;;:38;;10288:47;;;::::0;::::1;;10400:4;10381:14;10366:12;;:29;;;;:::i;:::-;10365:39;;;;:::i;:::-;10347:15;:57:::0;10422:27:::1;::::0;160:25:1;;;10422:27:0::1;::::0;148:2:1;133:18;10422:27:0::1;;;;;;;10211:264:::0;:::o;2003:148::-;1916:6;;-1:-1:-1;;;;;1916:6:0;1222:10;1916:22;1908:67;;;;-1:-1:-1;;;1908:67:0;;;;;;;:::i;:::-;2110:1:::1;2094:6:::0;;2073:40:::1;::::0;-1:-1:-1;;;;;2094:6:0;;::::1;::::0;2073:40:::1;::::0;2110:1;;2073:40:::1;2141:1;2124:19:::0;;-1:-1:-1;;;;;;2124:19:0::1;::::0;;2003:148::o;13983:133::-;1916:6;;-1:-1:-1;;;;;1916:6:0;1222:10;1916:22;1908:67;;;;-1:-1:-1;;;1908:67:0;;;;;;;:::i;:::-;14056:12:::1;::::0;14038:15:::1;:30:::0;;;14079:12:::1;:27:::0;13983:133::o;18049:609::-;1916:6;;-1:-1:-1;;;;;1916:6:0;1222:10;1916:22;1908:67;;;;-1:-1:-1;;;1908:67:0;;;;;;;:::i;:::-;18229:12:::1;:28:::0;;;18268:12:::1;:28:::0;;;18307:12:::1;:28:::0;;;18346:10:::1;:24:::0;;;18381:7:::1;:18:::0;;;18421:82:::1;18391:8:::0;18421:68:::1;18359:11:::0;18421:68;18322:13;18421:68;18244:13;18283;18421:17:::1;:32::i;:::-;:36:::0;::::1;:51::i;:82::-;18410:8;:93:::0;18514:14:::1;:32:::0;;;18576:18:::1;18593:1;18531:15:::0;18576:18:::1;:::i;:::-;18565:8;;:29;18557:71;;;::::0;-1:-1:-1;;;18557:71:0;;8282:2:1;18557:71:0::1;::::0;::::1;8264:21:1::0;8321:2;8301:18;;;8294:30;8360:31;8340:18;;;8333:59;8409:18;;18557:71:0::1;8080:353:1::0;18557:71:0::1;18640:10;:8;:10::i;:::-;18049:609:::0;;;;;;:::o;14124:115::-;14178:18;;14170:59;;-1:-1:-1;;;;;14178:18:0;;;;14207:21;14170:59;;;;;14178:18;14170:59;14178:18;14170:59;14207:21;14178:18;14170:59;;;;;;;;;;;;;;;;;;;;;14124:115::o;14822:90::-;1916:6;;-1:-1:-1;;;;;1916:6:0;1222:10;1916:22;1908:67;;;;-1:-1:-1;;;1908:67:0;;;;;;;:::i;:::-;14881:13:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;14881:23:0::1;-1:-1:-1::0;;;;14881:23:0;;::::1;::::0;;;::::1;::::0;;14822:90::o;19212:203::-;1916:6;;-1:-1:-1;;;;;1916:6:0;1222:10;1916:22;1908:67;;;;-1:-1:-1;;;1908:67:0;;;;;;;:::i;:::-;19295:11:::1;:22:::0;;-1:-1:-1;;19295:22:0::1;::::0;::::1;;::::0;;::::1;::::0;;;19328:13:::1;:23:::0;;;19367:40:::1;::::0;;8606:25:1;;;19295:22:0::1;19395:11:::0;;;8674:14:1;8667:22;8662:2;8647:18;;8640:50;19367:40:0::1;::::0;8579:18:1;19367:40:0::1;;;;;;;19212:203:::0;;:::o;15784:103::-;1916:6;;-1:-1:-1;;;;;1916:6:0;1222:10;1916:22;1908:67;;;;-1:-1:-1;;;1908:67:0;;;;;;;:::i;:::-;15830:11:::1;:18:::0;;-1:-1:-1;;;;15859:20:0;-1:-1:-1;;;15859:20:0;;;15784:103::o;9669:156::-;9749:4;9773:44;9787:10;9799:9;9810:6;9773:13;:44::i;15148:180::-;1916:6;;-1:-1:-1;;;;;1916:6:0;1222:10;1916:22;1908:67;;;;-1:-1:-1;;;1908:67:0;;;;;;;:::i;:::-;15199:13:::1;:21:::0;;-1:-1:-1;;;;15199:21:0::1;::::0;;15240:3:::1;15231:6;:12:::0;15264:3:::1;15254:7;:13:::0;15295:4:::1;15199:13;15278:21:::0;15310:10:::1;:8;:10::i;19581:167::-:0;19649:7;19676:64;19717:22;:20;:22::i;:::-;19699:4;;-1:-1:-1;;;;;19699:4:0;9129:7;9147:18;;;:9;:18;;;;;;19676:36;;19689:22;;19709:1;;19689:15;:19;;:22::i;:::-;19676:8;;:12;:36::i;:::-;:40;;:64::i;13767:201::-;13896:18;;13856:21;;-1:-1:-1;;;;;13896:18:0;13888:72;13956:3;13925:28;13937:16;13856:21;13925:28;:::i;:::-;:34;;;;:::i;:::-;13888:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13825:143;13767:201;:::o;14920:220::-;1916:6;;-1:-1:-1;;;;;1916:6:0;1222:10;1916:22;1908:67;;;;-1:-1:-1;;;1908:67:0;;;;;;;:::i;:::-;15032:9:::1;15027:106;15043:20:::0;;::::1;15027:106;;;15115:6;15085:13;:27;15099:9;;15109:1;15099:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15085:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15085:27:0;:36;;-1:-1:-1;;15085:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15065:3:::1;::::0;::::1;:::i;:::-;;;15027:106;;;;14920:220:::0;;;:::o;15631:141::-;1916:6;;-1:-1:-1;;;;;1916:6:0;1222:10;1916:22;1908:67;;;;-1:-1:-1;;;1908:67:0;;;;;;;:::i;:::-;15687:2:::1;15678:6;:11:::0;;;15700:7:::1;:12:::0;-1:-1:-1;15723:14:0::1;:18:::0;15752:10:::1;:8;:10::i;2159:244::-:0;1916:6;;-1:-1:-1;;;;;1916:6:0;1222:10;1916:22;1908:67;;;;-1:-1:-1;;;1908:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2248:22:0;::::1;2240:73;;;::::0;-1:-1:-1;;;2240:73:0;;9175:2:1;2240:73:0::1;::::0;::::1;9157:21:1::0;9214:2;9194:18;;;9187:30;9253:34;9233:18;;;9226:62;-1:-1:-1;;;9304:18:1;;;9297:36;9350:19;;2240:73:0::1;8973:402:1::0;2240:73:0::1;2350:6;::::0;;2329:38:::1;::::0;-1:-1:-1;;;;;2329:38:0;;::::1;::::0;2350:6;::::1;::::0;2329:38:::1;::::0;::::1;2378:6;:17:::0;;-1:-1:-1;;;;;;2378:17:0::1;-1:-1:-1::0;;;;;2378:17:0;;;::::1;::::0;;;::::1;::::0;;2159:244::o;4299:192::-;4385:7;4421:12;4413:6;;;;4405:29;;;;-1:-1:-1;;;4405:29:0;;;;;;;;:::i;:::-;-1:-1:-1;4445:9:0;4457:5;4461:1;4457;:5;:::i;:::-;4445:17;4299:192;-1:-1:-1;;;;;4299:192:0:o;10494:1433::-;10606:6;;10586:4;;10606:6;;10603:63;;;10622:41;10637:6;10645:9;10656:6;10622:14;:41::i;:::-;10615:48;;;;10603:63;-1:-1:-1;;;;;10682:22:0;;;;;;:14;:22;;;;;;;;10681:23;:53;;;;-1:-1:-1;;;;;;10709:25:0;;;;;;:14;:25;;;;;;;;10708:26;10681:53;10678:254;;;10758:11;;-1:-1:-1;;;10758:11:0;;;;10750:43;;;;-1:-1:-1;;;10750:43:0;;9715:2:1;10750:43:0;;;9697:21:1;9754:2;9734:18;;;9727:30;-1:-1:-1;;;9773:18:1;;;9766:50;9833:18;;10750:43:0;9513:344:1;10750:43:0;10822:13;;-1:-1:-1;;;10822:13:0;;;;10819:102;;;-1:-1:-1;;;;;10863:24:0;;;;;;:13;:24;;;;;;;;10855:51;;;;-1:-1:-1;;;10855:51:0;;10064:2:1;10855:51:0;;;10046:21:1;10103:2;10083:18;;;10076:30;-1:-1:-1;;;10122:18:1;;;10115:45;10177:18;;10855:51:0;9862:339:1;10855:51:0;-1:-1:-1;;;;;10964:22:0;;;;;;:14;:22;;;;;;;;10963:23;:53;;;;-1:-1:-1;;;;;;10990:26:0;;11011:4;10990:26;;10963:53;:84;;;;-1:-1:-1;11042:4:0;;-1:-1:-1;;;;;11021:26:0;;;11042:4;;11021:26;;10963:84;:105;;;;-1:-1:-1;11064:4:0;;-1:-1:-1;;;;;11051:17:0;;;11064:4;;11051:17;;10963:105;:137;;;;-1:-1:-1;11085:15:0;;-1:-1:-1;;;;;11072:28:0;;;11085:15;;11072:28;;10963:137;:174;;;;-1:-1:-1;11117:20:0;;-1:-1:-1;;;;;11104:33:0;;;11117:20;;11104:33;;10963:174;:205;;;;-1:-1:-1;;;;;;11142:26:0;;;;;;:15;:26;;;;;;;;11141:27;10963:205;10959:397;;;-1:-1:-1;;;;;9147:18:0;;11184;9147;;;:9;:18;;;;;;11273:15;;11249:19;11262:6;9147:18;11249:19;:::i;:::-;11248:40;;11240:114;;;;-1:-1:-1;;;11240:114:0;;10538:2:1;11240:114:0;;;10520:21:1;10577:2;10557:18;;;10550:30;10616:34;10596:18;;;10589:62;10687:32;10667:18;;;10660:60;10737:19;;11240:114:0;10336:426:1;11240:114:0;11169:187;10959:397;11421:28;11434:6;11442;11421:12;:28::i;:::-;11466:16;:14;:16::i;:::-;11463:35;;;11485:10;:8;:10::i;:::-;11578:53;;;;;;;;;;;-1:-1:-1;;;11578:53:0;;;;;;;;-1:-1:-1;;;;;11578:17:0;;-1:-1:-1;11578:17:0;;;:9;:17;;;;;;;;:53;;11600:6;;11578:21;:53::i;:::-;-1:-1:-1;;;;;11558:17:0;;;;;;:9;:17;;;;;;;;:73;;;;11670:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;11693:22:0;;;;;;:11;:22;;;;;;;;11670:45;11669:93;;11728:34;11736:6;11744;11752:9;11728:7;:34::i;:::-;11669:93;;;11719:6;11669:93;-1:-1:-1;;;;;11796:20:0;;;;;;:9;:20;;;;;;11644:118;;-1:-1:-1;11796:40:0;;11644:118;11796:24;:40::i;:::-;-1:-1:-1;;;;;11773:20:0;;;;;;;:9;:20;;;;;;;:63;;;;11854:43;;;;;;-1:-1:-1;;;;;;;;;;;11854:43:0;;;11882:14;160:25:1;;148:2;133:18;;14:177;11854:43:0;;;;;;;;-1:-1:-1;11915:4:0;;10494:1433;-1:-1:-1;;;;10494:1433:0:o;4157:136::-;4215:7;4242:43;4246:1;4249;4242:43;;;;;;;;;;;;;;;;;:3;:43::i;17804:232::-;17857:171;17872:29;17897:3;17872:20;17885:6;;17872:8;;:12;;:20;;;;:::i;:29::-;17923:30;17949:3;17923:21;17936:7;;17923:8;;:12;;:21;;;;:::i;:30::-;17975:37;18008:3;17975:28;17988:14;;17975:8;;:12;;:28;;;;:::i;:37::-;17857:171;;;10987:4:1;10975:17;;;10957:36;;11029:17;;;11024:2;11009:18;;11002:45;11083:17;;11063:18;;;11056:45;17857:171:0;;;;;;10945:2:1;17857:171:0;;;17804:232::o;3970:181::-;4028:7;;4060:5;4064:1;4060;:5;:::i;:::-;4048:17;;4089:1;4084;:6;;4076:46;;;;-1:-1:-1;;;4076:46:0;;11314:2:1;4076:46:0;;;11296:21:1;11353:2;11333:18;;;11326:30;11392:29;11372:18;;;11365:57;11439:18;;4076:46:0;11112:351:1;4497:250:0;4555:7;4579:1;4584;4579:6;4575:47;;-1:-1:-1;4609:1:0;4602:8;;4575:47;4634:9;4646:5;4650:1;4646;:5;:::i;:::-;4634:17;-1:-1:-1;4679:1:0;4670:5;4674:1;4634:17;4670:5;:::i;:::-;:10;4662:56;;;;-1:-1:-1;;;4662:56:0;;11670:2:1;4662:56:0;;;11652:21:1;11709:2;11689:18;;;11682:30;11748:34;11728:18;;;11721:62;-1:-1:-1;;;11799:18:1;;;11792:31;11840:19;;4662:56:0;11468:397:1;4753:132:0;4811:7;4838:39;4842:1;4845;4838:39;;;;;;;;;;;;;;;;;:3;:39::i;11939:330::-;12069:53;;;;;;;;;;;-1:-1:-1;;;12069:53:0;;;;;;;;-1:-1:-1;;;;;12069:17:0;;12032:4;12069:17;;;:9;:17;;;;;;;:53;;12091:6;;12069:21;:53::i;:::-;-1:-1:-1;;;;;12049:17:0;;;;;;;:9;:17;;;;;;:73;;;;12156:20;;;;;;;:32;;12181:6;12156:24;:32::i;:::-;-1:-1:-1;;;;;12133:20:0;;;;;;;:9;:20;;;;;;;:55;;;;12204:35;;;;;;-1:-1:-1;;;;;;;;;;;12204:35:0;;;12232:6;160:25:1;;148:2;133:18;;14:177;12204:35:0;;;;;;;;-1:-1:-1;12257:4:0;11939:330;;;;;:::o;12277:166::-;12374:12;;12364:6;:22;;:49;;;-1:-1:-1;;;;;;12390:23:0;;;;;;:15;:23;;;;;;;;12364:49;12356:79;;;;-1:-1:-1;;;12356:79:0;;12072:2:1;12356:79:0;;;12054:21:1;12111:2;12091:18;;;12084:30;-1:-1:-1;;;12130:18:1;;;12123:47;12187:18;;12356:79:0;11870:341:1;12356:79:0;12277:166;;:::o;13562:197::-;13649:4;;13611;;-1:-1:-1;;;;;13649:4:0;13635:10;:18;;;;:38;;-1:-1:-1;13667:6:0;;;;13666:7;13635:38;:62;;;;-1:-1:-1;13686:11:0;;;;13635:62;:116;;;;-1:-1:-1;;13738:13:0;;13728:4;13710:24;;;;:9;:24;;;;;;:41;;;13562:197::o;15903:1886::-;7456:6;:13;;-1:-1:-1;;7456:13:0;7465:4;7456:13;;;15998:15:::1;::::0;16015:26:::1;::::0;7456:6;;15982:60:::1;::::0;:15:::1;:60::i;:::-;:79;;16049:12;;15982:79;;;16045:1;15982:79;15952:109;;16072:23;16098:59;16155:1;16098:52;16141:8;;16098:38;16116:19;16098:13;;:17;;:38;;;;:::i;:59::-;16072:85;;16168:20;16191:34;16209:15;16191:13;;:17;;:34;;;;:::i;:::-;16262:16;::::0;;16276:1:::1;16262:16:::0;;;;;::::1;::::0;;16168:57;;-1:-1:-1;16238:21:0::1;::::0;16262:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;16262:16:0::1;16238:40;;16307:4;16289;16294:1;16289:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16289:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;16333:4:::1;::::0;16323:7;;16333:4;::::1;::::0;16323;;16333;;16323:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;16323:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;16408:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;16408:188:0;;16374:21:::1;::::0;16408:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;16480:12;;16350:21:::1;::::0;16523:4;;16550::::1;::::0;16570:15:::1;::::0;16408:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16609:17;16629:40;16655:13;16629:21;:25;;:40;;;;:::i;:::-;16609:60:::0;-1:-1:-1;16682:19:0::1;16704:40;16717:26;:19:::0;16741:1:::1;16717:23;:26::i;:::-;16704:8;::::0;;:12:::1;:40::i;:::-;16682:62:::0;-1:-1:-1;16765:26:0::1;16794:58;16850:1;16794:51;16682:62:::0;16794:51;:9;16808:19;16794:13:::1;:34::i;:58::-;16765:87;;16863:26;16892:44;16924:11;16892:27;16906:12;;16892:9;:13;;:27;;;;:::i;:44::-;16863:73;;16947:26;16976:44;17008:11;16976:27;16990:12;;16976:9;:13;;:27;;;;:::i;:44::-;16947:73;;17031:24;17058:42;17088:11;17058:25;17072:10;;17058:9;:13;;:25;;;;:::i;:42::-;17142:20;::::0;17134:65:::1;::::0;17031:69;;-1:-1:-1;17114:15:0::1;::::0;-1:-1:-1;;;;;17142:20:0;;::::1;::::0;17176:18;;17114:15;17134:65;17114:15;17134:65;17176:18;17142:20;17134:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;17234:18:0::1;::::0;17226:61:::1;::::0;17113:86;;-1:-1:-1;;;;;;17234:18:0::1;::::0;17266:16;;17226:61:::1;::::0;;;17266:16;17234:18;17226:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;17322:20:0::1;::::0;17314:65:::1;::::0;17210:77;;-1:-1:-1;;;;;;17322:20:0::1;::::0;17356:18;;17314:65:::1;::::0;;;17356:18;17322:20;17314:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;17413:5:0::1;::::0;-1:-1:-1;;17434:19:0;;;-1:-1:-1;17431:351:0::1;;17469:6;::::0;17643:10:::1;::::0;17469:233:::1;::::0;-1:-1:-1;;;17469:233:0;;17545:4:::1;17469:233;::::0;::::1;13884:34:1::0;13934:18;;;13927:34;;;17469:6:0::1;13977:18:1::0;;;13970:34;;;14020:18;;;14013:34;-1:-1:-1;;;;;17643:10:0;;::::1;14063:19:1::0;;;14056:44;17672:15:0::1;14116:19:1::0;;;14109:35;17469:6:0;::::1;::::0;:22:::1;::::0;17499:18;;13818:19:1;;17469:233:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;17722:48:0::1;::::0;;14640:25:1;;;14696:2;14681:18;;14674:34;;;17722:48:0::1;::::0;-1:-1:-1;14613:18:1;17722:48:0::1;;;;;;;17431:351;-1:-1:-1::0;;7474:6:0;:14;;-1:-1:-1;;7474:14:0;;;-1:-1:-1;;;;;;;;;;15903:1886:0:o;12573:981::-;12708:14;;12751:4;;12659:7;;12708:14;-1:-1:-1;;;;;12751:4:0;;;12738:17;;;;12735:136;;-1:-1:-1;12783:7:0;;12735:136;;;12821:4;;-1:-1:-1;;;;;12821:4:0;;;12811:14;;;;12808:63;;-1:-1:-1;12853:6:0;;12808:63;12883:17;12903:60;12942:14;;12959:3;12942:20;;;;:::i;:::-;12903:34;12928:8;12903:20;12914:8;;12903:6;:10;;:20;;;;:::i;:60::-;12883:80;;12974:18;12995:36;13022:8;;12995:22;13009:7;;12995:9;:13;;:22;;;;:::i;:36::-;12974:57;-1:-1:-1;13042:22:0;13067:25;:9;12974:57;13067:13;:25::i;:::-;13150:4;13132:24;;;;:9;:24;;;;;;13042:50;;-1:-1:-1;13132:44:0;;13042:50;13132:28;:44::i;:::-;13123:4;13105:24;;;;:9;:24;;;;;;:71;;;;13226:15;;-1:-1:-1;;;;;13226:15:0;13216:26;;;;:42;;13247:10;13216:30;:42::i;:::-;13197:15;;-1:-1:-1;;;;;13197:15:0;;;13187:26;;;;:9;:26;;;;;;;;;:71;;;;13274:47;160:25:1;;;13299:4:0;;13274:47;;;;-1:-1:-1;;;;;;;;;;;13274:47:0;133:18:1;13274:47:0;;;;;;;13355:14;;13352:154;;13400:12;;:28;;13417:10;13400:16;:28::i;:::-;13385:12;:43;13465:4;;13448:34;;160:25:1;;;-1:-1:-1;;;;;13465:4:0;;;;13448:34;;;-1:-1:-1;;;;;;;;;;;13448:34:0;148:2:1;133:18;13448:34:0;;;;;;;13352:154;13525:21;:6;13536:9;13525:10;:21::i;:::-;13518:28;12573:981;-1:-1:-1;;;;;;;;12573:981:0:o;4891:189::-;4977:7;5012:12;5005:5;4997:28;;;;-1:-1:-1;;;4997:28:0;;;;;;;;:::i;:::-;-1:-1:-1;5036:9:0;5048:5;5052:1;5048;:5;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;941:173::-;1009:20;;-1:-1:-1;;;;;1058:31:1;;1048:42;;1038:70;;1104:1;1101;1094:12;1038:70;941:173;;;:::o;1119:254::-;1187:6;1195;1248:2;1236:9;1227:7;1223:23;1219:32;1216:52;;;1264:1;1261;1254:12;1216:52;1287:29;1306:9;1287:29;:::i;:::-;1277:39;1363:2;1348:18;;;;1335:32;;-1:-1:-1;;;1119:254:1:o;1378:186::-;1437:6;1490:2;1478:9;1469:7;1465:23;1461:32;1458:52;;;1506:1;1503;1496:12;1458:52;1529:29;1548:9;1529:29;:::i;1569:248::-;1637:6;1645;1698:2;1686:9;1677:7;1673:23;1669:32;1666:52;;;1714:1;1711;1704:12;1666:52;-1:-1:-1;;1737:23:1;;;1807:2;1792:18;;;1779:32;;-1:-1:-1;1569:248:1:o;1822:328::-;1899:6;1907;1915;1968:2;1956:9;1947:7;1943:23;1939:32;1936:52;;;1984:1;1981;1974:12;1936:52;2007:29;2026:9;2007:29;:::i;:::-;1997:39;;2055:38;2089:2;2078:9;2074:18;2055:38;:::i;:::-;2045:48;;2140:2;2129:9;2125:18;2112:32;2102:42;;1822:328;;;;;:::o;2344:484::-;2439:6;2447;2455;2463;2471;2524:3;2512:9;2503:7;2499:23;2495:33;2492:53;;;2541:1;2538;2531:12;2492:53;2564:29;2583:9;2564:29;:::i;:::-;2554:39;;2612:38;2646:2;2635:9;2631:18;2612:38;:::i;:::-;2602:48;;2669:38;2703:2;2692:9;2688:18;2669:38;:::i;:::-;2659:48;;2726:38;2760:2;2749:9;2745:18;2726:38;:::i;:::-;2716:48;;2783:39;2817:3;2806:9;2802:19;2783:39;:::i;:::-;2773:49;;2344:484;;;;;;;;:::o;2833:316::-;2910:6;2918;2926;2979:2;2967:9;2958:7;2954:23;2950:32;2947:52;;;2995:1;2992;2985:12;2947:52;-1:-1:-1;;3018:23:1;;;3088:2;3073:18;;3060:32;;-1:-1:-1;3139:2:1;3124:18;;;3111:32;;2833:316;-1:-1:-1;2833:316:1:o;3154:180::-;3213:6;3266:2;3254:9;3245:7;3241:23;3237:32;3234:52;;;3282:1;3279;3272:12;3234:52;-1:-1:-1;3305:23:1;;3154:180;-1:-1:-1;3154:180:1:o;3339:523::-;3443:6;3451;3459;3467;3475;3483;3536:3;3524:9;3515:7;3511:23;3507:33;3504:53;;;3553:1;3550;3543:12;3504:53;-1:-1:-1;;3576:23:1;;;3646:2;3631:18;;3618:32;;-1:-1:-1;3697:2:1;3682:18;;3669:32;;3748:2;3733:18;;3720:32;;-1:-1:-1;3799:3:1;3784:19;;3771:33;;-1:-1:-1;3851:3:1;3836:19;3823:33;;-1:-1:-1;3339:523:1;-1:-1:-1;3339:523:1:o;4075:118::-;4161:5;4154:13;4147:21;4140:5;4137:32;4127:60;;4183:1;4180;4173:12;4198:241;4254:6;4307:2;4295:9;4286:7;4282:23;4278:32;4275:52;;;4323:1;4320;4313:12;4275:52;4362:9;4349:23;4381:28;4403:5;4381:28;:::i;4444:309::-;4509:6;4517;4570:2;4558:9;4549:7;4545:23;4541:32;4538:52;;;4586:1;4583;4576:12;4538:52;4625:9;4612:23;4644:28;4666:5;4644:28;:::i;4758:260::-;4826:6;4834;4887:2;4875:9;4866:7;4862:23;4858:32;4855:52;;;4903:1;4900;4893:12;4855:52;4926:29;4945:9;4926:29;:::i;:::-;4916:39;;4974:38;5008:2;4997:9;4993:18;4974:38;:::i;:::-;4964:48;;4758:260;;;;;:::o;5023:750::-;5115:6;5123;5131;5184:2;5172:9;5163:7;5159:23;5155:32;5152:52;;;5200:1;5197;5190:12;5152:52;5240:9;5227:23;5269:18;5310:2;5302:6;5299:14;5296:34;;;5326:1;5323;5316:12;5296:34;5364:6;5353:9;5349:22;5339:32;;5409:7;5402:4;5398:2;5394:13;5390:27;5380:55;;5431:1;5428;5421:12;5380:55;5471:2;5458:16;5497:2;5489:6;5486:14;5483:34;;;5513:1;5510;5503:12;5483:34;5568:7;5561:4;5551:6;5548:1;5544:14;5540:2;5536:23;5532:34;5529:47;5526:67;;;5589:1;5586;5579:12;5526:67;5620:4;5612:13;;;;-1:-1:-1;5644:6:1;-1:-1:-1;;5685:20:1;;5672:34;5715:28;5672:34;5715:28;:::i;:::-;5762:5;5752:15;;;5023:750;;;;;:::o;6004:356::-;6206:2;6188:21;;;6225:18;;;6218:30;6284:34;6279:2;6264:18;;6257:62;6351:2;6336:18;;6004:356::o;6835:184::-;6905:6;6958:2;6946:9;6937:7;6933:23;6929:32;6926:52;;;6974:1;6971;6964:12;6926:52;-1:-1:-1;6997:16:1;;6835:184;-1:-1:-1;6835:184:1:o;7303:245::-;7370:6;7423:2;7411:9;7402:7;7398:23;7394:32;7391:52;;;7439:1;7436;7429:12;7391:52;7471:9;7465:16;7490:28;7512:5;7490:28;:::i;7553:127::-;7614:10;7609:3;7605:20;7602:1;7595:31;7645:4;7642:1;7635:15;7669:4;7666:1;7659:15;7685:217;7725:1;7751;7741:132;;7795:10;7790:3;7786:20;7783:1;7776:31;7830:4;7827:1;7820:15;7858:4;7855:1;7848:15;7741:132;-1:-1:-1;7887:9:1;;7685:217::o;7907:168::-;7980:9;;;8011;;8028:15;;;8022:22;;8008:37;7998:71;;8049:18;;:::i;8701:127::-;8762:10;8757:3;8753:20;8750:1;8743:31;8793:4;8790:1;8783:15;8817:4;8814:1;8807:15;8833:135;8872:3;8893:17;;;8890:43;;8913:18;;:::i;:::-;-1:-1:-1;8960:1:1;8949:13;;8833:135::o;9380:128::-;9447:9;;;9468:11;;;9465:37;;;9482:18;;:::i;10206:125::-;10271:9;;;10292:10;;;10289:36;;;10305:18;;:::i;12348:980::-;12610:4;12658:3;12647:9;12643:19;12689:6;12678:9;12671:25;12715:2;12753:6;12748:2;12737:9;12733:18;12726:34;12796:3;12791:2;12780:9;12776:18;12769:31;12820:6;12855;12849:13;12886:6;12878;12871:22;12924:3;12913:9;12909:19;12902:26;;12963:2;12955:6;12951:15;12937:29;;12984:1;12994:195;13008:6;13005:1;13002:13;12994:195;;;13073:13;;-1:-1:-1;;;;;13069:39:1;13057:52;;13164:15;;;;13129:12;;;;13105:1;13023:9;12994:195;;;-1:-1:-1;;;;;;;13245:32:1;;;;13240:2;13225:18;;13218:60;-1:-1:-1;;;13309:3:1;13294:19;13287:35;13206:3;12348:980;-1:-1:-1;;;12348:980:1:o;14155:306::-;14243:6;14251;14259;14312:2;14300:9;14291:7;14287:23;14283:32;14280:52;;;14328:1;14325;14318:12;14280:52;14357:9;14351:16;14341:26;;14407:2;14396:9;14392:18;14386:25;14376:35;;14451:2;14440:9;14436:18;14430:25;14420:35;;14155:306;;;;;:::o

Swarm Source

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