ETH Price: $3,400.40 (+3.16%)

Token

f0x (F0X)
 

Overview

Max Total Supply

100,000,000 F0X

Holders

43

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
f0x

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**

F ZERO X
                                                                                  
                  ████                                        ████                
                ▓▓▓▓▓▓▓▓                                    ▓▓▓▓▓▓██              
              ██▓▓▓▓▓▓▓▓██                                ██▓▓▓▓▓▓▓▓██            
            ██▓▓▓▓▓▓▓▓▓▓██                                ██▓▓▓▓▓▓▓▓▓▓██          
            ██▓▓▓▓▓▓▓▓▓▓██                                ██▓▓▓▓▓▓▓▓▓▓██          
          ██▓▓▓▓▓▓  ▓▓▓▓▓▓██                            ██▓▓▓▓▓▓░░▓▓▓▓▓▓██        
          ██▓▓▓▓▒▒  ▒▒▓▓▓▓██                            ██▓▓▓▓▒▒  ▒▒▓▓▓▓██        
          ██▓▓▓▓░░    ▓▓▓▓██                            ██▓▓██      ▓▓▓▓██        
          ██▓▓▓▓░░    ▓▓▓▓██                            ██▓▓██      ▓▓▓▓██        
        ██▓▓▓▓▓▓░░    ▓▓▓▓▓▓██                        ██▓▓▓▓██      ▓▓▓▓▓▓██      
        ██▓▓▓▓░░░░    ░░▓▓▓▓██                        ██▓▓▓▓        ░░▓▓▓▓██      
        ██▓▓▓▓░░░░    ░░▓▓▓▓▓▓██                    ██▓▓▓▓▓▓░░    ░░░░▓▓▓▓██      
        ██▓▓▓▓░░░░  ░░  ▓▓▓▓▓▓████████████████████████▓▓▓▓▓▓░░░░  ░░░░▓▓▓▓██      
        ██▒▒▒▒░░░░░░  ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░▒▒▒▒▒▒██▒▒▒▒▒▒▒▒░░▒▒░░░░▒▒▒▒██      
        ██▒▒▒▒░░▒▒  ▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░▒▒░░▒▒▒▒██      
        ██▒▒▒▒░░░░▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒  ░░▒▒▒▒██      
    ██████▒▒▒▒  ▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒░░▒▒▒▒██████  
    ██░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒  ██  
    ██  ░░▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒░░  ██  
    ██  ▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒  ██  
      ██  ▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒  ██    
      ██  ▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒  ██    
  ████░░██░░▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒  ██  ████
  ██░░██░░  ▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒  ░░██  ██
  ██  ░░██  ▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒  ██    ██
  ██        ▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒        ██
    ██      ▒▒▒▒▒▒▒▒░░░░██░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░██░░░░▒▒▒▒▒▒▒▒      ██  
      ██      ▒▒▒▒▒▒▒▒░░████░░░░░░░░░░░░░░░░░░░░░░░░░░░░████░░▒▒▒▒▒▒▒▒░░    ██    
        ██░░    ▒▒▒▒▒▒▒▒██████░░░░░░░░░░░░░░░░░░░░░░░░██████▒▒▒▒▒▒▒▒      ██      
    ██████████    ▒▒▒▒▒▒▒▒████░░░░░░░░░░░░░░░░░░░░░░░░████▒▒▒▒▒▒▒▒░░  ██████████  
  ██    ░░    ██  ▒▒▒▒▒▒▒▒▒▒████░░░░░░░░░░░░░░░░░░░░████▒▒▒▒▒▒▒▒▒▒  ██        ░░██
    ██        ░░    ▒▒▒▒▒▒▒▒▒▒██▒▒▒▒░░░░░░░░░░░░▒▒▒▒██▒▒▒▒▒▒▒▒▒▒    ░░      ░░██  
      ██████        ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░▒▒▒▒░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒        ██████    
          ████      ░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░▒▒░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒        ▓▓██        
            ████████    ▒▒▒▒▒▒▒▒▒▒▒▒░░░░▒▒▒▒░░░░▒▒▒▒▒▒▒▒▒▒▒▒    ████████          
                    ████░░▒▒▒▒▒▒▒▒▒▒░░▒▒▒▒▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒░░████                  
                        ██  ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒  ██                      
                          ██  ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒  ██                        
                            ██  ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░██                          
                              ██░░▒▒▒▒▓▓▒▒▒▒▓▓▒▒▒▒  ██                            
                              ██  ▒▒▒▒▓▓▒▒▓▓▓▓▒▒▒▒  ██                            
                                ██░░▒▒▓▓▓▓▓▓▓▓▒▒░░██                              
                                ██    ████████    ██                              
                                  ▓▓  ████████  ██                                
                                  ▒▒▒▒▒▒░░▒▒▒▒██▒▒                                
                                    ░░██░░████                                    


*/
 
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;
 
/**
 * ERC20 standard interface
 */
 
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);
}
 
/**
 * Basic access control mechanism
 */
 
abstract contract Ownable {
    address internal owner;
    address private _previousOwner;
 
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
 
    constructor(address _owner) {
        owner = _owner;
    }
 
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!YOU ARE NOT THE OWNER"); _;
    }
 
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
 
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(owner, address(0));
        owner = address(0);
    }
}
 
/**
 * Router Interfaces
 */
 
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;
}
 
/**
 * Token Contract Code
 */
 
