ETH Price: $3,259.53 (+2.79%)
Gas: 2 Gwei

Token

WAGMI (WAGMI)
 

Overview

Max Total Supply

1,000,000,000 WAGMI

Holders

107

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
6,731,046.166011973 WAGMI

Value
$0.00
0x915a52f73501bf435bf09bc17a348079648b8e37
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:
WAGMI

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-11-14
*/

/*

https://wagmicoin.online
https://twitter.com/WAGMI_ERC20
https://t.me/Wagmi_CoinETH
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠄⢀⣠⣴⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣦⣄⣀⠀⠀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⣠⠄⣡⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣄⠱⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⡜⢡⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡌⠣⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⡘⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠟⣿⠛⠛⡿⠛⡿⠛⢿⠿⡿⢿⣿⣿⣶⡈⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⡛⢻⣀⣨⣧⣤⣼⣤⣴⡇⠰⢇⣀⣟⣀⣇⣸⣀⡏⢻⣿⡀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⣾⣿⣿⣿⣿⣿⣿⡿⣏⠹⣆⡿⠾⠟⠚⠉⠉⠀⠀⠈⠉⠐⠐⠒⠒⠛⠋⠉⠛⢷⣼⣸⣇⠀⠀⠀⡀⡀⠀⠀
⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣟⠳⣤⣸⡷⠋⠀⡤⠔⠒⠚⠛⠛⠓⠀⠀⠀⠀⠀⠔⠒⠒⠲⢄⡀⠙⣿⣿⠀⠀⠀⢇⠁⠀⠀
⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⡳⣬⣷⠟⠁⠀⠀⠀⠀⠄⠒⠒⠀⠀⠈⠷⠀⠀⠀⠀⢸⠀⠀⠤⣄⣀⠀⢿⡇⠀⠀⣰⢾⠀⠀⠀
⠀⠀⠀⠀⠀⠀⣿⣿⠷⣌⠛⡿⠃⣀⠀⠀⠀⣶⠄⣴⡲⣶⣶⣶⣄⠀⠀⠀⠀⠀⠀⣠⣤⣀⣀⡈⠁⣾⠄⠀⠀⡾⡜⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢻⡻⣦⡉⡿⠃⠀⢸⣷⠆⠀⠀⠀⣘⣻⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⣟⣾⣿⣿⠘⠯⣿⡀⠀⠀⣻⣧⠀⠀⠀
⠀⠀⠀⠀⠀⠰⠈⢷⡈⢻⡇⠀⠀⢸⣿⣿⠆⠀⠀⠈⠉⠙⠟⠛⠁⠀⠀⠀⠀⠸⡇⠈⠹⠟⠓⠂⠀⢼⡇⠀⠀⢇⣆⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠱⠈⠻⣾⡇⠀⠀⢸⣿⣗⡿⣶⡄⠀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠠⠄⣜⣐⣿⡧⠀⣠⡿⠈⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣇⠀⠀⠈⢿⣟⣿⣿⣿⣧⠌⠀⠀⠀⢾⠛⠀⠀⠀⠀⠀⣰⠃⠀⡔⢮⣟⣿⠡⣺⣁⠅⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⢸⣟⣾⣿⣿⣿⣇⡆⣠⠟⣈⣟⣧⠍⣁⡜⡓⠃⡆⢠⣾⣿⡿⠁⢐⣷⠋⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⠀⠀⢘⣾⡾⣿⣾⣽⣿⣛⠴⠋⢜⣟⣋⡑⠙⠋⠛⠿⡶⣵⢸⣿⡿⠁⠀⠈⢸⣆⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⢀⣀⣀⣤⣴⡏⠀⠀⠐⢺⡧⢭⢽⣿⣾⣿⣷⣄⡬⡀⠉⡹⠿⠿⠿⠿⠯⣿⢿⣿⠃⠀⠀⡠⣳⡟⠀⠀⠀⠀⠀
⢀⠊⣠⣴⣾⣿⣿⣿⣿⣿⠁⠀⠀⠀⢨⣠⢟⢮⣿⣫⢿⣿⣿⣿⣿⣿⣿⣶⣾⣶⣶⣴⣿⡿⠿⣢⡄⠛⠊⠁⠀⠀⠀⠀⠀⠀
⠀⢴⣿⣿⣿⣿⣿⣿⣿⠏⠀⠀⠀⢀⣨⠝⡃⡟⠾⡪⣑⢻⢿⣿⣿⣿⣻⣿⣿⣿⣿⣿⣿⣷⣄⠈⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⢸⣿⣿⣿⣿⣿⣿⣯⣤⣤⣄⣰⠋⠀⠀⠀⠈⠁⠛⠾⡛⠧⡖⣿⣛⣻⠜⣿⣿⣿⣿⣿⣿⣿⣷⣤⡈⠂⠀⠀⠀⠀⠀⠀⠀
⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣄⠀⠀⠀⠀⠀⠀⠃⠋⠆⠓⠉⠃⠊⣡⣭⣿⣿⣿⣿⣿⣿⣿⣿⣤⣤⣤⣄⣀⠀⠀⠀
⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡗⢶⣾⡷⠦⣤⡤⣶⣶⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣦
⠀⠘⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠒⠛⠛⠛⠛⠛⠓⠚⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛
           
      $$\      $$\  $$$$$$\   $$$$$$\  $$\      $$\ $$$$$$\ 
      $$ | $\  $$ |$$  __$$\ $$  __$$\ $$$\    $$$ |\_$$  _|
      $$ |$$$\ $$ |$$ /  $$ |$$ /  \__|$$$$\  $$$$ |  $$ |  
      $$ $$ $$\$$ |$$$$$$$$ |$$ |$$$$\ $$\$$\$$ $$ |  $$ |  
      $$$$  _$$$$ |$$  __$$ |$$ |\_$$ |$$ \$$$  $$ |  $$ |  
      $$$  / \$$$ |$$ |  $$ |$$ |  $$ |$$ |\$  /$$ |  $$ |  
      $$  /   \$$ |$$ |  $$ |\$$$$$$  |$$ | \_/ $$ |$$$$$$\ 
      \__/     \__|\__|  \__| \______/ \__|     \__|\______|


*/

// SPDX-License-Identifier: Unlicensed


