ETH Price: $2,642.32 (-2.97%)

Token

AI LAB (AiLab)
 

Overview

Max Total Supply

1,000,000,000 AiLab

Holders

17

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
16,905,679.992402899833170403 AiLab

Value
$0.00
0xc4729040848f591c45062a6d24ccc8387a2ba538
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:
AILAB

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/** \
https://t.me/AILabETH
*/

//Ai Lab is one-in-all tools for daily trades. 
//Quick analyze of ETH token
//Safe Check 
//$AILAB ecosystem

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.17;


interface IERC20 {
    
    function totalSupply() external view returns (uint256);
    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);
}

library SafeMath {
    

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }
    
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }
    
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }
    
}


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

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

library Address {
    
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }
    
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }
    
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
    
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }
    
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }
    
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }


    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }
    
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                 assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

abstract contract Ownable is Context {
    address private _owner;
    mapping (address => bool) internal authorizations;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        _owner = 0x3E8a5Ee5eCD903f381F65e56FF6d2dee52e510A8;
        authorizations[_owner] = true;
        emit OwnershipTransferred(address(0), _owner);
    }

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

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

    modifier authorized() {
        require(isAuthorized(_msgSender()), "!AUTHORIZED"); _;
    }

    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

        function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

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

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

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);
    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    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 removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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