contract f0x is ERC20, Ownable {
    // -- Mappings --
    mapping(address => bool) public _blacklisted;
    mapping(address => bool) private _whitelisted;
    mapping(address => bool) public _automatedMarketMakers;
    mapping(address => bool) private _isLimitless;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
 
    // -- Basic Token Information --
    string constant _name = "f0x";
    string constant _symbol = "F0X";
    uint8 constant _decimals = 18;
    uint256 private _totalSupply = 100_000_000 * 10 ** _decimals;
 
 
    // -- Transaction & Wallet Limits --
    uint256 public maxBuyPercentage;
    uint256 public maxSellPercentage;
    uint256 public maxWalletPercentage;
 
    uint256 private maxBuyAmount;
    uint256 private maxSellAmount;
    uint256 private maxWalletAmount;
 
    // -- Contract Variables --
    address[] private sniperList;
    uint256 tokenTax;
    uint256 transferFee;
    uint256 private targetLiquidity = 50;
 
    // -- Fee Structs --
    struct BuyFee {
        uint256 liquidityFee;
        uint256 developerFee;
        uint256 marketingFee;
        uint256 total;
    }
 
    struct SellFee {
        uint256 liquidityFee;
        uint256 developerFee;
        uint256 marketingFee;
        uint256 total;
    }
 
    BuyFee public buyFee;
    SellFee public sellFee;
 
    // -- Addresses --
    address public _exchangeRouterAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
 
    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address private constant ZERO = 0x0000000000000000000000000000000000000000;
 
    address public developerReceiver = (msg.sender);
    address public marketingReceiver = (msg.sender);
 
    IDEXRouter public router;
    address public pair;
 
    // -- Misc Variables --
    bool public antiSniperMode = true;  // AntiSniper active at launch by default
    bool private _addingLP;
    bool private inSwap;
    bool private _initialDistributionFinished;
 
    // -- Swap Variables --
    bool public swapEnabled = true;
    uint256 private swapThreshold = _totalSupply / 1000;
 
    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor () Ownable(msg.sender) {
 
        // Initialize Uniswap Pair
        router = IDEXRouter(_exchangeRouterAddress);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;
        _automatedMarketMakers[pair]=true;
 
        // Set Initial Buy Fees -- Base 1000 Set 10 for 1%
        buyFee.liquidityFee = 5; 
        buyFee.developerFee = 0; 
        buyFee.marketingFee = 0;

        buyFee.total = buyFee.liquidityFee + buyFee.developerFee + buyFee.marketingFee;
 
        // Set Initial Sell Fees -- Base 1000 Set 10 for 1%
        sellFee.liquidityFee = 0; 
        sellFee.developerFee = 5; 
        sellFee.marketingFee = 300;

        sellFee.total = sellFee.liquidityFee + sellFee.developerFee + sellFee.marketingFee;
 
        // Set Initial Buy, Sell & Wallet Limits -- Base 1000 Set 10 for 1%
        maxBuyPercentage = 10; 
        maxBuyAmount = _totalSupply /1000 * maxBuyPercentage;

        maxSellPercentage = 5; 
        maxSellAmount = _totalSupply /1000 * maxSellPercentage;

        maxWalletPercentage = 10; 
        maxWalletAmount = _totalSupply /1000 * maxWalletPercentage;
 
        // Exclude from fees & limits
        _isLimitless[owner] = _isLimitless[address(this)] = true;
 
        // Mint _totalSupply to owner address
        _balances[owner] = _totalSupply;
        emit Transfer(address(0x0), owner, _totalSupply);
    }
 
 
    ///////////////////////////////////////// -- Setter Functions -- /////////////////////////////////////////
 
        // Use 10 to set 1% -- Base 1000 for easier fine adjust
    function ownerSetLimits(uint256 _maxBuyPercentage, uint256 _maxSellPercentage, uint256 _maxWalletPercentage) external onlyOwner {
        maxBuyPercentage = _maxBuyPercentage;           
        maxBuyAmount = _totalSupply /1000 * maxBuyPercentage;

        maxSellPercentage = _maxSellPercentage;         
        maxSellAmount = _totalSupply /1000 * maxSellPercentage;

        maxWalletPercentage= _maxWalletPercentage;      
        maxWalletAmount = _totalSupply /1000 * maxWalletPercentage;
    }
 
    function ownerSetInitialDistributionFinished() external onlyOwner {
        _initialDistributionFinished = true;
    }
 
    function ownerMakeLimitlessAddress(address _addr, bool _status) external onlyOwner {
        _isLimitless[_addr] = _status;
    }
 
    function ownerSetSwapBackSettings(bool _enabled, uint256 _percentageBase1000) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _totalSupply / 1000 * _percentageBase1000;
    }
 
    function ownerSetTargetLiquidity(uint256 target) external onlyOwner {
        targetLiquidity = target;
    }
       // Use 10 to set 1% -- Base 1000 for easier fine adjust
    function ownerUpdateBuyFees (uint256 _liquidityFee, uint256 _developerFee, uint256 _marketingFee) external onlyOwner {
        buyFee.liquidityFee = _liquidityFee;
        buyFee.developerFee = _developerFee;
        buyFee.marketingFee = _marketingFee;
        buyFee.total = buyFee.liquidityFee + buyFee.developerFee + buyFee.marketingFee;
    }
        // Use 10 to set 1% -- Base 1000 for easier fine adjust
    function ownerUpdateSellFees (uint256 _liquidityFee, uint256 _developerFee, uint256 _marketingFee) external onlyOwner {
        sellFee.liquidityFee = _liquidityFee;
        sellFee.developerFee = _developerFee;
        sellFee.marketingFee = _marketingFee;
        sellFee.total = sellFee.liquidityFee + sellFee.developerFee + sellFee.marketingFee;
    }
        // Use 10 to set 1% -- Base 1000 for easier fine adjust
    function ownerUpdateTransferFee (uint256 _transferFee) external onlyOwner {
        transferFee = _transferFee;
    }
 
    function ownerSetReceivers (address _developer, address _marketing) external onlyOwner {
        developerReceiver = _developer;
        marketingReceiver = _marketing;
    }
 
    function ownerAirDropWallets(address[] memory airdropWallets, uint256[] memory amounts) external onlyOwner{
        require(airdropWallets.length < 100, "Can only airdrop 100 wallets per txn due to gas limits");
        for(uint256 i = 0; i < airdropWallets.length; i++){
            address wallet = airdropWallets[i];
            uint256 amount = (amounts[i] * 10**_decimals);
            _transfer(msg.sender, wallet, amount);
        }
    }
 
    function reverseSniper(address sniper) external onlyOwner {
        _blacklisted[sniper] = false;
    }
 
    function addNewMarketMaker(address newAMM) external onlyOwner {
        _automatedMarketMakers[newAMM]=true;
        _isLimitless[newAMM]=true;
    }
 
    function controlAntiSniperMode(bool value) external onlyOwner {
        antiSniperMode = value;
    }
 
    function clearStuckBalance() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        payable(owner).transfer(contractETHBalance);
    }
 
    function clearStuckToken(address _token) public onlyOwner {
        uint256 _contractBalance = ERC20(_token).balanceOf(address(this));
        payable(developerReceiver).transfer(_contractBalance);
    }
    ///////////////////////////////////////// -- Getter Functions -- /////////////////////////////////////////
 
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - balanceOf(DEAD) - balanceOf(ZERO);
    }
 
    function showSniperList() public view returns(address[] memory){
        return sniperList;
    }
 
    function showSniperListLength() public view returns(uint256){
        return sniperList.length;
    }
 
    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy * (balanceOf(pair) * (2)) / (getCirculatingSupply());
    }
 
    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }
 
    ///////////////////////////////////////// -- Internal Functions -- /////////////////////////////////////////
 
    function _transfer(address sender,address recipient,uint256 amount) private {
        require(sender!=address(0)&&recipient!=address(0),"Cannot be address(0).");
        bool isBuy=_automatedMarketMakers[sender];
        bool isSell=_automatedMarketMakers[recipient];
        bool isExcluded=_isLimitless[sender]||_isLimitless[recipient]||_addingLP;
 
        if(isExcluded)_transferExcluded(sender,recipient,amount);
        else { require(_initialDistributionFinished);
            // Punish for Snipers
            if(antiSniperMode)_punishSnipers(sender,recipient,amount);
            // Buy Tokens
            else if(isBuy)_buyTokens(sender,recipient,amount);
            // Sell Tokens
            else if(isSell) {
                // Swap & Liquify
                if (shouldSwapBack()) {swapBack();}
                _sellTokens(sender,recipient,amount);
            } else {
                // P2P Transfer
                require(!_blacklisted[sender]&&!_blacklisted[recipient]);
                require(balanceOf(recipient)+amount<=maxWalletAmount, "Total amount exceed wallet limit");
                _P2PTransfer(sender,recipient,amount);
            }
        }
    }
 
    function _punishSnipers(address sender,address recipient,uint256 amount) private {
        require(!_blacklisted[recipient]);
        require(amount <= maxBuyAmount, "Buy exceeds limit");
        tokenTax = amount*20/100;
        _blacklisted[recipient]=true;
        sniperList.push(address(recipient));
        _transferIncluded(sender,recipient,amount,tokenTax);
    }
 
    function _buyTokens(address sender,address recipient,uint256 amount) private {
        require(!_blacklisted[recipient]);
        require(amount <= maxBuyAmount, "Buy exceeds limit");
        require(balanceOf(recipient)+amount<=maxWalletAmount, "Total amount exceed wallet limit");
        if(!_whitelisted[recipient]){
        tokenTax = amount*buyFee.total/1000;}
        else tokenTax = 0;
        _transferIncluded(sender,recipient,amount,tokenTax);
    }
    function _sellTokens(address sender,address recipient,uint256 amount) private {
        require(!_blacklisted[sender]);
        require(amount <= maxSellAmount);
        if(!_whitelisted[sender]){
        tokenTax = amount*sellFee.total/1000;}
        else tokenTax = 0;
        _transferIncluded(sender,recipient,amount,tokenTax);
    }
 
    function _P2PTransfer(address sender,address recipient,uint256 amount) private {
        tokenTax = amount * transferFee/1000;
        if( tokenTax > 0) {_transferIncluded(sender,recipient,amount,tokenTax);}
        else {_transferExcluded(sender,recipient,amount);}
    }
 
    function _transferExcluded(address sender,address recipient,uint256 amount) private {
        _updateBalance(sender,_balances[sender]-amount);
        _updateBalance(recipient,_balances[recipient]+amount);
        emit Transfer(sender,recipient,amount);
    }
 
    function _transferIncluded(address sender,address recipient,uint256 amount,uint256 taxAmount) private {
        uint256 newAmount = amount-tokenTax;
        _updateBalance(sender,_balances[sender]-amount);
        _updateBalance(address(this),_balances[address(this)]+taxAmount);
        _updateBalance(recipient,_balances[recipient]+newAmount);
        emit Transfer(sender,recipient,newAmount);
        emit Transfer(sender,address(this),taxAmount);
    }
 
    function _updateBalance(address account,uint256 newBalance) private {
        _balances[account] = newBalance;
    }
 
    function shouldSwapBack() private view returns (bool) {
        return
            !inSwap &&
            swapEnabled &&
            _balances[address(this)] >= swapThreshold;
    }   
 
    function swapBack() private swapping {
        uint256 toSwap = balanceOf(address(this));
 
        uint256 totalLPTokens=toSwap*(sellFee.liquidityFee + buyFee.liquidityFee)/(sellFee.total + buyFee.total);
        uint256 tokensLeft=toSwap-totalLPTokens;
        uint256 LPTokens=totalLPTokens/2;
        uint256 LPETHTokens=totalLPTokens-LPTokens;
        toSwap=tokensLeft+LPETHTokens;
        uint256 oldETH=address(this).balance;
        _swapTokensForETH(toSwap);
        uint256 newETH=address(this).balance-oldETH;
        uint256 LPETH=(newETH*LPETHTokens)/toSwap;
        _addLiquidity(LPTokens,LPETH);
        uint256 remainingETH=address(this).balance-oldETH;
        _distributeETH(remainingETH);
    }
 
    function _distributeETH(uint256 remainingETH) private {
        uint256 marketingFee = (buyFee.marketingFee + sellFee.marketingFee);
        uint256 developerFee = (buyFee.developerFee + sellFee.developerFee);
        uint256 totalFee = (marketingFee + developerFee);
 
        uint256 amountETHmarketing = remainingETH * (marketingFee) / (totalFee);
        uint256 amountETHdeveloper = remainingETH * (developerFee) / (totalFee);
 
        if(amountETHdeveloper > 0){
        (bool developerSuccess, /* bytes memory data */) = payable(developerReceiver).call{value: amountETHdeveloper, gas: 30000}("");
        require(developerSuccess, "receiver rejected ETH transfer"); }
 
        if(amountETHmarketing > 0){
        (bool marketingSuccess, /* bytes memory data */) = payable(marketingReceiver).call{value: amountETHmarketing, gas: 30000}("");
        require(marketingSuccess, "receiver rejected ETH transfer"); }
    }
 
    function _swapTokensForETH(uint256 amount) private {
        address[] memory path=new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
 
    function _addLiquidity(uint256 amountTokens,uint256 amountETH) private {
        _addingLP=true;
        router.addLiquidityETH{value: amountETH}(
            address(this),
            amountTokens,
            0,
            0,
            developerReceiver,
            block.timestamp
        );
        _addingLP=false;
    }
 
/**
 * IERC20
 */
 
    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 transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }
 
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        uint256 allowance_ = _allowances[sender][msg.sender];
        require(allowance_ >= amount);
 
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }
        _transfer(sender, recipient, amount);
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_automatedMarketMakers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_exchangeRouterAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAMM","type":"address"}],"name":"addNewMarketMaker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiSniperMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"developerFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"clearStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"controlAntiSniperMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"developerReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"airdropWallets","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"ownerAirDropWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"ownerMakeLimitlessAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ownerSetInitialDistributionFinished","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxBuyPercentage","type":"uint256"},{"internalType":"uint256","name":"_maxSellPercentage","type":"uint256"},{"internalType":"uint256","name":"_maxWalletPercentage","type":"uint256"}],"name":"ownerSetLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_developer","type":"address"},{"internalType":"address","name":"_marketing","type":"address"}],"name":"ownerSetReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_percentageBase1000","type":"uint256"}],"name":"ownerSetSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"}],"name":"ownerSetTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developerFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"ownerUpdateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developerFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"ownerUpdateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_transferFee","type":"uint256"}],"name":"ownerUpdateTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sniper","type":"address"}],"name":"reverseSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"developerFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"showSniperList","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"showSniperListLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a62000515565b62000022906305f5e1006200052d565b60088190556032601255601b8054737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031991821617909155601c8054339083168117909155601d8054909216179055601f805464ff000000ff60a01b19167801000000010000000000000000000000000000000000000000179055620000a7906103e8906200054f565b602055348015620000b757600080fd5b5060008054336001600160a01b031991821617909155601b54601e80546001600160a01b039092169190921681179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000124573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014a919062000572565b6001600160a01b031663c9c65396601e60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d2919062000572565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156200021f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000245919062000572565b601f80546001600160a01b0319166001600160a01b03928316178155306000908152600760209081526040808320601e5486168452825280832060001990559254909316815260049092528120805460ff191660011790556005601381905560148290556015829055620002bb9082906200059d565b620002c791906200059d565b601655600060178190556005601881905561012c601981905591620002ed91906200059d565b620002f991906200059d565b601a55600a600981905560085462000315906103e8906200054f565b6200032191906200052d565b600c556005600a8190556008546200033d906103e8906200054f565b6200034991906200052d565b600d55600a600b81905560085462000365906103e8906200054f565b6200037191906200052d565b600e553060009081526005602090815260408083208054600160ff19918216811790925584546001600160a01b039081168652838620805490921690921790556008548454821685526006845282852081905584549251908152911692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620005b8565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004575781600019048211156200043b576200043b62000400565b808516156200044957918102915b93841c93908002906200041b565b509250929050565b60008262000470575060016200050f565b816200047f575060006200050f565b8160018114620004985760028114620004a357620004c3565b60019150506200050f565b60ff841115620004b757620004b762000400565b50506001821b6200050f565b5060208310610133831016604e8410600b8410161715620004e8575081810a6200050f565b620004f4838362000416565b80600019048211156200050b576200050b62000400565b0290505b92915050565b60006200052660ff8416836200045f565b9392505050565b60008160001904831182151516156200054a576200054a62000400565b500290565b6000826200056d57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200058557600080fd5b81516001600160a01b03811681146200052657600080fd5b60008219821115620005b357620005b362000400565b500190565b61257180620005c86000396000f3fe60806040526004361061028c5760003560e01c806370a082311161015a578063a5949bcf116100c1578063dca3cef11161007a578063dca3cef114610813578063dd62ed3e14610833578063e065099714610879578063e5a772d21461088f578063f2fde38b146108af578063f887ea40146108cf57600080fd5b8063a5949bcf1461075d578063a8aa1b311461077d578063a9059cbb1461079d578063b46ba24b146107bd578063b704a9f6146107dd578063d51ed1c8146107f357600080fd5b80638b3be0c3116101135780638b3be0c3146106915780638ca42e4e146106b15780638ee41ca8146106d157806395d89b41146106f15780639b0ad05c1461071d5780639be953b31461073d57600080fd5b806370a08231146105ce578063715018a6146105ee5780637a6d69b41461060357806383bd84851461063357806387cfc49314610653578063893d20e81461067357600080fd5b8063313ce567116101fe57806353cd6210116101b757806353cd621014610521578063599ca3971461054257806359d3cac2146105585780636390aeeb146105785780636dc53a0a1461058d5780636ddd1713146105ad57600080fd5b8063313ce56714610476578063364333f41461049257806347062402146104a957806347375a37146104cc5780634c5d8710146104e157806352aae9dd1461050157600080fd5b80631ca0b1d0116102505780631ca0b1d01461037557806323b872dd146103975780632b112e49146103b75780632b14ca56146103cc5780632d3b40471461040f5780632f54bf6e1461044757600080fd5b806306fdde0314610298578063095ea7b3146102d65780630cb23d86146103065780631161ae391461033657806318160ddd1461035657600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506040805180820190915260038152620cc60f60eb1b60208201525b6040516102cd9190611eb3565b60405180910390f35b3480156102e257600080fd5b506102f66102f1366004611f20565b6108ef565b60405190151581526020016102cd565b34801561031257600080fd5b506102f6610321366004611f4c565b60046020526000908152604090205460ff1681565b34801561034257600080fd5b506102f6610351366004611f70565b61095c565b34801561036257600080fd5b506008545b6040519081526020016102cd565b34801561038157600080fd5b5061038a610970565b6040516102cd9190611fd6565b3480156103a357600080fd5b506102f66103b2366004611fe9565b6109d2565b3480156103c357600080fd5b50610367610a99565b3480156103d857600080fd5b50601754601854601954601a546103ef9392919084565b6040805194855260208501939093529183015260608201526080016102cd565b34801561041b57600080fd5b50601b5461042f906001600160a01b031681565b6040516001600160a01b0390911681526020016102cd565b34801561045357600080fd5b506102f6610462366004611f4c565b6000546001600160a01b0391821691161490565b34801561048257600080fd5b50604051601281526020016102cd565b34801561049e57600080fd5b506104a7610acc565b005b3480156104b557600080fd5b506013546014546015546016546103ef9392919084565b3480156104d857600080fd5b506104a7610b3e565b3480156104ed57600080fd5b506104a76104fc36600461202a565b610b7d565b34801561050d57600080fd5b506104a761051c366004612056565b610c18565b34801561052d57600080fd5b50601f546102f690600160a01b900460ff1681565b34801561054e57600080fd5b50610367600b5481565b34801561056457600080fd5b506104a761057336600461202a565b610c47565b34801561058457600080fd5b50600f54610367565b34801561059957600080fd5b50601c5461042f906001600160a01b031681565b3480156105b957600080fd5b50601f546102f690600160c01b900460ff1681565b3480156105da57600080fd5b506103676105e9366004611f4c565b610c9d565b3480156105fa57600080fd5b506104a7610cb8565b34801561060f57600080fd5b506102f661061e366004611f4c565b60026020526000908152604090205460ff1681565b34801561063f57600080fd5b506104a761064e366004612084565b610d2c565b34801561065f57600080fd5b506104a761066e366004611f4c565b610d74565b34801561067f57600080fd5b506000546001600160a01b031661042f565b34801561069d57600080fd5b506104a76106ac36600461209f565b610dbf565b3480156106bd57600080fd5b506104a76106cc366004612056565b610e14565b3480156106dd57600080fd5b506104a76106ec3660046120d4565b610e43565b3480156106fd57600080fd5b5060408051808201909152600381526208c60b60eb1b60208201526102c0565b34801561072957600080fd5b506104a76107383660046121c6565b610ea7565b34801561074957600080fd5b506104a7610758366004611f4c565b610fc6565b34801561076957600080fd5b50601d5461042f906001600160a01b031681565b34801561078957600080fd5b50601f5461042f906001600160a01b031681565b3480156107a957600080fd5b506102f66107b8366004611f20565b611096565b3480156107c957600080fd5b506104a76107d836600461202a565b6110ac565b3480156107e957600080fd5b50610367600a5481565b3480156107ff57600080fd5b5061036761080e366004612056565b611102565b34801561081f57600080fd5b506104a761082e366004612288565b611140565b34801561083f57600080fd5b5061036761084e366004612288565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561088557600080fd5b5061036760095481565b34801561089b57600080fd5b506104a76108aa366004611f4c565b611198565b3480156108bb57600080fd5b506104a76108ca366004611f4c565b6111fe565b3480156108db57600080fd5b50601e5461042f906001600160a01b031681565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061094a9086815260200190565b60405180910390a35060015b92915050565b60008261096883611102565b119392505050565b6060600f8054806020026020016040519081016040528092919081815260200182805480156109c857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109aa575b5050505050905090565b6001600160a01b038316600090815260076020908152604080832033845290915281205482811015610a0357600080fd5b6001600160a01b038516600090815260076020908152604080832033845290915290205460001914610a83576001600160a01b0385166000908152600760209081526040808320338452909152902054610a5e9084906122d7565b6001600160a01b03861660009081526007602090815260408083203384529091529020555b610a8e8585856112e8565b506001949350505050565b6000610aa56000610c9d565b610ab061dead610c9d565b600854610abd91906122d7565b610ac791906122d7565b905090565b6000546001600160a01b03163314610aff5760405162461bcd60e51b8152600401610af6906122ee565b60405180910390fd5b6000805460405147926001600160a01b039092169183156108fc02918491818181858888f19350505050158015610b3a573d6000803e3d6000fd5b5050565b6000546001600160a01b03163314610b685760405162461bcd60e51b8152600401610af6906122ee565b601f805460ff60b81b1916600160b81b179055565b6000546001600160a01b03163314610ba75760405162461bcd60e51b8152600401610af6906122ee565b60098390556008548390610bbe906103e89061231e565b610bc89190612340565b600c55600a8290556008548290610be2906103e89061231e565b610bec9190612340565b600d55600b8190556008548190610c06906103e89061231e565b610c109190612340565b600e55505050565b6000546001600160a01b03163314610c425760405162461bcd60e51b8152600401610af6906122ee565b601255565b6000546001600160a01b03163314610c715760405162461bcd60e51b8152600401610af6906122ee565b60178390556018829055601981905580610c8b838561235f565b610c95919061235f565b601a55505050565b6001600160a01b031660009081526006602052604090205490565b6000546001600160a01b03163314610ce25760405162461bcd60e51b8152600401610af6906122ee565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610d565760405162461bcd60e51b8152600401610af6906122ee565b601f8054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b03163314610d9e5760405162461bcd60e51b8152600401610af6906122ee565b6001600160a01b03166000908152600260205260409020805460ff19169055565b6000546001600160a01b03163314610de95760405162461bcd60e51b8152600401610af6906122ee565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610e3e5760405162461bcd60e51b8152600401610af6906122ee565b601155565b6000546001600160a01b03163314610e6d5760405162461bcd60e51b8152600401610af6906122ee565b601f805460ff60c01b1916600160c01b841515021790556008548190610e96906103e89061231e565b610ea09190612340565b6020555050565b6000546001600160a01b03163314610ed15760405162461bcd60e51b8152600401610af6906122ee565b6064825110610f415760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203130302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b6064820152608401610af6565b60005b8251811015610fc1576000838281518110610f6157610f61612377565b6020026020010151905060006012600a610f7b9190612471565b848481518110610f8d57610f8d612377565b6020026020010151610f9f9190612340565b9050610fac3383836112e8565b50508080610fb990612480565b915050610f44565b505050565b6000546001600160a01b03163314610ff05760405162461bcd60e51b8152600401610af6906122ee565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611037573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105b919061249b565b601c546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015610fc1573d6000803e3d6000fd5b60006110a33384846112e8565b50600192915050565b6000546001600160a01b031633146110d65760405162461bcd60e51b8152600401610af6906122ee565b601383905560148290556015819055806110f0838561235f565b6110fa919061235f565b601655505050565b600061110c610a99565b601f54611121906001600160a01b0316610c9d565b61112c906002612340565b6111369084612340565b610956919061231e565b6000546001600160a01b0316331461116a5760405162461bcd60e51b8152600401610af6906122ee565b601c80546001600160a01b039384166001600160a01b031991821617909155601d8054929093169116179055565b6000546001600160a01b031633146111c25760405162461bcd60e51b8152600401610af6906122ee565b6001600160a01b031660009081526004602090815260408083208054600160ff1991821681179092556005909352922080549091169091179055565b6000546001600160a01b031633146112285760405162461bcd60e51b8152600401610af6906122ee565b6001600160a01b03811661128d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610af6565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383161580159061130857506001600160a01b03821615155b61134c5760405162461bcd60e51b815260206004820152601560248201527421b0b73737ba1031329030b2323932b9b99418149760591b6044820152606401610af6565b6001600160a01b03808416600081815260046020908152604080832054948716835280832054938352600590915281205460ff938416939283169216806113ab57506001600160a01b03851660009081526005602052604090205460ff165b806113bf5750601f54600160a81b900460ff165b905080156113d7576113d2868686611504565b6114fc565b601f54600160b81b900460ff166113ed57600080fd5b601f54600160a01b900460ff161561140a576113d28686866115c6565b821561141b576113d28686866116c3565b8115611441576114296117eb565b1561143657611436611833565b6113d286868661192e565b6001600160a01b03861660009081526002602052604090205460ff1615801561148357506001600160a01b03851660009081526002602052604090205460ff16155b61148c57600080fd5b600e548461149987610c9d565b6114a3919061235f565b11156114f15760405162461bcd60e51b815260206004820181905260248201527f546f74616c20616d6f756e74206578636565642077616c6c6574206c696d69746044820152606401610af6565b6114fc868686611994565b505050505050565b6001600160a01b03831660009081526006602052604090205461154a90849061152e9084906122d7565b6001600160a01b03909116600090815260066020526040902055565b6001600160a01b03821660009081526006602052604090205461157490839061152e90849061235f565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115b991815260200190565b60405180910390a3505050565b6001600160a01b03821660009081526002602052604090205460ff16156115ec57600080fd5b600c548111156116325760405162461bcd60e51b8152602060048201526011602482015270109d5e48195e18d959591cc81b1a5b5a5d607a1b6044820152606401610af6565b606461163f826014612340565b611649919061231e565b60109081556001600160a01b0383166000818152600260205260408120805460ff19166001908117909155600f805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b031916909117905554610fc1908490849084906119d2565b6001600160a01b03821660009081526002602052604090205460ff16156116e957600080fd5b600c5481111561172f5760405162461bcd60e51b8152602060048201526011602482015270109d5e48195e18d959591cc81b1a5b5a5d607a1b6044820152606401610af6565b600e548161173c84610c9d565b611746919061235f565b11156117945760405162461bcd60e51b815260206004820181905260248201527f546f74616c20616d6f756e74206578636565642077616c6c6574206c696d69746044820152606401610af6565b6001600160a01b03821660009081526003602052604090205460ff166117d7576016546103e8906117c59083612340565b6117cf919061231e565b6010556117dd565b60006010555b610fc18383836010546119d2565b601f54600090600160b01b900460ff161580156118115750601f54600160c01b900460ff165b8015610ac7575050602080543060009081526006909252604090912054101590565b601f805460ff60b01b1916600160b01b179055600061185130610c9d565b601654601a54919250600091611867919061235f565b601354601754611877919061235f565b6118819084612340565b61188b919061231e565b9050600061189982846122d7565b905060006118a860028461231e565b905060006118b682856122d7565b90506118c2818461235f565b9450476118ce86611aed565b60006118da82476122d7565b90506000876118e98584612340565b6118f3919061231e565b90506118ff8582611c26565b600061190b84476122d7565b905061191681611ce2565b5050601f805460ff60b01b1916905550505050505050565b6001600160a01b03831660009081526002602052604090205460ff161561195457600080fd5b600d5481111561196357600080fd5b6001600160a01b03831660009081526003602052604090205460ff166117d757601a546103e8906117c59083612340565b6103e8601154826119a59190612340565b6119af919061231e565b6010819055156119c757610fc18383836010546119d2565b610fc1838383611504565b6000601054836119e291906122d7565b6001600160a01b038616600090815260066020526040902054909150611a0f90869061152e9086906122d7565b30600081815260066020526040902054611a2f919061152e90859061235f565b6001600160a01b038416600090815260066020526040902054611a5990859061152e90849061235f565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a9e91815260200190565b60405180910390a360405182815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b2257611b22612377565b6001600160a01b03928316602091820292909201810191909152601e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611b7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9f91906124b4565b81600181518110611bb257611bb2612377565b6001600160a01b039283166020918202929092010152601e5460405163791ac94760e01b815291169063791ac94790611bf89085906000908690309042906004016124d1565b600060405180830381600087803b158015611c1257600080fd5b505af11580156114fc573d6000803e3d6000fd5b601f805460ff60a81b1916600160a81b179055601e54601c5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611ca9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611cce919061250d565b5050601f805460ff60a81b19169055505050565b601954601554600091611cf49161235f565b601854601454919250600091611d0a919061235f565b90506000611d18828461235f565b9050600081611d278587612340565b611d31919061231e565b9050600082611d408588612340565b611d4a919061231e565b90508015611dfc57601c546040516000916001600160a01b03169061753090849084818181858888f193505050503d8060008114611da4576040519150601f19603f3d011682016040523d82523d6000602084013e611da9565b606091505b5050905080611dfa5760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e7366657200006044820152606401610af6565b505b81156114fc57601d546040516000916001600160a01b03169061753090859084818181858888f193505050503d8060008114611e54576040519150601f19603f3d011682016040523d82523d6000602084013e611e59565b606091505b5050905080611eaa5760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e7366657200006044820152606401610af6565b50505050505050565b600060208083528351808285015260005b81811015611ee057858101830151858201604001528201611ec4565b81811115611ef2576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611f1d57600080fd5b50565b60008060408385031215611f3357600080fd5b8235611f3e81611f08565b946020939093013593505050565b600060208284031215611f5e57600080fd5b8135611f6981611f08565b9392505050565b60008060408385031215611f8357600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b83811015611fcb5781516001600160a01b031687529582019590820190600101611fa6565b509495945050505050565b602081526000611f696020830184611f92565b600080600060608486031215611ffe57600080fd5b833561200981611f08565b9250602084013561201981611f08565b929592945050506040919091013590565b60008060006060848603121561203f57600080fd5b505081359360208301359350604090920135919050565b60006020828403121561206857600080fd5b5035919050565b8035801515811461207f57600080fd5b919050565b60006020828403121561209657600080fd5b611f698261206f565b600080604083850312156120b257600080fd5b82356120bd81611f08565b91506120cb6020840161206f565b90509250929050565b600080604083850312156120e757600080fd5b611f3e8361206f565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561212f5761212f6120f0565b604052919050565b600067ffffffffffffffff821115612151576121516120f0565b5060051b60200190565b600082601f83011261216c57600080fd5b8135602061218161217c83612137565b612106565b82815260059290921b840181019181810190868411156121a057600080fd5b8286015b848110156121bb57803583529183019183016121a4565b509695505050505050565b600080604083850312156121d957600080fd5b823567ffffffffffffffff808211156121f157600080fd5b818501915085601f83011261220557600080fd5b8135602061221561217c83612137565b82815260059290921b8401810191818101908984111561223457600080fd5b948201945b8386101561225b57853561224c81611f08565b82529482019490820190612239565b9650508601359250508082111561227157600080fd5b5061227e8582860161215b565b9150509250929050565b6000806040838503121561229b57600080fd5b82356122a681611f08565b915060208301356122b681611f08565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b6000828210156122e9576122e96122c1565b500390565b60208082526016908201527510aca7aa9020a922902727aa102a24229027aba722a960511b604082015260600190565b60008261233b57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561235a5761235a6122c1565b500290565b60008219821115612372576123726122c1565b500190565b634e487b7160e01b600052603260045260246000fd5b600181815b808511156123c85781600019048211156123ae576123ae6122c1565b808516156123bb57918102915b93841c9390800290612392565b509250929050565b6000826123df57506001610956565b816123ec57506000610956565b8160018114612402576002811461240c57612428565b6001915050610956565b60ff84111561241d5761241d6122c1565b50506001821b610956565b5060208310610133831016604e8410600b841016171561244b575081810a610956565b612455838361238d565b8060001904821115612469576124696122c1565b029392505050565b6000611f6960ff8416836123d0565b6000600019821415612494576124946122c1565b5060010190565b6000602082840312156124ad57600080fd5b5051919050565b6000602082840312156124c657600080fd5b8151611f6981611f08565b85815284602082015260a0604082015260006124f060a0830186611f92565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561252257600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212206559cf097eeab28118950b9523ceabb40a09f910bf23e44a31defb2e83c2a0f964736f6c634300080a0033

