ETH Price: $3,697.89 (+2.83%)

Token

ERC-20: Pepito (PEPI)
 

Overview

Max Total Supply

1,000,000,000 PEPI

Holders

262

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000002 PEPI

Value
$0.00
0x1f7e366cb27c7a0621caa394606501d72025646f
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:
Pepito

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 69 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-06
*/

// https://t.me/lilpepito.com
// http://pepitokart.games/
// https://stake.lilpepito.app/
// https://youtube.com/@Pepitobsc
// https://t.me/PepitoBSC
// https://twitter.com/Pepito_Legacy?s=20

//SPDX-License-Identifier: MIT


pragma solidity 0.8.23;


interface IERC20 {

    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */

    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

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

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

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

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

interface IPancakePair {
    function sync() external;
}

interface IDEXRouter {

    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

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

}

contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
     /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract Pepito is IERC20, Ownable {
    using SafeMath for uint256;
    
    address WETH;
    address constant DEAD          = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO          = 0x0000000000000000000000000000000000000000;

    string _name = "Pepito";
    string _symbol = "PEPI";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1 * 10**9 * 10**_decimals;
    uint256 public _maxTxAmount = (_totalSupply * 3) / 100;
    uint256 public _maxWalletSize = (_totalSupply * 3) / 100;   

    /* rOwned = ratio of tokens owned relative to circulating supply (NOT total supply, since circulating <= total) */
    mapping (address => uint256) public _rOwned;
    uint256 public _totalProportion = _totalSupply;

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

    
    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
 
    uint256 liquidityFeeBuy = 1; 
    uint256 teamFeeBuy = 0; 
    uint256 devFeeBuy = 0; 
    uint256 marketingFeeBuy = 1;  
    uint256 reflectionFeeBuy = 1;   

    uint256 liquidityFeeSell = 1;  
    uint256 teamFeeSell = 0;       
    uint256 devFeeSell = 0;      
    uint256 marketingFeeSell = 1;    
    uint256 reflectionFeeSell = 1;   
    
    uint256 feeDenominator = 100; 

    uint256 totalFeeBuy = marketingFeeBuy + liquidityFeeBuy + teamFeeBuy + devFeeBuy + reflectionFeeBuy;     
    uint256 totalFeeSell = marketingFeeSell + liquidityFeeSell + teamFeeSell + devFeeSell + reflectionFeeSell; 
    
    address autoLiquidityReceiver;
    address marketingFeeReceiver;
    address teamFeeReceiver;
    address devFeeReceiver;

    uint256 targetLiquidity = 30;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;

    bool public tradingOpen = false;
    
    bool public claimingFees = true; 
    bool alternateSwaps = true;
    uint256 smallSwapThreshold = _totalSupply * 2 / 1000;
    uint256 largeSwapThreshold = _totalSupply * 4 / 100;

    uint256 public swapThreshold = smallSwapThreshold;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () {

        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));

        _allowances[address(this)][address(router)] = type(uint256).max;
        _allowances[address(this)][msg.sender] = type(uint256).max;

        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[address(router)] = true;
	    isTxLimitExempt[pair] = true;
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[marketingFeeReceiver] = true;
        isFeeExempt[msg.sender] = true;

        autoLiquidityReceiver = msg.sender; 
        teamFeeReceiver = msg.sender;
        devFeeReceiver = 0x481d3EDDf997f0370530188dC37c5371AF0c5a32;
        marketingFeeReceiver = 0xd6f44c0108B3f397d31768E1ad3c9427F972CE27;

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

    receive() external payable { }

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

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

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

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

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