contract AILAB is Context, IERC20, Ownable { 
    using SafeMath for uint256;
    using Address for address;


    // Tracking status of wallets
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public _isExcludedFromFee; 

    // Blacklist: If 'noBlackList' is true wallets on this list can not buy - used for known bots
    mapping (address => bool) public _isBlacklisted;

    // Set contract so that blacklisted wallets cannot buy (default is false)
    bool public noBlackList;
   


    address payable private Wallet_Dev = payable(0x3E8a5Ee5eCD903f381F65e56FF6d2dee52e510A8);
    address payable private Wallet_Burn = payable(0x000000000000000000000000000000000000dEaD); 
    address payable private Wallet_zero = payable(0x0000000000000000000000000000000000000000); 


    string private _name = "AI LAB"; 
    string private _symbol = "AiLab";  
    uint8 private _decimals = 18;
    uint256 private _tTotal = 1000000000 * 10**18;
    uint256 private _tFeeTotal;

 
    uint8 private txCount = 0;
    uint8 private swapTrigger = 3; 

   
    uint256 private maxPossibleFee = 100; 


    uint256 private _TotalFee = 9;
    uint256 public _buyFee = 4;
    uint256 public _sellFee = 5;


    uint256 private _previousTotalFee = _TotalFee; 
    uint256 private _previousBuyFee = _buyFee; 
    uint256 private _previousSellFee = _sellFee; 

   
    uint256 public _maxWalletToken = _tTotal.mul(100).div(100);
    uint256 private _previousMaxWalletToken = _maxWalletToken;


    // Maximum transaction amount (% at launch)
    uint256 public _maxTxAmount = _tTotal.mul(100).div(100); 
    uint256 private _previousMaxTxAmount = _maxTxAmount;

    
                                     
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    bool public inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
        
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    
    
    constructor () {
        _tOwned[owner()] = _tTotal;
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        
        
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[Wallet_Dev] = true;
        
        emit Transfer(address(0), owner(), _tTotal);
    }



    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _tOwned[account];
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }


    function excludeFromFee(address account) public authorized {
        _isExcludedFromFee[account] = true;
    }
    
    
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }



    function _set_Fees(uint256 Buy_Fee, uint256 Sell_Fee) external authorized() {

        require((Buy_Fee + Sell_Fee) <= maxPossibleFee, "Fee is too high!");
        _sellFee = Sell_Fee;
        _buyFee = Buy_Fee;

    }


    function Wallet_Update_Dev(address payable wallet) public authorized() {
        Wallet_Dev = wallet;
        _isExcludedFromFee[Wallet_Dev] = true;
    }

    function set_Swap_And_Liquify_Enabled(bool true_or_false) public authorized() {
        swapAndLiquifyEnabled = true_or_false;
        emit SwapAndLiquifyEnabledUpdated(true_or_false);
    }

    function set_Number_Of_Transactions_Before_Liquify_Trigger(uint8 number_of_transactions) public onlyOwner {
        swapTrigger = number_of_transactions;
    }
  
    receive() external payable {}


    function blacklist_Add_Wallets(address[] calldata addresses) external onlyOwner {
       
        uint256 startGas;
        uint256 gasUsed;

    for (uint256 i; i < addresses.length; ++i) {
        if(gasUsed < gasleft()) {
        startGas = gasleft();
        if(!_isBlacklisted[addresses[i]]){
        _isBlacklisted[addresses[i]] = true;}
        gasUsed = startGas - gasleft();
    }
    }
    }


    function blacklist_Remove_Wallets(address[] calldata addresses) external onlyOwner {
       
        uint256 startGas;
        uint256 gasUsed;

    for (uint256 i; i < addresses.length; ++i) {
        if(gasUsed < gasleft()) {
        startGas = gasleft();
        if(_isBlacklisted[addresses[i]]){
        _isBlacklisted[addresses[i]] = false;}
        gasUsed = startGas - gasleft();
    }
    }
    }


    function blacklist_Switch(bool true_or_false) public onlyOwner {
        noBlackList = true_or_false;
    } 

  

    bool public noFeeToTransfer = true;

  
    function set_Transfers_Without_Fees(bool true_or_false) external authorized {
        noFeeToTransfer = true_or_false;
    }

  
    function set_Max_Transaction_Percent(uint256 maxTxPercent_x100) external authorized() {
        _maxTxAmount = _tTotal*maxTxPercent_x100/100;
    }    
  
     function set_Max_Wallet_Percent(uint256 maxWallPercent_x100) external authorized() {
        _maxWalletToken = _tTotal*maxWallPercent_x100/100;
    }


    function removeAllFee() private {
        if(_TotalFee == 0 && _buyFee == 0 && _sellFee == 0) return;


        _previousBuyFee = _buyFee; 
        _previousSellFee = _sellFee; 
        _previousTotalFee = _TotalFee;
        _buyFee = 0;
        _sellFee = 0;
        _TotalFee = 0;

    }
 
    function restoreAllFee() private {
    
    _TotalFee = _previousTotalFee;
    _buyFee = _previousBuyFee; 
    _sellFee = _previousSellFee; 

    }


    function _approve(address owner, address spender, uint256 amount) private {

        require(owner != address(0) && spender != address(0), "ERR: zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);

    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        

        if (to != owner() &&
            to != Wallet_Dev &&
            to != address(this) &&
            to != uniswapV2Pair &&
            to != Wallet_Burn &&
            from != owner()){
            uint256 heldTokens = balanceOf(to);
            require((heldTokens + amount) <= _maxWalletToken,"You are trying to buy too many tokens. You have reached the limit for one wallet.");}


        // Limit the maximum number of tokens that can be bought or sold in one transaction
        if (from != owner() && to != owner())
            require(amount <= _maxTxAmount, "You are trying to buy more than the max transaction limit.");



       
        
        if (noBlackList){
        require(!_isBlacklisted[from] && !_isBlacklisted[to], "This address is blacklisted. Transaction reverted.");}


        require(from != address(0) && to != address(0), "ERR: Using 0 address!");
        require(amount > 0, "Token value must be higher than zero.");


        

        if(
            txCount >= swapTrigger && 
            !inSwapAndLiquify &&
            from != uniswapV2Pair &&
            swapAndLiquifyEnabled 
            )
        {  
            
            txCount = 0;
            uint256 contractTokenBalance = balanceOf(address(this));
            if(contractTokenBalance > _maxTxAmount) {contractTokenBalance = _maxTxAmount;}
            if(contractTokenBalance > 0){
            swapAndLiquify(contractTokenBalance);
        }
        }


        
        bool takeFee = true;
         
        if(_isExcludedFromFee[from] || _isExcludedFromFee[to] || (noFeeToTransfer && from != uniswapV2Pair && to != uniswapV2Pair)){
            takeFee = false;
        } else if (from == uniswapV2Pair){_TotalFee = _buyFee;} else if (to == uniswapV2Pair){_TotalFee = _sellFee;}
        
        _tokenTransfer(from,to,amount,takeFee);
    }


    function sendToWallet(address payable wallet, uint256 amount) private {
            wallet.transfer(amount);
        }


    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        
        swapTokensForBNB(contractTokenBalance);
        uint256 contractBNB = address(this).balance;
        sendToWallet(Wallet_Dev,contractBNB);
    }


    function process_Tokens_Now (uint256 percent_Of_Tokens_To_Process) public onlyOwner {
        // Do not trigger if already in swap
        require(!inSwapAndLiquify, "Currently processing, try later."); 
        if (percent_Of_Tokens_To_Process > 100){percent_Of_Tokens_To_Process == 100;}
        uint256 tokensOnContract = balanceOf(address(this));
        uint256 sendTokens = tokensOnContract*percent_Of_Tokens_To_Process/100;
        swapAndLiquify(sendTokens);
    }


    function swapTokensForBNB(uint256 tokenAmount) private {

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, 
            path,
            address(this),
            block.timestamp
        );
    }

    function remove_Random_Tokens(address random_Token_Address, address send_to_wallet, uint256 number_of_tokens) public onlyOwner returns(bool _sent){
        require(random_Token_Address != address(this), "Can not remove native token");
        uint256 randomBalance = IERC20(random_Token_Address).balanceOf(address(this));
        if (number_of_tokens > randomBalance){number_of_tokens = randomBalance;}
        _sent = IERC20(random_Token_Address).transfer(send_to_wallet, number_of_tokens);
    }


    function set_New_Router_and_Make_Pair(address newRouter) public onlyOwner() {
        IUniswapV2Router02 _newPCSRouter = IUniswapV2Router02(newRouter);
        uniswapV2Pair = IUniswapV2Factory(_newPCSRouter.factory()).createPair(address(this), _newPCSRouter.WETH());
        uniswapV2Router = _newPCSRouter;
    }
      
    function set_New_Router_Address(address newRouter) public onlyOwner() {
        IUniswapV2Router02 _newPCSRouter = IUniswapV2Router02(newRouter);
        uniswapV2Router = _newPCSRouter;
    }
    
    function set_New_Pair_Address(address newPair) public onlyOwner() {
        uniswapV2Pair = newPair;
    }

    function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
        
        
        if(!takeFee){
            removeAllFee();
            } else {
                txCount++;
            }
            _transferTokens(sender, recipient, amount);
        
        if(!takeFee)
            restoreAllFee();
    }

    function _transferTokens(address sender, address recipient, uint256 tAmount) private {
        (uint256 tTransferAmount, uint256 tDev) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _tOwned[address(this)] = _tOwned[address(this)].add(tDev);   
        emit Transfer(sender, recipient, tTransferAmount);
    }


    function _getValues(uint256 tAmount) private view returns (uint256, uint256) {
        uint256 tDev = tAmount*_TotalFee/100;
        uint256 tTransferAmount = tAmount.sub(tDev);
        return (tTransferAmount, tDev);
    }

}

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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"Wallet_Update_Dev","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"Buy_Fee","type":"uint256"},{"internalType":"uint256","name":"Sell_Fee","type":"uint256"}],"name":"_set_Fees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"blacklist_Add_Wallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"blacklist_Remove_Wallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"true_or_false","type":"bool"}],"name":"blacklist_Switch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"noBlackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"noFeeToTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent_Of_Tokens_To_Process","type":"uint256"}],"name":"process_Tokens_Now","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"random_Token_Address","type":"address"},{"internalType":"address","name":"send_to_wallet","type":"address"},{"internalType":"uint256","name":"number_of_tokens","type":"uint256"}],"name":"remove_Random_Tokens","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent_x100","type":"uint256"}],"name":"set_Max_Transaction_Percent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_x100","type":"uint256"}],"name":"set_Max_Wallet_Percent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPair","type":"address"}],"name":"set_New_Pair_Address","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"set_New_Router_Address","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"set_New_Router_and_Make_Pair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"number_of_transactions","type":"uint8"}],"name":"set_Number_Of_Transactions_Before_Liquify_Trigger","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"true_or_false","type":"bool"}],"name":"set_Swap_And_Liquify_Enabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"true_or_false","type":"bool"}],"name":"set_Transfers_Without_Fees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60068054610100600160a81b031916743e8a5ee5ecd903f381f65e56ff6d2dee52e510a8001781556007805461dead6001600160a01b03199182161790915560088054909116905560c060405260809081526520a4902620a160d11b60a0526009906200006d908262000584565b5060408051808201909152600581526420b4a630b160d91b6020820152600a9062000099908262000584565b50600b8054601260ff1990911681179091556b033b2e3c9fd0803ce8000000600c819055600e805461ffff19166103001790556064600f8190556009601081905560046011819055600594859055601391909155601455601592909255620001289190620001149082620004ba602090811b620015b917901c565b620004d160201b620015cc1790919060201c565b601655601654601755620001546064620001146064600c54620004ba60201b620015b91790919060201c565b6018819055601955601b805461ffff60a81b191661010160a81b1790553480156200017e57600080fd5b50600080546001600160a01b031916733e8a5ee5ecd903f381f65e56ff6d2dee52e510a89081178255808252600160208190527fde9cec4e4ceb201b6251076264afab9c7abdde6a580eb95e9df14f5a6b352086805460ff191690911790556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600c5460026000620002226000546001600160a01b031690565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200029e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c4919062000650565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000312573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000338919062000650565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000386573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ac919062000650565b601b80546001600160a01b03199081166001600160a01b0393841617909155601a8054909116918316919091179055600160046000620003f46000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260049093528183208054851660019081179091556006546101009004909116835291208054909216179055620004636000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c54604051620004ab91815260200190565b60405180910390a350620006cb565b6000620004c8828462000682565b90505b92915050565b6000620004c88284620006a8565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200050a57607f821691505b6020821081036200052b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200057f57600081815260208120601f850160051c810160208610156200055a5750805b601f850160051c820191505b818110156200057b5782815560010162000566565b5050505b505050565b81516001600160401b03811115620005a057620005a0620004df565b620005b881620005b18454620004f5565b8462000531565b602080601f831160018114620005f05760008415620005d75750858301515b600019600386901b1c1916600185901b1785556200057b565b600085815260208120601f198616915b82811015620006215788860151825594840194600190910190840162000600565b5085821015620006405787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200066357600080fd5b81516001600160a01b03811681146200067b57600080fd5b9392505050565b8082028115828204841417620004cb57634e487b7160e01b600052601160045260246000fd5b600082620006c657634e487b7160e01b600052601260045260246000fd5b500490565b61243380620006db6000396000f3fe6080604052600436106102765760003560e01c8063715018a61161014f578063a514a07d116100c1578063dd62ed3e1161007a578063dd62ed3e1461078b578063ddbf5266146107d1578063ea2f0b37146107f1578063f2fde38b14610811578063f7739b5f14610831578063fe9fbb801461085157600080fd5b8063a514a07d146106cb578063a9059cbb146106eb578063a9de975d1461070b578063b6a5d7de1461072b578063c1f619081461074b578063d785d5be1461076b57600080fd5b80638824e16e116101135780638824e16e146106185780638da5cb5b146106385780638ec0e9a114610656578063942201841461067657806395d89b4114610696578063a457c2d7146106ab57600080fd5b8063715018a614610587578063768dc7101461059c57806378109e54146105cc5780637caefa89146105e25780637d1db4a51461060257600080fd5b80633343ab83116101e857806349bd5a5e116101ac57806349bd5a5e146104c05780634a74bb02146104e0578063590f897e1461050157806367cbd84c146105175780636f0941f61461053757806370a082311461055157600080fd5b80633343ab831461042a57806336b1a1bc1461044a578063395093511461046a57806340b9a54b1461048a578063437823ec146104a057600080fd5b806318160ddd1161023a57806318160ddd146103585780631cdd3be314610377578063220f6696146103a757806323b872dd146103c85780632e39c6c6146103e8578063313ce5671461040857600080fd5b806306fdde0314610282578063095ea7b3146102ad5780631282a0a0146102dd57806313fad07a146102ff5780631694505e1461032057600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b5061029761088a565b6040516102a49190611f6e565b60405180910390f35b3480156102b957600080fd5b506102cd6102c8366004611fd4565b61091c565b60405190151581526020016102a4565b3480156102e957600080fd5b506102fd6102f8366004612000565b610933565b005b34801561030b57600080fd5b50601b546102cd90600160b01b900460ff1681565b34801561032c57600080fd5b50601a54610340906001600160a01b031681565b6040516001600160a01b0390911681526020016102a4565b34801561036457600080fd5b50600c545b6040519081526020016102a4565b34801561038357600080fd5b506102cd610392366004612000565b60056020526000908152604090205460ff1681565b3480156103b357600080fd5b50601b546102cd90600160a01b900460ff1681565b3480156103d457600080fd5b506102cd6103e336600461201d565b610ae1565b3480156103f457600080fd5b506102fd61040336600461205e565b610b4a565b34801561041457600080fd5b50600b5460405160ff90911681526020016102a4565b34801561043657600080fd5b506102cd61044536600461201d565b610b8f565b34801561045657600080fd5b506102fd610465366004612000565b610d07565b34801561047657600080fd5b506102cd610485366004611fd4565b610d53565b34801561049657600080fd5b5061036960115481565b3480156104ac57600080fd5b506102fd6104bb366004612000565b610d89565b3480156104cc57600080fd5b50601b54610340906001600160a01b031681565b3480156104ec57600080fd5b50601b546102cd90600160a81b900460ff1681565b34801561050d57600080fd5b5061036960125481565b34801561052357600080fd5b506102fd610532366004612077565b610dd2565b34801561054357600080fd5b506006546102cd9060ff1681565b34801561055d57600080fd5b5061036961056c366004612000565b6001600160a01b031660009081526002602052604090205490565b34801561059357600080fd5b506102fd610e4d565b3480156105a857600080fd5b506102cd6105b7366004612000565b60046020526000908152604090205460ff1681565b3480156105d857600080fd5b5061036960165481565b3480156105ee57600080fd5b506102fd6105fd366004612099565b610ec1565b34801561060e57600080fd5b5061036960185481565b34801561062457600080fd5b506102fd610633366004612000565b610f07565b34801561064457600080fd5b506000546001600160a01b0316610340565b34801561066257600080fd5b506102fd6106713660046120bc565b610f71565b34801561068257600080fd5b506102fd61069136600461205e565b61107c565b3480156106a257600080fd5b506102976110c1565b3480156106b757600080fd5b506102cd6106c6366004611fd4565b6110d0565b3480156106d757600080fd5b506102fd6106e636600461213f565b61111f565b3480156106f757600080fd5b506102cd610706366004611fd4565b611162565b34801561071757600080fd5b506102fd6107263660046120bc565b61116f565b34801561073757600080fd5b506102fd610746366004612000565b611272565b34801561075757600080fd5b506102fd61076636600461213f565b6112c3565b34801561077757600080fd5b506102fd610786366004612000565b611300565b34801561079757600080fd5b506103696107a636600461215c565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156107dd57600080fd5b506102fd6107ec36600461205e565b61134c565b3480156107fd57600080fd5b506102fd61080c366004612000565b611407565b34801561081d57600080fd5b506102fd61082c366004612000565b611452565b34801561083d57600080fd5b506102fd61084c36600461213f565b61153c565b34801561085d57600080fd5b506102cd61086c366004612000565b6001600160a01b031660009081526001602052604090205460ff1690565b60606009805461089990612195565b80601f01602080910402602001604051908101604052809291908181526020018280546108c590612195565b80156109125780601f106108e757610100808354040283529160200191610912565b820191906000526020600020905b8154815290600101906020018083116108f557829003601f168201915b5050505050905090565b60006109293384846115d8565b5060015b92915050565b6000546001600160a01b031633146109665760405162461bcd60e51b815260040161095d906121cf565b60405180910390fd5b6000819050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cd9190612204565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3e9190612204565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaf9190612204565b601b80546001600160a01b039283166001600160a01b031991821617909155601a805493909216921691909117905550565b6000610aee848484611699565b610b408433610b3b856040518060600160405280602881526020016123b1602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611b81565b6115d8565b5060019392505050565b610b533361086c565b610b6f5760405162461bcd60e51b815260040161095d90612221565b606481600c54610b7f919061225c565b610b899190612273565b60185550565b600080546001600160a01b03163314610bba5760405162461bcd60e51b815260040161095d906121cf565b306001600160a01b03851603610c125760405162461bcd60e51b815260206004820152601b60248201527f43616e206e6f742072656d6f7665206e617469766520746f6b656e0000000000604482015260640161095d565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015610c59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7d9190612295565b905080831115610c8b578092505b60405163a9059cbb60e01b81526001600160a01b0385811660048301526024820185905286169063a9059cbb906044016020604051808303816000875af1158015610cda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfe91906122ae565b95945050505050565b6000546001600160a01b03163314610d315760405162461bcd60e51b815260040161095d906121cf565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610929918590610b3b9086611bad565b610d923361086c565b610dae5760405162461bcd60e51b815260040161095d90612221565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b610ddb3361086c565b610df75760405162461bcd60e51b815260040161095d90612221565b600f54610e0482846122cb565b1115610e455760405162461bcd60e51b815260206004820152601060248201526f46656520697320746f6f20686967682160801b604482015260640161095d565b601255601155565b6000546001600160a01b03163314610e775760405162461bcd60e51b815260040161095d906121cf565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610eeb5760405162461bcd60e51b815260040161095d906121cf565b600e805460ff9092166101000261ff0019909216919091179055565b610f103361086c565b610f2c5760405162461bcd60e51b815260040161095d90612221565b60068054610100600160a81b0319166101006001600160a01b03938416810291909117918290559004166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b03163314610f9b5760405162461bcd60e51b815260040161095d906121cf565b60008060005b83811015611075575a821015611065575a925060056000868684818110610fca57610fca6122de565b9050602002016020810190610fdf9190612000565b6001600160a01b0316815260208101919091526040016000205460ff161561105757600060056000878785818110611019576110196122de565b905060200201602081019061102e9190612000565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b5a61106290846122f4565b91505b61106e81612307565b9050610fa1565b5050505050565b6110853361086c565b6110a15760405162461bcd60e51b815260040161095d90612221565b606481600c546110b1919061225c565b6110bb9190612273565b60165550565b6060600a805461089990612195565b60006109293384610b3b856040518060600160405280602581526020016123d9602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190611b81565b6111283361086c565b6111445760405162461bcd60e51b815260040161095d90612221565b601b8054911515600160b01b0260ff60b01b19909216919091179055565b6000610929338484611699565b6000546001600160a01b031633146111995760405162461bcd60e51b815260040161095d906121cf565b60008060005b83811015611075575a821015611262575a9250600560008686848181106111c8576111c86122de565b90506020020160208101906111dd9190612000565b6001600160a01b0316815260208101919091526040016000205460ff1661125457600160056000878785818110611216576112166122de565b905060200201602081019061122b9190612000565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b5a61125f90846122f4565b91505b61126b81612307565b905061119f565b6000546001600160a01b0316331461129c5760405162461bcd60e51b815260040161095d906121cf565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b031633146112ed5760405162461bcd60e51b815260040161095d906121cf565b6006805460ff1916911515919091179055565b6000546001600160a01b0316331461132a5760405162461bcd60e51b815260040161095d906121cf565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146113765760405162461bcd60e51b815260040161095d906121cf565b601b54600160a01b900460ff16156113d05760405162461bcd60e51b815260206004820181905260248201527f43757272656e746c792070726f63657373696e672c20747279206c617465722e604482015260640161095d565b306000908152600260205260408120549060646113ed848461225c565b6113f79190612273565b905061140281611bb9565b505050565b6000546001600160a01b031633146114315760405162461bcd60e51b815260040161095d906121cf565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b0316331461147c5760405162461bcd60e51b815260040161095d906121cf565b6001600160a01b0381166114e15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161095d565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6115453361086c565b6115615760405162461bcd60e51b815260040161095d90612221565b601b8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906115ae90831515815260200190565b60405180910390a150565b60006115c5828461225c565b9392505050565b60006115c58284612273565b6001600160a01b038316158015906115f857506001600160a01b03821615155b6116385760405162461bcd60e51b81526020600482015260116024820152704552523a207a65726f206164647265737360781b604482015260640161095d565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000546001600160a01b038381169116148015906116ca57506006546001600160a01b038381166101009092041614155b80156116df57506001600160a01b0382163014155b80156116f95750601b546001600160a01b03838116911614155b801561171357506007546001600160a01b03838116911614155b801561172d57506000546001600160a01b03848116911614155b156117e8576001600160a01b03821660009081526002602052604090205460165461175883836122cb565b11156117e65760405162461bcd60e51b815260206004820152605160248201527f596f752061726520747279696e6720746f2062757920746f6f206d616e79207460448201527f6f6b656e732e20596f752068617665207265616368656420746865206c696d696064820152703a103337b91037b732903bb0b63632ba1760791b608482015260a40161095d565b505b6000546001600160a01b0384811691161480159061181457506000546001600160a01b03838116911614155b15611891576018548111156118915760405162461bcd60e51b815260206004820152603a60248201527f596f752061726520747279696e6720746f20627579206d6f7265207468616e2060448201527f746865206d6178207472616e73616374696f6e206c696d69742e000000000000606482015260840161095d565b60065460ff1615611945576001600160a01b03831660009081526005602052604090205460ff161580156118de57506001600160a01b03821660009081526005602052604090205460ff16155b6119455760405162461bcd60e51b815260206004820152603260248201527f54686973206164647265737320697320626c61636b6c69737465642e205472616044820152713739b0b1ba34b7b7103932bb32b93a32b21760711b606482015260840161095d565b6001600160a01b0383161580159061196557506001600160a01b03821615155b6119a95760405162461bcd60e51b81526020600482015260156024820152744552523a205573696e67203020616464726573732160581b604482015260640161095d565b60008111611a075760405162461bcd60e51b815260206004820152602560248201527f546f6b656e2076616c7565206d75737420626520686967686572207468616e206044820152643d32b9379760d91b606482015260840161095d565b600e5460ff61010082048116911610801590611a2d5750601b54600160a01b900460ff16155b8015611a475750601b546001600160a01b03848116911614155b8015611a5c5750601b54600160a81b900460ff165b15611a9b57600e805460ff1916905530600090815260026020526040902054601854811115611a8a57506018545b8015611a9957611a9981611bb9565b505b6001600160a01b03831660009081526004602052604090205460019060ff1680611add57506001600160a01b03831660009081526004602052604090205460ff165b80611b245750601b54600160b01b900460ff168015611b0a5750601b546001600160a01b03858116911614155b8015611b245750601b546001600160a01b03848116911614155b15611b3157506000611b6f565b601b546001600160a01b0390811690851603611b5257601154601055611b6f565b601b546001600160a01b0390811690841603611b6f576012546010555b611b7b84848484611c03565b50505050565b60008184841115611ba55760405162461bcd60e51b815260040161095d9190611f6e565b505050900390565b60006115c582846122cb565b601b805460ff60a01b1916600160a01b179055611bd581611c69565b6006544790611bf29061010090046001600160a01b031682611dc3565b5050601b805460ff60a01b19169055565b80611c1557611c10611df9565b611c42565b600e805460ff16906000611c2883612320565b91906101000a81548160ff021916908360ff160217905550505b611c4d848484611e3e565b80611b7b57611b7b601354601055601454601155601554601255565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611c9e57611c9e6122de565b6001600160a01b03928316602091820292909201810191909152601a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611cf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1b9190612204565b81600181518110611d2e57611d2e6122de565b6001600160a01b039283166020918202929092010152601a54611d5491309116846115d8565b601a5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611d8d90859060009086903090429060040161233f565b600060405180830381600087803b158015611da757600080fd5b505af1158015611dbb573d6000803e3d6000fd5b505050505050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611402573d6000803e3d6000fd5b601054158015611e095750601154155b8015611e155750601254155b15611e1c57565b6011805460145560128054601555601080546013556000928390559082905555565b600080611e4a83611f2a565b6001600160a01b0387166000908152600260205260409020549193509150611e729084611f62565b6001600160a01b038087166000908152600260205260408082209390935590861681522054611ea19083611bad565b6001600160a01b038516600090815260026020526040808220929092553081522054611ecd9082611bad565b3060009081526002602090815260409182902092909255518381526001600160a01b0386811692908816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050505050565b6000806000606460105485611f3f919061225c565b611f499190612273565b90506000611f578583611f62565b959194509092505050565b60006115c582846122f4565b600060208083528351808285015260005b81811015611f9b57858101830151858201604001528201611f7f565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611fd157600080fd5b50565b60008060408385031215611fe757600080fd5b8235611ff281611fbc565b946020939093013593505050565b60006020828403121561201257600080fd5b81356115c581611fbc565b60008060006060848603121561203257600080fd5b833561203d81611fbc565b9250602084013561204d81611fbc565b929592945050506040919091013590565b60006020828403121561207057600080fd5b5035919050565b6000806040838503121561208a57600080fd5b50508035926020909101359150565b6000602082840312156120ab57600080fd5b813560ff811681146115c557600080fd5b600080602083850312156120cf57600080fd5b823567ffffffffffffffff808211156120e757600080fd5b818501915085601f8301126120fb57600080fd5b81358181111561210a57600080fd5b8660208260051b850101111561211f57600080fd5b60209290920196919550909350505050565b8015158114611fd157600080fd5b60006020828403121561215157600080fd5b81356115c581612131565b6000806040838503121561216f57600080fd5b823561217a81611fbc565b9150602083013561218a81611fbc565b809150509250929050565b600181811c908216806121a957607f821691505b6020821081036121c957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561221657600080fd5b81516115c581611fbc565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761092d5761092d612246565b60008261229057634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156122a757600080fd5b5051919050565b6000602082840312156122c057600080fd5b81516115c581612131565b8082018082111561092d5761092d612246565b634e487b7160e01b600052603260045260246000fd5b8181038181111561092d5761092d612246565b60006001820161231957612319612246565b5060010190565b600060ff821660ff810361233657612336612246565b60010192915050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561238f5784516001600160a01b03168352938301939183019160010161236a565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220484bdcb9644a5d71dcada4c6dee10ee8359706db11ee9743abe8a846d83d401964736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102765760003560e01c8063715018a61161014f578063a514a07d116100c1578063dd62ed3e1161007a578063dd62ed3e1461078b578063ddbf5266146107d1578063ea2f0b37146107f1578063f2fde38b14610811578063f7739b5f14610831578063fe9fbb801461085157600080fd5b8063a514a07d146106cb578063a9059cbb146106eb578063a9de975d1461070b578063b6a5d7de1461072b578063c1f619081461074b578063d785d5be1461076b57600080fd5b80638824e16e116101135780638824e16e146106185780638da5cb5b146106385780638ec0e9a114610656578063942201841461067657806395d89b4114610696578063a457c2d7146106ab57600080fd5b8063715018a614610587578063768dc7101461059c57806378109e54146105cc5780637caefa89146105e25780637d1db4a51461060257600080fd5b80633343ab83116101e857806349bd5a5e116101ac57806349bd5a5e146104c05780634a74bb02146104e0578063590f897e1461050157806367cbd84c146105175780636f0941f61461053757806370a082311461055157600080fd5b80633343ab831461042a57806336b1a1bc1461044a578063395093511461046a57806340b9a54b1461048a578063437823ec146104a057600080fd5b806318160ddd1161023a57806318160ddd146103585780631cdd3be314610377578063220f6696146103a757806323b872dd146103c85780632e39c6c6146103e8578063313ce5671461040857600080fd5b806306fdde0314610282578063095ea7b3146102ad5780631282a0a0146102dd57806313fad07a146102ff5780631694505e1461032057600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b5061029761088a565b6040516102a49190611f6e565b60405180910390f35b3480156102b957600080fd5b506102cd6102c8366004611fd4565b61091c565b60405190151581526020016102a4565b3480156102e957600080fd5b506102fd6102f8366004612000565b610933565b005b34801561030b57600080fd5b50601b546102cd90600160b01b900460ff1681565b34801561032c57600080fd5b50601a54610340906001600160a01b031681565b6040516001600160a01b0390911681526020016102a4565b34801561036457600080fd5b50600c545b6040519081526020016102a4565b34801561038357600080fd5b506102cd610392366004612000565b60056020526000908152604090205460ff1681565b3480156103b357600080fd5b50601b546102cd90600160a01b900460ff1681565b3480156103d457600080fd5b506102cd6103e336600461201d565b610ae1565b3480156103f457600080fd5b506102fd61040336600461205e565b610b4a565b34801561041457600080fd5b50600b5460405160ff90911681526020016102a4565b34801561043657600080fd5b506102cd61044536600461201d565b610b8f565b34801561045657600080fd5b506102fd610465366004612000565b610d07565b34801561047657600080fd5b506102cd610485366004611fd4565b610d53565b34801561049657600080fd5b5061036960115481565b3480156104ac57600080fd5b506102fd6104bb366004612000565b610d89565b3480156104cc57600080fd5b50601b54610340906001600160a01b031681565b3480156104ec57600080fd5b50601b546102cd90600160a81b900460ff1681565b34801561050d57600080fd5b5061036960125481565b34801561052357600080fd5b506102fd610532366004612077565b610dd2565b34801561054357600080fd5b506006546102cd9060ff1681565b34801561055d57600080fd5b5061036961056c366004612000565b6001600160a01b031660009081526002602052604090205490565b34801561059357600080fd5b506102fd610e4d565b3480156105a857600080fd5b506102cd6105b7366004612000565b60046020526000908152604090205460ff1681565b3480156105d857600080fd5b5061036960165481565b3480156105ee57600080fd5b506102fd6105fd366004612099565b610ec1565b34801561060e57600080fd5b5061036960185481565b34801561062457600080fd5b506102fd610633366004612000565b610f07565b34801561064457600080fd5b506000546001600160a01b0316610340565b34801561066257600080fd5b506102fd6106713660046120bc565b610f71565b34801561068257600080fd5b506102fd61069136600461205e565b61107c565b3480156106a257600080fd5b506102976110c1565b3480156106b757600080fd5b506102cd6106c6366004611fd4565b6110d0565b3480156106d757600080fd5b506102fd6106e636600461213f565b61111f565b3480156106f757600080fd5b506102cd610706366004611fd4565b611162565b34801561071757600080fd5b506102fd6107263660046120bc565b61116f565b34801561073757600080fd5b506102fd610746366004612000565b611272565b34801561075757600080fd5b506102fd61076636600461213f565b6112c3565b34801561077757600080fd5b506102fd610786366004612000565b611300565b34801561079757600080fd5b506103696107a636600461215c565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156107dd57600080fd5b506102fd6107ec36600461205e565b61134c565b3480156107fd57600080fd5b506102fd61080c366004612000565b611407565b34801561081d57600080fd5b506102fd61082c366004612000565b611452565b34801561083d57600080fd5b506102fd61084c36600461213f565b61153c565b34801561085d57600080fd5b506102cd61086c366004612000565b6001600160a01b031660009081526001602052604090205460ff1690565b60606009805461089990612195565b80601f01602080910402602001604051908101604052809291908181526020018280546108c590612195565b80156109125780601f106108e757610100808354040283529160200191610912565b820191906000526020600020905b8154815290600101906020018083116108f557829003601f168201915b5050505050905090565b60006109293384846115d8565b5060015b92915050565b6000546001600160a01b031633146109665760405162461bcd60e51b815260040161095d906121cf565b60405180910390fd5b6000819050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cd9190612204565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3e9190612204565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaf9190612204565b601b80546001600160a01b039283166001600160a01b031991821617909155601a805493909216921691909117905550565b6000610aee848484611699565b610b408433610b3b856040518060600160405280602881526020016123b1602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611b81565b6115d8565b5060019392505050565b610b533361086c565b610b6f5760405162461bcd60e51b815260040161095d90612221565b606481600c54610b7f919061225c565b610b899190612273565b60185550565b600080546001600160a01b03163314610bba5760405162461bcd60e51b815260040161095d906121cf565b306001600160a01b03851603610c125760405162461bcd60e51b815260206004820152601b60248201527f43616e206e6f742072656d6f7665206e617469766520746f6b656e0000000000604482015260640161095d565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015610c59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7d9190612295565b905080831115610c8b578092505b60405163a9059cbb60e01b81526001600160a01b0385811660048301526024820185905286169063a9059cbb906044016020604051808303816000875af1158015610cda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfe91906122ae565b95945050505050565b6000546001600160a01b03163314610d315760405162461bcd60e51b815260040161095d906121cf565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610929918590610b3b9086611bad565b610d923361086c565b610dae5760405162461bcd60e51b815260040161095d90612221565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b610ddb3361086c565b610df75760405162461bcd60e51b815260040161095d90612221565b600f54610e0482846122cb565b1115610e455760405162461bcd60e51b815260206004820152601060248201526f46656520697320746f6f20686967682160801b604482015260640161095d565b601255601155565b6000546001600160a01b03163314610e775760405162461bcd60e51b815260040161095d906121cf565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610eeb5760405162461bcd60e51b815260040161095d906121cf565b600e805460ff9092166101000261ff0019909216919091179055565b610f103361086c565b610f2c5760405162461bcd60e51b815260040161095d90612221565b60068054610100600160a81b0319166101006001600160a01b03938416810291909117918290559004166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b03163314610f9b5760405162461bcd60e51b815260040161095d906121cf565b60008060005b83811015611075575a821015611065575a925060056000868684818110610fca57610fca6122de565b9050602002016020810190610fdf9190612000565b6001600160a01b0316815260208101919091526040016000205460ff161561105757600060056000878785818110611019576110196122de565b905060200201602081019061102e9190612000565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b5a61106290846122f4565b91505b61106e81612307565b9050610fa1565b5050505050565b6110853361086c565b6110a15760405162461bcd60e51b815260040161095d90612221565b606481600c546110b1919061225c565b6110bb9190612273565b60165550565b6060600a805461089990612195565b60006109293384610b3b856040518060600160405280602581526020016123d9602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190611b81565b6111283361086c565b6111445760405162461bcd60e51b815260040161095d90612221565b601b8054911515600160b01b0260ff60b01b19909216919091179055565b6000610929338484611699565b6000546001600160a01b031633146111995760405162461bcd60e51b815260040161095d906121cf565b60008060005b83811015611075575a821015611262575a9250600560008686848181106111c8576111c86122de565b90506020020160208101906111dd9190612000565b6001600160a01b0316815260208101919091526040016000205460ff1661125457600160056000878785818110611216576112166122de565b905060200201602081019061122b9190612000565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b5a61125f90846122f4565b91505b61126b81612307565b905061119f565b6000546001600160a01b0316331461129c5760405162461bcd60e51b815260040161095d906121cf565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b031633146112ed5760405162461bcd60e51b815260040161095d906121cf565b6006805460ff1916911515919091179055565b6000546001600160a01b0316331461132a5760405162461bcd60e51b815260040161095d906121cf565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146113765760405162461bcd60e51b815260040161095d906121cf565b601b54600160a01b900460ff16156113d05760405162461bcd60e51b815260206004820181905260248201527f43757272656e746c792070726f63657373696e672c20747279206c617465722e604482015260640161095d565b306000908152600260205260408120549060646113ed848461225c565b6113f79190612273565b905061140281611bb9565b505050565b6000546001600160a01b031633146114315760405162461bcd60e51b815260040161095d906121cf565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b0316331461147c5760405162461bcd60e51b815260040161095d906121cf565b6001600160a01b0381166114e15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161095d565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6115453361086c565b6115615760405162461bcd60e51b815260040161095d90612221565b601b8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906115ae90831515815260200190565b60405180910390a150565b60006115c5828461225c565b9392505050565b60006115c58284612273565b6001600160a01b038316158015906115f857506001600160a01b03821615155b6116385760405162461bcd60e51b81526020600482015260116024820152704552523a207a65726f206164647265737360781b604482015260640161095d565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000546001600160a01b038381169116148015906116ca57506006546001600160a01b038381166101009092041614155b80156116df57506001600160a01b0382163014155b80156116f95750601b546001600160a01b03838116911614155b801561171357506007546001600160a01b03838116911614155b801561172d57506000546001600160a01b03848116911614155b156117e8576001600160a01b03821660009081526002602052604090205460165461175883836122cb565b11156117e65760405162461bcd60e51b815260206004820152605160248201527f596f752061726520747279696e6720746f2062757920746f6f206d616e79207460448201527f6f6b656e732e20596f752068617665207265616368656420746865206c696d696064820152703a103337b91037b732903bb0b63632ba1760791b608482015260a40161095d565b505b6000546001600160a01b0384811691161480159061181457506000546001600160a01b03838116911614155b15611891576018548111156118915760405162461bcd60e51b815260206004820152603a60248201527f596f752061726520747279696e6720746f20627579206d6f7265207468616e2060448201527f746865206d6178207472616e73616374696f6e206c696d69742e000000000000606482015260840161095d565b60065460ff1615611945576001600160a01b03831660009081526005602052604090205460ff161580156118de57506001600160a01b03821660009081526005602052604090205460ff16155b6119455760405162461bcd60e51b815260206004820152603260248201527f54686973206164647265737320697320626c61636b6c69737465642e205472616044820152713739b0b1ba34b7b7103932bb32b93a32b21760711b606482015260840161095d565b6001600160a01b0383161580159061196557506001600160a01b03821615155b6119a95760405162461bcd60e51b81526020600482015260156024820152744552523a205573696e67203020616464726573732160581b604482015260640161095d565b60008111611a075760405162461bcd60e51b815260206004820152602560248201527f546f6b656e2076616c7565206d75737420626520686967686572207468616e206044820152643d32b9379760d91b606482015260840161095d565b600e5460ff61010082048116911610801590611a2d5750601b54600160a01b900460ff16155b8015611a475750601b546001600160a01b03848116911614155b8015611a5c5750601b54600160a81b900460ff165b15611a9b57600e805460ff1916905530600090815260026020526040902054601854811115611a8a57506018545b8015611a9957611a9981611bb9565b505b6001600160a01b03831660009081526004602052604090205460019060ff1680611add57506001600160a01b03831660009081526004602052604090205460ff165b80611b245750601b54600160b01b900460ff168015611b0a5750601b546001600160a01b03858116911614155b8015611b245750601b546001600160a01b03848116911614155b15611b3157506000611b6f565b601b546001600160a01b0390811690851603611b5257601154601055611b6f565b601b546001600160a01b0390811690841603611b6f576012546010555b611b7b84848484611c03565b50505050565b60008184841115611ba55760405162461bcd60e51b815260040161095d9190611f6e565b505050900390565b60006115c582846122cb565b601b805460ff60a01b1916600160a01b179055611bd581611c69565b6006544790611bf29061010090046001600160a01b031682611dc3565b5050601b805460ff60a01b19169055565b80611c1557611c10611df9565b611c42565b600e805460ff16906000611c2883612320565b91906101000a81548160ff021916908360ff160217905550505b611c4d848484611e3e565b80611b7b57611b7b601354601055601454601155601554601255565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611c9e57611c9e6122de565b6001600160a01b03928316602091820292909201810191909152601a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611cf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1b9190612204565b81600181518110611d2e57611d2e6122de565b6001600160a01b039283166020918202929092010152601a54611d5491309116846115d8565b601a5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611d8d90859060009086903090429060040161233f565b600060405180830381600087803b158015611da757600080fd5b505af1158015611dbb573d6000803e3d6000fd5b505050505050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611402573d6000803e3d6000fd5b601054158015611e095750601154155b8015611e155750601254155b15611e1c57565b6011805460145560128054601555601080546013556000928390559082905555565b600080611e4a83611f2a565b6001600160a01b0387166000908152600260205260409020549193509150611e729084611f62565b6001600160a01b038087166000908152600260205260408082209390935590861681522054611ea19083611bad565b6001600160a01b038516600090815260026020526040808220929092553081522054611ecd9082611bad565b3060009081526002602090815260409182902092909255518381526001600160a01b0386811692908816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050505050565b6000806000606460105485611f3f919061225c565b611f499190612273565b90506000611f578583611f62565b959194509092505050565b60006115c582846122f4565b600060208083528351808285015260005b81811015611f9b57858101830151858201604001528201611f7f565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611fd157600080fd5b50565b60008060408385031215611fe757600080fd5b8235611ff281611fbc565b946020939093013593505050565b60006020828403121561201257600080fd5b81356115c581611fbc565b60008060006060848603121561203257600080fd5b833561203d81611fbc565b9250602084013561204d81611fbc565b929592945050506040919091013590565b60006020828403121561207057600080fd5b5035919050565b6000806040838503121561208a57600080fd5b50508035926020909101359150565b6000602082840312156120ab57600080fd5b813560ff811681146115c557600080fd5b600080602083850312156120cf57600080fd5b823567ffffffffffffffff808211156120e757600080fd5b818501915085601f8301126120fb57600080fd5b81358181111561210a57600080fd5b8660208260051b850101111561211f57600080fd5b60209290920196919550909350505050565b8015158114611fd157600080fd5b60006020828403121561215157600080fd5b81356115c581612131565b6000806040838503121561216f57600080fd5b823561217a81611fbc565b9150602083013561218a81611fbc565b809150509250929050565b600181811c908216806121a957607f821691505b6020821081036121c957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561221657600080fd5b81516115c581611fbc565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761092d5761092d612246565b60008261229057634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156122a757600080fd5b5051919050565b6000602082840312156122c057600080fd5b81516115c581612131565b8082018082111561092d5761092d612246565b634e487b7160e01b600052603260045260246000fd5b8181038181111561092d5761092d612246565b60006001820161231957612319612246565b5060010190565b600060ff821660ff810361233657612336612246565b60010192915050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561238f5784516001600160a01b03168352938301939183019160010161236a565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220484bdcb9644a5d71dcada4c6dee10ee8359706db11ee9743abe8a846d83d401964736f6c63430008110033