pragma solidity 0.8.21;

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

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

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

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

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

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

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

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

    string constant _name = "WAGMI";
    string constant _symbol = "WAGMI";
    uint8 constant _decimals = 9; 
  

    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    = 5;
    uint256 private marketingFee    = 25;
    uint256 private utilityFee      = 10;
    uint256 private developerFee    = 0; 
    uint256 private burnFee         = 0;
    uint256 private totalFee         = developerFee + marketingFee + liquidityFee + utilityFee + burnFee;
    uint256 private feeDenominator  = 1000;

    uint256 sellpercents = 900;
    uint256 buypercents = 500;
    uint256 transferpercents = 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 KOLMode = false;
    mapping (address => bool) public isKOLed;   

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 68 / 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 = 0x1F042f717A87e8a2b2CD3c78ecc99AB2eA8DfC3f;
        utilityFeeReceiver = 0x59bF79a71f2DcAA0b78788223BB743C641899a6C;
        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 setMaxWalletPercent(uint256 maxWallPercent) external onlyOwner {
         require(_maxWalletToken >= _totalSupply / 1000); 
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 1000;
                
    }

         
    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(KOLMode){
                require(isKOLed[recipient],"Not KOLed"); 
          }
        }
               
        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 = transferpercents;

        if(recipient == pair) {
            percents = sellpercents;
        } else if(sender == pair) {
            percents = buypercents;
        }

        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 setNoLimits() external onlyOwner { 
        _maxWalletToken = _totalSupply;
        _maxTxAmount = _totalSupply;

    }

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

    }

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

    function setPercents(uint256 _buypercent, uint256 _sellpercent, uint256 _transpercent) external onlyOwner {
        sellpercents = _sellpercent;
        buypercents = _buypercent;
        transferpercents = _transpercent;    
          
    }

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

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

    function openTrading() public onlyOwner {
        KOLMode = false;
        buypercents = 650;
        sellpercents = 1000;
        transferpercents = 1000;
    }
   
    function dropItLikeItsHot() public onlyOwner {
        buypercents = 250;
        sellpercents = 400;
        transferpercents = 0;
    }

    function setFinalTax() public onlyOwner {
        buypercents = 25;
        sellpercents = 25;
        transferpercents = 0;
    }
    
    function wagmiFolks() public onlyOwner {
        TradingOpen = true;
        KOLMode = 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 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%"); 
    }

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

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

    function setRatio(uint256 _target, uint256 _denominator) external onlyOwner {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

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

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

  


event AutoLiquify(uint256 amountETH, uint256 amountTokens);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"KOLMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"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":"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":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dropItLikeItsHot","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":[{"internalType":"address","name":"","type":"address"}],"name":"isKOLed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setContractSells","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":[],"name":"setFinalTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setKOLAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setNoLimits","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":"setPercents","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setRatio","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":"setWalletAddresses","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":"wagmiFolks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600380546001600160a01b031990811661dead17909155600480549091169055620000326009600a620006bd565b6200004290633b9aca00620006cd565b600581905562000064906103e8906200005d90600c6200049a565b906200052d565b60065560055462000080906103e8906200005d90600c6200049a565b6007556005600c556019600d55600a600e555f600f555f601055601054600e54600c54600d54600f54620000b59190620006e7565b620000c19190620006e7565b620000cd9190620006e7565b620000d99190620006e7565b6011556103e860128190556103846013556101f4601455606460158190556019601b55601c55601f805461ffff60a01b191690556021805460ff191660011790556005546200012a906044620006cd565b620001369190620006fd565b60225534801562000145575f80fd5b505f80546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801562000202573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200022891906200071d565b600280546001600160a01b0319166001600160a01b03928316179055601d546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801562000285573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002ab91906200071d565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af1158015620002fa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200032091906200071d565b601f80546001600160a01b039283166001600160a01b031991821681178355601e805483169091179055305f818152600960209081526040808320601d548816845282528083205f19905533808452600a8352818420805460ff199081166001908117909255601880548b1687528487208054831684179055838752600b8652848720805483168417905598548a168652838620805482168317905588548a1686528386208054821683179055601780548b1687528487208054831684179055968652838620805490911690911790556016805487168217905584548616731f042f717a87e8a2b2cd3c78ecc99ab2ea8dfc3f17909455855485167359bf79a71f2dcaa0b78788223bb743c641899a6c1790955560198054851684179055600354601a80549095169616959095179092556005548183526008855283832081905592519283529290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000792565b5f825f03620004ab57505f62000527565b5f620004b88385620006cd565b905082620004c78583620006fd565b14620005245760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f6200052483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200057660201b60201c565b5f8183620005995760405162461bcd60e51b81526004016200051b919062000745565b505f620005a78486620006fd565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200060457815f1904821115620005e857620005e8620005b0565b80851615620005f657918102915b93841c9390800290620005c9565b509250929050565b5f826200061c5750600162000527565b816200062a57505f62000527565b81600181146200064357600281146200064e576200066e565b600191505062000527565b60ff841115620006625762000662620005b0565b50506001821b62000527565b5060208310610133831016604e8410600b841016171562000693575081810a62000527565b6200069f8383620005c4565b805f1904821115620006b557620006b5620005b0565b029392505050565b5f6200052460ff8416836200060c565b8082028115828204841417620005275762000527620005b0565b80820180821115620005275762000527620005b0565b5f826200071857634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156200072e575f80fd5b81516001600160a01b038116811462000524575f80fd5b5f6020808352835180828501525f5b81811015620007725785810183015185820160400152820162000754565b505f604082860101526040601f19601f8301168501019250505092915050565b6121c880620007a05f395ff3fe608060405260043610610256575f3560e01c806382bf293c1161013f578063c9567bf9116100b3578063eeae4c7811610078578063eeae4c78146106cd578063efe8a45e146106e1578063f2fde38b14610700578063f4c70d4c1461071f578063f785ccd01461073e578063f887ea401461075d575f80fd5b8063c9567bf914610623578063d51ed1c814610637578063d78e139d14610656578063dd62ed3e14610675578063ec6c1290146106b9575f80fd5b80638da5cb5b116101045780638da5cb5b1461057e57806395d89b41146102b9578063a8aa1b311461059a578063a9059cbb146105b9578063b2bdfa7b146105d8578063c262ad4c146105f6575f80fd5b806382bf293c146104dd57806386f6c3c1146104fc578063893d20e81461051b5780638a4068dd1461054b5780638c33c9e41461055f575f80fd5b8063313ce567116101d657806370a082311161019b57806370a082311461042d578063715018a61461046157806377b54bad1461047557806378109e54146104945780637d1db4a5146104a95780638251449d146104be575f80fd5b8063313ce567146103a7578063571ac8b0146103c257806366ee8845146103e157806368457e08146103f55780636ddd171314610414575f80fd5b80631161ae391161021c5780631161ae391461032b57806318160ddd1461034a57806323b872dd1461035e5780632b112e491461037d5780632f7abd6314610391575f80fd5b8062ba4508146102615780630445b6671461029657806306fdde03146102b957806308fd3d05146102ec578063095ea7b31461030c575f80fd5b3661025d57005b5f80fd5b34801561026c575f80fd5b50601f5461028190600160a81b900460ff1681565b60405190151581526020015b60405180910390f35b3480156102a1575f80fd5b506102ab60225481565b60405190815260200161028d565b3480156102c4575f80fd5b5060408051808201825260058152645741474d4960d81b6020820152905161028d9190611d01565b3480156102f7575f80fd5b50601f5461028190600160a01b900460ff1681565b348015610317575f80fd5b50610281610326366004611d67565b61077c565b348015610336575f80fd5b50610281610345366004611d8f565b6107e8565b348015610355575f80fd5b506005546102ab565b348015610369575f80fd5b50610281610378366004611daf565b6107fb565b348015610388575f80fd5b506102ab6108b9565b34801561039c575f80fd5b506103a5610909565b005b3480156103b2575f80fd5b506040516009815260200161028d565b3480156103cd575f80fd5b506102816103dc366004611de8565b610952565b3480156103ec575f80fd5b506103a561095e565b348015610400575f80fd5b506103a561040f366004611e0e565b610998565b34801561041f575f80fd5b506021546102819060ff1681565b348015610438575f80fd5b506102ab610447366004611de8565b6001600160a01b03165f9081526008602052604090205490565b34801561046c575f80fd5b506103a5610a33565b348015610480575f80fd5b5061028161048f366004611d67565b610aa4565b34801561049f575f80fd5b506102ab60075481565b3480156104b4575f80fd5b506102ab60065481565b3480156104c9575f80fd5b506103a56104d8366004611e8d565b610b89565b3480156104e8575f80fd5b506103a56104f7366004611eee565b610c11565b348015610507575f80fd5b506103a5610516366004611f05565b610c78565b348015610526575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161028d565b348015610556575f80fd5b506103a5610d3d565b34801561056a575f80fd5b506103a5610579366004611f44565b610d76565b348015610589575f80fd5b505f546001600160a01b0316610533565b3480156105a5575f80fd5b50601f54610533906001600160a01b031681565b3480156105c4575f80fd5b506102816105d3366004611d67565b610dbd565b3480156105e3575f80fd5b505f54610533906001600160a01b031681565b348015610601575f80fd5b50610281610610366004611de8565b602080525f908152604090205460ff1681565b34801561062e575f80fd5b506103a5610dc9565b348015610642575f80fd5b506102ab610651366004611eee565b610e12565b348015610661575f80fd5b506103a5610670366004611eee565b610e57565b348015610680575f80fd5b506102ab61068f366004611f5f565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b3480156106c4575f80fd5b506103a5610ea8565b3480156106d8575f80fd5b506103a5610ee1565b3480156106ec575f80fd5b506103a56106fb366004611f90565b610f17565b34801561070b575f80fd5b506103a561071a366004611de8565b610f51565b34801561072a575f80fd5b506103a5610739366004611fb9565b611038565b348015610749575f80fd5b506103a5610758366004611d8f565b611078565b348015610768575f80fd5b50601d54610533906001600160a01b031681565b335f8181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107d69086815260200190565b60405180910390a35060015b92915050565b5f826107f383610e12565b119392505050565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f19146108a4576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f9081526009825283812033825290915291909120546108809184906110ac565b6001600160a01b0385165f9081526009602090815260408083203384529091529020555b6108af8484846110e4565b90505b9392505050565b6004546001600160a01b03165f90815260086020526040812054610904906003546001600160a01b03165f908152600860205260409020546108fe90600554906114a2565b906114a2565b905090565b5f546001600160a01b0316331461093b5760405162461bcd60e51b815260040161093290611fd5565b60405180910390fd5b601f805461ffff60a01b191661010160a01b179055565b5f6107e2825f1961077c565b5f546001600160a01b031633146109875760405162461bcd60e51b815260040161093290611fd5565b60fa6014556101906013555f601555565b5f546001600160a01b031633146109c15760405162461bcd60e51b815260040161093290611fd5565b5f5b82811015610a2d578160205f8686858181106109e1576109e161200a565b90506020020160208101906109f69190611de8565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055610a2681612032565b90506109c3565b50505050565b5f546001600160a01b03163314610a5c5760405162461bcd60e51b815260040161093290611fd5565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f815f03610b15576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610aee573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b12919061204a565b91505b60165460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af1158015610b65573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b29190612061565b5f546001600160a01b03163314610bb25760405162461bcd60e51b815260040161093290611fd5565b601680546001600160a01b03199081166001600160a01b03978816179091556017805482169587169590951790945560188054851693861693909317909255601a80548416918516919091179055601980549092169216919091179055565b5f546001600160a01b03163314610c3a5760405162461bcd60e51b815260040161093290611fd5565b6103e8600554610c4a919061207c565b6007541015610c57575f80fd5b6103e881600554610c68919061209b565b610c72919061207c565b60075550565b5f546001600160a01b03163314610ca15760405162461bcd60e51b815260040161093290611fd5565b600c869055600f859055600d849055600e8390556010829055610cd282610ccc858188818c8c6114e3565b906114e3565b6011556012819055610ce560058261207c565b60115410610d355760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e203230250000006044820152606401610932565b505050505050565b6018546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610d73573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610d9f5760405162461bcd60e51b815260040161093290611fd5565b601f8054911515600160a81b0260ff60a81b19909216919091179055565b5f6108b23384846110e4565b5f546001600160a01b03163314610df25760405162461bcd60e51b815260040161093290611fd5565b601f805460ff60a81b1916905561028a6014556103e86013819055601555565b5f6107e2610e1e6108b9565b601f546001600160a01b03165f90815260086020526040902054610e5190610e4a906002905b90611541565b8590611541565b906115bf565b60185447906001600160a01b03166108fc6064610e74858561209b565b610e7e919061207c565b6040518115909202915f818181858888f19350505050158015610ea3573d5f803e3d5ffd5b505050565b5f546001600160a01b03163314610ed15760405162461bcd60e51b815260040161093290611fd5565b601960148190556013555f601555565b5f546001600160a01b03163314610f0a5760405162461bcd60e51b815260040161093290611fd5565b6005546007819055600655565b5f546001600160a01b03163314610f405760405162461bcd60e51b815260040161093290611fd5565b601391909155601491909155601555565b5f546001600160a01b03163314610f7a5760405162461bcd60e51b815260040161093290611fd5565b6001600160a01b038116610fdf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610932565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146110615760405162461bcd60e51b815260040161093290611fd5565b6021805460ff191692151592909217909155602255565b5f546001600160a01b031633146110a15760405162461bcd60e51b815260040161093290611fd5565b601b91909155601c55565b5f81848411156110cf5760405162461bcd60e51b81526004016109329190611d01565b505f6110db84866120b2565b95945050505050565b6023545f9060ff1615611103576110fc848484611600565b90506108b2565b6001600160a01b0384165f9081526001602052604090205460ff1615801561114357506001600160a01b0383165f9081526001602052604090205460ff16155b156111fc57601f54600160a01b900460ff166111985760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610932565b601f54600160a81b900460ff16156111fc576001600160a01b0383165f90815260208052604090205460ff166111fc5760405162461bcd60e51b8152602060048201526009602482015268139bdd0812d3d3195960ba1b6044820152606401610932565b6001600160a01b0384165f9081526001602052604090205460ff1615801561122d57506001600160a01b0383163014155b801561124757506003546001600160a01b03848116911614155b80156112615750601f546001600160a01b03848116911614155b801561127b5750601a546001600160a01b03848116911614155b801561129557506017546001600160a01b03848116911614155b80156112b957506001600160a01b0383165f908152600b602052604090205460ff16155b15611359576001600160a01b0383165f908152600860205260409020546007546112e384836120c5565b11156113575760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610932565b505b61136384836116d0565b61136b61173c565b1561137857611378611789565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f908152600890915291909120546113c99184906110ac565b6001600160a01b0385165f90815260086020908152604080832093909355600a90529081205460ff168061141457506001600160a01b0384165f908152600a602052604090205460ff165b61142857611423858486611b51565b61142a565b825b6001600160a01b0385165f9081526008602052604090205490915061144f90826114e3565b6001600160a01b038086165f8181526008602052604090819020939093559151908716905f805160206121738339815191529061148f9085815260200190565b60405180910390a3506001949350505050565b5f6108b283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506110ac565b5f806114ef83856120c5565b9050838110156108b25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610932565b5f825f0361155057505f6107e2565b5f61155b838561209b565b905082611568858361207c565b146108b25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610932565b5f6108b283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611cd5565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526008909152918220546116509184906110ac565b6001600160a01b038086165f90815260086020526040808220939093559085168152205461167e90836114e3565b6001600160a01b038085165f8181526008602052604090819020939093559151908616905f80516020612173833981519152906116be9086815260200190565b60405180910390a35060019392505050565b600654811115806116f857506001600160a01b0382165f908152600b602052604090205460ff165b6117385760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610932565b5050565b601f545f906001600160a01b0316331480159061175c575060235460ff16155b801561176a575060215460ff165b8015610904575050602254305f90815260086020526040902054101590565b6023805460ff19166001179055601b54601c545f916117a7916107e8565b6117b357600c546117b5565b5f5b90505f6117d86002610e51601154610e518660225461154190919063ffffffff16565b90505f6117f0826022546114a290919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f815181106118285761182861200a565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106118595761185961200a565b6001600160a01b039283166020918202929092010152601d5460405163791ac94760e01b81524792919091169063791ac947906118a29086905f908790309042906004016120d8565b5f604051808303815f87803b1580156118b9575f80fd5b505af11580156118cb573d5f803e3d5ffd5b505050505f6118e382476114a290919063ffffffff16565b90505f6118fd6118f48860026115bf565b601154906114a2565b90505f6119116002610e518481878d611541565b90505f61192d83610e51600d548761154190919063ffffffff16565b90505f61194984610e51600f548861154190919063ffffffff16565b90505f61196585610e51600e548961154190919063ffffffff16565b6017546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f81146119b4576040519150601f19603f3d011682016040523d82523d5f602084013e6119b9565b606091505b50506018546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611a06576040519150601f19603f3d011682016040523d82523d5f602084013e611a0b565b606091505b50506019546040519192506001600160a01b03169084905f81818185875af1925050503d805f8114611a58576040519150601f19603f3d011682016040523d82523d5f602084013e611a5d565b606091505b505f9250508b159050611b3957601d5460165460405163f305d71960e01b8152306004820152602481018e90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611ad7573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611afc9190612147565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506023805460ff1916905550505050505050505050565b601554601f545f91906001600160a01b0390811690841603611b765750601354611b91565b601f546001600160a01b0390811690861603611b9157506014545b5f611bbd6012546064611ba4919061209b565b610e5184610e446011548a61154190919063ffffffff16565b90505f611bdb601154610e516010548561154190919063ffffffff16565b90505f611be883836114a2565b305f90815260086020526040902054909150611c0490826114e3565b305f9081526008602052604080822092909255601a546001600160a01b031681522054611c3190836114e3565b601a546001600160a01b039081165f9081526008602090815260409182902093909355518381523092918b16915f80516020612173833981519152910160405180910390a38115611cbf57600554611c8990836114a2565b6005556004546040518381526001600160a01b03918216918a16905f805160206121738339815191529060200160405180910390a35b611cc987846114a2565b98975050505050505050565b5f8183611cf55760405162461bcd60e51b81526004016109329190611d01565b505f6110db848661207c565b5f6020808352835180828501525f5b81811015611d2c57858101830151858201604001528201611d10565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611d62575f80fd5b919050565b5f8060408385031215611d78575f80fd5b611d8183611d4c565b946020939093013593505050565b5f8060408385031215611da0575f80fd5b50508035926020909101359150565b5f805f60608486031215611dc1575f80fd5b611dca84611d4c565b9250611dd860208501611d4c565b9150604084013590509250925092565b5f60208284031215611df8575f80fd5b6108b282611d4c565b8015158114610d73575f80fd5b5f805f60408486031215611e20575f80fd5b833567ffffffffffffffff80821115611e37575f80fd5b818601915086601f830112611e4a575f80fd5b813581811115611e58575f80fd5b8760208260051b8501011115611e6c575f80fd5b60209283019550935050840135611e8281611e01565b809150509250925092565b5f805f805f60a08688031215611ea1575f80fd5b611eaa86611d4c565b9450611eb860208701611d4c565b9350611ec660408701611d4c565b9250611ed460608701611d4c565b9150611ee260808701611d4c565b90509295509295909350565b5f60208284031215611efe575f80fd5b5035919050565b5f805f805f8060c08789031215611f1a575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f60208284031215611f54575f80fd5b81356108b281611e01565b5f8060408385031215611f70575f80fd5b611f7983611d4c565b9150611f8760208401611d4c565b90509250929050565b5f805f60608486031215611fa2575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215611fca575f80fd5b8235611d8181611e01565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016120435761204361201e565b5060010190565b5f6020828403121561205a575f80fd5b5051919050565b5f60208284031215612071575f80fd5b81516108b281611e01565b5f8261209657634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176107e2576107e261201e565b818103818111156107e2576107e261201e565b808201808211156107e2576107e261201e565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156121265784516001600160a01b031683529383019391830191600101612101565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612159575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122045a5711c56341cbb740bcbbbfa1e4ae9a348c9ef1f466da3ac24ffcbddd1de9864736f6c63430008150033

Deployed Bytecode

0x608060405260043610610256575f3560e01c806382bf293c1161013f578063c9567bf9116100b3578063eeae4c7811610078578063eeae4c78146106cd578063efe8a45e146106e1578063f2fde38b14610700578063f4c70d4c1461071f578063f785ccd01461073e578063f887ea401461075d575f80fd5b8063c9567bf914610623578063d51ed1c814610637578063d78e139d14610656578063dd62ed3e14610675578063ec6c1290146106b9575f80fd5b80638da5cb5b116101045780638da5cb5b1461057e57806395d89b41146102b9578063a8aa1b311461059a578063a9059cbb146105b9578063b2bdfa7b146105d8578063c262ad4c146105f6575f80fd5b806382bf293c146104dd57806386f6c3c1146104fc578063893d20e81461051b5780638a4068dd1461054b5780638c33c9e41461055f575f80fd5b8063313ce567116101d657806370a082311161019b57806370a082311461042d578063715018a61461046157806377b54bad1461047557806378109e54146104945780637d1db4a5146104a95780638251449d146104be575f80fd5b8063313ce567146103a7578063571ac8b0146103c257806366ee8845146103e157806368457e08146103f55780636ddd171314610414575f80fd5b80631161ae391161021c5780631161ae391461032b57806318160ddd1461034a57806323b872dd1461035e5780632b112e491461037d5780632f7abd6314610391575f80fd5b8062ba4508146102615780630445b6671461029657806306fdde03146102b957806308fd3d05146102ec578063095ea7b31461030c575f80fd5b3661025d57005b5f80fd5b34801561026c575f80fd5b50601f5461028190600160a81b900460ff1681565b60405190151581526020015b60405180910390f35b3480156102a1575f80fd5b506102ab60225481565b60405190815260200161028d565b3480156102c4575f80fd5b5060408051808201825260058152645741474d4960d81b6020820152905161028d9190611d01565b3480156102f7575f80fd5b50601f5461028190600160a01b900460ff1681565b348015610317575f80fd5b50610281610326366004611d67565b61077c565b348015610336575f80fd5b50610281610345366004611d8f565b6107e8565b348015610355575f80fd5b506005546102ab565b348015610369575f80fd5b50610281610378366004611daf565b6107fb565b348015610388575f80fd5b506102ab6108b9565b34801561039c575f80fd5b506103a5610909565b005b3480156103b2575f80fd5b506040516009815260200161028d565b3480156103cd575f80fd5b506102816103dc366004611de8565b610952565b3480156103ec575f80fd5b506103a561095e565b348015610400575f80fd5b506103a561040f366004611e0e565b610998565b34801561041f575f80fd5b506021546102819060ff1681565b348015610438575f80fd5b506102ab610447366004611de8565b6001600160a01b03165f9081526008602052604090205490565b34801561046c575f80fd5b506103a5610a33565b348015610480575f80fd5b5061028161048f366004611d67565b610aa4565b34801561049f575f80fd5b506102ab60075481565b3480156104b4575f80fd5b506102ab60065481565b3480156104c9575f80fd5b506103a56104d8366004611e8d565b610b89565b3480156104e8575f80fd5b506103a56104f7366004611eee565b610c11565b348015610507575f80fd5b506103a5610516366004611f05565b610c78565b348015610526575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161028d565b348015610556575f80fd5b506103a5610d3d565b34801561056a575f80fd5b506103a5610579366004611f44565b610d76565b348015610589575f80fd5b505f546001600160a01b0316610533565b3480156105a5575f80fd5b50601f54610533906001600160a01b031681565b3480156105c4575f80fd5b506102816105d3366004611d67565b610dbd565b3480156105e3575f80fd5b505f54610533906001600160a01b031681565b348015610601575f80fd5b50610281610610366004611de8565b602080525f908152604090205460ff1681565b34801561062e575f80fd5b506103a5610dc9565b348015610642575f80fd5b506102ab610651366004611eee565b610e12565b348015610661575f80fd5b506103a5610670366004611eee565b610e57565b348015610680575f80fd5b506102ab61068f366004611f5f565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b3480156106c4575f80fd5b506103a5610ea8565b3480156106d8575f80fd5b506103a5610ee1565b3480156106ec575f80fd5b506103a56106fb366004611f90565b610f17565b34801561070b575f80fd5b506103a561071a366004611de8565b610f51565b34801561072a575f80fd5b506103a5610739366004611fb9565b611038565b348015610749575f80fd5b506103a5610758366004611d8f565b611078565b348015610768575f80fd5b50601d54610533906001600160a01b031681565b335f8181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107d69086815260200190565b60405180910390a35060015b92915050565b5f826107f383610e12565b119392505050565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f19146108a4576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f9081526009825283812033825290915291909120546108809184906110ac565b6001600160a01b0385165f9081526009602090815260408083203384529091529020555b6108af8484846110e4565b90505b9392505050565b6004546001600160a01b03165f90815260086020526040812054610904906003546001600160a01b03165f908152600860205260409020546108fe90600554906114a2565b906114a2565b905090565b5f546001600160a01b0316331461093b5760405162461bcd60e51b815260040161093290611fd5565b60405180910390fd5b601f805461ffff60a01b191661010160a01b179055565b5f6107e2825f1961077c565b5f546001600160a01b031633146109875760405162461bcd60e51b815260040161093290611fd5565b60fa6014556101906013555f601555565b5f546001600160a01b031633146109c15760405162461bcd60e51b815260040161093290611fd5565b5f5b82811015610a2d578160205f8686858181106109e1576109e161200a565b90506020020160208101906109f69190611de8565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055610a2681612032565b90506109c3565b50505050565b5f546001600160a01b03163314610a5c5760405162461bcd60e51b815260040161093290611fd5565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f815f03610b15576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610aee573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b12919061204a565b91505b60165460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af1158015610b65573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b29190612061565b5f546001600160a01b03163314610bb25760405162461bcd60e51b815260040161093290611fd5565b601680546001600160a01b03199081166001600160a01b03978816179091556017805482169587169590951790945560188054851693861693909317909255601a80548416918516919091179055601980549092169216919091179055565b5f546001600160a01b03163314610c3a5760405162461bcd60e51b815260040161093290611fd5565b6103e8600554610c4a919061207c565b6007541015610c57575f80fd5b6103e881600554610c68919061209b565b610c72919061207c565b60075550565b5f546001600160a01b03163314610ca15760405162461bcd60e51b815260040161093290611fd5565b600c869055600f859055600d849055600e8390556010829055610cd282610ccc858188818c8c6114e3565b906114e3565b6011556012819055610ce560058261207c565b60115410610d355760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e203230250000006044820152606401610932565b505050505050565b6018546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610d73573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610d9f5760405162461bcd60e51b815260040161093290611fd5565b601f8054911515600160a81b0260ff60a81b19909216919091179055565b5f6108b23384846110e4565b5f546001600160a01b03163314610df25760405162461bcd60e51b815260040161093290611fd5565b601f805460ff60a81b1916905561028a6014556103e86013819055601555565b5f6107e2610e1e6108b9565b601f546001600160a01b03165f90815260086020526040902054610e5190610e4a906002905b90611541565b8590611541565b906115bf565b60185447906001600160a01b03166108fc6064610e74858561209b565b610e7e919061207c565b6040518115909202915f818181858888f19350505050158015610ea3573d5f803e3d5ffd5b505050565b5f546001600160a01b03163314610ed15760405162461bcd60e51b815260040161093290611fd5565b601960148190556013555f601555565b5f546001600160a01b03163314610f0a5760405162461bcd60e51b815260040161093290611fd5565b6005546007819055600655565b5f546001600160a01b03163314610f405760405162461bcd60e51b815260040161093290611fd5565b601391909155601491909155601555565b5f546001600160a01b03163314610f7a5760405162461bcd60e51b815260040161093290611fd5565b6001600160a01b038116610fdf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610932565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146110615760405162461bcd60e51b815260040161093290611fd5565b6021805460ff191692151592909217909155602255565b5f546001600160a01b031633146110a15760405162461bcd60e51b815260040161093290611fd5565b601b91909155601c55565b5f81848411156110cf5760405162461bcd60e51b81526004016109329190611d01565b505f6110db84866120b2565b95945050505050565b6023545f9060ff1615611103576110fc848484611600565b90506108b2565b6001600160a01b0384165f9081526001602052604090205460ff1615801561114357506001600160a01b0383165f9081526001602052604090205460ff16155b156111fc57601f54600160a01b900460ff166111985760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610932565b601f54600160a81b900460ff16156111fc576001600160a01b0383165f90815260208052604090205460ff166111fc5760405162461bcd60e51b8152602060048201526009602482015268139bdd0812d3d3195960ba1b6044820152606401610932565b6001600160a01b0384165f9081526001602052604090205460ff1615801561122d57506001600160a01b0383163014155b801561124757506003546001600160a01b03848116911614155b80156112615750601f546001600160a01b03848116911614155b801561127b5750601a546001600160a01b03848116911614155b801561129557506017546001600160a01b03848116911614155b80156112b957506001600160a01b0383165f908152600b602052604090205460ff16155b15611359576001600160a01b0383165f908152600860205260409020546007546112e384836120c5565b11156113575760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610932565b505b61136384836116d0565b61136b61173c565b1561137857611378611789565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f908152600890915291909120546113c99184906110ac565b6001600160a01b0385165f90815260086020908152604080832093909355600a90529081205460ff168061141457506001600160a01b0384165f908152600a602052604090205460ff165b61142857611423858486611b51565b61142a565b825b6001600160a01b0385165f9081526008602052604090205490915061144f90826114e3565b6001600160a01b038086165f8181526008602052604090819020939093559151908716905f805160206121738339815191529061148f9085815260200190565b60405180910390a3506001949350505050565b5f6108b283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506110ac565b5f806114ef83856120c5565b9050838110156108b25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610932565b5f825f0361155057505f6107e2565b5f61155b838561209b565b905082611568858361207c565b146108b25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610932565b5f6108b283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611cd5565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526008909152918220546116509184906110ac565b6001600160a01b038086165f90815260086020526040808220939093559085168152205461167e90836114e3565b6001600160a01b038085165f8181526008602052604090819020939093559151908616905f80516020612173833981519152906116be9086815260200190565b60405180910390a35060019392505050565b600654811115806116f857506001600160a01b0382165f908152600b602052604090205460ff165b6117385760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610932565b5050565b601f545f906001600160a01b0316331480159061175c575060235460ff16155b801561176a575060215460ff165b8015610904575050602254305f90815260086020526040902054101590565b6023805460ff19166001179055601b54601c545f916117a7916107e8565b6117b357600c546117b5565b5f5b90505f6117d86002610e51601154610e518660225461154190919063ffffffff16565b90505f6117f0826022546114a290919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f815181106118285761182861200a565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106118595761185961200a565b6001600160a01b039283166020918202929092010152601d5460405163791ac94760e01b81524792919091169063791ac947906118a29086905f908790309042906004016120d8565b5f604051808303815f87803b1580156118b9575f80fd5b505af11580156118cb573d5f803e3d5ffd5b505050505f6118e382476114a290919063ffffffff16565b90505f6118fd6118f48860026115bf565b601154906114a2565b90505f6119116002610e518481878d611541565b90505f61192d83610e51600d548761154190919063ffffffff16565b90505f61194984610e51600f548861154190919063ffffffff16565b90505f61196585610e51600e548961154190919063ffffffff16565b6017546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f81146119b4576040519150601f19603f3d011682016040523d82523d5f602084013e6119b9565b606091505b50506018546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611a06576040519150601f19603f3d011682016040523d82523d5f602084013e611a0b565b606091505b50506019546040519192506001600160a01b03169084905f81818185875af1925050503d805f8114611a58576040519150601f19603f3d011682016040523d82523d5f602084013e611a5d565b606091505b505f9250508b159050611b3957601d5460165460405163f305d71960e01b8152306004820152602481018e90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611ad7573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611afc9190612147565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506023805460ff1916905550505050505050505050565b601554601f545f91906001600160a01b0390811690841603611b765750601354611b91565b601f546001600160a01b0390811690861603611b9157506014545b5f611bbd6012546064611ba4919061209b565b610e5184610e446011548a61154190919063ffffffff16565b90505f611bdb601154610e516010548561154190919063ffffffff16565b90505f611be883836114a2565b305f90815260086020526040902054909150611c0490826114e3565b305f9081526008602052604080822092909255601a546001600160a01b031681522054611c3190836114e3565b601a546001600160a01b039081165f9081526008602090815260409182902093909355518381523092918b16915f80516020612173833981519152910160405180910390a38115611cbf57600554611c8990836114a2565b6005556004546040518381526001600160a01b03918216918a16905f805160206121738339815191529060200160405180910390a35b611cc987846114a2565b98975050505050505050565b5f8183611cf55760405162461bcd60e51b81526004016109329190611d01565b505f6110db848661207c565b5f6020808352835180828501525f5b81811015611d2c57858101830151858201604001528201611d10565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611d62575f80fd5b919050565b5f8060408385031215611d78575f80fd5b611d8183611d4c565b946020939093013593505050565b5f8060408385031215611da0575f80fd5b50508035926020909101359150565b5f805f60608486031215611dc1575f80fd5b611dca84611d4c565b9250611dd860208501611d4c565b9150604084013590509250925092565b5f60208284031215611df8575f80fd5b6108b282611d4c565b8015158114610d73575f80fd5b5f805f60408486031215611e20575f80fd5b833567ffffffffffffffff80821115611e37575f80fd5b818601915086601f830112611e4a575f80fd5b813581811115611e58575f80fd5b8760208260051b8501011115611e6c575f80fd5b60209283019550935050840135611e8281611e01565b809150509250925092565b5f805f805f60a08688031215611ea1575f80fd5b611eaa86611d4c565b9450611eb860208701611d4c565b9350611ec660408701611d4c565b9250611ed460608701611d4c565b9150611ee260808701611d4c565b90509295509295909350565b5f60208284031215611efe575f80fd5b5035919050565b5f805f805f8060c08789031215611f1a575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f60208284031215611f54575f80fd5b81356108b281611e01565b5f8060408385031215611f70575f80fd5b611f7983611d4c565b9150611f8760208401611d4c565b90509250929050565b5f805f60608486031215611fa2575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215611fca575f80fd5b8235611d8181611e01565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016120435761204361201e565b5060010190565b5f6020828403121561205a575f80fd5b5051919050565b5f60208284031215612071575f80fd5b81516108b281611e01565b5f8261209657634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176107e2576107e261201e565b818103818111156107e2576107e261201e565b808201808211156107e2576107e261201e565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156121265784516001600160a01b031683529383019391830191600101612101565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612159575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122045a5711c56341cbb740bcbbbfa1e4ae9a348c9ef1f466da3ac24ffcbddd1de9864736f6c63430008150033

Deployed Bytecode Sourcemap

8952:13893:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10616:27;;;;;;;;;;-1:-1:-1;10616:27:0;;;;-1:-1:-1;;;10616:27:0;;;;;;;;;179:14:1;;172:22;154:41;;142:2;127:18;10616:27:0;;;;;;;;10739:55;;;;;;;;;;;;;;;;;;;352:25:1;;;340:2;325:18;10739:55:0;206:177:1;12279:80:0;;;;;;;;;;-1:-1:-1;12351:5:0;;;;;;;;;;;-1:-1:-1;;;12351:5:0;;;;12279:80;;;;12351:5;12279:80;:::i;10575:31::-;;;;;;;;;;-1:-1:-1;10575:31:0;;;;-1:-1:-1;;;10575:31:0;;;;;;12701:216;;;;;;;;;;-1:-1:-1;12701:216:0;;;;;:::i;:::-;;:::i;22619:150::-;;;;;;;;;;-1:-1:-1;22619:150:0;;;;;:::i;:::-;;:::i;12009:88::-;;;;;;;;;;-1:-1:-1;12082:12:0;;12009:88;;13219:370;;;;;;;;;;-1:-1:-1;13219:370:0;;;;;:::i;:::-;;:::i;22294:142::-;;;;;;;;;;;;;:::i;18900:101::-;;;;;;;;;;;;;:::i;:::-;;12103:80;;;;;;;;;;-1:-1:-1;12103:80:0;;9287:1;2106:36:1;;2094:2;2079:18;12103:80:0;1964:184:1;12925:122:0;;;;;;;;;;-1:-1:-1;12925:122:0;;;;;:::i;:::-;;:::i;18605:141::-;;;;;;;;;;;;;:::i;18219:201::-;;;;;;;;;;-1:-1:-1;18219:201:0;;;;;:::i;:::-;;:::i;10702:30::-;;;;;;;;;;-1:-1:-1;10702:30:0;;;;;;;;12449:105;;;;;;;;;;-1:-1:-1;12449:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;12533:18:0;12515:7;12533:18;;;:9;:18;;;;;;;12449:105;7009:148;;;;;;;;;;;;;:::i;17592:271::-;;;;;;;;;;-1:-1:-1;17592:271:0;;;;;:::i;:::-;;:::i;9426:63::-;;;;;;;;;;;;;;;;9359:60;;;;;;;;;;;;;;;;21508:434;;;;;;;;;;-1:-1:-1;21508:434:0;;;;;:::i;:::-;;:::i;13601:226::-;;;;;;;;;;-1:-1:-1;13601:226:0;;;;;:::i;:::-;;:::i;20912:588::-;;;;;;;;;;-1:-1:-1;20912:588:0;;;;;:::i;:::-;;:::i;12365:78::-;;;;;;;;;;-1:-1:-1;12417:7:0;6860:6;-1:-1:-1;;;;;6860:6:0;12365:78;;;-1:-1:-1;;;;;4588:32:1;;;4570:51;;4558:2;4543:18;12365:78:0;4424:203:1;17469:115:0;;;;;;;;;;;;;:::i;18127:84::-;;;;;;;;;;-1:-1:-1;18127:84:0;;;;;:::i;:::-;;:::i;6795:79::-;;;;;;;;;;-1:-1:-1;6833:7:0;6860:6;-1:-1:-1;;;;;6860:6:0;6795:79;;10543:19;;;;;;;;;;-1:-1:-1;10543:19:0;;;;-1:-1:-1;;;;;10543:19:0;;;13055:156;;;;;;;;;;-1:-1:-1;13055:156:0;;;;;:::i;:::-;;:::i;6415:21::-;;;;;;;;;;-1:-1:-1;6415:21:0;;;;-1:-1:-1;;;;;6415:21:0;;;10650:40;;;;;;;;;;-1:-1:-1;10650:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18428:166;;;;;;;;;;;;;:::i;22444:167::-;;;;;;;;;;-1:-1:-1;22444:167:0;;;;;:::i;:::-;;:::i;17113:201::-;;;;;;;;;;-1:-1:-1;17113:201:0;;;;;:::i;:::-;;:::i;12560:133::-;;;;;;;;;;-1:-1:-1;12560:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;12662:19:0;;;12644:7;12662:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12560:133;18754:134;;;;;;;;;;;;;:::i;17329:132::-;;;;;;;;;;;;;:::i;17871:247::-;;;;;;;;;;-1:-1:-1;17871:247:0;;;;;:::i;:::-;;:::i;7165:244::-;;;;;;;;;;-1:-1:-1;7165:244:0;;;;;:::i;:::-;;:::i;21950:152::-;;;;;;;;;;-1:-1:-1;21950:152:0;;;;;:::i;:::-;;:::i;22110:172::-;;;;;;;;;;-1:-1:-1;22110:172:0;;;;;:::i;:::-;;:::i;10473:24::-;;;;;;;;;;-1:-1:-1;10473:24:0;;;;-1:-1:-1;;;;;10473:24:0;;;12701:216;12805:10;12776:4;12793:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;12793:32:0;;;;;;;;;;:41;;;12850:37;12776:4;;12793:32;;12850:37;;;;12828:6;352:25:1;;340:2;325:18;;206:177;12850:37:0;;;;;;;;-1:-1:-1;12905:4:0;12701:216;;;;;:::o;22619:150::-;22699:4;22755:6;22723:29;22743:8;22723:19;:29::i;:::-;:38;;22619:150;-1:-1:-1;;;22619:150:0:o;13219:370::-;-1:-1:-1;;;;;13339:19:0;;13319:4;13339:19;;;:11;:19;;;;;;;;13359:10;13339:31;;;;;;;;-1:-1:-1;;13339:52:0;13336:186;;13441:69;;;;;;;;;;;-1:-1:-1;;;13441:69:0;;;;;;;;-1:-1:-1;;;;;13441:19:0;;-1:-1:-1;13441:19:0;;;:11;:19;;;;;13461:10;13441:31;;;;;;;;;;:69;;13477:6;;13441:35;:69::i;:::-;-1:-1:-1;;;;;13407:19:0;;;;;;:11;:19;;;;;;;;13427:10;13407:31;;;;;;;:103;13336:186;13541:40;13555:6;13563:9;13574:6;13541:13;:40::i;:::-;13534:47;;13219:370;;;;;;:::o;22294:142::-;22422:4;;-1:-1:-1;;;;;22422:4:0;22347:7;12533:18;;;:9;:18;;;;;;22374:54;;22401:4;;-1:-1:-1;;;;;22401:4:0;12515:7;12533:18;;;:9;:18;;;;;;22374:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;22367:61;;22294:142;:::o;18900:101::-;6922:6;;-1:-1:-1;;;;;6922:6:0;6232:10;6922:22;6914:67;;;;-1:-1:-1;;;6914:67:0;;;;;;;:::i;:::-;;;;;;;;;18950:11:::1;:18:::0;;-1:-1:-1;;;;18979:14:0;-1:-1:-1;;;18979:14:0;;;18900:101::o;12925:122::-;12980:4;13004:35;13012:7;-1:-1:-1;;13004:7:0;:35::i;18605:141::-;6922:6;;-1:-1:-1;;;;;6922:6:0;6232:10;6922:22;6914:67;;;;-1:-1:-1;;;6914:67:0;;;;;;;:::i;:::-;18675:3:::1;18661:11;:17:::0;18704:3:::1;18689:12;:18:::0;-1:-1:-1;18718:16:0::1;:20:::0;18605:141::o;18219:201::-;6922:6;;-1:-1:-1;;;;;6922:6:0;6232:10;6922:22;6914:67;;;;-1:-1:-1;;;6914:67:0;;;;;;;:::i;:::-;18318:9:::1;18313:100;18329:20:::0;;::::1;18313:100;;;18395:6;18371:7;:21;18379:9;;18389:1;18379:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18371:21:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18371:21:0;:30;;-1:-1:-1;;18371:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18351:3:::1;::::0;::::1;:::i;:::-;;;18313:100;;;;18219:201:::0;;;:::o;7009:148::-;6922:6;;-1:-1:-1;;;;;6922:6:0;6232:10;6922:22;6914:67;;;;-1:-1:-1;;;6914:67:0;;;;;;;:::i;:::-;7116:1:::1;7100:6:::0;;7079:40:::1;::::0;-1:-1:-1;;;;;7100:6:0;;::::1;::::0;7079:40:::1;::::0;7116:1;;7079:40:::1;7147:1;7130:19:::0;;-1:-1:-1;;;;;;7130:19:0::1;::::0;;7009:148::o;17592:271::-;17671:4;17698:6;17708:1;17698:11;17695:95;;17734:44;;-1:-1:-1;;;17734:44:0;;17772:4;17734:44;;;4570:51:1;-1:-1:-1;;;;;17734:29:0;;;;;4543:18:1;;17734:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17725:53;;17695:95;17836:10;;17807:48;;-1:-1:-1;;;17807:48:0;;-1:-1:-1;;;;;17836:10:0;;;17807:48;;;7132:51:1;7199:18;;;7192:34;;;17807:28:0;;;;;;7105:18:1;;17807:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;21508:434::-;6922:6;;-1:-1:-1;;;;;6922:6:0;6232:10;6922:22;6914:67;;;;-1:-1:-1;;;6914:67:0;;;;;;;:::i;:::-;21704:10:::1;:24:::0;;-1:-1:-1;;;;;;21704:24:0;;::::1;-1:-1:-1::0;;;;;21704:24:0;;::::1;;::::0;;;21739:20:::1;:44:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;21794:18:::1;:40:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;21845:15:::1;:34:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;21890:20:::1;:44:::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;21508:434::o;13601:226::-;6922:6;;-1:-1:-1;;;;;6922:6:0;6232:10;6922:22;6914:67;;;;-1:-1:-1;;;6914:67:0;;;;;;;:::i;:::-;13727:4:::1;13712:12;;:19;;;;:::i;:::-;13693:15;;:38;;13685:47;;;::::0;::::1;;13797:4;13778:14;13763:12;;:29;;;;:::i;:::-;13762:39;;;;:::i;:::-;13744:15;:57:::0;-1:-1:-1;13601:226:0:o;20912:588::-;6922:6;;-1:-1:-1;;;;;6922:6:0;6232:10;6922:22;6914:67;;;;-1:-1:-1;;;6914:67:0;;;;;;;:::i;:::-;21092:12:::1;:28:::0;;;21131:12:::1;:28:::0;;;21170:12:::1;:28:::0;;;21209:10:::1;:24:::0;;;21244:7:::1;:18:::0;;;21284:82:::1;21254:8:::0;21284:68:::1;21222:11:::0;21284:68;21185:13;21284:68;21107:13;21146;21284:17:::1;:32::i;:::-;:36:::0;::::1;:51::i;:82::-;21273:8;:93:::0;21377:14:::1;:32:::0;;;21439:18:::1;21456:1;21394:15:::0;21439:18:::1;:::i;:::-;21428:8;;:29;21420:71;;;::::0;-1:-1:-1;;;21420:71:0;;8084:2:1;21420:71:0::1;::::0;::::1;8066:21:1::0;8123:2;8103:18;;;8096:30;8162:31;8142:18;;;8135:59;8211:18;;21420:71:0::1;7882:353:1::0;21420:71:0::1;20912:588:::0;;;;;;:::o;17469:115::-;17523:18;;17515:59;;-1:-1:-1;;;;;17523:18:0;;;;17552:21;17515:59;;;;;17523:18;17515:59;17523:18;17515:59;17552:21;17523:18;17515:59;;;;;;;;;;;;;;;;;;;;;17469:115::o;18127:84::-;6922:6;;-1:-1:-1;;;;;6922:6:0;6232:10;6922:22;6914:67;;;;-1:-1:-1;;;6914:67:0;;;;;;;:::i;:::-;18186:7:::1;:17:::0;;;::::1;;-1:-1:-1::0;;;18186:17:0::1;-1:-1:-1::0;;;;18186:17:0;;::::1;::::0;;;::::1;::::0;;18127:84::o;13055:156::-;13135:4;13159:44;13173:10;13185:9;13196:6;13159:13;:44::i;18428:166::-;6922:6;;-1:-1:-1;;;;;6922:6:0;6232:10;6922:22;6914:67;;;;-1:-1:-1;;;6914:67:0;;;;;;;:::i;:::-;18479:7:::1;:15:::0;;-1:-1:-1;;;;18479:15:0::1;::::0;;18519:3:::1;18505:11;:17:::0;18548:4:::1;18533:12;:19:::0;;;18479:7:::1;18563:23:::0;18428:166::o;22444:167::-;22512:7;22539:64;22580:22;:20;:22::i;:::-;22562:4;;-1:-1:-1;;;;;22562:4:0;12515:7;12533:18;;;:9;:18;;;;;;22539:36;;22552:22;;22572:1;;22552:15;:19;;:22::i;:::-;22539:8;;:12;:36::i;:::-;:40;;:64::i;17113:201::-;17242:18;;17202:21;;-1:-1:-1;;;;;17242:18:0;17234:72;17302:3;17271:28;17283:16;17202:21;17271:28;:::i;:::-;:34;;;;:::i;:::-;17234:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17171:143;17113:201;:::o;18754:134::-;6922:6;;-1:-1:-1;;;;;6922:6:0;6232:10;6922:22;6914:67;;;;-1:-1:-1;;;6914:67:0;;;;;;;:::i;:::-;18819:2:::1;18805:11;:16:::0;;;18832:12:::1;:17:::0;-1:-1:-1;18860:16:0::1;:20:::0;18754:134::o;17329:132::-;6922:6;;-1:-1:-1;;;;;6922:6:0;6232:10;6922:22;6914:67;;;;-1:-1:-1;;;6914:67:0;;;;;;;:::i;:::-;17401:12:::1;::::0;17383:15:::1;:30:::0;;;17424:12:::1;:27:::0;17329:132::o;17871:247::-;6922:6;;-1:-1:-1;;;;;6922:6:0;6232:10;6922:22;6914:67;;;;-1:-1:-1;;;6914:67:0;;;;;;;:::i;:::-;17988:12:::1;:27:::0;;;;18026:11:::1;:25:::0;;;;18062:16:::1;:32:::0;17871:247::o;7165:244::-;6922:6;;-1:-1:-1;;;;;6922:6:0;6232:10;6922:22;6914:67;;;;-1:-1:-1;;;6914:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7254:22:0;::::1;7246:73;;;::::0;-1:-1:-1;;;7246:73:0;;8442:2:1;7246:73:0::1;::::0;::::1;8424:21:1::0;8481:2;8461:18;;;8454:30;8520:34;8500:18;;;8493:62;-1:-1:-1;;;8571:18:1;;;8564:36;8617:19;;7246:73:0::1;8240:402:1::0;7246:73:0::1;7356:6;::::0;;7335:38:::1;::::0;-1:-1:-1;;;;;7335:38:0;;::::1;::::0;7356:6;::::1;::::0;7335:38:::1;::::0;::::1;7384:6;:17:::0;;-1:-1:-1;;;;;;7384:17:0::1;-1:-1:-1::0;;;;;7384:17:0;;;::::1;::::0;;;::::1;::::0;;7165:244::o;21950:152::-;6922:6;;-1:-1:-1;;;;;6922:6:0;6232:10;6922:22;6914:67;;;;-1:-1:-1;;;6914:67:0;;;;;;;:::i;:::-;22038:11:::1;:22:::0;;-1:-1:-1;;22038:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;22071:13:::1;:23:::0;21950:152::o;22110:172::-;6922:6;;-1:-1:-1;;;;;6922:6:0;6232:10;6922:22;6914:67;;;;-1:-1:-1;;;6914:67:0;;;;;;;:::i;:::-;22197:15:::1;:25:::0;;;;22233:26:::1;:41:::0;22110:172::o;4396:192::-;4482:7;4518:12;4510:6;;;;4502:29;;;;-1:-1:-1;;;4502:29:0;;;;;;;;:::i;:::-;-1:-1:-1;4542:9:0;4554:5;4558:1;4554;:5;:::i;:::-;4542:17;4396:192;-1:-1:-1;;;;;4396:192:0:o;13846:1415::-;13958:6;;13938:4;;13958:6;;13955:63;;;13974:41;13989:6;13997:9;14008:6;13974:14;:41::i;:::-;13967:48;;;;13955:63;-1:-1:-1;;;;;14034:22:0;;;;;;:14;:22;;;;;;;;14033:23;:53;;;;-1:-1:-1;;;;;;14061:25:0;;;;;;:14;:25;;;;;;;;14060:26;14033:53;14030:236;;;14110:11;;-1:-1:-1;;;14110:11:0;;;;14102:43;;;;-1:-1:-1;;;14102:43:0;;8982:2:1;14102:43:0;;;8964:21:1;9021:2;9001:18;;;8994:30;-1:-1:-1;;;9040:18:1;;;9033:50;9100:18;;14102:43:0;8780:344:1;14102:43:0;14174:7;;-1:-1:-1;;;14174:7:0;;;;14171:84;;;-1:-1:-1;;;;;14209:18:0;;;;;;:7;:18;;;;;;;;14201:39;;;;-1:-1:-1;;;14201:39:0;;9331:2:1;14201:39:0;;;9313:21:1;9370:1;9350:18;;;9343:29;-1:-1:-1;;;9388:18:1;;;9381:39;9437:18;;14201:39:0;9129:332:1;14201:39:0;-1:-1:-1;;;;;14298:22:0;;;;;;:14;:22;;;;;;;;14297:23;:53;;;;-1:-1:-1;;;;;;14324:26:0;;14345:4;14324:26;;14297:53;:84;;;;-1:-1:-1;14376:4:0;;-1:-1:-1;;;;;14355:26:0;;;14376:4;;14355:26;;14297:84;:105;;;;-1:-1:-1;14398:4:0;;-1:-1:-1;;;;;14385:17:0;;;14398:4;;14385:17;;14297:105;:137;;;;-1:-1:-1;14419:15:0;;-1:-1:-1;;;;;14406:28:0;;;14419:15;;14406:28;;14297:137;:174;;;;-1:-1:-1;14451:20:0;;-1:-1:-1;;;;;14438:33:0;;;14451:20;;14438:33;;14297:174;:205;;;;-1:-1:-1;;;;;;14476:26:0;;;;;;:15;:26;;;;;;;;14475:27;14297:205;14293:397;;;-1:-1:-1;;;;;12533:18:0;;14518;12533;;;:9;:18;;;;;;14607:15;;14583:19;14596:6;12533:18;14583:19;:::i;:::-;14582:40;;14574:114;;;;-1:-1:-1;;;14574:114:0;;9798:2:1;14574:114:0;;;9780:21:1;9837:2;9817:18;;;9810:30;9876:34;9856:18;;;9849:62;9947:32;9927:18;;;9920:60;9997:19;;14574:114:0;9596:426:1;14574:114:0;14503:187;14293:397;14755:28;14768:6;14776;14755:12;:28::i;:::-;14800:16;:14;:16::i;:::-;14797:35;;;14819:10;:8;:10::i;:::-;14912:53;;;;;;;;;;;-1:-1:-1;;;14912:53:0;;;;;;;;-1:-1:-1;;;;;14912:17:0;;-1:-1:-1;14912:17:0;;;:9;:17;;;;;;;;:53;;14934:6;;14912:21;:53::i;:::-;-1:-1:-1;;;;;14892:17:0;;;;;;:9;:17;;;;;;;;:73;;;;15004:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;15027:22:0;;;;;;:11;:22;;;;;;;;15004:45;15003:93;;15062:34;15070:6;15078;15086:9;15062:7;:34::i;:::-;15003:93;;;15053:6;15003:93;-1:-1:-1;;;;;15130:20:0;;;;;;:9;:20;;;;;;14978:118;;-1:-1:-1;15130:40:0;;14978:118;15130:24;:40::i;:::-;-1:-1:-1;;;;;15107:20:0;;;;;;;:9;:20;;;;;;;:63;;;;15188:43;;;;;;-1:-1:-1;;;;;;;;;;;15188:43:0;;;15216:14;352:25:1;;340:2;325:18;;206:177;15188:43:0;;;;;;;;-1:-1:-1;15249:4:0;;13846:1415;-1:-1:-1;;;;13846:1415:0:o;4254:136::-;4312:7;4339:43;4343:1;4346;4339:43;;;;;;;;;;;;;;;;;:3;:43::i;4067:181::-;4125:7;;4157:5;4161:1;4157;:5;:::i;:::-;4145:17;;4186:1;4181;:6;;4173:46;;;;-1:-1:-1;;;4173:46:0;;10229:2:1;4173:46:0;;;10211:21:1;10268:2;10248:18;;;10241:30;10307:29;10287:18;;;10280:57;10354:18;;4173:46:0;10027:351:1;4594:250:0;4652:7;4676:1;4681;4676:6;4672:47;;-1:-1:-1;4706:1:0;4699:8;;4672:47;4731:9;4743:5;4747:1;4743;:5;:::i;:::-;4731:17;-1:-1:-1;4776:1:0;4767:5;4771:1;4731:17;4767:5;:::i;:::-;:10;4759:56;;;;-1:-1:-1;;;4759:56:0;;10585:2:1;4759:56:0;;;10567:21:1;10624:2;10604:18;;;10597:30;10663:34;10643:18;;;10636:62;-1:-1:-1;;;10714:18:1;;;10707:31;10755:19;;4759:56:0;10383:397:1;4850:132:0;4908:7;4935:39;4939:1;4942;4935:39;;;;;;;;;;;;;;;;;:3;:39::i;15273:330::-;15403:53;;;;;;;;;;;-1:-1:-1;;;15403:53:0;;;;;;;;-1:-1:-1;;;;;15403:17:0;;15366:4;15403:17;;;:9;:17;;;;;;;:53;;15425:6;;15403:21;:53::i;:::-;-1:-1:-1;;;;;15383:17:0;;;;;;;:9;:17;;;;;;:73;;;;15490:20;;;;;;;:32;;15515:6;15490:24;:32::i;:::-;-1:-1:-1;;;;;15467:20:0;;;;;;;:9;:20;;;;;;;:55;;;;15538:35;;;;;;-1:-1:-1;;;;;;;;;;;15538:35:0;;;15566:6;352:25:1;;340:2;325:18;;206:177;15538:35:0;;;;;;;;-1:-1:-1;15591:4:0;15273:330;;;;;:::o;15611:166::-;15708:12;;15698:6;:22;;:49;;;-1:-1:-1;;;;;;15724:23:0;;;;;;:15;:23;;;;;;;;15698:49;15690:79;;;;-1:-1:-1;;;15690:79:0;;10987:2:1;15690:79:0;;;10969:21:1;11026:2;11006:18;;;10999:30;-1:-1:-1;;;11045:18:1;;;11038:47;11102:18;;15690:79:0;10785:341:1;15690:79:0;15611:166;;:::o;16908:197::-;16995:4;;16957;;-1:-1:-1;;;;;16995:4:0;16981:10;:18;;;;:38;;-1:-1:-1;17013:6:0;;;;17012:7;16981:38;:62;;;;-1:-1:-1;17032:11:0;;;;16981:62;:116;;;;-1:-1:-1;;17084:13:0;;17074:4;17056:24;;;;:9;:24;;;;;;:41;;;16908:197::o;19017:1886::-;10842:6;:13;;-1:-1:-1;;10842:13:0;10851:4;10842:13;;;19112:15:::1;::::0;19129:26:::1;::::0;10842:6;;19096:60:::1;::::0;:15:::1;:60::i;:::-;:79;;19163:12;;19096:79;;;19159:1;19096:79;19066:109;;19186:23;19212:59;19269:1;19212:52;19255:8;;19212:38;19230:19;19212:13;;:17;;:38;;;;:::i;:59::-;19186:85;;19282:20;19305:34;19323:15;19305:13;;:17;;:34;;;;:::i;:::-;19376:16;::::0;;19390:1:::1;19376:16:::0;;;;;::::1;::::0;;19282:57;;-1:-1:-1;19352:21:0::1;::::0;19376:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;19376:16:0::1;19352:40;;19421:4;19403;19408:1;19403:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19403:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;19447:4:::1;::::0;19437:7;;19447:4;::::1;::::0;19437;;19447;;19437:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;19437:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;19522:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;19522:188:0;;19488:21:::1;::::0;19522:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;19594:12;;19464:21:::1;::::0;19637:4;;19664::::1;::::0;19684:15:::1;::::0;19522:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19723:17;19743:40;19769:13;19743:21;:25;;:40;;;;:::i;:::-;19723:60:::0;-1:-1:-1;19796:19:0::1;19818:40;19831:26;:19:::0;19855:1:::1;19831:23;:26::i;:::-;19818:8;::::0;;:12:::1;:40::i;:::-;19796:62:::0;-1:-1:-1;19879:26:0::1;19908:58;19964:1;19908:51;19796:62:::0;19908:51;:9;19922:19;19908:13:::1;:34::i;:58::-;19879:87;;19977:26;20006:44;20038:11;20006:27;20020:12;;20006:9;:13;;:27;;;;:::i;:44::-;19977:73;;20061:26;20090:44;20122:11;20090:27;20104:12;;20090:9;:13;;:27;;;;:::i;:44::-;20061:73;;20145:24;20172:42;20202:11;20172:25;20186:10;;20172:9;:13;;:25;;;;:::i;:42::-;20256:20;::::0;20248:65:::1;::::0;20145:69;;-1:-1:-1;20228:15:0::1;::::0;-1:-1:-1;;;;;20256:20:0;;::::1;::::0;20290:18;;20228:15;20248:65;20228:15;20248:65;20290:18;20256:20;20248:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;20348:18:0::1;::::0;20340:61:::1;::::0;20227:86;;-1:-1:-1;;;;;;20348:18:0::1;::::0;20380:16;;20340:61:::1;::::0;;;20380:16;20348:18;20340:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;20436:20:0::1;::::0;20428:65:::1;::::0;20324:77;;-1:-1:-1;;;;;;20436:20:0::1;::::0;20470:18;;20428:65:::1;::::0;;;20470:18;20436:20;20428:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;20527:5:0::1;::::0;-1:-1:-1;;20548:19:0;;;-1:-1:-1;20545:351:0::1;;20583:6;::::0;20757:10:::1;::::0;20583:233:::1;::::0;-1:-1:-1;;;20583:233:0;;20659:4:::1;20583:233;::::0;::::1;12799:34:1::0;12849:18;;;12842:34;;;20583:6:0::1;12892:18:1::0;;;12885:34;;;12935:18;;;12928:34;-1:-1:-1;;;;;20757:10:0;;::::1;12978:19:1::0;;;12971:44;20786:15:0::1;13031:19:1::0;;;13024:35;20583:6:0;::::1;::::0;:22:::1;::::0;20613:18;;12733:19:1;;20583:233:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;20836:48:0::1;::::0;;13555:25:1;;;13611:2;13596:18;;13589:34;;;20836:48:0::1;::::0;-1:-1:-1;13528:18:1;20836:48:0::1;;;;;;;20545:351;-1:-1:-1::0;;10860:6:0;:14;;-1:-1:-1;;10860:14:0;;;-1:-1:-1;;;;;;;;;;19017:1886:0:o;15907:993::-;16042:16;;16087:4;;15993:7;;16042:16;-1:-1:-1;;;;;16087:4:0;;;16074:17;;;;16071:146;;-1:-1:-1;16119:12:0;;16071:146;;;16162:4;;-1:-1:-1;;;;;16162:4:0;;;16152:14;;;;16149:68;;-1:-1:-1;16194:11:0;;16149:68;16229:17;16249:60;16288:14;;16305:3;16288:20;;;;:::i;:::-;16249:34;16274:8;16249:20;16260:8;;16249:6;:10;;:20;;;;:::i;:60::-;16229:80;;16320:18;16341:36;16368:8;;16341:22;16355:7;;16341:9;:13;;:22;;;;:::i;:36::-;16320:57;-1:-1:-1;16388:22:0;16413:25;:9;16320:57;16413:13;:25::i;:::-;16496:4;16478:24;;;;:9;:24;;;;;;16388:50;;-1:-1:-1;16478:44:0;;16388:50;16478:28;:44::i;:::-;16469:4;16451:24;;;;:9;:24;;;;;;:71;;;;16572:15;;-1:-1:-1;;;;;16572:15:0;16562:26;;;;:42;;16593:10;16562:30;:42::i;:::-;16543:15;;-1:-1:-1;;;;;16543:15:0;;;16533:26;;;;:9;:26;;;;;;;;;:71;;;;16620:47;352:25:1;;;16645:4:0;;16620:47;;;;-1:-1:-1;;;;;;;;;;;16620:47:0;325:18:1;16620:47:0;;;;;;;16701:14;;16698:154;;16746:12;;:28;;16763:10;16746:16;:28::i;:::-;16731:12;:43;16811:4;;16794:34;;352:25:1;;;-1:-1:-1;;;;;16811:4:0;;;;16794:34;;;-1:-1:-1;;;;;;;;;;;16794:34:0;340:2:1;325:18;16794:34:0;;;;;;;16698:154;16871:21;:6;16882:9;16871:10;:21::i;:::-;16864:28;15907:993;-1:-1:-1;;;;;;;;15907:993:0:o;4988:189::-;5074:7;5109:12;5102:5;5094:28;;;;-1:-1:-1;;;5094:28:0;;;;;;;;:::i;:::-;-1:-1:-1;5133:9:0;5145:5;5149:1;5145;:5;:::i;388:548:1:-;500:4;529:2;558;547:9;540:21;590:6;584:13;633:6;628:2;617:9;613:18;606:34;658:1;668:140;682:6;679:1;676:13;668:140;;;777:14;;;773:23;;767:30;743:17;;;762:2;739:26;732:66;697:10;;668:140;;;672:3;857:1;852:2;843:6;832:9;828:22;824:31;817:42;927:2;920;916:7;911:2;903:6;899:15;895:29;884:9;880:45;876:54;868:62;;;;388: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:248::-;1446:6;1454;1507:2;1495:9;1486:7;1482:23;1478:32;1475:52;;;1523:1;1520;1513:12;1475:52;-1:-1:-1;;1546:23:1;;;1616:2;1601:18;;;1588:32;;-1:-1:-1;1378:248:1:o;1631:328::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1816:29;1835:9;1816:29;:::i;:::-;1806:39;;1864:38;1898:2;1887:9;1883:18;1864:38;:::i;:::-;1854:48;;1949:2;1938:9;1934:18;1921:32;1911:42;;1631:328;;;;;:::o;2153:186::-;2212:6;2265:2;2253:9;2244:7;2240:23;2236:32;2233:52;;;2281:1;2278;2271:12;2233:52;2304:29;2323:9;2304:29;:::i;2344:118::-;2430:5;2423:13;2416:21;2409:5;2406:32;2396:60;;2452:1;2449;2442:12;2467:750;2559:6;2567;2575;2628:2;2616:9;2607:7;2603:23;2599:32;2596:52;;;2644:1;2641;2634:12;2596:52;2684:9;2671:23;2713:18;2754:2;2746:6;2743:14;2740:34;;;2770:1;2767;2760:12;2740:34;2808:6;2797:9;2793:22;2783:32;;2853:7;2846:4;2842:2;2838:13;2834:27;2824:55;;2875:1;2872;2865:12;2824:55;2915:2;2902:16;2941:2;2933:6;2930:14;2927:34;;;2957:1;2954;2947:12;2927:34;3012:7;3005:4;2995:6;2992:1;2988:14;2984:2;2980:23;2976:34;2973:47;2970:67;;;3033:1;3030;3023:12;2970:67;3064:4;3056:13;;;;-1:-1:-1;3088:6:1;-1:-1:-1;;3129:20:1;;3116:34;3159:28;3116:34;3159:28;:::i;:::-;3206:5;3196:15;;;2467:750;;;;;:::o;3222:484::-;3317:6;3325;3333;3341;3349;3402:3;3390:9;3381:7;3377:23;3373:33;3370:53;;;3419:1;3416;3409:12;3370:53;3442:29;3461:9;3442:29;:::i;:::-;3432:39;;3490:38;3524:2;3513:9;3509:18;3490:38;:::i;:::-;3480:48;;3547:38;3581:2;3570:9;3566:18;3547:38;:::i;:::-;3537:48;;3604:38;3638:2;3627:9;3623:18;3604:38;:::i;:::-;3594:48;;3661:39;3695:3;3684:9;3680:19;3661:39;:::i;:::-;3651:49;;3222:484;;;;;;;;:::o;3711:180::-;3770:6;3823:2;3811:9;3802:7;3798:23;3794:32;3791:52;;;3839:1;3836;3829:12;3791:52;-1:-1:-1;3862:23:1;;3711:180;-1:-1:-1;3711:180:1:o;3896:523::-;4000:6;4008;4016;4024;4032;4040;4093:3;4081:9;4072:7;4068:23;4064:33;4061:53;;;4110:1;4107;4100:12;4061:53;-1:-1:-1;;4133:23:1;;;4203:2;4188:18;;4175:32;;-1:-1:-1;4254:2:1;4239:18;;4226:32;;4305:2;4290:18;;4277:32;;-1:-1:-1;4356:3:1;4341:19;;4328:33;;-1:-1:-1;4408:3:1;4393:19;4380:33;;-1:-1:-1;3896:523:1;-1:-1:-1;3896:523:1:o;4632:241::-;4688:6;4741:2;4729:9;4720:7;4716:23;4712:32;4709:52;;;4757:1;4754;4747:12;4709:52;4796:9;4783:23;4815:28;4837:5;4815:28;:::i;4878:260::-;4946:6;4954;5007:2;4995:9;4986:7;4982:23;4978:32;4975:52;;;5023:1;5020;5013:12;4975:52;5046:29;5065:9;5046:29;:::i;:::-;5036:39;;5094:38;5128:2;5117:9;5113:18;5094:38;:::i;:::-;5084:48;;4878:260;;;;;:::o;5143:316::-;5220:6;5228;5236;5289:2;5277:9;5268:7;5264:23;5260:32;5257:52;;;5305:1;5302;5295:12;5257:52;-1:-1:-1;;5328:23:1;;;5398:2;5383:18;;5370:32;;-1:-1:-1;5449:2:1;5434:18;;;5421:32;;5143:316;-1:-1:-1;5143:316:1:o;5464:309::-;5529:6;5537;5590:2;5578:9;5569:7;5565:23;5561:32;5558:52;;;5606:1;5603;5596:12;5558:52;5645:9;5632:23;5664:28;5686:5;5664:28;:::i;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;6365:127::-;6426:10;6421:3;6417:20;6414:1;6407:31;6457:4;6454:1;6447:15;6481:4;6478:1;6471:15;6497:127;6558:10;6553:3;6549:20;6546:1;6539:31;6589:4;6586:1;6579:15;6613:4;6610:1;6603:15;6629:135;6668:3;6689:17;;;6686:43;;6709:18;;:::i;:::-;-1:-1:-1;6756:1:1;6745:13;;6629:135::o;6769:184::-;6839:6;6892:2;6880:9;6871:7;6867:23;6863:32;6860:52;;;6908:1;6905;6898:12;6860:52;-1:-1:-1;6931:16:1;;6769:184;-1:-1:-1;6769:184:1:o;7237:245::-;7304:6;7357:2;7345:9;7336:7;7332:23;7328:32;7325:52;;;7373:1;7370;7363:12;7325:52;7405:9;7399:16;7424:28;7446:5;7424:28;:::i;7487:217::-;7527:1;7553;7543:132;;7597:10;7592:3;7588:20;7585:1;7578:31;7632:4;7629:1;7622:15;7660:4;7657:1;7650:15;7543:132;-1:-1:-1;7689:9:1;;7487:217::o;7709:168::-;7782:9;;;7813;;7830:15;;;7824:22;;7810:37;7800:71;;7851:18;;:::i;8647:128::-;8714:9;;;8735:11;;;8732:37;;;8749:18;;:::i;9466:125::-;9531:9;;;9552:10;;;9549:36;;;9565:18;;:::i;11263:980::-;11525:4;11573:3;11562:9;11558:19;11604:6;11593:9;11586:25;11630:2;11668:6;11663:2;11652:9;11648:18;11641:34;11711:3;11706:2;11695:9;11691:18;11684:31;11735:6;11770;11764:13;11801:6;11793;11786:22;11839:3;11828:9;11824:19;11817:26;;11878:2;11870:6;11866:15;11852:29;;11899:1;11909:195;11923:6;11920:1;11917:13;11909:195;;;11988:13;;-1:-1:-1;;;;;11984:39:1;11972:52;;12079:15;;;;12044:12;;;;12020:1;11938:9;11909:195;;;-1:-1:-1;;;;;;;12160:32:1;;;;12155:2;12140:18;;12133:60;-1:-1:-1;;;12224:3:1;12209:19;12202:35;12121:3;11263:980;-1:-1:-1;;;11263:980:1:o;13070:306::-;13158:6;13166;13174;13227:2;13215:9;13206:7;13202:23;13198:32;13195:52;;;13243:1;13240;13233:12;13195:52;13272:9;13266:16;13256:26;;13322:2;13311:9;13307:18;13301:25;13291:35;;13366:2;13355:9;13351:18;13345:25;13335:35;;13070:306;;;;;:::o

Swarm Source

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