        return _transferFrom(sender, recipient, amount);
    }

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

        if (recipient != pair && recipient != DEAD && recipient != marketingFeeReceiver && !isTxLimitExempt[recipient]) {
            require(balanceOf(recipient) + amount <= _maxWalletSize, "Max Wallet Exceeded");

        }

        if(!isTxLimitExempt[sender]) {
            require(amount <= _maxTxAmount, "Transaction Amount Exceeded");
        }
     
        if (recipient != pair && recipient != DEAD && !isTxLimitExempt[recipient]) {
            require(tradingOpen,"Trading not open yet");
        
        }

        if(shouldSwapBack()){ swapBack(); }

        uint256 proportionAmount = tokensToProportion(amount);

        _rOwned[sender] = _rOwned[sender].sub(proportionAmount, "Insufficient Balance");

        uint256 proportionReceived = shouldTakeFee(sender) && shouldTakeFee(recipient) ? takeFeeInProportions(sender == pair? true : false, sender, recipient, proportionAmount) : proportionAmount;
        _rOwned[recipient] = _rOwned[recipient].add(proportionReceived);

        emit Transfer(sender, recipient, tokenFromReflection(proportionReceived));
        return true;
    }

    function tokensToProportion(uint256 tokens) public view returns (uint256) {
        return tokens.mul(_totalProportion).div(_totalSupply);
    }

    function tokenFromReflection(uint256 proportion) public view returns (uint256) {
        return proportion.mul(_totalSupply).div(_totalProportion);
    }

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

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

    }

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

    function getTotalFeeBuy(bool) public view returns (uint256) {
        return totalFeeBuy;
    }

    function getTotalFeeSell(bool) public view returns (uint256) {
        return totalFeeSell;
    }

    function takeFeeInProportions(bool buying, address sender, address receiver, uint256 proportionAmount) internal returns (uint256) {
        uint256 proportionFeeAmount = buying == true? proportionAmount.mul(getTotalFeeBuy(receiver == pair)).div(feeDenominator) :
        proportionAmount.mul(getTotalFeeSell(receiver == pair)).div(feeDenominator);

        // reflect
        uint256 proportionReflected = buying == true? proportionFeeAmount.mul(reflectionFeeBuy).div(totalFeeBuy) :
        proportionFeeAmount.mul(reflectionFeeSell).div(totalFeeSell);

        _totalProportion = _totalProportion.sub(proportionReflected);

        // take fees
        uint256 _proportionToContract = proportionFeeAmount.sub(proportionReflected);
        _rOwned[address(this)] = _rOwned[address(this)].add(_proportionToContract);

        emit Transfer(sender, address(this), tokenFromReflection(_proportionToContract));
        emit Reflect(proportionReflected, _totalProportion);
        return proportionAmount.sub(proportionFeeAmount);
    }

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

   function clearStuckToken(address tokenAddress, uint256 tokens) external returns (bool success) {
        require(tokenAddress != address(this), "token Address can not be the native token");
             if(tokens == 0){
            tokens = IERC20(tokenAddress).balanceOf(address(this));
        }      
        return IERC20(tokenAddress).transfer(autoLiquidityReceiver, tokens);
    }

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

    }

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

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFeeSell;
        uint256 _totalFee = totalFeeSell.sub(reflectionFeeSell);
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(_totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

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

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

        uint256 totalETHFee = _totalFee.sub(dynamicLiquidityFee.div(2));
        uint256 amountETHLiquidity = amountETH.mul(liquidityFeeSell).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFeeSell).div(totalETHFee);
        uint256 amountETHTeam = amountETH.mul(teamFeeSell).div(totalETHFee);
        uint256 amountETHdev = amountETH.mul(devFeeSell).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}("");
        (tmpSuccess,) = payable(teamFeeReceiver).call{value: amountETHTeam, gas: 30000}("");
        (tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHdev, gas: 30000}("");
        
        

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

        swapThreshold = !alternateSwaps ? swapThreshold : swapThreshold == smallSwapThreshold ? largeSwapThreshold : smallSwapThreshold;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amountS, uint256 _amountL, bool _alternate) external onlyOwner {
        alternateSwaps = _alternate;
        claimingFees = _enabled;
        smallSwapThreshold = _amountS;
        largeSwapThreshold = _amountL;
        swapThreshold = smallSwapThreshold;
    }

    function openTrading() public onlyOwner {
        tradingOpen = true;
    
    }

     function changeFees(uint256 _liquidityFeeBuy, uint256 _reflectionFeeBuy, uint256 _marketingFeeBuy, uint256 _teamFeeBuy, uint256 _devFeeBuy, uint256 _feeDenominator,
    uint256 _liquidityFeeSell, uint256 _reflectionFeeSell, uint256 _marketingFeeSell, uint256 _teamFeeSell, uint256 _devFeeSell) external onlyOwner {
        liquidityFeeBuy = _liquidityFeeBuy;
        reflectionFeeBuy = _reflectionFeeBuy;
        marketingFeeBuy = _marketingFeeBuy;
        teamFeeBuy = _teamFeeBuy;
        devFeeBuy = _devFeeBuy;
        totalFeeBuy = liquidityFeeBuy.add(reflectionFeeBuy).add(marketingFeeBuy).add(teamFeeBuy).add(devFeeBuy);

        liquidityFeeSell = _liquidityFeeSell;
        reflectionFeeSell = _reflectionFeeSell;
        marketingFeeSell = _marketingFeeSell;
        teamFeeSell = _teamFeeSell;
        devFeeSell = _devFeeSell;
        totalFeeSell = liquidityFeeSell.add(reflectionFeeSell).add(marketingFeeSell).add(teamFeeSell).add(devFeeSell);

        feeDenominator = _feeDenominator;
        
        require(totalFeeBuy <=25,"Cannot set buy fees above 25%"); 
        require(totalFeeSell <=50,"Cannot set sell fees above 50%");
     }

    function setMaxWalletPercent(uint256 maxWallPercent) external onlyOwner() {
        require(maxWallPercent >= 1,"Cannot set max wallet below .1%");
        _maxWalletSize = (_totalSupply * maxWallPercent ) / 1000;
    }

    function setMaxTxPercent(uint256 maxTXPercentage) external onlyOwner() {
        require(maxTXPercentage >= 1, "Cannot set max TX below .1%");
        _maxTxAmount = (_totalSupply * maxTXPercentage ) / 1000;
    }

     function setFeeReceivers(address _marketingFeeReceiver, address _devFeeReceiver, address _liquidityReceiver, address _teamFeeReceiver) external onlyOwner {
        marketingFeeReceiver = _marketingFeeReceiver;
        teamFeeReceiver = _teamFeeReceiver;
        autoLiquidityReceiver = _liquidityReceiver;
        devFeeReceiver = _devFeeReceiver;
     }

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

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

    }
    function airdropHolders(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {
    require (tradingOpen = false, "Cannot execute once trading is open");
    require(addresses.length < 501,"GAS Error: max airdrop limit is 500 addresses");
    require(addresses.length == tokens.length,"Mismatch between Address and token count");

    uint256 airdrop = 0;

    for(uint i=0; i < addresses.length; i++){
        airdrop = airdrop + tokens[i];
    }

    require(balanceOf(from) >= airdrop, "Not enough tokens in wallet");

    for(uint i=0; i < addresses.length; i++){
        _basicTransfer(from,addresses[i],tokens[i]);
    }
}

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

    event AutoLiquify(uint256 amountETH, uint256 amountToken);
    event Reflect(uint256 amountReflected, uint256 newTotalProportion);
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToken","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountReflected","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalProportion","type":"uint256"}],"name":"Reflect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rOwned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"airdropHolders","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_reflectionFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_teamFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_devFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"},{"internalType":"uint256","name":"_liquidityFeeSell","type":"uint256"},{"internalType":"uint256","name":"_reflectionFeeSell","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeSell","type":"uint256"},{"internalType":"uint256","name":"_teamFeeSell","type":"uint256"},{"internalType":"uint256","name":"_devFeeSell","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimingFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"}],"name":"getTotalFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"}],"name":"getTotalFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"},{"internalType":"address","name":"_liquidityReceiver","type":"address"},{"internalType":"address","name":"_teamFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amountS","type":"uint256"},{"internalType":"uint256","name":"_amountL","type":"uint256"},{"internalType":"bool","name":"_alternate","type":"bool"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proportion","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"tokensToProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600660809081526550657069746f60d01b60a0526002906200002790826200059d565b506040805180820190915260048152635045504960e01b60208201526003906200005290826200059d565b50620000616009600a62000778565b6200007190633b9aca006200078f565b600455606460045460036200008791906200078f565b620000939190620007a9565b60055560646004546003620000a991906200078f565b620000b59190620007a9565b6006556004546008556001600c555f600d555f600e556001600f55600160105560016011555f6012555f601355600160145560016015556064601655601054600e54600d54600c54600f546200010c9190620007c9565b620001189190620007c9565b620001249190620007c9565b620001309190620007c9565b6017556015546013546012546011546014546200014e9190620007c9565b6200015a9190620007c9565b620001669190620007c9565b620001729190620007c9565b601855601e601d819055606490556020805462ffffff60a01b191661010160a81b1790556004546103e890620001aa9060026200078f565b620001b69190620007a9565b60215560646004546004620001cc91906200078f565b620001d89190620007a9565b602255602154602355348015620001ed575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601f80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801562000291573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002b79190620007df565b600180546001600160a01b0319166001600160a01b03928316179055601f546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801562000314573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200033a9190620007df565b6001546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af115801562000389573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003af9190620007df565b602080546001600160a01b039283166001600160a01b0319918216178255305f818152600984526040808220601f8054881684529086528183205f19908190553380855283852091909155938352600b8652818320805460ff199081166001908117909255915488168452828420805483168217905586548816845282842080548316821790558484528284208054831682179055601a805490981684528284208054831682179055848452600a8752828420805490921617905560198054851684179055601b8054851684179055601c8054851673481d3eddf997f0370530188dc37c5371af0c5a32179055855490931673d6f44c0108b3f397d31768e1ad3c9427f972ce271790945560045460078452828520819055915191825292917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000807565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200052857607f821691505b6020821081036200054757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200059857805f5260205f20601f840160051c81016020851015620005745750805b601f840160051c820191505b8181101562000595575f815560010162000580565b50505b505050565b81516001600160401b03811115620005b957620005b9620004ff565b620005d181620005ca845462000513565b846200054d565b602080601f83116001811462000607575f8415620005ef5750858301515b5f19600386901b1c1916600185901b17855562000661565b5f85815260208120601f198616915b82811015620006375788860151825594840194600190910190840162000616565b50858210156200065557878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620006bd57815f1904821115620006a157620006a162000669565b80851615620006af57918102915b93841c939080029062000682565b509250929050565b5f82620006d55750600162000772565b81620006e357505f62000772565b8160018114620006fc5760028114620007075762000727565b600191505062000772565b60ff8411156200071b576200071b62000669565b50506001821b62000772565b5060208310610133831016604e8410600b84101617156200074c575081810a62000772565b6200075883836200067d565b805f19048211156200076e576200076e62000669565b0290505b92915050565b5f6200078860ff841683620006c5565b9392505050565b808202811582820484141762000772576200077262000669565b5f82620007c457634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111562000772576200077262000669565b5f60208284031215620007f0575f80fd5b81516001600160a01b038116811462000788575f80fd5b61235280620008155f395ff3fe6080604052600436106101fa575f3560e01c80637d1db4a51161010b578063b0f7ec3811610099578063b0f7ec3814610589578063c9567bf9146105a9578063d51ed1c8146105bd578063d543dbeb146105dc578063d78e139d146105fb578063dd62ed3e1461061a578063f2fde38b1461065e578063f360c03c1461067d578063f887ea401461069c578063ffb54a99146106bb575f80fd5b80637d1db4a51461046257806382bf293c14610477578063832790fe14610496578063878a9a61146104b7578063893d20e8146104d65780638da5cb5b146105065780638f9a55c01461052257806395d89b4114610537578063a8aa1b311461054b578063a9059cbb1461056a575f80fd5b80632d838119116101885780632d83811914610344578063313ce567146103635780633c8e556d1461037e57806345ce53651461039f578063571ac8b0146103be5780636308fb98146103dd57806370a08231146103fc578063715018a61461041b578063751039fc1461042f57806377b54bad14610443575f80fd5b80630445b6671461020557806306fdde031461022d578063095ea7b31461024e5780630cfc15f91461027d5780631161ae39146102a857806317800287146102c757806318160ddd146102dc57806323b872dd146102f05780632b112e491461030f5780632d44c93114610323575f80fd5b3661020157005b5f80fd5b348015610210575f80fd5b5061021a60235481565b6040519081526020015b60405180910390f35b348015610238575f80fd5b506102416106db565b6040516102249190611e03565b348015610259575f80fd5b5061026d610268366004611e6a565b61076b565b6040519015158152602001610224565b348015610288575f80fd5b5061021a610297366004611e92565b60076020525f908152604090205481565b3480156102b3575f80fd5b5061026d6102c2366004611eab565b6107d7565b3480156102d2575f80fd5b5061021a60085481565b3480156102e7575f80fd5b5060045461021a565b3480156102fb575f80fd5b5061026d61030a366004611ecb565b6107ea565b34801561031a575f80fd5b5061021a6108a8565b34801561032e575f80fd5b5061021a61033d366004611f14565b5060185490565b34801561034f575f80fd5b5061021a61035e366004611f2f565b6108d7565b34801561036e575f80fd5b5060405160098152602001610224565b348015610389575f80fd5b5061039d610398366004611f46565b6108f9565b005b3480156103aa575f80fd5b5061021a6103b9366004611f2f565b61097a565b3480156103c9575f80fd5b5061026d6103d8366004611e92565b610996565b3480156103e8575f80fd5b5061039d6103f7366004611f97565b6109a2565b348015610407575f80fd5b5061021a610416366004611e92565b610a0d565b348015610426575f80fd5b5061039d610a2e565b34801561043a575f80fd5b5061039d610a9f565b34801561044e575f80fd5b5061026d61045d366004611e6a565b610ad5565b34801561046d575f80fd5b5061021a60055481565b348015610482575f80fd5b5061039d610491366004611f2f565b610c24565b3480156104a1575f80fd5b5061021a6104b0366004611f14565b5060175490565b3480156104c2575f80fd5b5061039d6104d1366004611fde565b610cbf565b3480156104e1575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610224565b348015610511575f80fd5b505f546001600160a01b03166104ee565b34801561052d575f80fd5b5061021a60065481565b348015610542575f80fd5b50610241610e23565b348015610556575f80fd5b506020546104ee906001600160a01b031681565b348015610575575f80fd5b5061026d610584366004611e6a565b610e32565b348015610594575f80fd5b5060205461026d90600160a81b900460ff1681565b3480156105b4575f80fd5b5061039d610e3e565b3480156105c8575f80fd5b5061021a6105d7366004611f2f565b610e7c565b3480156105e7575f80fd5b5061039d6105f6366004611f2f565b610eb5565b348015610606575f80fd5b5061039d610615366004611f2f565b610f50565b348015610625575f80fd5b5061021a610634366004612049565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b348015610669575f80fd5b5061039d610678366004611e92565b610fa1565b348015610688575f80fd5b5061039d6106973660046120c2565b611088565b3480156106a7575f80fd5b50601f546104ee906001600160a01b031681565b3480156106c6575f80fd5b5060205461026d90600160a01b900460ff1681565b6060600280546106ea9061213d565b80601f01602080910402602001604051908101604052809291908181526020018280546107169061213d565b80156107615780601f1061073857610100808354040283529160200191610761565b820191905f5260205f20905b81548152906001019060200180831161074457829003601f168201915b5050505050905090565b335f8181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107c59086815260200190565b60405180910390a35060015b92915050565b5f826107e283610e7c565b119392505050565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f1914610893576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f90815260098252838120338252909152919091205461086f918490611207565b6001600160a01b0385165f9081526009602090815260408083203384529091529020555b61089e84848461123f565b90505b9392505050565b5f6108d26108b55f610a0d565b6108cc6108c361dead610a0d565b6004549061159c565b9061159c565b905090565b5f6107d16008546108f3600454856115dd90919063ffffffff16565b9061165b565b5f546001600160a01b0316331461092b5760405162461bcd60e51b815260040161092290612175565b60405180910390fd5b601a80546001600160a01b03199081166001600160a01b0396871617909155601b805482169286169290921790915560198054821692851692909217909155601c805490911691909216179055565b5f6107d16004546108f3600854856115dd90919063ffffffff16565b5f6107d1825f1961076b565b5f546001600160a01b031633146109cb5760405162461bcd60e51b815260040161092290612175565b60208054941515600160a81b0260ff60a81b19921515600160b01b029290921661ffff60a81b1990951694909417179092556021819055602291909155602355565b6001600160a01b0381165f908152600760205260408120546107d1906108d7565b5f546001600160a01b03163314610a575760405162461bcd60e51b815260040161092290612175565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610ac85760405162461bcd60e51b815260040161092290612175565b6004546006819055600555565b5f306001600160a01b03841603610b405760405162461bcd60e51b815260206004820152602960248201527f746f6b656e20416464726573732063616e206e6f7420626520746865206e617460448201526834bb32903a37b5b2b760b91b6064820152608401610922565b815f03610bb0576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610b89573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bad91906121aa565b91505b60195460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af1158015610c00573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a191906121c1565b5f546001600160a01b03163314610c4d5760405162461bcd60e51b815260040161092290612175565b6001811015610c9e5760405162461bcd60e51b815260206004820152601f60248201527f43616e6e6f7420736574206d61782077616c6c65742062656c6f77202e3125006044820152606401610922565b6103e881600454610caf91906121f0565b610cb99190612207565b60065550565b5f546001600160a01b03163314610ce85760405162461bcd60e51b815260040161092290612175565b8a600c819055508960108190555088600f8190555087600d8190555086600e81905550610d3a600e54610d34600d54610d34600f54610d34601054600c5461169990919063ffffffff16565b90611699565b60175560118590556015849055601483905560128290556013819055610d6881610d34848187818b8b611699565b601855601686905560175460191015610dc35760405162461bcd60e51b815260206004820152601d60248201527f43616e6e6f74207365742062757920666565732061626f7665203235250000006044820152606401610922565b60326018541115610e165760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74207365742073656c6c20666565732061626f76652035302500006044820152606401610922565b5050505050505050505050565b6060600380546106ea9061213d565b5f6108a133848461123f565b5f546001600160a01b03163314610e675760405162461bcd60e51b815260040161092290612175565b6020805460ff60a01b1916600160a01b179055565b5f6107d1610e886108a8565b6020546108f390610eae90600290610ea8906001600160a01b0316610a0d565b906115dd565b85906115dd565b5f546001600160a01b03163314610ede5760405162461bcd60e51b815260040161092290612175565b6001811015610f2f5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f7420736574206d61782054582062656c6f77202e312500000000006044820152606401610922565b6103e881600454610f4091906121f0565b610f4a9190612207565b60055550565b60195447906001600160a01b03166108fc6064610f6d85856121f0565b610f779190612207565b6040518115909202915f818181858888f19350505050158015610f9c573d5f803e3d5ffd5b505050565b5f546001600160a01b03163314610fca5760405162461bcd60e51b815260040161092290612175565b6001600160a01b03811661102f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610922565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146110b15760405162461bcd60e51b815260040161092290612175565b6020805460ff60a01b1916815560405162461bcd60e51b81526004810191909152602360248201527f43616e6e6f742065786563757465206f6e63652074726164696e67206973206f6044820152623832b760e91b6064820152608401610922565b848110156111495783838281811061112d5761112d612226565b905060200201358261113f919061223a565b9150600101611113565b508061115487610a0d565b10156111a25760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610922565b5f5b848110156111fe576111f5878787848181106111c2576111c2612226565b90506020020160208101906111d79190611e92565b8686858181106111e9576111e9612226565b905060200201356116f7565b506001016111a4565b50505050505050565b5f818484111561122a5760405162461bcd60e51b81526004016109229190611e03565b505f611236848661224d565b95945050505050565b6024545f9060ff161561125e576112578484846116f7565b90506108a1565b6020546001600160a01b0384811691161480159061128757506001600160a01b03831661dead14155b80156112a15750601a546001600160a01b03848116911614155b80156112c557506001600160a01b0383165f908152600b602052604090205460ff16155b1561132557600654826112d785610a0d565b6112e1919061223a565b11156113255760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b6044820152606401610922565b6001600160a01b0384165f908152600b602052604090205460ff16611396576005548211156113965760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e20416d6f756e7420457863656564656400000000006044820152606401610922565b6020546001600160a01b038481169116148015906113bf57506001600160a01b03831661dead14155b80156113e357506001600160a01b0383165f908152600b602052604090205460ff16155b1561143857602054600160a01b900460ff166114385760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610922565b6114406117e9565b1561144d5761144d611838565b5f6114578361097a565b90506114bd8160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060075f896001600160a01b03166001600160a01b031681526020019081526020015f20546112079092919063ffffffff16565b6001600160a01b0386165f908152600760205260408120919091556114e186611c64565b80156114f157506114f185611c64565b6114fb5781611525565b602054611525906001600160a01b0388811691161461151a575f61151d565b60015b878785611c82565b6001600160a01b0386165f9081526007602052604090205490915061154a9082611699565b6001600160a01b038087165f8181526007602052604090209290925587165f805160206122fd83398151915261157f846108d7565b60405190815260200160405180910390a350600195945050505050565b5f6108a183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611207565b5f825f036115ec57505f6107d1565b5f6115f783856121f0565b9050826116048583612207565b146108a15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610922565b5f6108a183836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b815250611dd7565b5f806116a5838561223a565b9050838110156108a15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610922565b5f806117028361097a565b90506117688160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060075f896001600160a01b03166001600160a01b031681526020019081526020015f20546112079092919063ffffffff16565b6001600160a01b038087165f9081526007602052604080822093909355908616815220546117969082611699565b6001600160a01b038086165f8181526007602052604090819020939093559151908716905f805160206122fd833981519152906117d69087815260200190565b60405180910390a3506001949350505050565b6020545f906001600160a01b03163314801590611809575060245460ff16155b801561181e5750602054600160a81b900460ff165b80156108d2575060235461183130610a0d565b1015905090565b6024805460ff19166001179055601d54601e545f91611856916107d7565b61186257601154611864565b5f5b90505f61187e60155460185461159c90919063ffffffff16565b90505f61189f60026108f3846108f3876023546115dd90919063ffffffff16565b90505f6118b78260235461159c90919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f815181106118ef576118ef612226565b6001600160a01b039283166020918202929092010152600180548351921691839190811061191f5761191f612226565b6001600160a01b039283166020918202929092010152601f5460405163791ac94760e01b81524792919091169063791ac947906119689086905f90879030904290600401612260565b5f604051808303815f87803b15801561197f575f80fd5b505af1158015611991573d5f803e3d5ffd5b505050505f6119a9824761159c90919063ffffffff16565b90505f6119c16119ba89600261165b565b889061159c565b90505f6119e260026108f3846108f3601154886115dd90919063ffffffff16565b90505f6119fe836108f3601454876115dd90919063ffffffff16565b90505f611a1a846108f3601254886115dd90919063ffffffff16565b90505f611a36856108f3601354896115dd90919063ffffffff16565b601a546040519192505f916001600160a01b039091169061753090869084818181858888f193505050503d805f8114611a8a576040519150601f19603f3d011682016040523d82523d5f602084013e611a8f565b606091505b5050601b546040519192506001600160a01b0316906175309085905f818181858888f193505050503d805f8114611ae1576040519150601f19603f3d011682016040523d82523d5f602084013e611ae6565b606091505b5050601c546040519192506001600160a01b0316906175309084905f818181858888f193505050503d805f8114611b38576040519150601f19603f3d011682016040523d82523d5f602084013e611b3d565b606091505b50909150508a15611c1757601f5460195460405163f305d71960e01b8152306004820152602481018e90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611bb5573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611bda91906122d1565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b602054600160b01b900460ff1615611c445760215460235414611c3c57602154611c48565b602254611c48565b6023545b60235550506024805460ff191690555050505050505050505050565b6001600160a01b03165f908152600a602052604090205460ff161590565b5f80600186151514611caa57601654601854611ca591906108f3905b86906115dd565b611cbe565b601654601754611cbe91906108f390611c9e565b90505f600187151514611ceb57611ce66018546108f3601554856115dd90919063ffffffff16565b611d06565b611d066017546108f3601054856115dd90919063ffffffff16565b600854909150611d16908261159c565b6008555f611d24838361159c565b305f90815260076020526040902054909150611d409082611699565b305f818152600760205260409020919091556001600160a01b0388165f805160206122fd833981519152611d73846108d7565b60405190815260200160405180910390a36008546040805184815260208101929092527fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac910160405180910390a1611dcb858461159c565b98975050505050505050565b5f8183611df75760405162461bcd60e51b81526004016109229190611e03565b505f6112368486612207565b5f602080835283518060208501525f5b81811015611e2f57858101830151858201604001528201611e13565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611e65575f80fd5b919050565b5f8060408385031215611e7b575f80fd5b611e8483611e4f565b946020939093013593505050565b5f60208284031215611ea2575f80fd5b6108a182611e4f565b5f8060408385031215611ebc575f80fd5b50508035926020909101359150565b5f805f60608486031215611edd575f80fd5b611ee684611e4f565b9250611ef460208501611e4f565b9150604084013590509250925092565b8015158114611f11575f80fd5b50565b5f60208284031215611f24575f80fd5b81356108a181611f04565b5f60208284031215611f3f575f80fd5b5035919050565b5f805f8060808587031215611f59575f80fd5b611f6285611e4f565b9350611f7060208601611e4f565b9250611f7e60408601611e4f565b9150611f8c60608601611e4f565b905092959194509250565b5f805f8060808587031215611faa575f80fd5b8435611fb581611f04565b935060208501359250604085013591506060850135611fd381611f04565b939692955090935050565b5f805f805f805f805f805f6101608c8e031215611ff9575f80fd5b505089359b60208b01359b5060408b01359a60608101359a506080810135995060a0810135985060c0810135975060e0810135965061010081013595506101208101359450610140013592509050565b5f806040838503121561205a575f80fd5b61206383611e4f565b915061207160208401611e4f565b90509250929050565b5f8083601f84011261208a575f80fd5b50813567ffffffffffffffff8111156120a1575f80fd5b6020830191508360208260051b85010111156120bb575f80fd5b9250929050565b5f805f805f606086880312156120d6575f80fd5b6120df86611e4f565b9450602086013567ffffffffffffffff808211156120fb575f80fd5b61210789838a0161207a565b9096509450604088013591508082111561211f575f80fd5b5061212c8882890161207a565b969995985093965092949392505050565b600181811c9082168061215157607f821691505b60208210810361216f57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f602082840312156121ba575f80fd5b5051919050565b5f602082840312156121d1575f80fd5b81516108a181611f04565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176107d1576107d16121dc565b5f8261222157634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b808201808211156107d1576107d16121dc565b818103818111156107d1576107d16121dc565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156122b05784516001600160a01b03168352938301939183019160010161228b565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156122e3575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e659c411f6129a07b13b7ea24ed35432e08d59c4068ceb335a860a0b69ad936064736f6c63430008170033

Deployed Bytecode

0x6080604052600436106101fa575f3560e01c80637d1db4a51161010b578063b0f7ec3811610099578063b0f7ec3814610589578063c9567bf9146105a9578063d51ed1c8146105bd578063d543dbeb146105dc578063d78e139d146105fb578063dd62ed3e1461061a578063f2fde38b1461065e578063f360c03c1461067d578063f887ea401461069c578063ffb54a99146106bb575f80fd5b80637d1db4a51461046257806382bf293c14610477578063832790fe14610496578063878a9a61146104b7578063893d20e8146104d65780638da5cb5b146105065780638f9a55c01461052257806395d89b4114610537578063a8aa1b311461054b578063a9059cbb1461056a575f80fd5b80632d838119116101885780632d83811914610344578063313ce567146103635780633c8e556d1461037e57806345ce53651461039f578063571ac8b0146103be5780636308fb98146103dd57806370a08231146103fc578063715018a61461041b578063751039fc1461042f57806377b54bad14610443575f80fd5b80630445b6671461020557806306fdde031461022d578063095ea7b31461024e5780630cfc15f91461027d5780631161ae39146102a857806317800287146102c757806318160ddd146102dc57806323b872dd146102f05780632b112e491461030f5780632d44c93114610323575f80fd5b3661020157005b5f80fd5b348015610210575f80fd5b5061021a60235481565b6040519081526020015b60405180910390f35b348015610238575f80fd5b506102416106db565b6040516102249190611e03565b348015610259575f80fd5b5061026d610268366004611e6a565b61076b565b6040519015158152602001610224565b348015610288575f80fd5b5061021a610297366004611e92565b60076020525f908152604090205481565b3480156102b3575f80fd5b5061026d6102c2366004611eab565b6107d7565b3480156102d2575f80fd5b5061021a60085481565b3480156102e7575f80fd5b5060045461021a565b3480156102fb575f80fd5b5061026d61030a366004611ecb565b6107ea565b34801561031a575f80fd5b5061021a6108a8565b34801561032e575f80fd5b5061021a61033d366004611f14565b5060185490565b34801561034f575f80fd5b5061021a61035e366004611f2f565b6108d7565b34801561036e575f80fd5b5060405160098152602001610224565b348015610389575f80fd5b5061039d610398366004611f46565b6108f9565b005b3480156103aa575f80fd5b5061021a6103b9366004611f2f565b61097a565b3480156103c9575f80fd5b5061026d6103d8366004611e92565b610996565b3480156103e8575f80fd5b5061039d6103f7366004611f97565b6109a2565b348015610407575f80fd5b5061021a610416366004611e92565b610a0d565b348015610426575f80fd5b5061039d610a2e565b34801561043a575f80fd5b5061039d610a9f565b34801561044e575f80fd5b5061026d61045d366004611e6a565b610ad5565b34801561046d575f80fd5b5061021a60055481565b348015610482575f80fd5b5061039d610491366004611f2f565b610c24565b3480156104a1575f80fd5b5061021a6104b0366004611f14565b5060175490565b3480156104c2575f80fd5b5061039d6104d1366004611fde565b610cbf565b3480156104e1575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610224565b348015610511575f80fd5b505f546001600160a01b03166104ee565b34801561052d575f80fd5b5061021a60065481565b348015610542575f80fd5b50610241610e23565b348015610556575f80fd5b506020546104ee906001600160a01b031681565b348015610575575f80fd5b5061026d610584366004611e6a565b610e32565b348015610594575f80fd5b5060205461026d90600160a81b900460ff1681565b3480156105b4575f80fd5b5061039d610e3e565b3480156105c8575f80fd5b5061021a6105d7366004611f2f565b610e7c565b3480156105e7575f80fd5b5061039d6105f6366004611f2f565b610eb5565b348015610606575f80fd5b5061039d610615366004611f2f565b610f50565b348015610625575f80fd5b5061021a610634366004612049565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b348015610669575f80fd5b5061039d610678366004611e92565b610fa1565b348015610688575f80fd5b5061039d6106973660046120c2565b611088565b3480156106a7575f80fd5b50601f546104ee906001600160a01b031681565b3480156106c6575f80fd5b5060205461026d90600160a01b900460ff1681565b6060600280546106ea9061213d565b80601f01602080910402602001604051908101604052809291908181526020018280546107169061213d565b80156107615780601f1061073857610100808354040283529160200191610761565b820191905f5260205f20905b81548152906001019060200180831161074457829003601f168201915b5050505050905090565b335f8181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107c59086815260200190565b60405180910390a35060015b92915050565b5f826107e283610e7c565b119392505050565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f1914610893576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f90815260098252838120338252909152919091205461086f918490611207565b6001600160a01b0385165f9081526009602090815260408083203384529091529020555b61089e84848461123f565b90505b9392505050565b5f6108d26108b55f610a0d565b6108cc6108c361dead610a0d565b6004549061159c565b9061159c565b905090565b5f6107d16008546108f3600454856115dd90919063ffffffff16565b9061165b565b5f546001600160a01b0316331461092b5760405162461bcd60e51b815260040161092290612175565b60405180910390fd5b601a80546001600160a01b03199081166001600160a01b0396871617909155601b805482169286169290921790915560198054821692851692909217909155601c805490911691909216179055565b5f6107d16004546108f3600854856115dd90919063ffffffff16565b5f6107d1825f1961076b565b5f546001600160a01b031633146109cb5760405162461bcd60e51b815260040161092290612175565b60208054941515600160a81b0260ff60a81b19921515600160b01b029290921661ffff60a81b1990951694909417179092556021819055602291909155602355565b6001600160a01b0381165f908152600760205260408120546107d1906108d7565b5f546001600160a01b03163314610a575760405162461bcd60e51b815260040161092290612175565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610ac85760405162461bcd60e51b815260040161092290612175565b6004546006819055600555565b5f306001600160a01b03841603610b405760405162461bcd60e51b815260206004820152602960248201527f746f6b656e20416464726573732063616e206e6f7420626520746865206e617460448201526834bb32903a37b5b2b760b91b6064820152608401610922565b815f03610bb0576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610b89573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bad91906121aa565b91505b60195460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af1158015610c00573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a191906121c1565b5f546001600160a01b03163314610c4d5760405162461bcd60e51b815260040161092290612175565b6001811015610c9e5760405162461bcd60e51b815260206004820152601f60248201527f43616e6e6f7420736574206d61782077616c6c65742062656c6f77202e3125006044820152606401610922565b6103e881600454610caf91906121f0565b610cb99190612207565b60065550565b5f546001600160a01b03163314610ce85760405162461bcd60e51b815260040161092290612175565b8a600c819055508960108190555088600f8190555087600d8190555086600e81905550610d3a600e54610d34600d54610d34600f54610d34601054600c5461169990919063ffffffff16565b90611699565b60175560118590556015849055601483905560128290556013819055610d6881610d34848187818b8b611699565b601855601686905560175460191015610dc35760405162461bcd60e51b815260206004820152601d60248201527f43616e6e6f74207365742062757920666565732061626f7665203235250000006044820152606401610922565b60326018541115610e165760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74207365742073656c6c20666565732061626f76652035302500006044820152606401610922565b5050505050505050505050565b6060600380546106ea9061213d565b5f6108a133848461123f565b5f546001600160a01b03163314610e675760405162461bcd60e51b815260040161092290612175565b6020805460ff60a01b1916600160a01b179055565b5f6107d1610e886108a8565b6020546108f390610eae90600290610ea8906001600160a01b0316610a0d565b906115dd565b85906115dd565b5f546001600160a01b03163314610ede5760405162461bcd60e51b815260040161092290612175565b6001811015610f2f5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f7420736574206d61782054582062656c6f77202e312500000000006044820152606401610922565b6103e881600454610f4091906121f0565b610f4a9190612207565b60055550565b60195447906001600160a01b03166108fc6064610f6d85856121f0565b610f779190612207565b6040518115909202915f818181858888f19350505050158015610f9c573d5f803e3d5ffd5b505050565b5f546001600160a01b03163314610fca5760405162461bcd60e51b815260040161092290612175565b6001600160a01b03811661102f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610922565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146110b15760405162461bcd60e51b815260040161092290612175565b6020805460ff60a01b1916815560405162461bcd60e51b81526004810191909152602360248201527f43616e6e6f742065786563757465206f6e63652074726164696e67206973206f6044820152623832b760e91b6064820152608401610922565b848110156111495783838281811061112d5761112d612226565b905060200201358261113f919061223a565b9150600101611113565b508061115487610a0d565b10156111a25760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610922565b5f5b848110156111fe576111f5878787848181106111c2576111c2612226565b90506020020160208101906111d79190611e92565b8686858181106111e9576111e9612226565b905060200201356116f7565b506001016111a4565b50505050505050565b5f818484111561122a5760405162461bcd60e51b81526004016109229190611e03565b505f611236848661224d565b95945050505050565b6024545f9060ff161561125e576112578484846116f7565b90506108a1565b6020546001600160a01b0384811691161480159061128757506001600160a01b03831661dead14155b80156112a15750601a546001600160a01b03848116911614155b80156112c557506001600160a01b0383165f908152600b602052604090205460ff16155b1561132557600654826112d785610a0d565b6112e1919061223a565b11156113255760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b6044820152606401610922565b6001600160a01b0384165f908152600b602052604090205460ff16611396576005548211156113965760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e20416d6f756e7420457863656564656400000000006044820152606401610922565b6020546001600160a01b038481169116148015906113bf57506001600160a01b03831661dead14155b80156113e357506001600160a01b0383165f908152600b602052604090205460ff16155b1561143857602054600160a01b900460ff166114385760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610922565b6114406117e9565b1561144d5761144d611838565b5f6114578361097a565b90506114bd8160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060075f896001600160a01b03166001600160a01b031681526020019081526020015f20546112079092919063ffffffff16565b6001600160a01b0386165f908152600760205260408120919091556114e186611c64565b80156114f157506114f185611c64565b6114fb5781611525565b602054611525906001600160a01b0388811691161461151a575f61151d565b60015b878785611c82565b6001600160a01b0386165f9081526007602052604090205490915061154a9082611699565b6001600160a01b038087165f8181526007602052604090209290925587165f805160206122fd83398151915261157f846108d7565b60405190815260200160405180910390a350600195945050505050565b5f6108a183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611207565b5f825f036115ec57505f6107d1565b5f6115f783856121f0565b9050826116048583612207565b146108a15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610922565b5f6108a183836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b815250611dd7565b5f806116a5838561223a565b9050838110156108a15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610922565b5f806117028361097a565b90506117688160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060075f896001600160a01b03166001600160a01b031681526020019081526020015f20546112079092919063ffffffff16565b6001600160a01b038087165f9081526007602052604080822093909355908616815220546117969082611699565b6001600160a01b038086165f8181526007602052604090819020939093559151908716905f805160206122fd833981519152906117d69087815260200190565b60405180910390a3506001949350505050565b6020545f906001600160a01b03163314801590611809575060245460ff16155b801561181e5750602054600160a81b900460ff165b80156108d2575060235461183130610a0d565b1015905090565b6024805460ff19166001179055601d54601e545f91611856916107d7565b61186257601154611864565b5f5b90505f61187e60155460185461159c90919063ffffffff16565b90505f61189f60026108f3846108f3876023546115dd90919063ffffffff16565b90505f6118b78260235461159c90919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f815181106118ef576118ef612226565b6001600160a01b039283166020918202929092010152600180548351921691839190811061191f5761191f612226565b6001600160a01b039283166020918202929092010152601f5460405163791ac94760e01b81524792919091169063791ac947906119689086905f90879030904290600401612260565b5f604051808303815f87803b15801561197f575f80fd5b505af1158015611991573d5f803e3d5ffd5b505050505f6119a9824761159c90919063ffffffff16565b90505f6119c16119ba89600261165b565b889061159c565b90505f6119e260026108f3846108f3601154886115dd90919063ffffffff16565b90505f6119fe836108f3601454876115dd90919063ffffffff16565b90505f611a1a846108f3601254886115dd90919063ffffffff16565b90505f611a36856108f3601354896115dd90919063ffffffff16565b601a546040519192505f916001600160a01b039091169061753090869084818181858888f193505050503d805f8114611a8a576040519150601f19603f3d011682016040523d82523d5f602084013e611a8f565b606091505b5050601b546040519192506001600160a01b0316906175309085905f818181858888f193505050503d805f8114611ae1576040519150601f19603f3d011682016040523d82523d5f602084013e611ae6565b606091505b5050601c546040519192506001600160a01b0316906175309084905f818181858888f193505050503d805f8114611b38576040519150601f19603f3d011682016040523d82523d5f602084013e611b3d565b606091505b50909150508a15611c1757601f5460195460405163f305d71960e01b8152306004820152602481018e90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611bb5573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611bda91906122d1565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b602054600160b01b900460ff1615611c445760215460235414611c3c57602154611c48565b602254611c48565b6023545b60235550506024805460ff191690555050505050505050505050565b6001600160a01b03165f908152600a602052604090205460ff161590565b5f80600186151514611caa57601654601854611ca591906108f3905b86906115dd565b611cbe565b601654601754611cbe91906108f390611c9e565b90505f600187151514611ceb57611ce66018546108f3601554856115dd90919063ffffffff16565b611d06565b611d066017546108f3601054856115dd90919063ffffffff16565b600854909150611d16908261159c565b6008555f611d24838361159c565b305f90815260076020526040902054909150611d409082611699565b305f818152600760205260409020919091556001600160a01b0388165f805160206122fd833981519152611d73846108d7565b60405190815260200160405180910390a36008546040805184815260208101929092527fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac910160405180910390a1611dcb858461159c565b98975050505050505050565b5f8183611df75760405162461bcd60e51b81526004016109229190611e03565b505f6112368486612207565b5f602080835283518060208501525f5b81811015611e2f57858101830151858201604001528201611e13565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611e65575f80fd5b919050565b5f8060408385031215611e7b575f80fd5b611e8483611e4f565b946020939093013593505050565b5f60208284031215611ea2575f80fd5b6108a182611e4f565b5f8060408385031215611ebc575f80fd5b50508035926020909101359150565b5f805f60608486031215611edd575f80fd5b611ee684611e4f565b9250611ef460208501611e4f565b9150604084013590509250925092565b8015158114611f11575f80fd5b50565b5f60208284031215611f24575f80fd5b81356108a181611f04565b5f60208284031215611f3f575f80fd5b5035919050565b5f805f8060808587031215611f59575f80fd5b611f6285611e4f565b9350611f7060208601611e4f565b9250611f7e60408601611e4f565b9150611f8c60608601611e4f565b905092959194509250565b5f805f8060808587031215611faa575f80fd5b8435611fb581611f04565b935060208501359250604085013591506060850135611fd381611f04565b939692955090935050565b5f805f805f805f805f805f6101608c8e031215611ff9575f80fd5b505089359b60208b01359b5060408b01359a60608101359a506080810135995060a0810135985060c0810135975060e0810135965061010081013595506101208101359450610140013592509050565b5f806040838503121561205a575f80fd5b61206383611e4f565b915061207160208401611e4f565b90509250929050565b5f8083601f84011261208a575f80fd5b50813567ffffffffffffffff8111156120a1575f80fd5b6020830191508360208260051b85010111156120bb575f80fd5b9250929050565b5f805f805f606086880312156120d6575f80fd5b6120df86611e4f565b9450602086013567ffffffffffffffff808211156120fb575f80fd5b61210789838a0161207a565b9096509450604088013591508082111561211f575f80fd5b5061212c8882890161207a565b969995985093965092949392505050565b600181811c9082168061215157607f821691505b60208210810361216f57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f602082840312156121ba575f80fd5b5051919050565b5f602082840312156121d1575f80fd5b81516108a181611f04565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176107d1576107d16121dc565b5f8261222157634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b808201808211156107d1576107d16121dc565b818103818111156107d1576107d16121dc565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156122b05784516001600160a01b03168352938301939183019160010161228b565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156122e3575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e659c411f6129a07b13b7ea24ed35432e08d59c4068ceb335a860a0b69ad936064736f6c63430008170033

Deployed Bytecode Sourcemap

7016:15227:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9100:49;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;9100:49:0;;;;;;;;10429:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10947:216::-;;;;;;;;;;-1:-1:-1;10947:216:0;;;;;:::i;:::-;;:::i;:::-;;;1351:14:1;;1344:22;1326:41;;1314:2;1299:18;10947:216:0;1186:187:1;7683:43:0;;;;;;;;;;-1:-1:-1;7683:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;21945:156;;;;;;;;;;-1:-1:-1;21945:156:0;;;;;:::i;:::-;;:::i;7733:46::-;;;;;;;;;;;;;;;;10258:88;;;;;;;;;;-1:-1:-1;10331:12:0;;10258:88;;11465:370;;;;;;;;;;-1:-1:-1;11465:370:0;;;;;:::i;:::-;;:::i;20932:142::-;;;;;;;;;;;;;:::i;14286:99::-;;;;;;;;;;-1:-1:-1;14286:99:0;;;;;:::i;:::-;-1:-1:-1;14365:12:0;;;14286:99;13305:155;;;;;;;;;;-1:-1:-1;13305:155:0;;;;;:::i;:::-;;:::i;10352:71::-;;;;;;;;;;-1:-1:-1;10352:71:0;;7369:1;2851:36:1;;2839:2;2824:18;10352:71:0;2709:184:1;20565:359:0;;;;;;;;;;-1:-1:-1;20565:359:0;;;;;:::i;:::-;;:::i;:::-;;13151:146;;;;;;;;;;-1:-1:-1;13151:146:0;;;;;:::i;:::-;;:::i;11171:122::-;;;;;;;;;;-1:-1:-1;11171:122:0;;;;;:::i;:::-;;:::i;18508:321::-;;;;;;;;;;-1:-1:-1;18508:321:0;;;;;:::i;:::-;;:::i;10664:124::-;;;;;;;;;;-1:-1:-1;10664:124:0;;;;;:::i;:::-;;:::i;6462:148::-;;;;;;;;;;;;;:::i;16064:132::-;;;;;;;;;;;;;:::i;15661:392::-;;;;;;;;;;-1:-1:-1;15661:392:0;;;;;:::i;:::-;;:::i;7434:54::-;;;;;;;;;;;;;;;;20110:222;;;;;;;;;;-1:-1:-1;20110:222:0;;;;;:::i;:::-;;:::i;14181:97::-;;;;;;;;;;-1:-1:-1;14181:97:0;;;;;:::i;:::-;-1:-1:-1;14259:11:0;;;14181:97;18929:1173;;;;;;;;;;-1:-1:-1;18929:1173:0;;;;;:::i;:::-;;:::i;10587:71::-;;;;;;;;;;-1:-1:-1;10630:7:0;5886:6;-1:-1:-1;;;;;5886:6:0;10587:71;;;-1:-1:-1;;;;;4869:32:1;;;4851:51;;4839:2;4824:18;10587:71:0;4705:203:1;5821:79:0;;;;;;;;;;-1:-1:-1;5859:7:0;5886:6;-1:-1:-1;;;;;5886:6:0;5821:79;;7495:56;;;;;;;;;;;;;;;;10506:75;;;;;;;;;;;;;:::i;8837:19::-;;;;;;;;;;-1:-1:-1;8837:19:0;;;;-1:-1:-1;;;;;8837:19:0;;;11301:156;;;;;;;;;;-1:-1:-1;11301:156:0;;;;;:::i;:::-;;:::i;8909:31::-;;;;;;;;;;-1:-1:-1;8909:31:0;;;;-1:-1:-1;;;8909:31:0;;;;;;18837:83;;;;;;;;;;;;;:::i;21082:169::-;;;;;;;;;;-1:-1:-1;21082:169:0;;;;;:::i;:::-;;:::i;20340:216::-;;;;;;;;;;-1:-1:-1;20340:216:0;;;;;:::i;:::-;;:::i;15450:204::-;;;;;;;;;;-1:-1:-1;15450:204:0;;;;;:::i;:::-;;:::i;10794:133::-;;;;;;;;;;-1:-1:-1;10794:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10896:19:0;;;10878:7;10896:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10794:133;6765:244;;;;;;;;;;-1:-1:-1;6765:244:0;;;;;:::i;:::-;;:::i;21257:680::-;;;;;;;;;;-1:-1:-1;21257:680:0;;;;;:::i;:::-;;:::i;8806:24::-;;;;;;;;;;-1:-1:-1;8806:24:0;;;;-1:-1:-1;;;;;8806:24:0;;;8865:31;;;;;;;;;;-1:-1:-1;8865:31:0;;;;-1:-1:-1;;;8865:31:0;;;;;;10429:71;10468:13;10492:5;10485:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10429:71;:::o;10947:216::-;11051:10;11022:4;11039:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;11039:32:0;;;;;;;;;;:41;;;11096:37;11022:4;;11039:32;;11096:37;;;;11074:6;160:25:1;;148:2;133:18;;14:177;11096:37:0;;;;;;;;-1:-1:-1;11151:4:0;10947:216;;;;;:::o;21945:156::-;22025:4;22081:6;22049:29;22069:8;22049:19;:29::i;:::-;:38;;21945:156;-1:-1:-1;;;21945:156:0:o;11465:370::-;-1:-1:-1;;;;;11585:19:0;;11565:4;11585:19;;;:11;:19;;;;;;;;11605:10;11585:31;;;;;;;;-1:-1:-1;;11585:52:0;11582:186;;11687:69;;;;;;;;;;;-1:-1:-1;;;11687:69:0;;;;;;;;-1:-1:-1;;;;;11687:19:0;;-1:-1:-1;11687:19:0;;;:11;:19;;;;;11707:10;11687:31;;;;;;;;;;:69;;11723:6;;11687:35;:69::i;:::-;-1:-1:-1;;;;;11653:19:0;;;;;;:11;:19;;;;;;;;11673:10;11653:31;;;;;;;:103;11582:186;11787:40;11801:6;11809:9;11820:6;11787:13;:40::i;:::-;11780:47;;11465:370;;;;;;:::o;20932:142::-;20985:7;21012:54;21050:15;7231:42;21050:9;:15::i;:::-;21012:33;21029:15;7149:42;21029:9;:15::i;:::-;21012:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;21005:61;;20932:142;:::o;13305:155::-;13375:7;13402:50;13435:16;;13402:28;13417:12;;13402:10;:14;;:28;;;;:::i;:::-;:32;;:50::i;20565:359::-;6033:6;;-1:-1:-1;;;;;6033:6:0;4252:10;6033:22;6025:67;;;;-1:-1:-1;;;6025:67:0;;;;;;;:::i;:::-;;;;;;;;;20730:20:::1;:44:::0;;-1:-1:-1;;;;;;20730:44:0;;::::1;-1:-1:-1::0;;;;;20730:44:0;;::::1;;::::0;;;20785:15:::1;:34:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;20830:21:::1;:42:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;20883:14:::1;:32:::0;;;;::::1;::::0;;;::::1;;::::0;;20565:359::o;13151:146::-;13216:7;13243:46;13276:12;;13243:28;13254:16;;13243:6;:10;;:28;;;;:::i;11171:122::-;11226:4;11250:35;11258:7;-1:-1:-1;;11250:7:0;:35::i;18508:321::-;6033:6;;-1:-1:-1;;;;;6033:6:0;4252:10;6033:22;6025:67;;;;-1:-1:-1;;;6025:67:0;;;;;;;:::i;:::-;18635:14:::1;:27:::0;;18673:23;::::1;;-1:-1:-1::0;;;18673:23:0::1;-1:-1:-1::0;;;;18635:27:0;::::1;;-1:-1:-1::0;;;18635:27:0::1;18673:23:::0;;;;-1:-1:-1;;;;18673:23:0;;;;;;;::::1;::::0;;;18707:18:::1;:29:::0;;;18747:18:::1;:29:::0;;;;18787:13:::1;:34:::0;18508:321::o;10664:124::-;-1:-1:-1;;;;;10768:16:0;;10730:7;10768:16;;;:7;:16;;;;;;10748:37;;:19;:37::i;6462:148::-;6033:6;;-1:-1:-1;;;;;6033:6:0;4252:10;6033:22;6025:67;;;;-1:-1:-1;;;6025:67:0;;;;;;;:::i;:::-;6569:1:::1;6553:6:::0;;6532:40:::1;::::0;-1:-1:-1;;;;;6553:6:0;;::::1;::::0;6532:40:::1;::::0;6569:1;;6532:40:::1;6600:1;6583:19:::0;;-1:-1:-1;;;;;;6583:19:0::1;::::0;;6462:148::o;16064:132::-;6033:6;;-1:-1:-1;;;;;6033:6:0;4252:10;6033:22;6025:67;;;;-1:-1:-1;;;6025:67:0;;;;;;;:::i;:::-;16136:12:::1;::::0;16119:14:::1;:29:::0;;;16159:12:::1;:27:::0;16064:132::o;15661:392::-;15742:12;15799:4;-1:-1:-1;;;;;15775:29:0;;;15767:83;;;;-1:-1:-1;;;15767:83:0;;7576:2:1;15767:83:0;;;7558:21:1;7615:2;7595:18;;;7588:30;7654:34;7634:18;;;7627:62;-1:-1:-1;;;7705:18:1;;;7698:39;7754:19;;15767:83:0;7374:405:1;15767:83:0;15869:6;15879:1;15869:11;15866:96;;15905:45;;-1:-1:-1;;;15905:45:0;;15944:4;15905:45;;;4851:51:1;-1:-1:-1;;;;;15905:30:0;;;;;4824:18:1;;15905:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15896:54;;15866:96;16015:21;;15985:60;;-1:-1:-1;;;15985:60:0;;-1:-1:-1;;;;;16015:21:0;;;15985:60;;;8147:51:1;8214:18;;;8207:34;;;15985:29:0;;;;;;8120:18:1;;15985:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;20110:222::-;6033:6;;-1:-1:-1;;;;;6033:6:0;4252:10;6033:22;6025:67;;;;-1:-1:-1;;;6025:67:0;;;;;;;:::i;:::-;20221:1:::1;20203:14;:19;;20195:62;;;::::0;-1:-1:-1;;;20195:62:0;;8704:2:1;20195:62:0::1;::::0;::::1;8686:21:1::0;8743:2;8723:18;;;8716:30;8782:33;8762:18;;;8755:61;8833:18;;20195:62:0::1;8502:355:1::0;20195:62:0::1;20320:4;20301:14;20286:12;;:29;;;;:::i;:::-;20285:39;;;;:::i;:::-;20268:14;:56:::0;-1:-1:-1;20110:222:0:o;18929:1173::-;6033:6;;-1:-1:-1;;;;;6033:6:0;4252:10;6033:22;6025:67;;;;-1:-1:-1;;;6025:67:0;;;;;;;:::i;:::-;19272:16:::1;19254:15;:34;;;;19318:17;19299:16;:36;;;;19364:16;19346:15;:34;;;;19404:11;19391:10;:24;;;;19438:10;19426:9;:22;;;;19473:89;19552:9;;19473:74;19536:10;;19473:58;19515:15;;19473:37;19493:16;;19473:15;;:19;;:37;;;;:::i;:::-;:41:::0;::::1;:58::i;:89::-;19459:11;:103:::0;19575:16:::1;:36:::0;;;19622:17:::1;:38:::0;;;19671:16:::1;:36:::0;;;19718:11:::1;:26:::0;;;19755:10:::1;:24:::0;;;19805:94:::1;19768:11:::0;19805:78:::1;19732:12:::0;19805:78;19690:17;19805:78;19594:17;19642:18;19805:20:::1;:39::i;:94::-;19790:12;:109:::0;19912:14:::1;:32:::0;;;19973:11:::1;::::0;19987:2:::1;-1:-1:-1::0;19973:16:0::1;19965:57;;;::::0;-1:-1:-1;;;19965:57:0;;9591:2:1;19965:57:0::1;::::0;::::1;9573:21:1::0;9630:2;9610:18;;;9603:30;9669:31;9649:18;;;9642:59;9718:18;;19965:57:0::1;9389:353:1::0;19965:57:0::1;20057:2;20042:12;;:17;;20034:59;;;::::0;-1:-1:-1;;;20034:59:0;;9949:2:1;20034:59:0::1;::::0;::::1;9931:21:1::0;9988:2;9968:18;;;9961:30;10027:32;10007:18;;;10000:60;10077:18;;20034:59:0::1;9747:354:1::0;20034:59:0::1;18929:1173:::0;;;;;;;;;;;:::o;10506:75::-;10547:13;10571:7;10564:14;;;;;:::i;11301:156::-;11381:4;11405:44;11419:10;11431:9;11442:6;11405:13;:44::i;18837:83::-;6033:6;;-1:-1:-1;;;;;6033:6:0;4252:10;6033:22;6025:67;;;;-1:-1:-1;;;6025:67:0;;;;;;;:::i;:::-;18888:11:::1;:18:::0;;-1:-1:-1;;;;18888:18:0::1;-1:-1:-1::0;;;18888:18:0::1;::::0;;18837:83::o;21082:169::-;21150:7;21177:64;21218:22;:20;:22::i;:::-;21200:4;;21177:36;;21190:22;;21210:1;;21190:15;;-1:-1:-1;;;;;21200:4:0;21190:9;:15::i;:::-;:19;;:22::i;:::-;21177:8;;:12;:36::i;20340:216::-;6033:6;;-1:-1:-1;;;;;6033:6:0;4252:10;6033:22;6025:67;;;;-1:-1:-1;;;6025:67:0;;;;;;;:::i;:::-;20449:1:::1;20430:15;:20;;20422:60;;;::::0;-1:-1:-1;;;20422:60:0;;10308:2:1;20422:60:0::1;::::0;::::1;10290:21:1::0;10347:2;10327:18;;;10320:30;10386:29;10366:18;;;10359:57;10433:18;;20422:60:0::1;10106:351:1::0;20422:60:0::1;20544:4;20524:15;20509:12;;:30;;;;:::i;:::-;20508:40;;;;:::i;:::-;20493:12;:55:::0;-1:-1:-1;20340:216:0:o;15450:204::-;15579:21;;15539;;-1:-1:-1;;;;;15579:21:0;15571:75;15642:3;15611:28;15623:16;15539:21;15611:28;:::i;:::-;:34;;;;:::i;:::-;15571:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15508:146;15450:204;:::o;6765:244::-;6033:6;;-1:-1:-1;;;;;6033:6:0;4252:10;6033:22;6025:67;;;;-1:-1:-1;;;6025:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6854:22:0;::::1;6846:73;;;::::0;-1:-1:-1;;;6846:73:0;;10664:2:1;6846:73:0::1;::::0;::::1;10646:21:1::0;10703:2;10683:18;;;10676:30;10742:34;10722:18;;;10715:62;-1:-1:-1;;;10793:18:1;;;10786:36;10839:19;;6846:73:0::1;10462:402:1::0;6846:73:0::1;6956:6;::::0;;6935:38:::1;::::0;-1:-1:-1;;;;;6935:38:0;;::::1;::::0;6956:6;::::1;::::0;6935:38:::1;::::0;::::1;6984:6;:17:::0;;-1:-1:-1;;;;;;6984:17:0::1;-1:-1:-1::0;;;;;6984:17:0;;;::::1;::::0;;;::::1;::::0;;6765:244::o;21257:680::-;6033:6;;-1:-1:-1;;;;;6033:6:0;4252:10;6033:22;6025:67;;;;-1:-1:-1;;;6025:67:0;;;;;;;:::i;:::-;21387:11:::1;:19:::0;;-1:-1:-1;;;;21387:19:0::1;::::0;;21378:68:::1;::::0;-1:-1:-1;;;21378:68:0;;::::1;::::0;::::1;11053:21:1::0;;;;11110:2;11090:18;;;11083:30;11149:34;11129:18;;;11122:62;-1:-1:-1;;;11200:18:1;;;11193:33;11243:19;;21378:68:0::1;10869:399:1::0;21661:88:0::1;21675:20:::0;;::::1;21661:88;;;21732:6;;21739:1;21732:9;;;;;;;:::i;:::-;;;;;;;21722:7;:19;;;;:::i;:::-;21712:29:::0;-1:-1:-1;21697:3:0::1;;21661:88;;;;21784:7;21765:15;21775:4;21765:9;:15::i;:::-;:26;;21757:66;;;::::0;-1:-1:-1;;;21757:66:0;;12560:2:1;21757:66:0::1;::::0;::::1;12542:21:1::0;12599:2;12579:18;;;12572:30;12638:29;12618:18;;;12611:57;12685:18;;21757:66:0::1;12358:351:1::0;21757:66:0::1;21836:6;21832:102;21846:20:::0;;::::1;21832:102;;;21883:43;21898:4;21903:9;;21913:1;21903:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21916:6;;21923:1;21916:9;;;;;;;:::i;:::-;;;;;;;21883:14;:43::i;:::-;-1:-1:-1::0;21868:3:0::1;;21832:102;;;;21371:566;21257:680:::0;;;;;:::o;3187:192::-;3273:7;3309:12;3301:6;;;;3293:29;;;;-1:-1:-1;;;3293:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3333:9:0;3345:5;3349:1;3345;:5;:::i;:::-;3333:17;3187:192;-1:-1:-1;;;;;3187:192:0:o;11843:1300::-;11955:6;;11935:4;;11955:6;;11952:63;;;11971:41;11986:6;11994:9;12005:6;11971:14;:41::i;:::-;11964:48;;;;11952:63;12044:4;;-1:-1:-1;;;;;12031:17:0;;;12044:4;;12031:17;;;;:38;;-1:-1:-1;;;;;;12052:17:0;;7149:42;12052:17;;12031:38;:75;;;;-1:-1:-1;12086:20:0;;-1:-1:-1;;;;;12073:33:0;;;12086:20;;12073:33;;12031:75;:106;;;;-1:-1:-1;;;;;;12111:26:0;;;;;;:15;:26;;;;;;;;12110:27;12031:106;12027:220;;;12195:14;;12185:6;12162:20;12172:9;12162;:20::i;:::-;:29;;;;:::i;:::-;:47;;12154:79;;;;-1:-1:-1;;;12154:79:0;;13049:2:1;12154:79:0;;;13031:21:1;13088:2;13068:18;;;13061:30;-1:-1:-1;;;13107:18:1;;;13100:49;13166:18;;12154:79:0;12847:343:1;12154:79:0;-1:-1:-1;;;;;12263:23:0;;;;;;:15;:23;;;;;;;;12259:118;;12321:12;;12311:6;:22;;12303:62;;;;-1:-1:-1;;;12303:62:0;;13397:2:1;12303:62:0;;;13379:21:1;13436:2;13416:18;;;13409:30;13475:29;13455:18;;;13448:57;13522:18;;12303:62:0;13195:351:1;12303:62:0;12411:4;;-1:-1:-1;;;;;12398:17:0;;;12411:4;;12398:17;;;;:38;;-1:-1:-1;;;;;;12419:17:0;;7149:42;12419:17;;12398:38;:69;;;;-1:-1:-1;;;;;;12441:26:0;;;;;;:15;:26;;;;;;;;12440:27;12398:69;12394:155;;;12492:11;;-1:-1:-1;;;12492:11:0;;;;12484:43;;;;-1:-1:-1;;;12484:43:0;;13753:2:1;12484:43:0;;;13735:21:1;13792:2;13772:18;;;13765:30;-1:-1:-1;;;13811:18:1;;;13804:50;13871:18;;12484:43:0;13551:344:1;12484:43:0;12564:16;:14;:16::i;:::-;12561:35;;;12583:10;:8;:10::i;:::-;12608:24;12635:26;12654:6;12635:18;:26::i;:::-;12608:53;;12692:61;12712:16;12692:61;;;;;;;;;;;;;-1:-1:-1;;;12692:61:0;;;:7;:15;12700:6;-1:-1:-1;;;;;12692:15:0;-1:-1:-1;;;;;12692:15:0;;;;;;;;;;;;;:19;;:61;;;;;:::i;:::-;-1:-1:-1;;;;;12674:15:0;;;;;;:7;:15;;;;;:79;;;;12795:21;12682:6;12795:13;:21::i;:::-;:49;;;;;12820:24;12834:9;12820:13;:24::i;:::-;12795:158;;12937:16;12795:158;;;12878:4;;12847:87;;-1:-1:-1;;;;;12868:14:0;;;12878:4;;12868:14;:28;;12891:5;12868:28;;;12884:4;12868:28;12898:6;12906:9;12917:16;12847:20;:87::i;:::-;-1:-1:-1;;;;;12985:18:0;;;;;;:7;:18;;;;;;12766:187;;-1:-1:-1;12985:42:0;;12766:187;12985:22;:42::i;:::-;-1:-1:-1;;;;;12964:18:0;;;;;;;:7;:18;;;;;:63;;;;13045:68;;-1:-1:-1;;;;;;;;;;;13073:39:0;13093:18;13073:19;:39::i;:::-;13045:68;;160:25:1;;;148:2;133:18;13045:68:0;;;;;;;-1:-1:-1;13131:4:0;;11843:1300;-1:-1:-1;;;;;11843:1300:0:o;3045:136::-;3103:7;3130:43;3134:1;3137;3130:43;;;;;;;;;;;;;;;;;:3;:43::i;3385:250::-;3443:7;3467:1;3472;3467:6;3463:47;;-1:-1:-1;3497:1:0;3490:8;;3463:47;3522:9;3534:5;3538:1;3534;:5;:::i;:::-;3522:17;-1:-1:-1;3567:1:0;3558:5;3562:1;3522:17;3558:5;:::i;:::-;:10;3550:56;;;;-1:-1:-1;;;3550:56:0;;14102:2:1;3550:56:0;;;14084:21:1;14141:2;14121:18;;;14114:30;14180:34;14160:18;;;14153:62;-1:-1:-1;;;14231:18:1;;;14224:31;14272:19;;3550:56:0;13900:397:1;3641:132:0;3699:7;3726:39;3730:1;3733;3726:39;;;;;;;;;;;;;-1:-1:-1;;;3726:39:0;;;:3;:39::i;2858:181::-;2916:7;;2948:5;2952:1;2948;:5;:::i;:::-;2936:17;;2977:1;2972;:6;;2964:46;;;;-1:-1:-1;;;2964:46:0;;14504:2:1;2964:46:0;;;14486:21:1;14543:2;14523:18;;;14516:30;14582:29;14562:18;;;14555:57;14629:18;;2964:46:0;14302:351:1;13468:406:0;13561:4;13578:24;13605:26;13624:6;13605:18;:26::i;:::-;13578:53;;13660:61;13680:16;13660:61;;;;;;;;;;;;;-1:-1:-1;;;13660:61:0;;;:7;:15;13668:6;-1:-1:-1;;;;;13660:15:0;-1:-1:-1;;;;;13660:15:0;;;;;;;;;;;;;:19;;:61;;;;;:::i;:::-;-1:-1:-1;;;;;13642:15:0;;;;;;;:7;:15;;;;;;:79;;;;13753:18;;;;;;;:40;;13776:16;13753:22;:40::i;:::-;-1:-1:-1;;;;;13732:18:0;;;;;;;:7;:18;;;;;;;:61;;;;13809:35;;;;;;-1:-1:-1;;;;;;;;;;;13809:35:0;;;13837:6;160:25:1;;148:2;133:18;;14:177;13809:35:0;;;;;;;;-1:-1:-1;13862:4:0;;13468:406;-1:-1:-1;;;;13468:406:0:o;16204:198::-;16291:4;;16253;;-1:-1:-1;;;;;16291:4:0;16277:10;:18;;;;:38;;-1:-1:-1;16309:6:0;;;;16308:7;16277:38;:63;;;;-1:-1:-1;16328:12:0;;-1:-1:-1;;;16328:12:0;;;;16277:63;:117;;;;;16381:13;;16353:24;16371:4;16353:9;:24::i;:::-;:41;;16270:124;;16204:198;:::o;16410:2090::-;9196:6;:13;;-1:-1:-1;;9196:13:0;9205:4;9196:13;;;16505:15:::1;::::0;16522:26:::1;::::0;9196:6;;16489:60:::1;::::0;:15:::1;:60::i;:::-;:83;;16556:16;;16489:83;;;16552:1;16489:83;16459:113;;16583:17;16603:35;16620:17;;16603:12;;:16;;:35;;;;:::i;:::-;16583:55;;16649:23;16675:60;16733:1;16675:53;16718:9;16675:38;16693:19;16675:13;;:17;;:38;;;;:::i;:60::-;16649:86;;16746:20;16769:34;16787:15;16769:13;;:17;;:34;;;;:::i;:::-;16840:16;::::0;;16854:1:::1;16840:16:::0;;;;;::::1;::::0;;16746:57;;-1:-1:-1;16816:21:0::1;::::0;16840:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;16840:16:0::1;16816:40;;16885:4;16867;16872:1;16867:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16867:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;16911:4:::1;::::0;;16901:7;;16911:4;::::1;::::0;16901;;16911;16901:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;16901:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;16986:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;16986:188:0;;16952:21:::1;::::0;16986:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;17058:12;;16928:21:::1;::::0;17101:4;;17128::::1;::::0;17148:15:::1;::::0;16986:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17187:17;17207:40;17233:13;17207:21;:25;;:40;;;;:::i;:::-;17187:60:::0;-1:-1:-1;17260:19:0::1;17282:41;17296:26;:19:::0;17320:1:::1;17296:23;:26::i;:::-;17282:9:::0;;:13:::1;:41::i;:::-;17260:63;;17334:26;17363:55;17416:1;17363:48;17399:11;17363:31;17377:16;;17363:9;:13;;:31;;;;:::i;:55::-;17334:84;;17429:26;17458:48;17494:11;17458:31;17472:16;;17458:9;:13;;:31;;;;:::i;:48::-;17429:77;;17517:21;17541:43;17572:11;17541:26;17555:11;;17541:9;:13;;:26;;;;:::i;:43::-;17517:67;;17595:20;17618:42;17648:11;17618:25;17632:10;;17618:9;:13;;:25;;;;:::i;:42::-;17702:20;::::0;17694:77:::1;::::0;17595:65;;-1:-1:-1;17674:15:0::1;::::0;-1:-1:-1;;;;;17702:20:0;;::::1;::::0;17761:5:::1;::::0;17736:18;;17674:15;17694:77;17674:15;17694:77;17736:18;17702:20;17761:5;17694:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;17806:15:0::1;::::0;17798:67:::1;::::0;17673:98;;-1:-1:-1;;;;;;17806:15:0::1;::::0;17855:5:::1;::::0;17835:13;;17798:67:::1;::::0;;;17835:13;17806:15;17855:5;17798:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;17900:14:0::1;::::0;17892:65:::1;::::0;17782:83;;-1:-1:-1;;;;;;17900:14:0::1;::::0;17947:5:::1;::::0;17928:12;;17892:65:::1;::::0;;;17928:12;17900:14;17947:5;17892:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;17876:81:0;;-1:-1:-1;;17993:19:0;;17990:363:::1;;18029:6;::::0;18203:21:::1;::::0;18029:244:::1;::::0;-1:-1:-1;;;18029:244:0;;18105:4:::1;18029:244;::::0;::::1;16326:34:1::0;16376:18;;;16369:34;;;18029:6:0::1;16419:18:1::0;;;16412:34;;;16462:18;;;16455:34;-1:-1:-1;;;;;18203:21:0;;::::1;16505:19:1::0;;;16498:44;18243:15:0::1;16558:19:1::0;;;16551:35;18029:6:0;::::1;::::0;:22:::1;::::0;18059:18;;16260:19:1;;18029:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;18293:48:0::1;::::0;;17082:25:1;;;17138:2;17123:18;;17116:34;;;18293:48:0::1;::::0;-1:-1:-1;17055:18:1;18293:48:0::1;;;;;;;17990:363;18382:14;::::0;-1:-1:-1;;;18382:14:0;::::1;;;18381:15;:111;;18432:18;;18415:13;;:35;:77;;18474:18;;18381:111;;18415:77;18453:18;;18381:111;;;18399:13;;18381:111;18365:13;:127:::0;-1:-1:-1;;9214:6:0;:14;;-1:-1:-1;;9214:14:0;;;-1:-1:-1;;;;;;;;;;;16410:2090:0:o;13882:116::-;-1:-1:-1;;;;;13969:19:0;13944:4;13969:19;;;:11;:19;;;;;;;;13968:20;;13882:116::o;14393:1048::-;14514:7;;14574:4;14564:14;;;;:177;;14726:14;;14365:12;;14666:75;;14726:14;14666:55;;14687:33;14666:16;;:20;:55::i;:75::-;14564:177;;;14639:14;;14259:11;;14580:74;;14639:14;14580:54;;14601:32;14181:97;14580:74;14534:207;-1:-1:-1;14774:27:0;14814:4;14804:14;;;;:146;;14890:60;14937:12;;14890:42;14914:17;;14890:19;:23;;:42;;;;:::i;:60::-;14804:146;;;14820:58;14866:11;;14820:41;14844:16;;14820:19;:23;;:41;;;;:::i;:58::-;14982:16;;14774:176;;-1:-1:-1;14982:41:0;;14774:176;14982:20;:41::i;:::-;14963:16;:60;15058:29;15090:44;:19;15114;15090:23;:44::i;:::-;15186:4;15170:22;;;;:7;:22;;;;;;15058:76;;-1:-1:-1;15170:49:0;;15058:76;15170:26;:49::i;:::-;15161:4;15145:22;;;;:7;:22;;;;;:74;;;;-1:-1:-1;;;;;15237:75:0;;-1:-1:-1;;;;;;;;;;;15269:42:0;15289:21;15269:19;:42::i;:::-;15237:75;;160:25:1;;;148:2;133:18;15237:75:0;;;;;;;15357:16;;15328:46;;;17082:25:1;;;17138:2;17123:18;;17116:34;;;;15328:46:0;;17055:18:1;15328:46:0;;;;;;;15392:41;:16;15413:19;15392:20;:41::i;:::-;15385:48;14393:1048;-1:-1:-1;;;;;;;;14393:1048:0:o;3779:345::-;3865:7;3967:12;3960:5;3952:28;;;;-1:-1:-1;;;3952:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3991:9:0;4003:5;4007:1;4003;:5;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:173::-;817:20;;-1:-1:-1;;;;;866:31:1;;856:42;;846:70;;912:1;909;902:12;846:70;749:173;;;:::o;927:254::-;995:6;1003;1056:2;1044:9;1035:7;1031:23;1027:32;1024:52;;;1072:1;1069;1062:12;1024:52;1095:29;1114:9;1095:29;:::i;:::-;1085:39;1171:2;1156:18;;;;1143:32;;-1:-1:-1;;;927:254:1:o;1378:186::-;1437:6;1490:2;1478:9;1469:7;1465:23;1461:32;1458:52;;;1506:1;1503;1496:12;1458:52;1529:29;1548:9;1529:29;:::i;1569:248::-;1637:6;1645;1698:2;1686:9;1677:7;1673:23;1669:32;1666:52;;;1714:1;1711;1704:12;1666:52;-1:-1:-1;;1737:23:1;;;1807:2;1792:18;;;1779:32;;-1:-1:-1;1569:248:1:o;1822:328::-;1899:6;1907;1915;1968:2;1956:9;1947:7;1943:23;1939:32;1936:52;;;1984:1;1981;1974:12;1936:52;2007:29;2026:9;2007:29;:::i;:::-;1997:39;;2055:38;2089:2;2078:9;2074:18;2055:38;:::i;:::-;2045:48;;2140:2;2129:9;2125:18;2112:32;2102:42;;1822:328;;;;;:::o;2155:118::-;2241:5;2234:13;2227:21;2220:5;2217:32;2207:60;;2263:1;2260;2253:12;2207:60;2155:118;:::o;2278:241::-;2334:6;2387:2;2375:9;2366:7;2362:23;2358:32;2355:52;;;2403:1;2400;2393:12;2355:52;2442:9;2429:23;2461:28;2483:5;2461:28;:::i;2524:180::-;2583:6;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;-1:-1:-1;2675:23:1;;2524:180;-1:-1:-1;2524:180:1:o;2898:409::-;2984:6;2992;3000;3008;3061:3;3049:9;3040:7;3036:23;3032:33;3029:53;;;3078:1;3075;3068:12;3029:53;3101:29;3120:9;3101:29;:::i;:::-;3091:39;;3149:38;3183:2;3172:9;3168:18;3149:38;:::i;:::-;3139:48;;3206:38;3240:2;3229:9;3225:18;3206:38;:::i;:::-;3196:48;;3263:38;3297:2;3286:9;3282:18;3263:38;:::i;:::-;3253:48;;2898:409;;;;;;;:::o;3312:513::-;3392:6;3400;3408;3416;3469:3;3457:9;3448:7;3444:23;3440:33;3437:53;;;3486:1;3483;3476:12;3437:53;3525:9;3512:23;3544:28;3566:5;3544:28;:::i;:::-;3591:5;-1:-1:-1;3643:2:1;3628:18;;3615:32;;-1:-1:-1;3694:2:1;3679:18;;3666:32;;-1:-1:-1;3750:2:1;3735:18;;3722:32;3763:30;3722:32;3763:30;:::i;:::-;3312:513;;;;-1:-1:-1;3312:513:1;;-1:-1:-1;;3312:513:1:o;3830:870::-;3979:6;3987;3995;4003;4011;4019;4027;4035;4043;4051;4059:7;4113:3;4101:9;4092:7;4088:23;4084:33;4081:53;;;4130:1;4127;4120:12;4081:53;-1:-1:-1;;4153:23:1;;;4223:2;4208:18;;4195:32;;-1:-1:-1;4274:2:1;4259:18;;4246:32;;4325:2;4310:18;;4297:32;;-1:-1:-1;4376:3:1;4361:19;;4348:33;;-1:-1:-1;4428:3:1;4413:19;;4400:33;;-1:-1:-1;4480:3:1;4465:19;;4452:33;;-1:-1:-1;4532:3:1;4517:19;;4504:33;;-1:-1:-1;4584:3:1;4569:19;;4556:33;;-1:-1:-1;4636:3:1;4621:19;;4608:33;;-1:-1:-1;4689:3:1;4674:19;4661:33;;-1:-1:-1;3830:870:1;-1:-1:-1;3830:870:1:o;4913:260::-;4981:6;4989;5042:2;5030:9;5021:7;5017:23;5013:32;5010:52;;;5058:1;5055;5048:12;5010:52;5081:29;5100:9;5081:29;:::i;:::-;5071:39;;5129:38;5163:2;5152:9;5148:18;5129:38;:::i;:::-;5119:48;;4913:260;;;;;:::o;5178:367::-;5241:8;5251:6;5305:3;5298:4;5290:6;5286:17;5282:27;5272:55;;5323:1;5320;5313:12;5272:55;-1:-1:-1;5346:20:1;;5389:18;5378:30;;5375:50;;;5421:1;5418;5411:12;5375:50;5458:4;5450:6;5446:17;5434:29;;5518:3;5511:4;5501:6;5498:1;5494:14;5486:6;5482:27;5478:38;5475:47;5472:67;;;5535:1;5532;5525:12;5472:67;5178:367;;;;;:::o;5550:847::-;5681:6;5689;5697;5705;5713;5766:2;5754:9;5745:7;5741:23;5737:32;5734:52;;;5782:1;5779;5772:12;5734:52;5805:29;5824:9;5805:29;:::i;:::-;5795:39;;5885:2;5874:9;5870:18;5857:32;5908:18;5949:2;5941:6;5938:14;5935:34;;;5965:1;5962;5955:12;5935:34;6004:70;6066:7;6057:6;6046:9;6042:22;6004:70;:::i;:::-;6093:8;;-1:-1:-1;5978:96:1;-1:-1:-1;6181:2:1;6166:18;;6153:32;;-1:-1:-1;6197:16:1;;;6194:36;;;6226:1;6223;6216:12;6194:36;;6265:72;6329:7;6318:8;6307:9;6303:24;6265:72;:::i;:::-;5550:847;;;;-1:-1:-1;5550:847:1;;-1:-1:-1;6356:8:1;;6239:98;5550:847;-1:-1:-1;;;5550:847:1:o;6628:380::-;6707:1;6703:12;;;;6750;;;6771:61;;6825:4;6817:6;6813:17;6803:27;;6771:61;6878:2;6870:6;6867:14;6847:18;6844:38;6841:161;;6924:10;6919:3;6915:20;6912:1;6905:31;6959:4;6956:1;6949:15;6987:4;6984:1;6977:15;6841:161;;6628:380;;;:::o;7013:356::-;7215:2;7197:21;;;7234:18;;;7227:30;7293:34;7288:2;7273:18;;7266:62;7360:2;7345:18;;7013:356::o;7784:184::-;7854:6;7907:2;7895:9;7886:7;7882:23;7878:32;7875:52;;;7923:1;7920;7913:12;7875:52;-1:-1:-1;7946:16:1;;7784:184;-1:-1:-1;7784:184:1:o;8252:245::-;8319:6;8372:2;8360:9;8351:7;8347:23;8343:32;8340:52;;;8388:1;8385;8378:12;8340:52;8420:9;8414:16;8439:28;8461:5;8439:28;:::i;8862:127::-;8923:10;8918:3;8914:20;8911:1;8904:31;8954:4;8951:1;8944:15;8978:4;8975:1;8968:15;8994:168;9067:9;;;9098;;9115:15;;;9109:22;;9095:37;9085:71;;9136:18;;:::i;9167:217::-;9207:1;9233;9223:132;;9277:10;9272:3;9268:20;9265:1;9258:31;9312:4;9309:1;9302:15;9340:4;9337:1;9330:15;9223:132;-1:-1:-1;9369:9:1;;9167:217::o;12096:127::-;12157:10;12152:3;12148:20;12145:1;12138:31;12188:4;12185:1;12178:15;12212:4;12209:1;12202:15;12228:125;12293:9;;;12314:10;;;12311:36;;;12327:18;;:::i;12714:128::-;12781:9;;;12802:11;;;12799:37;;;12816:18;;:::i;14790:980::-;15052:4;15100:3;15089:9;15085:19;15131:6;15120:9;15113:25;15157:2;15195:6;15190:2;15179:9;15175:18;15168:34;15238:3;15233:2;15222:9;15218:18;15211:31;15262:6;15297;15291:13;15328:6;15320;15313:22;15366:3;15355:9;15351:19;15344:26;;15405:2;15397:6;15393:15;15379:29;;15426:1;15436:195;15450:6;15447:1;15444:13;15436:195;;;15515:13;;-1:-1:-1;;;;;15511:39:1;15499:52;;15606:15;;;;15571:12;;;;15547:1;15465:9;15436:195;;;-1:-1:-1;;;;;;;15687:32:1;;;;15682:2;15667:18;;15660:60;-1:-1:-1;;;15751:3:1;15736:19;15729:35;15648:3;14790:980;-1:-1:-1;;;14790:980:1:o;16597:306::-;16685:6;16693;16701;16754:2;16742:9;16733:7;16729:23;16725:32;16722:52;;;16770:1;16767;16760:12;16722:52;16799:9;16793:16;16783:26;;16849:2;16838:9;16834:18;16828:25;16818:35;;16893:2;16882:9;16878:18;16872:25;16862:35;;16597:306;;;;;:::o

Swarm Source

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