Deployed Bytecode Sourcemap

14563:13668:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17527:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18358:161;;;;;;;;;;-1:-1:-1;18358:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;18358:161:0;1023:187:1;26542:318:0;;;;;;;;;;-1:-1:-1;26542:318:0;;;;;:::i;:::-;;:::i;:::-;;21390:34;;;;;;;;;;-1:-1:-1;21390:34:0;;;;-1:-1:-1;;;21390:34:0;;;;;;16418:41;;;;;;;;;;-1:-1:-1;16418:41:0;;;;-1:-1:-1;;;;;16418:41:0;;;;;;-1:-1:-1;;;;;1658:32:1;;;1640:51;;1628:2;1613:18;16418:41:0;1467:230:1;17804:95:0;;;;;;;;;;-1:-1:-1;17884:7:0;;17804:95;;;1848:25:1;;;1836:2;1821:18;17804:95:0;1702:177:1;15005:47:0;;;;;;;;;;-1:-1:-1;15005:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16501:28;;;;;;;;;;-1:-1:-1;16501:28:0;;;;-1:-1:-1;;;16501:28:0;;;;;;18527:313;;;;;;;;;;-1:-1:-1;18527:313:0;;;;;:::i;:::-;;:::i;21575:149::-;;;;;;;;;;-1:-1:-1;21575:149:0;;;;;:::i;:::-;;:::i;17713:83::-;;;;;;;;;;-1:-1:-1;17779:9:0;;17713:83;;17779:9;;;;2672:36:1;;2660:2;2645:18;17713:83:0;2530:184:1;26030:502:0;;;;;;;;;;-1:-1:-1;26030:502:0;;;;;:::i;:::-;;:::i;26874:195::-;;;;;;;;;;-1:-1:-1;26874:195:0;;;;;:::i;:::-;;:::i;18848:218::-;;;;;;;;;;-1:-1:-1;18848:218:0;;;;;:::i;:::-;;:::i;15837:26::-;;;;;;;;;;;;;;;;19353:112;;;;;;;;;;-1:-1:-1;19353:112:0;;;;;:::i;:::-;;:::i;16466:28::-;;;;;;;;;;-1:-1:-1;16466:28:0;;;;-1:-1:-1;;;;;16466:28:0;;;16536:40;;;;;;;;;;-1:-1:-1;16536:40:0;;;;-1:-1:-1;;;16536:40:0;;;;;;15870:27;;;;;;;;;;;;;;;;19605:224;;;;;;;;;;-1:-1:-1;19605:224:0;;;;;:::i;:::-;;:::i;15140:23::-;;;;;;;;;;-1:-1:-1;15140:23:0;;;;;;;;17907:117;;;;;;;;;;-1:-1:-1;17907:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;18000:16:0;17973:7;18000:16;;;:7;:16;;;;;;;17907:117;6352:148;;;;;;;;;;;;;:::i;14845:51::-;;;;;;;;;;-1:-1:-1;14845:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16068:58;;;;;;;;;;;;;;;;20205:161;;;;;;;;;;-1:-1:-1;20205:161:0;;;;;:::i;:::-;;:::i;16250:55::-;;;;;;;;;;;;;;;;19839:157;;;;;;;;;;-1:-1:-1;19839:157:0;;;;;:::i;:::-;;:::i;5806:87::-;;;;;;;;;;-1:-1:-1;5852:7:0;5879:6;-1:-1:-1;;;;;5879:6:0;5806:87;;20839:417;;;;;;;;;;-1:-1:-1;20839:417:0;;;;;:::i;:::-;;:::i;21739:151::-;;;;;;;;;;-1:-1:-1;21739:151:0;;;;;:::i;:::-;;:::i;17618:87::-;;;;;;;;;;;;;:::i;19074:269::-;;;;;;;;;;-1:-1:-1;19074:269:0;;;;;:::i;:::-;;:::i;21437:126::-;;;;;;;;;;-1:-1:-1;21437:126:0;;;;;:::i;:::-;;:::i;18032:167::-;;;;;;;;;;-1:-1:-1;18032:167:0;;;;;:::i;:::-;;:::i;20415:414::-;;;;;;;;;;-1:-1:-1;20415:414:0;;;;;:::i;:::-;;:::i;6131:94::-;;;;;;;;;;-1:-1:-1;6131:94:0;;;;;:::i;:::-;;:::i;21266:109::-;;;;;;;;;;-1:-1:-1;21266:109:0;;;;;:::i;:::-;;:::i;27081:108::-;;;;;;;;;;-1:-1:-1;27081:108:0;;;;;:::i;:::-;;:::i;18207:143::-;;;;;;;;;;-1:-1:-1;18207:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;18315:18:0;;;18288:7;18315:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18207:143;25059:479;;;;;;;;;;-1:-1:-1;25059:479:0;;;;;:::i;:::-;;:::i;19483:110::-;;;;;;;;;;-1:-1:-1;19483:110:0;;;;;:::i;:::-;;:::i;6508:244::-;;;;;;;;;;-1:-1:-1;6508:244:0;;;;;:::i;:::-;;:::i;20004:193::-;;;;;;;;;;-1:-1:-1;20004:193:0;;;;;:::i;:::-;;:::i;6237:107::-;;;;;;;;;;-1:-1:-1;6237:107:0;;;;;:::i;:::-;-1:-1:-1;;;;;6317:19:0;6293:4;6317:19;;;:14;:19;;;;;;;;;6237:107;17527:83;17564:13;17597:5;17590:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17527:83;:::o;18358:161::-;18433:4;18450:39;1911:10;18473:7;18482:6;18450:8;:39::i;:::-;-1:-1:-1;18507:4:0;18358:161;;;;;:::o;26542:318::-;5852:7;5879:6;-1:-1:-1;;;;;5879:6:0;1911:10;5941:23;5933:68;;;;-1:-1:-1;;;5933:68:0;;;;;;;:::i;:::-;;;;;;;;;26629:32:::1;26683:9;26629:64;;26738:13;-1:-1:-1::0;;;;;26738:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;26720:53:0::1;;26782:4;26789:13;-1:-1:-1::0;;;;;26789:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26720:90;::::0;-1:-1:-1;;;;;;26720:90:0::1;::::0;;;;;;-1:-1:-1;;;;;6328:15:1;;;26720:90:0::1;::::0;::::1;6310:34:1::0;6380:15;;6360:18;;;6353:43;6245:18;;26720:90:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26704:13;:106:::0;;-1:-1:-1;;;;;26704:106:0;;::::1;-1:-1:-1::0;;;;;;26704:106:0;;::::1;;::::0;;;26821:15:::1;:31:::0;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;-1:-1:-1;26542:318:0:o;18527:313::-;18625:4;18642:36;18652:6;18660:9;18671:6;18642:9;:36::i;:::-;18689:121;18698:6;1911:10;18720:89;18758:6;18720:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18720:19:0;;;;;;:11;:19;;;;;;;;1911:10;18720:33;;;;;;;;;;:37;:89::i;:::-;18689:8;:121::i;:::-;-1:-1:-1;18828:4:0;18527:313;;;;;:::o;21575:149::-;6070:26;1911:10;6237:107;:::i;6070:26::-;6062:50;;;;-1:-1:-1;;;6062:50:0;;;;;;;:::i;:::-;21713:3:::1;21695:17;21687:7;;:25;;;;:::i;:::-;:29;;;;:::i;:::-;21672:12;:44:::0;-1:-1:-1;21575:149:0:o;26030:502::-;26165:10;5879:6;;-1:-1:-1;;;;;5879:6:0;1911:10;5941:23;5933:68;;;;-1:-1:-1;;;5933:68:0;;;;;;;:::i;:::-;26227:4:::1;-1:-1:-1::0;;;;;26195:37:0;::::1;::::0;26187:77:::1;;;::::0;-1:-1:-1;;;26187:77:0;;7476:2:1;26187:77:0::1;::::0;::::1;7458:21:1::0;7515:2;7495:18;;;7488:30;7554:29;7534:18;;;7527:57;7601:18;;26187:77:0::1;7274:351:1::0;26187:77:0::1;26299:53;::::0;-1:-1:-1;;;26299:53:0;;26346:4:::1;26299:53;::::0;::::1;1640:51:1::0;26275:21:0::1;::::0;-1:-1:-1;;;;;26299:38:0;::::1;::::0;::::1;::::0;1613:18:1;;26299:53:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26275:77;;26386:13;26367:16;:32;26363:72;;;26420:13;26401:32;;26363:72;26453:71;::::0;-1:-1:-1;;;26453:71:0;;-1:-1:-1;;;;;8011:32:1;;;26453:71:0::1;::::0;::::1;7993:51:1::0;8060:18;;;8053:34;;;26453:37:0;::::1;::::0;::::1;::::0;7966:18:1;;26453:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26445:79:::0;26030:502;-1:-1:-1;;;;;26030:502:0:o;26874:195::-;5852:7;5879:6;-1:-1:-1;;;;;5879:6:0;1911:10;5941:23;5933:68;;;;-1:-1:-1;;;5933:68:0;;;;;;;:::i;:::-;27030:15:::1;:31:::0;;-1:-1:-1;;;;;;27030:31:0::1;-1:-1:-1::0;;;;;27030:31:0;;;::::1;::::0;;;::::1;::::0;;26874:195::o;18848:218::-;1911:10;18936:4;18985:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18985:34:0;;;;;;;;;;18936:4;;18953:83;;18976:7;;18985:50;;19024:10;18985:38;:50::i;19353:112::-;6070:26;1911:10;6237:107;:::i;6070:26::-;6062:50;;;;-1:-1:-1;;;6062:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19423:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;19423:34:0::1;19453:4;19423:34;::::0;;19353:112::o;19605:224::-;6070:26;1911:10;6237:107;:::i;6070:26::-;6062:50;;;;-1:-1:-1;;;6062:50:0;;;;;;;:::i;:::-;19726:14:::1;::::0;19703:18:::1;19713:8:::0;19703:7;:18:::1;:::i;:::-;19702:38;;19694:67;;;::::0;-1:-1:-1;;;19694:67:0;;8680:2:1;19694:67:0::1;::::0;::::1;8662:21:1::0;8719:2;8699:18;;;8692:30;-1:-1:-1;;;8738:18:1;;;8731:46;8794:18;;19694:67:0::1;8478:340:1::0;19694:67:0::1;19772:8;:19:::0;19802:7:::1;:17:::0;19605:224::o;6352:148::-;5852:7;5879:6;-1:-1:-1;;;;;5879:6:0;1911:10;5941:23;5933:68;;;;-1:-1:-1;;;5933:68:0;;;;;;;:::i;:::-;6459:1:::1;6443:6:::0;;6422:40:::1;::::0;-1:-1:-1;;;;;6443:6:0;;::::1;::::0;6422:40:::1;::::0;6459:1;;6422:40:::1;6490:1;6473:19:::0;;-1:-1:-1;;;;;;6473:19:0::1;::::0;;6352:148::o;20205:161::-;5852:7;5879:6;-1:-1:-1;;;;;5879:6:0;1911:10;5941:23;5933:68;;;;-1:-1:-1;;;5933:68:0;;;;;;;:::i;:::-;20322:11:::1;:36:::0;;::::1;::::0;;::::1;;;-1:-1:-1::0;;20322:36:0;;::::1;::::0;;;::::1;::::0;;20205:161::o;19839:157::-;6070:26;1911:10;6237:107;:::i;6070:26::-;6062:50;;;;-1:-1:-1;;;6062:50:0;;;;;;;:::i;:::-;19921:10:::1;:19:::0;;-1:-1:-1;;;;;;19921:19:0::1;;-1:-1:-1::0;;;;;19921:19:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;19970:10;::::1;;-1:-1:-1::0;19951:30:0;;;:18:::1;:30;::::0;;;;:37;;-1:-1:-1;;19951:37:0::1;-1:-1:-1::0;19951:37:0::1;::::0;;19839:157::o;20839:417::-;5852:7;5879:6;-1:-1:-1;;;;;5879:6:0;1911:10;5941:23;5933:68;;;;-1:-1:-1;;;5933:68:0;;;;;;;:::i;:::-;20942:16:::1;20969:15:::0;20998:9:::1;20993:256;21009:20:::0;;::::1;20993:256;;;21060:9;21050:7;:19;21047:195;;;21093:9;21082:20;;21116:14;:28;21131:9;;21141:1;21131:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21116:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;21116:28:0;;::::1;;21113:81;;;21187:5;21156:14;:28;21171:9;;21181:1;21171:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21156:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;21156:28:0;:36;;-1:-1:-1;;21156:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21113:81:::1;21225:9;21214:20;::::0;:8;:20:::1;:::i;:::-;21204:30;;21047:195;21031:3;::::0;::::1;:::i;:::-;;;20993:256;;;;20922:334;;20839:417:::0;;:::o;21739:151::-;6070:26;1911:10;6237:107;:::i;6070:26::-;6062:50;;;;-1:-1:-1;;;6062:50:0;;;;;;;:::i;:::-;21879:3:::1;21859:19;21851:7;;:27;;;;:::i;:::-;:31;;;;:::i;:::-;21833:15;:49:::0;-1:-1:-1;21739:151:0:o;17618:87::-;17657:13;17690:7;17683:14;;;;;:::i;19074:269::-;19167:4;19184:129;1911:10;19207:7;19216:96;19255:15;19216:96;;;;;;;;;;;;;;;;;1911:10;19216:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19216:34:0;;;;;;;;;;;;:38;:96::i;21437:126::-;6070:26;1911:10;6237:107;:::i;6070:26::-;6062:50;;;;-1:-1:-1;;;6062:50:0;;;;;;;:::i;:::-;21524:15:::1;:31:::0;;;::::1;;-1:-1:-1::0;;;21524:31:0::1;-1:-1:-1::0;;;;21524:31:0;;::::1;::::0;;;::::1;::::0;;21437:126::o;18032:167::-;18110:4;18127:42;1911:10;18151:9;18162:6;18127:9;:42::i;20415:414::-;5852:7;5879:6;-1:-1:-1;;;;;5879:6:0;1911:10;5941:23;5933:68;;;;-1:-1:-1;;;5933:68:0;;;;;;;:::i;:::-;20515:16:::1;20542:15:::0;20571:9:::1;20566:256;20582:20:::0;;::::1;20566:256;;;20633:9;20623:7;:19;20620:195;;;20666:9;20655:20;;20690:14;:28;20705:9;;20715:1;20705:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20690:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;20690:28:0;;::::1;;20686:81;;20761:4;20730:14;:28;20745:9;;20755:1;20745:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20730:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;20730:28:0;:35;;-1:-1:-1;;20730:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20686:81:::1;20798:9;20787:20;::::0;:8;:20:::1;:::i;:::-;20777:30;;20620:195;20604:3;::::0;::::1;:::i;:::-;;;20566:256;;6131:94:::0;5852:7;5879:6;-1:-1:-1;;;;;5879:6:0;1911:10;5941:23;5933:68;;;;-1:-1:-1;;;5933:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6191:19:0::1;;::::0;;;6213:4:::1;6191:19;::::0;;;;;;;:26;;-1:-1:-1;;6191:26:0::1;::::0;;::::1;::::0;;6131:94::o;21266:109::-;5852:7;5879:6;-1:-1:-1;;;;;5879:6:0;1911:10;5941:23;5933:68;;;;-1:-1:-1;;;5933:68:0;;;;;;;:::i;:::-;21340:11:::1;:27:::0;;-1:-1:-1;;21340:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21266:109::o;27081:108::-;5852:7;5879:6;-1:-1:-1;;;;;5879:6:0;1911:10;5941:23;5933:68;;;;-1:-1:-1;;;5933:68:0;;;;;;;:::i;:::-;27158:13:::1;:23:::0;;-1:-1:-1;;;;;;27158:23:0::1;-1:-1:-1::0;;;;;27158:23:0;;;::::1;::::0;;;::::1;::::0;;27081:108::o;25059:479::-;5852:7;5879:6;-1:-1:-1;;;;;5879:6:0;1911:10;5941:23;5933:68;;;;-1:-1:-1;;;5933:68:0;;;;;;;:::i;:::-;25209:16:::1;::::0;-1:-1:-1;;;25209:16:0;::::1;;;25208:17;25200:62;;;::::0;-1:-1:-1;;;25200:62:0;;9430:2:1;25200:62:0::1;::::0;::::1;9412:21:1::0;;;9449:18;;;9442:30;9508:34;9488:18;;;9481:62;9560:18;;25200:62:0::1;9228:356:1::0;25200:62:0::1;25406:4;25361:24;18000:16:::0;;;:7;:16;;;;;;;25490:3:::1;25444:45;25461:28:::0;18000:16;25444:45:::1;:::i;:::-;:49;;;;:::i;:::-;25423:70;;25504:26;25519:10;25504:14;:26::i;:::-;25143:395;;25059:479:::0;:::o;19483:110::-;5852:7;5879:6;-1:-1:-1;;;;;5879:6:0;1911:10;5941:23;5933:68;;;;-1:-1:-1;;;5933:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19550:27:0::1;19580:5;19550:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;19550:35:0::1;::::0;;19483:110::o;6508:244::-;5852:7;5879:6;-1:-1:-1;;;;;5879:6:0;1911:10;5941:23;5933:68;;;;-1:-1:-1;;;5933:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6597:22:0;::::1;6589:73;;;::::0;-1:-1:-1;;;6589:73:0;;9791:2:1;6589:73:0::1;::::0;::::1;9773:21:1::0;9830:2;9810:18;;;9803:30;9869:34;9849:18;;;9842:62;-1:-1:-1;;;9920:18:1;;;9913:36;9966:19;;6589:73:0::1;9589:402:1::0;6589:73:0::1;6699:6;::::0;;6678:38:::1;::::0;-1:-1:-1;;;;;6678:38:0;;::::1;::::0;6699:6;::::1;::::0;6678:38:::1;::::0;::::1;6727:6;:17:::0;;-1:-1:-1;;;;;;6727:17:0::1;-1:-1:-1::0;;;;;6727:17:0;;;::::1;::::0;;;::::1;::::0;;6508:244::o;20004:193::-;6070:26;1911:10;6237:107;:::i;6070:26::-;6062:50;;;;-1:-1:-1;;;6062:50:0;;;;;;;:::i;:::-;20093:21:::1;:37:::0;;;::::1;;-1:-1:-1::0;;;20093:37:0::1;-1:-1:-1::0;;;;20093:37:0;;::::1;;::::0;;20146:43:::1;::::0;::::1;::::0;::::1;::::0;20117:13;1188:14:1;1181:22;1163:41;;1151:2;1136:18;;1023:187;20146:43:0::1;;;;;;;;20004:193:::0;:::o;1144:98::-;1202:7;1229:5;1233:1;1229;:5;:::i;:::-;1222:12;1144:98;-1:-1:-1;;;1144:98:0:o;1254:::-;1312:7;1339:5;1343:1;1339;:5;:::i;22372:266::-;-1:-1:-1;;;;;22467:19:0;;;;;;:44;;-1:-1:-1;;;;;;22490:21:0;;;;22467:44;22459:74;;;;-1:-1:-1;;;22459:74:0;;10198:2:1;22459:74:0;;;10180:21:1;10237:2;10217:18;;;10210:30;-1:-1:-1;;;10256:18:1;;;10249:47;10313:18;;22459:74:0;9996:341:1;22459:74:0;-1:-1:-1;;;;;22544:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;22596:32;;1848:25:1;;;22596:32:0;;1821:18:1;22596:32:0;;;;;;;22372:266;;;:::o;22646:2021::-;5852:7;5879:6;-1:-1:-1;;;;;22776:13:0;;;5879:6;;22776:13;;;;:46;;-1:-1:-1;22812:10:0;;-1:-1:-1;;;;;22806:16:0;;;22812:10;;;;;22806:16;;22776:46;:82;;;;-1:-1:-1;;;;;;22839:19:0;;22853:4;22839:19;;22776:82;:118;;;;-1:-1:-1;22881:13:0;;-1:-1:-1;;;;;22875:19:0;;;22881:13;;22875:19;;22776:118;:152;;;;-1:-1:-1;22917:11:0;;-1:-1:-1;;;;;22911:17:0;;;22917:11;;22911:17;;22776:152;:184;;;;-1:-1:-1;5852:7:0;5879:6;-1:-1:-1;;;;;22945:15:0;;;5879:6;;22945:15;;22776:184;22772:388;;;-1:-1:-1;;;;;18000:16:0;;22976:18;18000:16;;;:7;:16;;;;;;23058:15;;23034:19;23047:6;18000:16;23034:19;:::i;:::-;23033:40;;23025:133;;;;-1:-1:-1;;;23025:133:0;;10544:2:1;23025:133:0;;;10526:21:1;10583:2;10563:18;;;10556:30;10622:34;10602:18;;;10595:62;10693:34;10673:18;;;10666:62;-1:-1:-1;;;10744:19:1;;;10737:48;10802:19;;23025:133:0;10342:485:1;23025:133:0;22961:199;22772:388;5852:7;5879:6;-1:-1:-1;;;;;23271:15:0;;;5879:6;;23271:15;;;;:32;;-1:-1:-1;5852:7:0;5879:6;-1:-1:-1;;;;;23290:13:0;;;5879:6;;23290:13;;23271:32;23267:144;;;23336:12;;23326:6;:22;;23318:93;;;;-1:-1:-1;;;23318:93:0;;11034:2:1;23318:93:0;;;11016:21:1;11073:2;11053:18;;;11046:30;11112:34;11092:18;;;11085:62;11183:28;11163:18;;;11156:56;11229:19;;23318:93:0;10832:422:1;23318:93:0;23451:11;;;;23447:136;;;-1:-1:-1;;;;;23483:20:0;;;;;;:14;:20;;;;;;;;23482:21;:44;;;;-1:-1:-1;;;;;;23508:18:0;;;;;;:14;:18;;;;;;;;23507:19;23482:44;23474:107;;;;-1:-1:-1;;;23474:107:0;;11461:2:1;23474:107:0;;;11443:21:1;11500:2;11480:18;;;11473:30;11539:34;11519:18;;;11512:62;-1:-1:-1;;;11590:18:1;;;11583:48;11648:19;;23474:107:0;11259:414:1;23474:107:0;-1:-1:-1;;;;;23605:18:0;;;;;;:38;;-1:-1:-1;;;;;;23627:16:0;;;;23605:38;23597:72;;;;-1:-1:-1;;;23597:72:0;;11880:2:1;23597:72:0;;;11862:21:1;11919:2;11899:18;;;11892:30;-1:-1:-1;;;11938:18:1;;;11931:51;11999:18;;23597:72:0;11678:345:1;23597:72:0;23697:1;23688:6;:10;23680:60;;;;-1:-1:-1;;;23680:60:0;;12230:2:1;23680:60:0;;;12212:21:1;12269:2;12249:18;;;12242:30;12308:34;12288:18;;;12281:62;-1:-1:-1;;;12359:18:1;;;12352:35;12404:19;;23680:60:0;12028:401:1;23680:60:0;23795:11;;;;;;;;23784:7;;:22;;;;:57;;-1:-1:-1;23825:16:0;;-1:-1:-1;;;23825:16:0;;;;23824:17;23784:57;:95;;;;-1:-1:-1;23866:13:0;;-1:-1:-1;;;;;23858:21:0;;;23866:13;;23858:21;;23784:95;:133;;;;-1:-1:-1;23896:21:0;;-1:-1:-1;;;23896:21:0;;;;23784:133;23767:497;;;23974:7;:11;;-1:-1:-1;;23974:11:0;;;24049:4;-1:-1:-1;18000:16:0;;;:7;:16;;;;;;24096:12;;24073:35;;24070:78;;;-1:-1:-1;24134:12:0;;24070:78;24165:24;;24162:91;;24205:36;24220:20;24205:14;:36::i;:::-;23943:321;23767:497;-1:-1:-1;;;;;24332:24:0;;24288:12;24332:24;;;:18;:24;;;;;;24303:4;;24332:24;;;:50;;-1:-1:-1;;;;;;24360:22:0;;;;;;:18;:22;;;;;;;;24332:50;:119;;;-1:-1:-1;24387:15:0;;-1:-1:-1;;;24387:15:0;;;;:40;;;;-1:-1:-1;24414:13:0;;-1:-1:-1;;;;;24406:21:0;;;24414:13;;24406:21;;24387:40;:63;;;;-1:-1:-1;24437:13:0;;-1:-1:-1;;;;;24431:19:0;;;24437:13;;24431:19;;24387:63;24329:272;;;-1:-1:-1;24477:5:0;24329:272;;;24512:13;;-1:-1:-1;;;;;24512:13:0;;;24504:21;;;;24500:101;;24539:7;;24527:9;:19;24500:101;;;24564:13;;-1:-1:-1;;;;;24564:13:0;;;24558:19;;;;24554:47;;24591:8;;24579:9;:20;24554:47;24621:38;24636:4;24641:2;24644:6;24651:7;24621:14;:38::i;:::-;22749:1918;22646:2021;;;:::o;1360:206::-;1446:7;1507:12;1499:6;;;;1491:29;;;;-1:-1:-1;;;1491:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1542:5:0;;;1360:206::o;932:98::-;990:7;1017:5;1021:1;1017;:5;:::i;24807:242::-;16825:16;:23;;-1:-1:-1;;;;16825:23:0;-1:-1:-1;;;16825:23:0;;;24902:38:::1;24919:20:::0;24902:16:::1;:38::i;:::-;25018:10;::::0;24973:21:::1;::::0;25005:36:::1;::::0;25018:10:::1;::::0;::::1;-1:-1:-1::0;;;;;25018:10:0::1;24973:21:::0;25005:12:::1;:36::i;:::-;-1:-1:-1::0;;16871:16:0;:24;;-1:-1:-1;;;;16871:24:0;;;24807:242::o;27197:360::-;27328:7;27324:107;;27351:14;:12;:14::i;:::-;27324:107;;;27406:7;:9;;;;;:7;:9;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;27324:107;27445:42;27461:6;27469:9;27480:6;27445:15;:42::i;:::-;27512:7;27508:41;;27534:15;22267:17;;22255:9;:29;22301:15;;22291:7;:25;22335:16;;22324:8;:27;22209:153;25548:474;25640:16;;;25654:1;25640:16;;;;;;;;25616:21;;25640:16;;;;;;;;;;-1:-1:-1;25640:16:0;25616:40;;25685:4;25667;25672:1;25667:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;25667:23:0;;;:7;;;;;;;;;;:23;;;;25711:15;;:22;;;-1:-1:-1;;;25711:22:0;;;;:15;;;;;:20;;:22;;;;;25667:7;;25711:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25701:4;25706:1;25701:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;25701:32:0;;;:7;;;;;;;;;:32;25776:15;;25744:62;;25761:4;;25776:15;25794:11;25744:8;:62::i;:::-;25817:15;;:197;;-1:-1:-1;;;25817:197:0;;-1:-1:-1;;;;;25817:15:0;;;;:66;;:197;;25898:11;;25817:15;;25941:4;;25968;;25988:15;;25817:197;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25603:419;25548:474;:::o;24677:120::-;24762:23;;-1:-1:-1;;;;;24762:15:0;;;:23;;;;;24778:6;;24762:23;;;;24778:6;24762:15;:23;;;;;;;;;;;;;;;;;;;21900:300;21946:9;;:14;:30;;;;-1:-1:-1;21964:7:0;;:12;21946:30;:47;;;;-1:-1:-1;21980:8:0;;:13;21946:47;21943:59;;;21900:300::o;21943:59::-;22034:7;;;22016:15;:25;22072:8;;;22053:16;:27;22112:9;;;22092:17;:29;-1:-1:-1;22132:11:0;;;;22154:12;;;;22177:13;21900:300::o;27565:424::-;27662:23;27687:12;27703:19;27714:7;27703:10;:19::i;:::-;-1:-1:-1;;;;;27751:15:0;;;;;;:7;:15;;;;;;27661:61;;-1:-1:-1;27661:61:0;-1:-1:-1;27751:28:0;;27771:7;27751:19;:28::i;:::-;-1:-1:-1;;;;;27733:15:0;;;;;;;:7;:15;;;;;;:46;;;;27811:18;;;;;;;:39;;27834:15;27811:22;:39::i;:::-;-1:-1:-1;;;;;27790:18:0;;;;;;:7;:18;;;;;;:60;;;;27902:4;27886:22;;;;:32;;27913:4;27886:26;:32::i;:::-;27877:4;27861:22;;;;:7;:22;;;;;;;;;:57;;;;27937:44;1848:25:1;;;-1:-1:-1;;;;;27937:44:0;;;;;;;;;;1821:18:1;27937:44:0;;;;;;;27650:339;;27565:424;;;:::o;27999:227::-;28058:7;28067;28087:12;28120:3;28110:9;;28102:7;:17;;;;:::i;:::-;:21;;;;:::i;:::-;28087:36;-1:-1:-1;28134:23:0;28160:17;:7;28087:36;28160:11;:17::i;:::-;28134:43;28213:4;;-1:-1:-1;27999:227:0;;-1:-1:-1;;;27999:227:0:o;1038:98::-;1096:7;1123:5;1127:1;1123;:5;:::i;14:548: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;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1884:456::-;1961:6;1969;1977;2030:2;2018:9;2009:7;2005:23;2001:32;1998:52;;;2046:1;2043;2036:12;1998:52;2085:9;2072:23;2104:31;2129:5;2104:31;:::i;:::-;2154:5;-1:-1:-1;2211:2:1;2196:18;;2183:32;2224:33;2183:32;2224:33;:::i;:::-;1884:456;;2276:7;;-1:-1:-1;;;2330:2:1;2315:18;;;;2302:32;;1884:456::o;2345:180::-;2404:6;2457:2;2445:9;2436:7;2432:23;2428:32;2425:52;;;2473:1;2470;2463:12;2425:52;-1:-1:-1;2496:23:1;;2345:180;-1:-1:-1;2345:180:1:o;2927:248::-;2995:6;3003;3056:2;3044:9;3035:7;3031:23;3027:32;3024:52;;;3072:1;3069;3062:12;3024:52;-1:-1:-1;;3095:23:1;;;3165:2;3150:18;;;3137:32;;-1:-1:-1;2927:248:1:o;3180:269::-;3237:6;3290:2;3278:9;3269:7;3265:23;3261:32;3258:52;;;3306:1;3303;3296:12;3258:52;3345:9;3332:23;3395:4;3388:5;3384:16;3377:5;3374:27;3364:55;;3415:1;3412;3405:12;3714:615;3800:6;3808;3861:2;3849:9;3840:7;3836:23;3832:32;3829:52;;;3877:1;3874;3867:12;3829:52;3917:9;3904:23;3946:18;3987:2;3979:6;3976:14;3973:34;;;4003:1;4000;3993:12;3973:34;4041:6;4030:9;4026:22;4016:32;;4086:7;4079:4;4075:2;4071:13;4067:27;4057:55;;4108:1;4105;4098:12;4057:55;4148:2;4135:16;4174:2;4166:6;4163:14;4160:34;;;4190:1;4187;4180:12;4160:34;4243:7;4238:2;4228:6;4225:1;4221:14;4217:2;4213:23;4209:32;4206:45;4203:65;;;4264:1;4261;4254:12;4203:65;4295:2;4287:11;;;;;4317:6;;-1:-1:-1;3714:615:1;;-1:-1:-1;;;;3714:615:1:o;4334:118::-;4420:5;4413:13;4406:21;4399:5;4396:32;4386:60;;4442:1;4439;4432:12;4457:241;4513:6;4566:2;4554:9;4545:7;4541:23;4537:32;4534:52;;;4582:1;4579;4572:12;4534:52;4621:9;4608:23;4640:28;4662:5;4640:28;:::i;4703:388::-;4771:6;4779;4832:2;4820:9;4811:7;4807:23;4803:32;4800:52;;;4848:1;4845;4838:12;4800:52;4887:9;4874:23;4906:31;4931:5;4906:31;:::i;:::-;4956:5;-1:-1:-1;5013:2:1;4998:18;;4985:32;5026:33;4985:32;5026:33;:::i;:::-;5078:7;5068:17;;;4703:388;;;;;:::o;5096:380::-;5175:1;5171:12;;;;5218;;;5239:61;;5293:4;5285:6;5281:17;5271:27;;5239:61;5346:2;5338:6;5335:14;5315:18;5312:38;5309:161;;5392:10;5387:3;5383:20;5380:1;5373:31;5427:4;5424:1;5417:15;5455:4;5452:1;5445:15;5309:161;;5096:380;;;:::o;5481:356::-;5683:2;5665:21;;;5702:18;;;5695:30;5761:34;5756:2;5741:18;;5734:62;5828:2;5813:18;;5481:356::o;5842:251::-;5912:6;5965:2;5953:9;5944:7;5940:23;5936:32;5933:52;;;5981:1;5978;5971:12;5933:52;6013:9;6007:16;6032:31;6057:5;6032:31;:::i;6407:335::-;6609:2;6591:21;;;6648:2;6628:18;;;6621:30;-1:-1:-1;;;6682:2:1;6667:18;;6660:41;6733:2;6718:18;;6407:335::o;6747:127::-;6808:10;6803:3;6799:20;6796:1;6789:31;6839:4;6836:1;6829:15;6863:4;6860:1;6853:15;6879:168;6952:9;;;6983;;7000:15;;;6994:22;;6980:37;6970:71;;7021:18;;:::i;7052:217::-;7092:1;7118;7108:132;;7162:10;7157:3;7153:20;7150:1;7143:31;7197:4;7194:1;7187:15;7225:4;7222:1;7215:15;7108:132;-1:-1:-1;7254:9:1;;7052:217::o;7630:184::-;7700:6;7753:2;7741:9;7732:7;7728:23;7724:32;7721:52;;;7769:1;7766;7759:12;7721:52;-1:-1:-1;7792:16:1;;7630:184;-1:-1:-1;7630:184:1:o;8098:245::-;8165:6;8218:2;8206:9;8197:7;8193:23;8189:32;8186:52;;;8234:1;8231;8224:12;8186:52;8266:9;8260:16;8285:28;8307:5;8285:28;:::i;8348:125::-;8413:9;;;8434:10;;;8431:36;;;8447:18;;:::i;8823:127::-;8884:10;8879:3;8875:20;8872:1;8865:31;8915:4;8912:1;8905:15;8939:4;8936:1;8929:15;8955:128;9022:9;;;9043:11;;;9040:37;;;9057:18;;:::i;9088:135::-;9127:3;9148:17;;;9145:43;;9168:18;;:::i;:::-;-1:-1:-1;9215:1:1;9204:13;;9088:135::o;12434:175::-;12471:3;12515:4;12508:5;12504:16;12544:4;12535:7;12532:17;12529:43;;12552:18;;:::i;:::-;12601:1;12588:15;;12434:175;-1:-1:-1;;12434:175:1:o;12746:980::-;13008:4;13056:3;13045:9;13041:19;13087:6;13076:9;13069:25;13113:2;13151:6;13146:2;13135:9;13131:18;13124:34;13194:3;13189:2;13178:9;13174:18;13167:31;13218:6;13253;13247:13;13284:6;13276;13269:22;13322:3;13311:9;13307:19;13300:26;;13361:2;13353:6;13349:15;13335:29;;13382:1;13392:195;13406:6;13403:1;13400:13;13392:195;;;13471:13;;-1:-1:-1;;;;;13467:39:1;13455:52;;13562:15;;;;13527:12;;;;13503:1;13421:9;13392:195;;;-1:-1:-1;;;;;;;13643:32:1;;;;13638:2;13623:18;;13616:60;-1:-1:-1;;;13707:3:1;13692:19;13685:35;13604:3;12746:980;-1:-1:-1;;;12746:980:1:o

Swarm Source

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