Deployed Bytecode

0x60806040526004361061028c5760003560e01c806370a082311161015a578063a5949bcf116100c1578063dca3cef11161007a578063dca3cef114610813578063dd62ed3e14610833578063e065099714610879578063e5a772d21461088f578063f2fde38b146108af578063f887ea40146108cf57600080fd5b8063a5949bcf1461075d578063a8aa1b311461077d578063a9059cbb1461079d578063b46ba24b146107bd578063b704a9f6146107dd578063d51ed1c8146107f357600080fd5b80638b3be0c3116101135780638b3be0c3146106915780638ca42e4e146106b15780638ee41ca8146106d157806395d89b41146106f15780639b0ad05c1461071d5780639be953b31461073d57600080fd5b806370a08231146105ce578063715018a6146105ee5780637a6d69b41461060357806383bd84851461063357806387cfc49314610653578063893d20e81461067357600080fd5b8063313ce567116101fe57806353cd6210116101b757806353cd621014610521578063599ca3971461054257806359d3cac2146105585780636390aeeb146105785780636dc53a0a1461058d5780636ddd1713146105ad57600080fd5b8063313ce56714610476578063364333f41461049257806347062402146104a957806347375a37146104cc5780634c5d8710146104e157806352aae9dd1461050157600080fd5b80631ca0b1d0116102505780631ca0b1d01461037557806323b872dd146103975780632b112e49146103b75780632b14ca56146103cc5780632d3b40471461040f5780632f54bf6e1461044757600080fd5b806306fdde0314610298578063095ea7b3146102d65780630cb23d86146103065780631161ae391461033657806318160ddd1461035657600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506040805180820190915260038152620cc60f60eb1b60208201525b6040516102cd9190611eb3565b60405180910390f35b3480156102e257600080fd5b506102f66102f1366004611f20565b6108ef565b60405190151581526020016102cd565b34801561031257600080fd5b506102f6610321366004611f4c565b60046020526000908152604090205460ff1681565b34801561034257600080fd5b506102f6610351366004611f70565b61095c565b34801561036257600080fd5b506008545b6040519081526020016102cd565b34801561038157600080fd5b5061038a610970565b6040516102cd9190611fd6565b3480156103a357600080fd5b506102f66103b2366004611fe9565b6109d2565b3480156103c357600080fd5b50610367610a99565b3480156103d857600080fd5b50601754601854601954601a546103ef9392919084565b6040805194855260208501939093529183015260608201526080016102cd565b34801561041b57600080fd5b50601b5461042f906001600160a01b031681565b6040516001600160a01b0390911681526020016102cd565b34801561045357600080fd5b506102f6610462366004611f4c565b6000546001600160a01b0391821691161490565b34801561048257600080fd5b50604051601281526020016102cd565b34801561049e57600080fd5b506104a7610acc565b005b3480156104b557600080fd5b506013546014546015546016546103ef9392919084565b3480156104d857600080fd5b506104a7610b3e565b3480156104ed57600080fd5b506104a76104fc36600461202a565b610b7d565b34801561050d57600080fd5b506104a761051c366004612056565b610c18565b34801561052d57600080fd5b50601f546102f690600160a01b900460ff1681565b34801561054e57600080fd5b50610367600b5481565b34801561056457600080fd5b506104a761057336600461202a565b610c47565b34801561058457600080fd5b50600f54610367565b34801561059957600080fd5b50601c5461042f906001600160a01b031681565b3480156105b957600080fd5b50601f546102f690600160c01b900460ff1681565b3480156105da57600080fd5b506103676105e9366004611f4c565b610c9d565b3480156105fa57600080fd5b506104a7610cb8565b34801561060f57600080fd5b506102f661061e366004611f4c565b60026020526000908152604090205460ff1681565b34801561063f57600080fd5b506104a761064e366004612084565b610d2c565b34801561065f57600080fd5b506104a761066e366004611f4c565b610d74565b34801561067f57600080fd5b506000546001600160a01b031661042f565b34801561069d57600080fd5b506104a76106ac36600461209f565b610dbf565b3480156106bd57600080fd5b506104a76106cc366004612056565b610e14565b3480156106dd57600080fd5b506104a76106ec3660046120d4565b610e43565b3480156106fd57600080fd5b5060408051808201909152600381526208c60b60eb1b60208201526102c0565b34801561072957600080fd5b506104a76107383660046121c6565b610ea7565b34801561074957600080fd5b506104a7610758366004611f4c565b610fc6565b34801561076957600080fd5b50601d5461042f906001600160a01b031681565b34801561078957600080fd5b50601f5461042f906001600160a01b031681565b3480156107a957600080fd5b506102f66107b8366004611f20565b611096565b3480156107c957600080fd5b506104a76107d836600461202a565b6110ac565b3480156107e957600080fd5b50610367600a5481565b3480156107ff57600080fd5b5061036761080e366004612056565b611102565b34801561081f57600080fd5b506104a761082e366004612288565b611140565b34801561083f57600080fd5b5061036761084e366004612288565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561088557600080fd5b5061036760095481565b34801561089b57600080fd5b506104a76108aa366004611f4c565b611198565b3480156108bb57600080fd5b506104a76108ca366004611f4c565b6111fe565b3480156108db57600080fd5b50601e5461042f906001600160a01b031681565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061094a9086815260200190565b60405180910390a35060015b92915050565b60008261096883611102565b119392505050565b6060600f8054806020026020016040519081016040528092919081815260200182805480156109c857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109aa575b5050505050905090565b6001600160a01b038316600090815260076020908152604080832033845290915281205482811015610a0357600080fd5b6001600160a01b038516600090815260076020908152604080832033845290915290205460001914610a83576001600160a01b0385166000908152600760209081526040808320338452909152902054610a5e9084906122d7565b6001600160a01b03861660009081526007602090815260408083203384529091529020555b610a8e8585856112e8565b506001949350505050565b6000610aa56000610c9d565b610ab061dead610c9d565b600854610abd91906122d7565b610ac791906122d7565b905090565b6000546001600160a01b03163314610aff5760405162461bcd60e51b8152600401610af6906122ee565b60405180910390fd5b6000805460405147926001600160a01b039092169183156108fc02918491818181858888f19350505050158015610b3a573d6000803e3d6000fd5b5050565b6000546001600160a01b03163314610b685760405162461bcd60e51b8152600401610af6906122ee565b601f805460ff60b81b1916600160b81b179055565b6000546001600160a01b03163314610ba75760405162461bcd60e51b8152600401610af6906122ee565b60098390556008548390610bbe906103e89061231e565b610bc89190612340565b600c55600a8290556008548290610be2906103e89061231e565b610bec9190612340565b600d55600b8190556008548190610c06906103e89061231e565b610c109190612340565b600e55505050565b6000546001600160a01b03163314610c425760405162461bcd60e51b8152600401610af6906122ee565b601255565b6000546001600160a01b03163314610c715760405162461bcd60e51b8152600401610af6906122ee565b60178390556018829055601981905580610c8b838561235f565b610c95919061235f565b601a55505050565b6001600160a01b031660009081526006602052604090205490565b6000546001600160a01b03163314610ce25760405162461bcd60e51b8152600401610af6906122ee565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610d565760405162461bcd60e51b8152600401610af6906122ee565b601f8054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b03163314610d9e5760405162461bcd60e51b8152600401610af6906122ee565b6001600160a01b03166000908152600260205260409020805460ff19169055565b6000546001600160a01b03163314610de95760405162461bcd60e51b8152600401610af6906122ee565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610e3e5760405162461bcd60e51b8152600401610af6906122ee565b601155565b6000546001600160a01b03163314610e6d5760405162461bcd60e51b8152600401610af6906122ee565b601f805460ff60c01b1916600160c01b841515021790556008548190610e96906103e89061231e565b610ea09190612340565b6020555050565b6000546001600160a01b03163314610ed15760405162461bcd60e51b8152600401610af6906122ee565b6064825110610f415760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203130302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b6064820152608401610af6565b60005b8251811015610fc1576000838281518110610f6157610f61612377565b6020026020010151905060006012600a610f7b9190612471565b848481518110610f8d57610f8d612377565b6020026020010151610f9f9190612340565b9050610fac3383836112e8565b50508080610fb990612480565b915050610f44565b505050565b6000546001600160a01b03163314610ff05760405162461bcd60e51b8152600401610af6906122ee565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611037573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105b919061249b565b601c546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015610fc1573d6000803e3d6000fd5b60006110a33384846112e8565b50600192915050565b6000546001600160a01b031633146110d65760405162461bcd60e51b8152600401610af6906122ee565b601383905560148290556015819055806110f0838561235f565b6110fa919061235f565b601655505050565b600061110c610a99565b601f54611121906001600160a01b0316610c9d565b61112c906002612340565b6111369084612340565b610956919061231e565b6000546001600160a01b0316331461116a5760405162461bcd60e51b8152600401610af6906122ee565b601c80546001600160a01b039384166001600160a01b031991821617909155601d8054929093169116179055565b6000546001600160a01b031633146111c25760405162461bcd60e51b8152600401610af6906122ee565b6001600160a01b031660009081526004602090815260408083208054600160ff1991821681179092556005909352922080549091169091179055565b6000546001600160a01b031633146112285760405162461bcd60e51b8152600401610af6906122ee565b6001600160a01b03811661128d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610af6565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383161580159061130857506001600160a01b03821615155b61134c5760405162461bcd60e51b815260206004820152601560248201527421b0b73737ba1031329030b2323932b9b99418149760591b6044820152606401610af6565b6001600160a01b03808416600081815260046020908152604080832054948716835280832054938352600590915281205460ff938416939283169216806113ab57506001600160a01b03851660009081526005602052604090205460ff165b806113bf5750601f54600160a81b900460ff165b905080156113d7576113d2868686611504565b6114fc565b601f54600160b81b900460ff166113ed57600080fd5b601f54600160a01b900460ff161561140a576113d28686866115c6565b821561141b576113d28686866116c3565b8115611441576114296117eb565b1561143657611436611833565b6113d286868661192e565b6001600160a01b03861660009081526002602052604090205460ff1615801561148357506001600160a01b03851660009081526002602052604090205460ff16155b61148c57600080fd5b600e548461149987610c9d565b6114a3919061235f565b11156114f15760405162461bcd60e51b815260206004820181905260248201527f546f74616c20616d6f756e74206578636565642077616c6c6574206c696d69746044820152606401610af6565b6114fc868686611994565b505050505050565b6001600160a01b03831660009081526006602052604090205461154a90849061152e9084906122d7565b6001600160a01b03909116600090815260066020526040902055565b6001600160a01b03821660009081526006602052604090205461157490839061152e90849061235f565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115b991815260200190565b60405180910390a3505050565b6001600160a01b03821660009081526002602052604090205460ff16156115ec57600080fd5b600c548111156116325760405162461bcd60e51b8152602060048201526011602482015270109d5e48195e18d959591cc81b1a5b5a5d607a1b6044820152606401610af6565b606461163f826014612340565b611649919061231e565b60109081556001600160a01b0383166000818152600260205260408120805460ff19166001908117909155600f805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b031916909117905554610fc1908490849084906119d2565b6001600160a01b03821660009081526002602052604090205460ff16156116e957600080fd5b600c5481111561172f5760405162461bcd60e51b8152602060048201526011602482015270109d5e48195e18d959591cc81b1a5b5a5d607a1b6044820152606401610af6565b600e548161173c84610c9d565b611746919061235f565b11156117945760405162461bcd60e51b815260206004820181905260248201527f546f74616c20616d6f756e74206578636565642077616c6c6574206c696d69746044820152606401610af6565b6001600160a01b03821660009081526003602052604090205460ff166117d7576016546103e8906117c59083612340565b6117cf919061231e565b6010556117dd565b60006010555b610fc18383836010546119d2565b601f54600090600160b01b900460ff161580156118115750601f54600160c01b900460ff165b8015610ac7575050602080543060009081526006909252604090912054101590565b601f805460ff60b01b1916600160b01b179055600061185130610c9d565b601654601a54919250600091611867919061235f565b601354601754611877919061235f565b6118819084612340565b61188b919061231e565b9050600061189982846122d7565b905060006118a860028461231e565b905060006118b682856122d7565b90506118c2818461235f565b9450476118ce86611aed565b60006118da82476122d7565b90506000876118e98584612340565b6118f3919061231e565b90506118ff8582611c26565b600061190b84476122d7565b905061191681611ce2565b5050601f805460ff60b01b1916905550505050505050565b6001600160a01b03831660009081526002602052604090205460ff161561195457600080fd5b600d5481111561196357600080fd5b6001600160a01b03831660009081526003602052604090205460ff166117d757601a546103e8906117c59083612340565b6103e8601154826119a59190612340565b6119af919061231e565b6010819055156119c757610fc18383836010546119d2565b610fc1838383611504565b6000601054836119e291906122d7565b6001600160a01b038616600090815260066020526040902054909150611a0f90869061152e9086906122d7565b30600081815260066020526040902054611a2f919061152e90859061235f565b6001600160a01b038416600090815260066020526040902054611a5990859061152e90849061235f565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a9e91815260200190565b60405180910390a360405182815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b2257611b22612377565b6001600160a01b03928316602091820292909201810191909152601e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611b7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9f91906124b4565b81600181518110611bb257611bb2612377565b6001600160a01b039283166020918202929092010152601e5460405163791ac94760e01b815291169063791ac94790611bf89085906000908690309042906004016124d1565b600060405180830381600087803b158015611c1257600080fd5b505af11580156114fc573d6000803e3d6000fd5b601f805460ff60a81b1916600160a81b179055601e54601c5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611ca9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611cce919061250d565b5050601f805460ff60a81b19169055505050565b601954601554600091611cf49161235f565b601854601454919250600091611d0a919061235f565b90506000611d18828461235f565b9050600081611d278587612340565b611d31919061231e565b9050600082611d408588612340565b611d4a919061231e565b90508015611dfc57601c546040516000916001600160a01b03169061753090849084818181858888f193505050503d8060008114611da4576040519150601f19603f3d011682016040523d82523d6000602084013e611da9565b606091505b5050905080611dfa5760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e7366657200006044820152606401610af6565b505b81156114fc57601d546040516000916001600160a01b03169061753090859084818181858888f193505050503d8060008114611e54576040519150601f19603f3d011682016040523d82523d6000602084013e611e59565b606091505b5050905080611eaa5760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e7366657200006044820152606401610af6565b50505050505050565b600060208083528351808285015260005b81811015611ee057858101830151858201604001528201611ec4565b81811115611ef2576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611f1d57600080fd5b50565b60008060408385031215611f3357600080fd5b8235611f3e81611f08565b946020939093013593505050565b600060208284031215611f5e57600080fd5b8135611f6981611f08565b9392505050565b60008060408385031215611f8357600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b83811015611fcb5781516001600160a01b031687529582019590820190600101611fa6565b509495945050505050565b602081526000611f696020830184611f92565b600080600060608486031215611ffe57600080fd5b833561200981611f08565b9250602084013561201981611f08565b929592945050506040919091013590565b60008060006060848603121561203f57600080fd5b505081359360208301359350604090920135919050565b60006020828403121561206857600080fd5b5035919050565b8035801515811461207f57600080fd5b919050565b60006020828403121561209657600080fd5b611f698261206f565b600080604083850312156120b257600080fd5b82356120bd81611f08565b91506120cb6020840161206f565b90509250929050565b600080604083850312156120e757600080fd5b611f3e8361206f565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561212f5761212f6120f0565b604052919050565b600067ffffffffffffffff821115612151576121516120f0565b5060051b60200190565b600082601f83011261216c57600080fd5b8135602061218161217c83612137565b612106565b82815260059290921b840181019181810190868411156121a057600080fd5b8286015b848110156121bb57803583529183019183016121a4565b509695505050505050565b600080604083850312156121d957600080fd5b823567ffffffffffffffff808211156121f157600080fd5b818501915085601f83011261220557600080fd5b8135602061221561217c83612137565b82815260059290921b8401810191818101908984111561223457600080fd5b948201945b8386101561225b57853561224c81611f08565b82529482019490820190612239565b9650508601359250508082111561227157600080fd5b5061227e8582860161215b565b9150509250929050565b6000806040838503121561229b57600080fd5b82356122a681611f08565b915060208301356122b681611f08565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b6000828210156122e9576122e96122c1565b500390565b60208082526016908201527510aca7aa9020a922902727aa102a24229027aba722a960511b604082015260600190565b60008261233b57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561235a5761235a6122c1565b500290565b60008219821115612372576123726122c1565b500190565b634e487b7160e01b600052603260045260246000fd5b600181815b808511156123c85781600019048211156123ae576123ae6122c1565b808516156123bb57918102915b93841c9390800290612392565b509250929050565b6000826123df57506001610956565b816123ec57506000610956565b8160018114612402576002811461240c57612428565b6001915050610956565b60ff84111561241d5761241d6122c1565b50506001821b610956565b5060208310610133831016604e8410600b841016171561244b575081810a610956565b612455838361238d565b8060001904821115612469576124696122c1565b029392505050565b6000611f6960ff8416836123d0565b6000600019821415612494576124946122c1565b5060010190565b6000602082840312156124ad57600080fd5b5051919050565b6000602082840312156124c657600080fd5b8151611f6981611f08565b85815284602082015260a0604082015260006124f060a0830186611f92565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561252257600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212206559cf097eeab28118950b9523ceabb40a09f910bf23e44a31defb2e83c2a0f964736f6c634300080a0033

Deployed Bytecode Sourcemap

11620:16377:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26718:80;;;;;;;;;;-1:-1:-1;26790:5:0;;;;;;;;;;;;-1:-1:-1;;;26790:5:0;;;;26718:80;;;;;;;:::i;:::-;;;;;;;;27139:216;;;;;;;;;;-1:-1:-1;27139:216:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;27139:216:0;1072:187:1;11784:54:0;;;;;;;;;;-1:-1:-1;11784:54:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19911:150;;;;;;;;;;-1:-1:-1;19911:150:0;;;;;:::i;:::-;;:::i;26448:88::-;;;;;;;;;;-1:-1:-1;26521:12:0;;26448:88;;;1915:25:1;;;1903:2;1888:18;26448:88:0;1769:177:1;19518:99:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;27538:456::-;;;;;;;;;;-1:-1:-1;27538:456:0;;;;;:::i;:::-;;:::i;19373:136::-;;;;;;;;;;;;;:::i;13035:22::-;;;;;;;;;;-1:-1:-1;13035:22:0;;;;;;;;;;;;;;;;;;;3375:25:1;;;3431:2;3416:18;;3409:34;;;;3459:18;;;3452:34;3517:2;3502:18;;3495:34;3362:3;3347:19;13035:22:0;3144:391:1;13091:82:0;;;;;;;;;;-1:-1:-1;13091:82:0;;;;-1:-1:-1;;;;;13091:82:0;;;;;;-1:-1:-1;;;;;3704:32:1;;;3686:51;;3674:2;3659:18;13091:82:0;3540:203:1;9549:103:0;;;;;;;;;;-1:-1:-1;9549:103:0;;;;;:::i;:::-;9604:4;9639:5;-1:-1:-1;;;;;9628:16:0;;;9639:5;;9628:16;;9549:103;26542:80;;;;;;;;;;-1:-1:-1;26542:80:0;;12165:2;3890:36:1;;3878:2;3863:18;26542:80:0;3748:184:1;18866:171:0;;;;;;;;;;;;;:::i;:::-;;13008:20;;;;;;;;;;-1:-1:-1;13008:20:0;;;;;;;;;;;;;;;16185:120;;;;;;;;;;;;;:::i;15665:511::-;;;;;;;;;;-1:-1:-1;15665:511:0;;;;;:::i;:::-;;:::i;16669:111::-;;;;;;;;;;-1:-1:-1;16669:111:0;;;;;:::i;:::-;;:::i;13548:33::-;;;;;;;;;;-1:-1:-1;13548:33:0;;;;-1:-1:-1;;;13548:33:0;;;;;;12366:34;;;;;;;;;;;;;;;;17273:360;;;;;;;;;;-1:-1:-1;17273:360:0;;;;;:::i;:::-;;:::i;19626:103::-;;;;;;;;;;-1:-1:-1;19704:10:0;:17;19626:103;;13348:47;;;;;;;;;;-1:-1:-1;13348:47:0;;;;-1:-1:-1;;;;;13348:47:0;;;13766:30;;;;;;;;;;-1:-1:-1;13766:30:0;;;;-1:-1:-1;;;13766:30:0;;;;;;26888:104;;;;;;;;;;-1:-1:-1;26888:104:0;;;;;:::i;:::-;;:::i;9912:146::-;;;;;;;;;;;;;:::i;11681:44::-;;;;;;;;;;-1:-1:-1;11681:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18754:103;;;;;;;;;;-1:-1:-1;18754:103:0;;;;;:::i;:::-;;:::i;18479:105::-;;;;;;;;;;-1:-1:-1;18479:105:0;;;;;:::i;:::-;;:::i;26804:78::-;;;;;;;;;;-1:-1:-1;26856:7:0;26874:5;-1:-1:-1;;;;;26874:5:0;26804:78;;16314:131;;;;;;;;;;-1:-1:-1;16314:131:0;;;;;:::i;:::-;;:::i;17704:119::-;;;;;;;;;;-1:-1:-1;17704:119:0;;;;;:::i;:::-;;:::i;16454:206::-;;;;;;;;;;-1:-1:-1;16454:206:0;;;;;:::i;:::-;;:::i;26628:84::-;;;;;;;;;;-1:-1:-1;26702:7:0;;;;;;;;;;;;-1:-1:-1;;;26702:7:0;;;;26628:84;;18018:452;;;;;;;;;;-1:-1:-1;18018:452:0;;;;;:::i;:::-;;:::i;19046:206::-;;;;;;;;;;-1:-1:-1;19046:206:0;;;;;:::i;:::-;;:::i;13402:47::-;;;;;;;;;;-1:-1:-1;13402:47:0;;;;-1:-1:-1;;;;;13402:47:0;;;13490:19;;;;;;;;;;-1:-1:-1;13490:19:0;;;;-1:-1:-1;;;;;13490:19:0;;;27364:165;;;;;;;;;;-1:-1:-1;27364:165:0;;;;;:::i;:::-;;:::i;16850:352::-;;;;;;;;;;-1:-1:-1;16850:352:0;;;;;:::i;:::-;;:::i;12327:32::-;;;;;;;;;;;;;;;;19738:164;;;;;;;;;;-1:-1:-1;19738:164:0;;;;;:::i;:::-;;:::i;17832:177::-;;;;;;;;;;-1:-1:-1;17832:177:0;;;;;:::i;:::-;;:::i;26998:132::-;;;;;;;;;;-1:-1:-1;26998:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;27100:19:0;;;27082:7;27100:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;26998:132;12289:31;;;;;;;;;;;;;;;;18593:152;;;;;;;;;;-1:-1:-1;18593:152:0;;;;;:::i;:::-;;:::i;9661:242::-;;;;;;;;;;-1:-1:-1;9661:242:0;;;;;:::i;:::-;;:::i;13459:24::-;;;;;;;;;;-1:-1:-1;13459:24:0;;;;-1:-1:-1;;;;;13459:24:0;;;27139:216;27243:10;27214:4;27231:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;27231:32:0;;;;;;;;;;:41;;;27288:37;27214:4;;27231:32;;27288:37;;;;27266:6;1915:25:1;;1903:2;1888:18;;1769:177;27288:37:0;;;;;;;;-1:-1:-1;27343:4:0;27139:216;;;;;:::o;19911:150::-;19991:4;20047:6;20015:29;20035:8;20015:19;:29::i;:::-;:38;;19911:150;-1:-1:-1;;;19911:150:0:o;19518:99::-;19564:16;19599:10;19592:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19592:17:0;;;;;;;;;;;;;;;;;;;;;;;19518:99;:::o;27538:456::-;-1:-1:-1;;;;;27674:19:0;;27636:4;27674:19;;;:11;:19;;;;;;;;27694:10;27674:31;;;;;;;;27724:20;;;;27716:29;;;;;;-1:-1:-1;;;;;27763:19:0;;;;;;:11;:19;;;;;;;;27783:10;27763:31;;;;;;;;-1:-1:-1;;27763:52:0;27759:159;;-1:-1:-1;;;;;27866:19:0;;;;;;:11;:19;;;;;;;;27886:10;27866:31;;;;;;;;:40;;27900:6;;27866:40;:::i;:::-;-1:-1:-1;;;;;27832:19:0;;;;;;:11;:19;;;;;;;;27852:10;27832:31;;;;;;;:74;27759:159;27928:36;27938:6;27946:9;27957:6;27928:9;:36::i;:::-;-1:-1:-1;27982:4:0;;27538:456;-1:-1:-1;;;;27538:456:0:o;19373:136::-;19426:7;19486:15;13296:42;19486:9;:15::i;:::-;19468;13215:42;19468:9;:15::i;:::-;19453:12;;:30;;;;:::i;:::-;:48;;;;:::i;:::-;19446:55;;19373:136;:::o;18866:171::-;9604:4;9639:5;-1:-1:-1;;;;;9639:5:0;9491:10;9628:16;9475:54;;;;-1:-1:-1;;;9475:54:0;;;;;;;:::i;:::-;;;;;;;;;18925:26:::1;18994:5:::0;;18986:43:::1;::::0;18954:21:::1;::::0;-1:-1:-1;;;;;18994:5:0;;::::1;::::0;18986:43;::::1;;;::::0;18954:21;;18986:43;18925:26;18986:43;18954:21;18994:5;18986:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;18914:123;18866:171::o:0;16185:120::-;9604:4;9639:5;-1:-1:-1;;;;;9639:5:0;9491:10;9628:16;9475:54;;;;-1:-1:-1;;;9475:54:0;;;;;;;:::i;:::-;16262:28:::1;:35:::0;;-1:-1:-1;;;;16262:35:0::1;-1:-1:-1::0;;;16262:35:0::1;::::0;;16185:120::o;15665:511::-;9604:4;9639:5;-1:-1:-1;;;;;9639:5:0;9491:10;9628:16;9475:54;;;;-1:-1:-1;;;9475:54:0;;;;;;;:::i;:::-;15804:16:::1;:36:::0;;;15877:12:::1;::::0;15823:17;;15877:18:::1;::::0;15891:4:::1;::::0;15877:18:::1;:::i;:::-;:37;;;;:::i;:::-;15862:12;:52:::0;15927:17:::1;:38:::0;;;16001:12:::1;::::0;15947:18;;16001::::1;::::0;16015:4:::1;::::0;16001:18:::1;:::i;:::-;:38;;;;:::i;:::-;15985:13;:54:::0;16052:19:::1;:41:::0;;;16128:12:::1;::::0;16073:20;;16128:18:::1;::::0;16142:4:::1;::::0;16128:18:::1;:::i;:::-;:40;;;;:::i;:::-;16110:15;:58:::0;-1:-1:-1;;;15665:511:0:o;16669:111::-;9604:4;9639:5;-1:-1:-1;;;;;9639:5:0;9491:10;9628:16;9475:54;;;;-1:-1:-1;;;9475:54:0;;;;;;;:::i;:::-;16748:15:::1;:24:::0;16669:111::o;17273:360::-;9604:4;9639:5;-1:-1:-1;;;;;9639:5:0;9491:10;9628:16;9475:54;;;;-1:-1:-1;;;9475:54:0;;;;;;;:::i;:::-;17402:7:::1;:36:::0;;;17449:20;:36;;;17496:20;:36;;;17519:13;17559:43:::1;17472:13:::0;17425;17559:43:::1;:::i;:::-;:66;;;;:::i;:::-;17543:13:::0;:82;-1:-1:-1;;;17273:360:0:o;26888:104::-;-1:-1:-1;;;;;26972:18:0;26954:7;26972:18;;;:9;:18;;;;;;;26888:104::o;9912:146::-;9604:4;9639:5;-1:-1:-1;;;;;9639:5:0;9491:10;9628:16;9475:54;;;;-1:-1:-1;;;9475:54:0;;;;;;;:::i;:::-;10018:1:::1;10003:5:::0;;9982:39:::1;::::0;-1:-1:-1;;;;;10003:5:0;;::::1;::::0;9982:39:::1;::::0;10018:1;;9982:39:::1;10048:1;10032:18:::0;;-1:-1:-1;;;;;;10032:18:0::1;::::0;;9912:146::o;18754:103::-;9604:4;9639:5;-1:-1:-1;;;;;9639:5:0;9491:10;9628:16;9475:54;;;;-1:-1:-1;;;9475:54:0;;;;;;;:::i;:::-;18827:14:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;18827:22:0::1;-1:-1:-1::0;;;;18827:22:0;;::::1;::::0;;;::::1;::::0;;18754:103::o;18479:105::-;9604:4;9639:5;-1:-1:-1;;;;;9639:5:0;9491:10;9628:16;9475:54;;;;-1:-1:-1;;;9475:54:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18548:20:0::1;18571:5;18548:20:::0;;;:12:::1;:20;::::0;;;;:28;;-1:-1:-1;;18548:28:0::1;::::0;;18479:105::o;16314:131::-;9604:4;9639:5;-1:-1:-1;;;;;9639:5:0;9491:10;9628:16;9475:54;;;;-1:-1:-1;;;9475:54:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16408:19:0;;;::::1;;::::0;;;:12:::1;:19;::::0;;;;:29;;-1:-1:-1;;16408:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16314:131::o;17704:119::-;9604:4;9639:5;-1:-1:-1;;;;;9639:5:0;9491:10;9628:16;9475:54;;;;-1:-1:-1;;;9475:54:0;;;;;;;:::i;:::-;17789:11:::1;:26:::0;17704:119::o;16454:206::-;9604:4;9639:5;-1:-1:-1;;;;;9639:5:0;9491:10;9628:16;9475:54;;;;-1:-1:-1;;;9475:54:0;;;;;;;:::i;:::-;16562:11:::1;:22:::0;;-1:-1:-1;;;;16562:22:0::1;-1:-1:-1::0;;;16562:22:0;::::1;;;;::::0;;16611:12:::1;::::0;16633:19;;16611::::1;::::0;16626:4:::1;::::0;16611:19:::1;:::i;:::-;:41;;;;:::i;:::-;16595:13;:57:::0;-1:-1:-1;;16454:206:0:o;18018:452::-;9604:4;9639:5;-1:-1:-1;;;;;9639:5:0;9491:10;9628:16;9475:54;;;;-1:-1:-1;;;9475:54:0;;;;;;;:::i;:::-;18167:3:::1;18143:14;:21;:27;18135:94;;;::::0;-1:-1:-1;;;18135:94:0;;9815:2:1;18135:94:0::1;::::0;::::1;9797:21:1::0;9854:2;9834:18;;;9827:30;9893:34;9873:18;;;9866:62;-1:-1:-1;;;9944:18:1;;;9937:52;10006:19;;18135:94:0::1;9613:418:1::0;18135:94:0::1;18244:9;18240:223;18263:14;:21;18259:1;:25;18240:223;;;18305:14;18322;18337:1;18322:17;;;;;;;;:::i;:::-;;;;;;;18305:34;;18354:14;12165:2;18385;:13;;;;:::i;:::-;18372:7;18380:1;18372:10;;;;;;;;:::i;:::-;;;;;;;:26;;;;:::i;:::-;18354:45;;18414:37;18424:10;18436:6;18444;18414:9;:37::i;:::-;18290:173;;18286:3;;;;;:::i;:::-;;;;18240:223;;;;18018:452:::0;;:::o;19046:206::-;9604:4;9639:5;-1:-1:-1;;;;;9639:5:0;9491:10;9628:16;9475:54;;;;-1:-1:-1;;;9475:54:0;;;;;;;:::i;:::-;19142:38:::1;::::0;-1:-1:-1;;;19142:38:0;;19174:4:::1;19142:38;::::0;::::1;3686:51:1::0;19115:24:0::1;::::0;-1:-1:-1;;;;;19142:23:0;::::1;::::0;::::1;::::0;3659:18:1;;19142:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19199:17;::::0;19191:53:::1;::::0;19115:65;;-1:-1:-1;;;;;;19199:17:0::1;::::0;19191:53;::::1;;;::::0;19115:65;;19199:17:::1;19191:53:::0;19199:17;19191:53;19115:65;19199:17;19191:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;27364:165:::0;27442:4;27459:40;27469:10;27481:9;27492:6;27459:9;:40::i;:::-;-1:-1:-1;27517:4:0;27364:165;;;;:::o;16850:352::-;9604:4;9639:5;-1:-1:-1;;;;;9639:5:0;9491:10;9628:16;9475:54;;;;-1:-1:-1;;;9475:54:0;;;;;;;:::i;:::-;16978:6:::1;:35:::0;;;17024:19;:35;;;17070:19;:35;;;17092:13;17131:41:::1;17046:13:::0;17000;17131:41:::1;:::i;:::-;:63;;;;:::i;:::-;17116:12:::0;:78;-1:-1:-1;;;16850:352:0:o;19738:164::-;19806:7;19871:22;:20;:22::i;:::-;19855:4;;19845:15;;-1:-1:-1;;;;;19855:4:0;19845:9;:15::i;:::-;:21;;19864:1;19845:21;:::i;:::-;19833:34;;:8;:34;:::i;:::-;:61;;;;:::i;17832:177::-;9604:4;9639:5;-1:-1:-1;;;;;9639:5:0;9491:10;9628:16;9475:54;;;;-1:-1:-1;;;9475:54:0;;;;;;;:::i;:::-;17930:17:::1;:30:::0;;-1:-1:-1;;;;;17930:30:0;;::::1;-1:-1:-1::0;;;;;;17930:30:0;;::::1;;::::0;;;17971:17:::1;:30:::0;;;;;::::1;::::0;::::1;;::::0;;17832:177::o;18593:152::-;9604:4;9639:5;-1:-1:-1;;;;;9639:5:0;9491:10;9628:16;9475:54;;;;-1:-1:-1;;;9475:54:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18666:30:0::1;;::::0;;;:22:::1;:30;::::0;;;;;;;:35;;18697:4:::1;-1:-1:-1::0;;18666:35:0;;::::1;::::0;::::1;::::0;;;18712:12:::1;:20:::0;;;;;:25;;;;::::1;::::0;;::::1;::::0;;18593:152::o;9661:242::-;9604:4;9639:5;-1:-1:-1;;;;;9639:5:0;9491:10;9628:16;9475:54;;;;-1:-1:-1;;;9475:54:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9750:22:0;::::1;9742:73;;;::::0;-1:-1:-1;;;9742:73:0;;12082:2:1;9742:73:0::1;::::0;::::1;12064:21:1::0;12121:2;12101:18;;;12094:30;12160:34;12140:18;;;12133:62;-1:-1:-1;;;12211:18:1;;;12204:36;12257:19;;9742:73:0::1;11880:402:1::0;9742:73:0::1;9852:5;::::0;;9831:37:::1;::::0;-1:-1:-1;;;;;9831:37:0;;::::1;::::0;9852:5;::::1;::::0;9831:37:::1;::::0;::::1;9879:5;:16:::0;;-1:-1:-1;;;;;;9879:16:0::1;-1:-1:-1::0;;;;;9879:16:0;;;::::1;::::0;;;::::1;::::0;;9661:242::o;20187:1205::-;-1:-1:-1;;;;;20282:18:0;;;;;;:41;;-1:-1:-1;;;;;;20302:21:0;;;;20282:41;20274:74;;;;-1:-1:-1;;;20274:74:0;;12489:2:1;20274:74:0;;;12471:21:1;12528:2;12508:18;;;12501:30;-1:-1:-1;;;12547:18:1;;;12540:51;12608:18;;20274:74:0;12287:345:1;20274:74:0;-1:-1:-1;;;;;20370:30:0;;;20359:10;20370:30;;;:22;:30;;;;;;;;;20423:33;;;;;;;;;20483:20;;;:12;:20;;;;;;20370:30;;;;;20423:33;;;;20483:20;;:45;;-1:-1:-1;;;;;;20505:23:0;;;;;;:12;:23;;;;;;;;20483:45;:56;;;-1:-1:-1;20530:9:0;;-1:-1:-1;;;20530:9:0;;;;20483:56;20467:72;;20556:10;20553:832;;;20567:42;20585:6;20592:9;20602:6;20567:17;:42::i;:::-;20553:832;;;20635:28;;-1:-1:-1;;;20635:28:0;;;;20627:37;;;;;;20717:14;;-1:-1:-1;;;20717:14:0;;;;20714:660;;;20732:39;20747:6;20754:9;20764:6;20732:14;:39::i;20714:660::-;20821:5;20818:556;;;20827:35;20838:6;20845:9;20855:6;20827:10;:35::i;20818:556::-;20913:6;20910:464;;;20979:16;:14;:16::i;:::-;20975:35;;;20998:10;:8;:10::i;:::-;21028:36;21040:6;21047:9;21057:6;21028:11;:36::i;20910:464::-;-1:-1:-1;;;;;21147:20:0;;;;;;:12;:20;;;;;;;;21146:21;:47;;;;-1:-1:-1;;;;;;21170:23:0;;;;;;:12;:23;;;;;;;;21169:24;21146:47;21138:56;;;;;;21250:15;;21242:6;21221:20;21231:9;21221;:20::i;:::-;:27;;;;:::i;:::-;:44;;21213:89;;;;-1:-1:-1;;;21213:89:0;;12839:2:1;21213:89:0;;;12821:21:1;;;12858:18;;;12851:30;12917:34;12897:18;;;12890:62;12969:18;;21213:89:0;12637:356:1;21213:89:0;21321:37;21334:6;21341:9;21351:6;21321:12;:37::i;:::-;20263:1129;;;20187:1205;;;:::o;22900:263::-;-1:-1:-1;;;;;23017:17:0;;;;;;:9;:17;;;;;;22995:47;;23010:6;;23017:24;;23035:6;;23017:24;:::i;:::-;-1:-1:-1;;;;;23724:18:0;;;;;;;:9;:18;;;;;:31;23645:118;22995:47;-1:-1:-1;;;;;23078:20:0;;;;;;:9;:20;;;;;;23053:53;;23068:9;;23078:27;;23099:6;;23078:27;:::i;23053:53::-;23138:9;-1:-1:-1;;;;;23122:33:0;23131:6;-1:-1:-1;;;;;23122:33:0;;23148:6;23122:33;;;;1915:25:1;;1903:2;1888:18;;1769:177;23122:33:0;;;;;;;;22900:263;;;:::o;21401:378::-;-1:-1:-1;;;;;21502:23:0;;;;;;:12;:23;;;;;;;;21501:24;21493:33;;;;;;21555:12;;21545:6;:22;;21537:52;;;;-1:-1:-1;;;21537:52:0;;13200:2:1;21537:52:0;;;13182:21:1;13239:2;13219:18;;;13212:30;-1:-1:-1;;;13258:18:1;;;13251:47;13315:18;;21537:52:0;12998:341:1;21537:52:0;21621:3;21611:9;:6;21618:2;21611:9;:::i;:::-;:13;;;;:::i;:::-;21600:8;:24;;;-1:-1:-1;;;;;21635:23:0;;;;;;:12;:23;;;;;:28;;-1:-1:-1;;21635:28:0;21659:4;21635:28;;;;;;21674:10;:35;;;;;;;;;;;;;;-1:-1:-1;;;;;;21674:35:0;;;;;;21762:8;21720:51;;21738:6;;21648:9;;21755:6;;21720:17;:51::i;21788:468::-;-1:-1:-1;;;;;21885:23:0;;;;;;:12;:23;;;;;;;;21884:24;21876:33;;;;;;21938:12;;21928:6;:22;;21920:52;;;;-1:-1:-1;;;21920:52:0;;13200:2:1;21920:52:0;;;13182:21:1;13239:2;13219:18;;;13212:30;-1:-1:-1;;;13258:18:1;;;13251:47;13315:18;;21920:52:0;12998:341:1;21920:52:0;22020:15;;22012:6;21991:20;22001:9;21991;:20::i;:::-;:27;;;;:::i;:::-;:44;;21983:89;;;;-1:-1:-1;;;21983:89:0;;12839:2:1;21983:89:0;;;12821:21:1;;;12858:18;;;12851:30;12917:34;12897:18;;;12890:62;12969:18;;21983:89:0;12637:356:1;21983:89:0;-1:-1:-1;;;;;22087:23:0;;;;;;:12;:23;;;;;;;;22083:103;;22140:12;;22153:4;;22133:19;;:6;:19;:::i;:::-;:24;;;;:::i;:::-;22122:8;:35;22083:103;;;22185:1;22174:8;:12;22083:103;22197:51;22215:6;22222:9;22232:6;22239:8;;22197:17;:51::i;23772:186::-;23858:6;;23820:4;;-1:-1:-1;;;23858:6:0;;;;23857:7;:35;;;;-1:-1:-1;23881:11:0;;-1:-1:-1;;;23881:11:0;;;;23857:35;:93;;;;-1:-1:-1;;23937:13:0;;;23927:4;23909:24;;;;:9;:24;;;;;;;;:41;;;23772:186::o;23970:729::-;13895:6;:13;;-1:-1:-1;;;;13895:13:0;-1:-1:-1;;;13895:13:0;;;;24035:24:::1;24053:4;24035:9;:24::i;:::-;24164:12:::0;;24148:13;;24018:41;;-1:-1:-1;24073:21:0::1;::::0;24148:28:::1;::::0;24164:12;24148:28:::1;:::i;:::-;24126:6;:19:::0;24103:7:::1;:20:::0;:42:::1;::::0;24126:19;24103:42:::1;:::i;:::-;24095:51;::::0;:6;:51:::1;:::i;:::-;:82;;;;:::i;:::-;24073:104:::0;-1:-1:-1;24188:18:0::1;24207:20;24073:104:::0;24207:6;:20:::1;:::i;:::-;24188:39:::0;-1:-1:-1;24238:16:0::1;24255:15;24269:1;24255:13:::0;:15:::1;:::i;:::-;24238:32:::0;-1:-1:-1;24281:19:0::1;24301:22;24238:32:::0;24301:13;:22:::1;:::i;:::-;24281:42:::0;-1:-1:-1;24341:22:0::1;24281:42:::0;24341:10;:22:::1;:::i;:::-;24334:29:::0;-1:-1:-1;24389:21:0::1;24421:25;24334:29:::0;24421:17:::1;:25::i;:::-;24457:14;24472:28;24494:6:::0;24472:21:::1;:28;:::i;:::-;24457:43:::0;-1:-1:-1;24511:13:0::1;24546:6:::0;24526:18:::1;24533:11:::0;24457:43;24526:18:::1;:::i;:::-;24525:27;;;;:::i;:::-;24511:41;;24563:29;24577:8;24586:5;24563:13;:29::i;:::-;24603:20;24624:28;24646:6:::0;24624:21:::1;:28;:::i;:::-;24603:49;;24663:28;24678:12;24663:14;:28::i;:::-;-1:-1:-1::0;;13931:6:0;:14;;-1:-1:-1;;;;13931:14:0;;;-1:-1:-1;;;;;;;23970:729:0:o;22262:344::-;-1:-1:-1;;;;;22360:20:0;;;;;;:12;:20;;;;;;;;22359:21;22351:30;;;;;;22410:13;;22400:6;:23;;22392:32;;;;;;-1:-1:-1;;;;;22439:20:0;;;;;;:12;:20;;;;;;;;22435:101;;22489:13;;22503:4;;22482:20;;:6;:20;:::i;22615:276::-;22737:4;22725:11;;22716:6;:20;;;;:::i;:::-;:25;;;;:::i;:::-;22705:8;:36;;;22756:12;22752:132;;22771:51;22789:6;22796:9;22806:6;22813:8;;22771:17;:51::i;22752:132::-;22840:42;22858:6;22865:9;22875:6;22840:17;:42::i;23172:464::-;23285:17;23312:8;;23305:6;:15;;;;:::i;:::-;-1:-1:-1;;;;;23353:17:0;;;;;;:9;:17;;;;;;23285:35;;-1:-1:-1;23331:47:0;;23346:6;;23353:24;;23371:6;;23353:24;:::i;23331:47::-;23412:4;23418:24;;;;:9;:24;;;;;;23389:64;;23412:4;23418:34;;23443:9;;23418:34;:::i;23389:64::-;-1:-1:-1;;;;;23489:20:0;;;;;;:9;:20;;;;;;23464:56;;23479:9;;23489:30;;23510:9;;23489:30;:::i;23464:56::-;23552:9;-1:-1:-1;;;;;23536:36:0;23545:6;-1:-1:-1;;;;;23536:36:0;;23562:9;23536:36;;;;1915:25:1;;1903:2;1888:18;;1769:177;23536:36:0;;;;;;;;23588:40;;1915:25:1;;;23612:4:0;;-1:-1:-1;;;;;23588:40:0;;;;;1903:2:1;1888:18;23588:40:0;;;;;;;23274:362;23172:464;;;;:::o;25657:369::-;25741:16;;;25755:1;25741:16;;;;;;;;25719:21;;25741:16;;;;;;;;;;-1:-1:-1;25741:16:0;25719:38;;25786:4;25768;25773:1;25768:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;25768:23:0;;;:7;;;;;;;;;;:23;;;;25812:6;;:13;;;-1:-1:-1;;;25812:13:0;;;;:6;;;;;:11;;:13;;;;;25768:7;;25812:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25802:4;25807:1;25802:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;25802:23:0;;;:7;;;;;;;;;:23;25836:6;;:182;;-1:-1:-1;;;25836:182:0;;:6;;;:57;;:182;;25908:6;;25836;;25945:4;;25972;;25992:15;;25836:182;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26035:341;26117:9;:14;;-1:-1:-1;;;;26117:14:0;-1:-1:-1;;;26117:14:0;;;26142:6;;26284:17;;26142:200;;-1:-1:-1;;;26142:200:0;;26205:4;26142:200;;;14528:34:1;14578:18;;;14571:34;;;-1:-1:-1;14621:18:1;;;14614:34;;;14664:18;;;14657:34;-1:-1:-1;;;;;26284:17:0;;;14707:19:1;;;14700:44;26316:15:0;14760:19:1;;;14753:35;26142:6:0;;;:22;;26172:9;;14462:19:1;;26142:200:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;26353:9:0;:15;;-1:-1:-1;;;;26353:15:0;;;-1:-1:-1;;;26035:341:0:o;24708:940::-;24819:20;;24797:19;;24773:20;;24797:42;;;:::i;:::-;24897:20;;24875:19;;24773:67;;-1:-1:-1;24851:20:0;;24875:42;;24897:20;24875:42;:::i;:::-;24851:67;-1:-1:-1;24929:16:0;24949:27;24851:67;24949:12;:27;:::i;:::-;24929:48;-1:-1:-1;24991:26:0;24929:48;25020:29;25036:12;25020;:29;:::i;:::-;:42;;;;:::i;:::-;24991:71;-1:-1:-1;25073:26:0;25135:8;25102:29;25118:12;25102;:29;:::i;:::-;:42;;;;:::i;:::-;25073:71;-1:-1:-1;25161:22:0;;25158:235;;25254:17;;25246:74;;25196:21;;-1:-1:-1;;;;;25254:17:0;;25310:5;;25285:18;;25196:21;25246:74;25196:21;25246:74;25285:18;25254:17;25310:5;25246:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25195:125;;;25339:16;25331:59;;;;-1:-1:-1;;;25331:59:0;;15522:2:1;25331:59:0;;;15504:21:1;15561:2;15541:18;;;15534:30;15600:32;15580:18;;;15573:60;15650:18;;25331:59:0;15320:354:1;25331:59:0;25184:209;25158:235;25409:22;;25406:235;;25502:17;;25494:74;;25444:21;;-1:-1:-1;;;;;25502:17:0;;25558:5;;25533:18;;25444:21;25494:74;25444:21;25494:74;25533:18;25502:17;25558:5;25494:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25443:125;;;25587:16;25579:59;;;;-1:-1:-1;;;25579:59:0;;15522:2:1;25579:59:0;;;15504:21:1;15561:2;15541:18;;;15534:30;15600:32;15580:18;;;15573:60;15650:18;;25579:59:0;15320:354:1;25579:59:0;25432:209;24762:886;;;;;24708:940;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;671:70;616:131;:::o;752:315::-;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1264:247::-;1323:6;1376:2;1364:9;1355:7;1351:23;1347:32;1344:52;;;1392:1;1389;1382:12;1344:52;1431:9;1418:23;1450:31;1475:5;1450:31;:::i;:::-;1500:5;1264:247;-1:-1:-1;;;1264:247:1:o;1516:248::-;1584:6;1592;1645:2;1633:9;1624:7;1620:23;1616:32;1613:52;;;1661:1;1658;1651:12;1613:52;-1:-1:-1;;1684:23:1;;;1754:2;1739:18;;;1726:32;;-1:-1:-1;1516:248:1:o;1951:461::-;2004:3;2042:5;2036:12;2069:6;2064:3;2057:19;2095:4;2124:2;2119:3;2115:12;2108:19;;2161:2;2154:5;2150:14;2182:1;2192:195;2206:6;2203:1;2200:13;2192:195;;;2271:13;;-1:-1:-1;;;;;2267:39:1;2255:52;;2327:12;;;;2362:15;;;;2303:1;2221:9;2192:195;;;-1:-1:-1;2403:3:1;;1951:461;-1:-1:-1;;;;;1951:461:1:o;2417:261::-;2596:2;2585:9;2578:21;2559:4;2616:56;2668:2;2657:9;2653:18;2645:6;2616:56;:::i;2683:456::-;2760:6;2768;2776;2829:2;2817:9;2808:7;2804:23;2800:32;2797:52;;;2845:1;2842;2835:12;2797:52;2884:9;2871:23;2903:31;2928:5;2903:31;:::i;:::-;2953:5;-1:-1:-1;3010:2:1;2995:18;;2982:32;3023:33;2982:32;3023:33;:::i;:::-;2683:456;;3075:7;;-1:-1:-1;;;3129:2:1;3114:18;;;;3101:32;;2683:456::o;3937:316::-;4014:6;4022;4030;4083:2;4071:9;4062:7;4058:23;4054:32;4051:52;;;4099:1;4096;4089:12;4051:52;-1:-1:-1;;4122:23:1;;;4192:2;4177:18;;4164:32;;-1:-1:-1;4243:2:1;4228:18;;;4215:32;;3937:316;-1:-1:-1;3937:316:1:o;4258:180::-;4317:6;4370:2;4358:9;4349:7;4345:23;4341:32;4338:52;;;4386:1;4383;4376:12;4338:52;-1:-1:-1;4409:23:1;;4258:180;-1:-1:-1;4258:180:1:o;4443:160::-;4508:20;;4564:13;;4557:21;4547:32;;4537:60;;4593:1;4590;4583:12;4537:60;4443:160;;;:::o;4608:180::-;4664:6;4717:2;4705:9;4696:7;4692:23;4688:32;4685:52;;;4733:1;4730;4723:12;4685:52;4756:26;4772:9;4756:26;:::i;4793:315::-;4858:6;4866;4919:2;4907:9;4898:7;4894:23;4890:32;4887:52;;;4935:1;4932;4925:12;4887:52;4974:9;4961:23;4993:31;5018:5;4993:31;:::i;:::-;5043:5;-1:-1:-1;5067:35:1;5098:2;5083:18;;5067:35;:::i;:::-;5057:45;;4793:315;;;;;:::o;5113:248::-;5178:6;5186;5239:2;5227:9;5218:7;5214:23;5210:32;5207:52;;;5255:1;5252;5245:12;5207:52;5278:26;5294:9;5278:26;:::i;5366:127::-;5427:10;5422:3;5418:20;5415:1;5408:31;5458:4;5455:1;5448:15;5482:4;5479:1;5472:15;5498:275;5569:2;5563:9;5634:2;5615:13;;-1:-1:-1;;5611:27:1;5599:40;;5669:18;5654:34;;5690:22;;;5651:62;5648:88;;;5716:18;;:::i;:::-;5752:2;5745:22;5498:275;;-1:-1:-1;5498:275:1:o;5778:183::-;5838:4;5871:18;5863:6;5860:30;5857:56;;;5893:18;;:::i;:::-;-1:-1:-1;5938:1:1;5934:14;5950:4;5930:25;;5778:183::o;5966:662::-;6020:5;6073:3;6066:4;6058:6;6054:17;6050:27;6040:55;;6091:1;6088;6081:12;6040:55;6127:6;6114:20;6153:4;6177:60;6193:43;6233:2;6193:43;:::i;:::-;6177:60;:::i;:::-;6271:15;;;6357:1;6353:10;;;;6341:23;;6337:32;;;6302:12;;;;6381:15;;;6378:35;;;6409:1;6406;6399:12;6378:35;6445:2;6437:6;6433:15;6457:142;6473:6;6468:3;6465:15;6457:142;;;6539:17;;6527:30;;6577:12;;;;6490;;6457:142;;;-1:-1:-1;6617:5:1;5966:662;-1:-1:-1;;;;;;5966:662:1:o;6633:1215::-;6751:6;6759;6812:2;6800:9;6791:7;6787:23;6783:32;6780:52;;;6828:1;6825;6818:12;6780:52;6868:9;6855:23;6897:18;6938:2;6930:6;6927:14;6924:34;;;6954:1;6951;6944:12;6924:34;6992:6;6981:9;6977:22;6967:32;;7037:7;7030:4;7026:2;7022:13;7018:27;7008:55;;7059:1;7056;7049:12;7008:55;7095:2;7082:16;7117:4;7141:60;7157:43;7197:2;7157:43;:::i;7141:60::-;7235:15;;;7317:1;7313:10;;;;7305:19;;7301:28;;;7266:12;;;;7341:19;;;7338:39;;;7373:1;7370;7363:12;7338:39;7397:11;;;;7417:217;7433:6;7428:3;7425:15;7417:217;;;7513:3;7500:17;7530:31;7555:5;7530:31;:::i;:::-;7574:18;;7450:12;;;;7612;;;;7417:217;;;7653:5;-1:-1:-1;;7696:18:1;;7683:32;;-1:-1:-1;;7727:16:1;;;7724:36;;;7756:1;7753;7746:12;7724:36;;7779:63;7834:7;7823:8;7812:9;7808:24;7779:63;:::i;:::-;7769:73;;;6633:1215;;;;;:::o;7853:388::-;7921:6;7929;7982:2;7970:9;7961:7;7957:23;7953:32;7950:52;;;7998:1;7995;7988:12;7950:52;8037:9;8024:23;8056:31;8081:5;8056:31;:::i;:::-;8106:5;-1:-1:-1;8163:2:1;8148:18;;8135:32;8176:33;8135:32;8176:33;:::i;:::-;8228:7;8218:17;;;7853:388;;;;;:::o;8472:127::-;8533:10;8528:3;8524:20;8521:1;8514:31;8564:4;8561:1;8554:15;8588:4;8585:1;8578:15;8604:125;8644:4;8672:1;8669;8666:8;8663:34;;;8677:18;;:::i;:::-;-1:-1:-1;8714:9:1;;8604:125::o;8734:346::-;8936:2;8918:21;;;8975:2;8955:18;;;8948:30;-1:-1:-1;;;9009:2:1;8994:18;;8987:52;9071:2;9056:18;;8734:346::o;9085:217::-;9125:1;9151;9141:132;;9195:10;9190:3;9186:20;9183:1;9176:31;9230:4;9227:1;9220:15;9258:4;9255:1;9248:15;9141:132;-1:-1:-1;9287:9:1;;9085:217::o;9307:168::-;9347:7;9413:1;9409;9405:6;9401:14;9398:1;9395:21;9390:1;9383:9;9376:17;9372:45;9369:71;;;9420:18;;:::i;:::-;-1:-1:-1;9460:9:1;;9307:168::o;9480:128::-;9520:3;9551:1;9547:6;9544:1;9541:13;9538:39;;;9557:18;;:::i;:::-;-1:-1:-1;9593:9:1;;9480:128::o;10036:127::-;10097:10;10092:3;10088:20;10085:1;10078:31;10128:4;10125:1;10118:15;10152:4;10149:1;10142:15;10168:422;10257:1;10300:5;10257:1;10314:270;10335:7;10325:8;10322:21;10314:270;;;10394:4;10390:1;10386:6;10382:17;10376:4;10373:27;10370:53;;;10403:18;;:::i;:::-;10453:7;10443:8;10439:22;10436:55;;;10473:16;;;;10436:55;10552:22;;;;10512:15;;;;10314:270;;;10318:3;10168:422;;;;;:::o;10595:806::-;10644:5;10674:8;10664:80;;-1:-1:-1;10715:1:1;10729:5;;10664:80;10763:4;10753:76;;-1:-1:-1;10800:1:1;10814:5;;10753:76;10845:4;10863:1;10858:59;;;;10931:1;10926:130;;;;10838:218;;10858:59;10888:1;10879:10;;10902:5;;;10926:130;10963:3;10953:8;10950:17;10947:43;;;10970:18;;:::i;:::-;-1:-1:-1;;11026:1:1;11012:16;;11041:5;;10838:218;;11140:2;11130:8;11127:16;11121:3;11115:4;11112:13;11108:36;11102:2;11092:8;11089:16;11084:2;11078:4;11075:12;11071:35;11068:77;11065:159;;;-1:-1:-1;11177:19:1;;;11209:5;;11065:159;11256:34;11281:8;11275:4;11256:34;:::i;:::-;11326:6;11322:1;11318:6;11314:19;11305:7;11302:32;11299:58;;;11337:18;;:::i;:::-;11375:20;;10595:806;-1:-1:-1;;;10595:806:1:o;11406:140::-;11464:5;11493:47;11534:4;11524:8;11520:19;11514:4;11493:47;:::i;11551:135::-;11590:3;-1:-1:-1;;11611:17:1;;11608:43;;;11631:18;;:::i;:::-;-1:-1:-1;11678:1:1;11667:13;;11551:135::o;11691:184::-;11761:6;11814:2;11802:9;11793:7;11789:23;11785:32;11782:52;;;11830:1;11827;11820:12;11782:52;-1:-1:-1;11853:16:1;;11691:184;-1:-1:-1;11691:184:1:o;13344:251::-;13414:6;13467:2;13455:9;13446:7;13442:23;13438:32;13435:52;;;13483:1;13480;13473:12;13435:52;13515:9;13509:16;13534:31;13559:5;13534:31;:::i;13600:582::-;13899:6;13888:9;13881:25;13942:6;13937:2;13926:9;13922:18;13915:34;13985:3;13980:2;13969:9;13965:18;13958:31;13862:4;14006:57;14058:3;14047:9;14043:19;14035:6;14006:57;:::i;:::-;-1:-1:-1;;;;;14099:32:1;;;;14094:2;14079:18;;14072:60;-1:-1:-1;14163:3:1;14148:19;14141:35;13998:65;13600:582;-1:-1:-1;;;13600:582:1:o;14799:306::-;14887:6;14895;14903;14956:2;14944:9;14935:7;14931:23;14927:32;14924:52;;;14972:1;14969;14962:12;14924:52;15001:9;14995:16;14985:26;;15051:2;15040:9;15036:18;15030:25;15020:35;;15095:2;15084:9;15080:18;15074:25;15064:35;;14799:306;;;;;:::o

Swarm Source

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