ETH Price: $3,341.76 (-1.13%)

Token

Delta Token (DELTA)
 

Overview

Max Total Supply

1,000,000 DELTA

Holders

176

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 DELTA

Value
$0.00
0x74909Eb15D413cfaC9D127b259d8BB40A892307E
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:
DeltaToken

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**

*/

//SPDX-License-Identifier: Unlicensed


pragma solidity 0.8.17;


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 DeltaToken is IERC20, Ownable {
    using SafeMath for uint256;

    address constant ROUTER        = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address constant WETH          = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address constant DEAD          = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO          = 0x0000000000000000000000000000000000000000;

    string _name = "Delta Token";
    string _symbol = "DELTA";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1 * 10**6 * 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 = 0; 
    uint256 charityFeeBuy = 1; 
    uint256 treasuryFeeBuy = 1; 
    uint256 operationsFeeBuy = 16;  
    uint256 reflectionFeeBuy = 2;   

    uint256 liquidityFeeSell = 0;  
    uint256 charityFeeSell = 1;       
    uint256 treasuryFeeSell = 1;      
    uint256 operationsFeeSell = 86;    
    uint256 reflectionFeeSell = 2;   
    
    uint256 feeDenominator = 100; 

    uint256 totalFeeBuy = operationsFeeBuy + liquidityFeeBuy + charityFeeBuy + treasuryFeeBuy + reflectionFeeBuy;     
    uint256 totalFeeSell = operationsFeeSell + liquidityFeeSell + charityFeeSell + treasuryFeeSell + reflectionFeeSell; 
    
    address autoLiquidityReceiver;
    address operationsFeeReceiver;
    address charityFeeReceiver;
    address treasuryFeeReceiver;

    uint256 targetLiquidity = 25;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;

    bool public tradingOpen = false;

    bool public claimingFees = true; 
    bool alternateSwaps = true; 
    uint256 smallSwapThreshold = _totalSupply * 10 / 1000; 
    uint256 largeSwapThreshold = _totalSupply * 10 / 1000; 

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

    constructor () {

        
        router = IDEXRouter(ROUTER);
        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;
        isFeeExempt[msg.sender] = true;

        autoLiquidityReceiver = msg.sender; 
        charityFeeReceiver = msg.sender;
        treasuryFeeReceiver = 0xA2D5088f558eb699E04E8FC63ba37B63167BC04F;
        operationsFeeReceiver = 0x40acDe10f3e93493110A74847F385b96A39Bd275;

        _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 changeName(string memory newName) external onlyOwner { _name = newName; }
    function changeSymbol(string memory newSymbol) external onlyOwner { _symbol = newSymbol; }
    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 viewFeesBuy() external view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) { 
        return (liquidityFeeBuy, operationsFeeBuy, charityFeeBuy, treasuryFeeSell, reflectionFeeBuy, totalFeeBuy, feeDenominator);
    }

    
    function viewFeesSell() external view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) { 
        return (liquidityFeeSell, operationsFeeSell, charityFeeSell, treasuryFeeSell, reflectionFeeSell, totalFeeSell, feeDenominator);
    }

    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 != operationsFeeReceiver && !isTxLimitExempt[recipient]) {
            require(balanceOf(recipient) + amount <= _maxWalletSize, "Max Wallet 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) ? 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 clearStuckBalance() external onlyOwner {
       (bool success,) = payable(msg.sender).call{value: address(this).balance, gas: 30000}("");
        require(success);
    }

     function clearForeignToken(address tokenAddress, uint256 tokens) public returns (bool) {
        require(isTxLimitExempt[msg.sender]);
     if(tokens == 0){
            tokens = IERC20(tokenAddress).balanceOf(address(this));
        }
        return IERC20(tokenAddress).transfer(msg.sender, tokens);
    }


    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 amountBNB = address(this).balance.sub(balanceBefore);

        uint256 totalBNBFee = _totalFee.sub(dynamicLiquidityFee.div(2));
        uint256 amountBNBLiquidity = amountBNB.mul(liquidityFeeSell).div(totalBNBFee).div(2);
        uint256 amountBNBOperations = amountBNB.mul(operationsFeeSell).div(totalBNBFee);
        uint256 amountBNBcharity = amountBNB.mul(charityFeeSell).div(totalBNBFee);
        uint256 amountBNBtreasury = amountBNB.mul(treasuryFeeSell).div(totalBNBFee);

        (bool tmpSuccess,) = payable(operationsFeeReceiver).call{value: amountBNBOperations, gas: 30000}("");
        (tmpSuccess,) = payable(charityFeeReceiver).call{value: amountBNBcharity, gas: 30000}("");
        (tmpSuccess,) = payable(treasuryFeeReceiver).call{value: amountBNBtreasury, gas: 30000}("");
        

        if(amountToLiquify > 0) {
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountBNBLiquidity, 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 enableTrading () public onlyOwner {
        tradingOpen = true;
                      
    }

       function changeFees(uint256 _liquidityFeeBuy, uint256 _reflectionFeeBuy, uint256 _operationsFeeBuy, uint256 _charityFeeBuy, uint256 _treasuryFeeBuy, uint256 _feeDenominator,
    uint256 _liquidityFeeSell, uint256 _reflectionFeeSell, uint256 _operationsFeeSell, uint256 _charityFeeSell, uint256 _treasuryFeeSell) external onlyOwner {
        liquidityFeeBuy = _liquidityFeeBuy;
        reflectionFeeBuy = _reflectionFeeBuy;
        operationsFeeBuy = _operationsFeeBuy;
        charityFeeBuy = _charityFeeBuy;
        treasuryFeeBuy = _treasuryFeeBuy;
        totalFeeBuy = liquidityFeeBuy.add(reflectionFeeBuy).add(operationsFeeBuy).add(charityFeeBuy).add(treasuryFeeBuy);

        liquidityFeeSell = _liquidityFeeSell;
        reflectionFeeSell = _reflectionFeeSell;
        operationsFeeSell = _operationsFeeSell;
        charityFeeSell = _charityFeeSell;
        treasuryFeeSell = _treasuryFeeSell;
        totalFeeSell = liquidityFeeSell.add(reflectionFeeSell).add(operationsFeeSell).add(charityFeeSell).add(treasuryFeeSell);

        feeDenominator = _feeDenominator;

        require(totalFeeBuy <=95,"Cannot set buy fees above 95%"); // set max fees you can set to here
        require(totalFeeSell <=95,"Cannot set sell fees above 95%"); // set max fees you can set to here
        
     }

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

    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner() {
        require(maxTXPercentage_base1000 >=_totalSupply.mul(2).div(1000),"cannot set max TX below .2%");
        _maxTxAmount = (_totalSupply * maxTXPercentage_base1000 ) / 1000;

    }
    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }

    
    function setFeeReceivers(address _operationsFeeReceiver, address _treasuryFeeReceiver, address _liquidityReceiver, address _charityFeeReceiver) external onlyOwner {
        operationsFeeReceiver = _operationsFeeReceiver;
        charityFeeReceiver = _charityFeeReceiver;
        autoLiquidityReceiver = _liquidityReceiver;
        treasuryFeeReceiver = _treasuryFeeReceiver;
    }

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

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

    }

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

function multiAirdrop(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {

    require(addresses.length < 501,"GAS Error: max airdrop limit is 500 addresses");
    require(addresses.length == tokens.length,"Mismatch between Address and token count");

    uint256 antibot = 0;

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

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

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

    event AutoLiquify(uint256 amountBNB, 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":"amountBNB","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":"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":"_operationsFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_charityFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_treasuryFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"},{"internalType":"uint256","name":"_liquidityFeeSell","type":"uint256"},{"internalType":"uint256","name":"_reflectionFeeSell","type":"uint256"},{"internalType":"uint256","name":"_operationsFeeSell","type":"uint256"},{"internalType":"uint256","name":"_charityFeeSell","type":"uint256"},{"internalType":"uint256","name":"_treasuryFeeSell","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newName","type":"string"}],"name":"changeName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newSymbol","type":"string"}],"name":"changeSymbol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimingFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearForeignToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"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":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiAirdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_operationsFeeReceiver","type":"address"},{"internalType":"address","name":"_treasuryFeeReceiver","type":"address"},{"internalType":"address","name":"_liquidityReceiver","type":"address"},{"internalType":"address","name":"_charityFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","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"},{"inputs":[],"name":"viewFeesBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewFeesSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600b60809081526a2232b63a30902a37b5b2b760a91b60a0526001906200002c90826200053d565b5060408051808201909152600581526444454c544160d81b60208201526002906200005890826200053d565b50620000676009600a6200071e565b6200007690620f424062000736565b6003818155606491620000899162000736565b62000095919062000750565b60045560646003546003620000ab919062000736565b620000b7919062000750565b6005556003546007556000600b556001600c556001600d556010600e556002600f55600060105560016011556001601255605660135560026014556064601555600f54600d54600c54600b54600e5462000112919062000773565b6200011e919062000773565b6200012a919062000773565b62000136919062000773565b60165560145460125460115460105460135462000154919062000773565b62000160919062000773565b6200016c919062000773565b62000178919062000773565b6017556019601c556064601d55601f805462ffffff60a01b191661010160a81b1790556003546103e890620001af90600a62000736565b620001bb919062000750565b6020556103e8600354600a620001d2919062000736565b620001de919062000750565b602155602054602255348015620001f457600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601e80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200029b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c1919062000789565b6040516364e329cb60e11b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260048201523060248201526001600160a01b03919091169063c9c65396906044016020604051808303816000875af115801562000324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034a919062000789565b601f80546001600160a01b039283166001600160a01b0319918216178255306000818152600860209081526040808320601e805489168552818452828520600019908190553380875292855283862055948452600a8352818420805460ff1990811660019081179092559554891685528285208054871682179055965490971683528083208054851687179055868352808320805485168717905560098252808320805490941690951790925560188054841686179055601a8054841686179055601b8054841673a2d5088f558eb699e04e8fc63ba37b63167bc04f179055601980549093167340acde10f3e93493110a74847f385b96a39bd275179092556003546006909152828220819055915190917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916200048a91815260200190565b60405180910390a3620007b4565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620004c357607f821691505b602082108103620004e457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200053857600081815260208120601f850160051c81016020861015620005135750805b601f850160051c820191505b8181101562000534578281556001016200051f565b5050505b505050565b81516001600160401b0381111562000559576200055962000498565b62000571816200056a8454620004ae565b84620004ea565b602080601f831160018114620005a95760008415620005905750858301515b600019600386901b1c1916600185901b17855562000534565b600085815260208120601f198616915b82811015620005da57888601518255948401946001909101908401620005b9565b5085821015620005f95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200066057816000190482111562000644576200064462000609565b808516156200065257918102915b93841c939080029062000624565b509250929050565b600082620006795750600162000718565b81620006885750600062000718565b8160018114620006a15760028114620006ac57620006cc565b600191505062000718565b60ff841115620006c057620006c062000609565b50506001821b62000718565b5060208310610133831016604e8410600b8410161715620006f1575081810a62000718565b620006fd83836200061f565b806000190482111562000714576200071462000609565b0290505b92915050565b60006200072f60ff84168362000668565b9392505050565b808202811582820484141762000718576200071862000609565b6000826200076e57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000718576200071862000609565b6000602082840312156200079c57600080fd5b81516001600160a01b03811681146200072f57600080fd5b6128a080620007c46000396000f3fe6080604052600436106102765760003560e01c8063715018a61161014f578063a9059cbb116100c1578063dd62ed3e1161007a578063dd62ed3e1461077c578063f0a9e365146107c2578063f2fde38b146107e2578063f84ba65d14610802578063f887ea4014610822578063ffb54a991461084257600080fd5b8063a9059cbb146106b4578063b0f7ec38146106d4578063b78e7edb146106f5578063b93bdb5f14610715578063bd9ab5371461073c578063d51ed1c81461075c57600080fd5b80638a8c523c116101135780638a8c523c146106165780638da5cb5b1461062b5780638f9a55c01461064957806395d89b411461065f578063a3895fff14610674578063a8aa1b311461069457600080fd5b8063715018a6146105775780637d1db4a51461058c578063832790fe146105a2578063878a9a61146105c4578063893d20e8146105e457600080fd5b80632d838119116101e85780635353a2d8116101ac5780635353a2d81461047f578063571ac8b01461049f578063613f930f146104bf5780636308fb9814610517578063658d4b7f1461053757806370a082311461055757600080fd5b80632d838119146103ee578063313ce5671461040e578063364333f41461042a5780633c8e556d1461043f57806345ce53651461045f57600080fd5b80631161ae391161023a5780631161ae391461034c578063178002871461036c57806318160ddd1461038257806323b872dd146103975780632b112e49146103b75780632d44c931146103cc57600080fd5b80630445b6671461028257806306fdde03146102ab57806309302dc6146102cd578063095ea7b3146102ef5780630cfc15f91461031f57600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b5061029860225481565b6040519081526020015b60405180910390f35b3480156102b757600080fd5b506102c0610863565b6040516102a29190612114565b3480156102d957600080fd5b506102ed6102e8366004612162565b6108f5565b005b3480156102fb57600080fd5b5061030f61030a366004612197565b6109a8565b60405190151581526020016102a2565b34801561032b57600080fd5b5061029861033a3660046121c1565b60066020526000908152604090205481565b34801561035857600080fd5b5061030f6103673660046121dc565b610a15565b34801561037857600080fd5b5061029860075481565b34801561038e57600080fd5b50600354610298565b3480156103a357600080fd5b5061030f6103b23660046121fe565b610a29565b3480156103c357600080fd5b50610298610aeb565b3480156103d857600080fd5b506102986103e7366004612248565b5060175490565b3480156103fa57600080fd5b50610298610409366004612162565b610b1c565b34801561041a57600080fd5b50604051600981526020016102a2565b34801561043657600080fd5b506102ed610b3f565b34801561044b57600080fd5b506102ed61045a366004612265565b610bc6565b34801561046b57600080fd5b5061029861047a366004612162565b610c3f565b34801561048b57600080fd5b506102ed61049a3660046122cf565b610c5c565b3480156104ab57600080fd5b5061030f6104ba3660046121c1565b610c96565b3480156104cb57600080fd5b50600b54600e54600c54601254600f546016546015545b604080519788526020880196909652948601939093526060850191909152608084015260a083015260c082015260e0016102a2565b34801561052357600080fd5b506102ed610532366004612380565b610ca4565b34801561054357600080fd5b506102ed6105523660046123ca565b610d10565b34801561056357600080fd5b506102986105723660046121c1565b610d65565b34801561058357600080fd5b506102ed610d87565b34801561059857600080fd5b5061029860045481565b3480156105ae57600080fd5b506102986105bd366004612248565b5060165490565b3480156105d057600080fd5b506102ed6105df366004612401565b610dfb565b3480156105f057600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102a2565b34801561062257600080fd5b506102ed610f60565b34801561063757600080fd5b506000546001600160a01b03166105fe565b34801561065557600080fd5b5061029860055481565b34801561066b57600080fd5b506102c0610f9f565b34801561068057600080fd5b506102ed61068f3660046122cf565b610fae565b3480156106a057600080fd5b50601f546105fe906001600160a01b031681565b3480156106c057600080fd5b5061030f6106cf366004612197565b610fe4565b3480156106e057600080fd5b50601f5461030f90600160a81b900460ff1681565b34801561070157600080fd5b506102ed6107103660046124bf565b610ff1565b34801561072157600080fd5b506010546013546011546012546014546017546015546104e2565b34801561074857600080fd5b506102ed610757366004612162565b6111ef565b34801561076857600080fd5b50610298610777366004612162565b6112a5565b34801561078857600080fd5b50610298610797366004612540565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b3480156107ce57600080fd5b5061030f6107dd366004612197565b6112df565b3480156107ee57600080fd5b506102ed6107fd3660046121c1565b6113df565b34801561080e57600080fd5b506102ed61081d3660046123ca565b6114c9565b34801561082e57600080fd5b50601e546105fe906001600160a01b031681565b34801561084e57600080fd5b50601f5461030f90600160a01b900460ff1681565b60606001805461087290612573565b80601f016020809104026020016040519081016040528092919081815260200182805461089e90612573565b80156108eb5780601f106108c0576101008083540402835291602001916108eb565b820191906000526020600020905b8154815290600101906020018083116108ce57829003601f168201915b5050505050905090565b6000546001600160a01b031633146109285760405162461bcd60e51b815260040161091f906125ad565b60405180910390fd5b6103e860035461093891906125f8565b8110156109875760405162461bcd60e51b815260206004820152601f60248201527f63616e6e6f7420736574206d61782077616c6c65742062656c6f77202e312500604482015260640161091f565b6103e881600354610998919061261a565b6109a291906125f8565b60055550565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a039086815260200190565b60405180910390a35060015b92915050565b600082610a21836112a5565b119392505050565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610ad6576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600882528381203382529091529190912054610ab191849061151e565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610ae1848484611558565b90505b9392505050565b6000610b17610afa6000610d65565b610b11610b0861dead610d65565b60035490611857565b90611857565b905090565b6000610a0f600754610b396003548561189990919063ffffffff16565b9061191b565b6000546001600160a01b03163314610b695760405162461bcd60e51b815260040161091f906125ad565b604051600090339061753090479084818181858888f193505050503d8060008114610bb0576040519150601f19603f3d011682016040523d82523d6000602084013e610bb5565b606091505b5050905080610bc357600080fd5b50565b6000546001600160a01b03163314610bf05760405162461bcd60e51b815260040161091f906125ad565b601980546001600160a01b03199081166001600160a01b0396871617909155601a805482169286169290921790915560188054821692851692909217909155601b805490911691909216179055565b6000610a0f600354610b396007548561189990919063ffffffff16565b6000546001600160a01b03163314610c865760405162461bcd60e51b815260040161091f906125ad565b6001610c928282612680565b5050565b6000610a0f826000196109a8565b6000546001600160a01b03163314610cce5760405162461bcd60e51b815260040161091f906125ad565b601f8054941515600160a81b0260ff60a81b19921515600160b01b029290921661ffff60a81b1990951694909417179092556020819055602191909155602255565b6000546001600160a01b03163314610d3a5760405162461bcd60e51b815260040161091f906125ad565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6001600160a01b038116600090815260066020526040812054610a0f90610b1c565b6000546001600160a01b03163314610db15760405162461bcd60e51b815260040161091f906125ad565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610e255760405162461bcd60e51b815260040161091f906125ad565b8a600b8190555089600f8190555088600e8190555087600c8190555086600d81905550610e77600d54610e71600c54610e71600e54610e71600f54600b5461195d90919063ffffffff16565b9061195d565b60165560108590556014849055601383905560118290556012819055610ea581610e71848187818b8b61195d565b6017556015869055601654605f1015610f005760405162461bcd60e51b815260206004820152601d60248201527f43616e6e6f74207365742062757920666565732061626f766520393525000000604482015260640161091f565b605f6017541115610f535760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74207365742073656c6c20666565732061626f7665203935250000604482015260640161091f565b5050505050505050505050565b6000546001600160a01b03163314610f8a5760405162461bcd60e51b815260040161091f906125ad565b601f805460ff60a01b1916600160a01b179055565b60606002805461087290612573565b6000546001600160a01b03163314610fd85760405162461bcd60e51b815260040161091f906125ad565b6002610c928282612680565b6000610ae4338484611558565b6000546001600160a01b0316331461101b5760405162461bcd60e51b815260040161091f906125ad565b6101f583106110825760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b606482015260840161091f565b8281146110e25760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b606482015260840161091f565b6000805b848110156111265783838281811061110057611100612740565b90506020020135826111129190612756565b91508061111e81612769565b9150506110e6565b508061113187610d65565b101561117f5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015260640161091f565b60005b848110156111e6576111d3878787848181106111a0576111a0612740565b90506020020160208101906111b591906121c1565b8686858181106111c7576111c7612740565b905060200201356119bc565b50806111de81612769565b915050611182565b50505050505050565b6000546001600160a01b031633146112195760405162461bcd60e51b815260040161091f906125ad565b6112356103e8610b39600260035461189990919063ffffffff16565b8110156112845760405162461bcd60e51b815260206004820152601b60248201527f63616e6e6f7420736574206d61782054582062656c6f77202e32250000000000604482015260640161091f565b6103e881600354611295919061261a565b61129f91906125f8565b60045550565b6000610a0f6112b2610aeb565b601f54610b39906112d8906002906112d2906001600160a01b0316610d65565b90611899565b8590611899565b336000908152600a602052604081205460ff166112fb57600080fd5b8160000361136e576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136b9190612782565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af11580156113bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae4919061279b565b6000546001600160a01b031633146114095760405162461bcd60e51b815260040161091f906125ad565b6001600160a01b03811661146e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161091f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114f35760405162461bcd60e51b815260040161091f906125ad565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b600081848411156115425760405162461bcd60e51b815260040161091f9190612114565b50600061154f84866127b8565b95945050505050565b60235460009060ff1615611578576115718484846119bc565b9050610ae4565b601f546001600160a01b038481169116148015906115a157506001600160a01b03831661dead14155b80156115bb57506019546001600160a01b03848116911614155b80156115e057506001600160a01b0383166000908152600a602052604090205460ff16155b1561164057600554826115f285610d65565b6115fc9190612756565b11156116405760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b604482015260640161091f565b601f546001600160a01b0384811691161480159061166957506001600160a01b03831661dead14155b801561168e57506001600160a01b0383166000908152600a602052604090205460ff16155b156116e357601f54600160a01b900460ff166116e35760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161091f565b6116eb611ac6565b156116f8576116f8611b16565b600061170383610c3f565b905061176b8160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060066000896001600160a01b03166001600160a01b031681526020019081526020016000205461151e9092919063ffffffff16565b6001600160a01b038616600090815260066020908152604080832093909355600990529081205460ff16156117a057816117cb565b601f546117cb906001600160a01b038881169116146117c05760006117c3565b60015b878785611f79565b6001600160a01b0386166000908152600660205260409020549091506117f1908261195d565b6001600160a01b0380871660008181526006602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61183a84610b1c565b60405190815260200160405180910390a350600195945050505050565b6000610ae483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061151e565b6000826000036118ab57506000610a0f565b60006118b7838561261a565b9050826118c485836125f8565b14610ae45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161091f565b6000610ae483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120e6565b60008061196a8385612756565b905083811015610ae45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161091f565b6000806119c883610c3f565b9050611a308160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060066000896001600160a01b03166001600160a01b031681526020019081526020016000205461151e9092919063ffffffff16565b6001600160a01b038087166000908152600660205260408082209390935590861681522054611a5f908261195d565b6001600160a01b0380861660008181526006602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611ab39087815260200190565b60405180910390a3506001949350505050565b601f546000906001600160a01b03163314801590611ae7575060235460ff16155b8015611afc5750601f54600160a81b900460ff165b8015610b175750602254611b0f30610d65565b1015905090565b6023805460ff19166001179055601c54601d54600091611b3591610a15565b611b4157601054611b44565b60005b90506000611b5f60145460175461185790919063ffffffff16565b90506000611b816002610b3984610b398760225461189990919063ffffffff16565b90506000611b9a8260225461185790919063ffffffff16565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611bd457611bd4612740565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611c1c57611c1c612740565b6001600160a01b039283166020918202929092010152601e5460405163791ac94760e01b81524792919091169063791ac94790611c669086906000908790309042906004016127cb565b600060405180830381600087803b158015611c8057600080fd5b505af1158015611c94573d6000803e3d6000fd5b505050506000611cad824761185790919063ffffffff16565b90506000611cc6611cbf89600261191b565b8890611857565b90506000611ce86002610b3984610b396010548861189990919063ffffffff16565b90506000611d0583610b396013548761189990919063ffffffff16565b90506000611d2284610b396011548861189990919063ffffffff16565b90506000611d3f85610b396012548961189990919063ffffffff16565b6019546040519192506000916001600160a01b039091169061753090869084818181858888f193505050503d8060008114611d96576040519150601f19603f3d011682016040523d82523d6000602084013e611d9b565b606091505b5050601a546040519192506001600160a01b0316906175309085906000818181858888f193505050503d8060008114611df0576040519150601f19603f3d011682016040523d82523d6000602084013e611df5565b606091505b5050601b546040519192506001600160a01b0316906175309084906000818181858888f193505050503d8060008114611e4a576040519150601f19603f3d011682016040523d82523d6000602084013e611e4f565b606091505b50909150508a15611f2c57601e5460185460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611eca573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611eef919061283c565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b601f54600160b01b900460ff1615611f595760205460225414611f5157602054611f5d565b602154611f5d565b6022545b60225550506023805460ff191690555050505050505050505050565b600080600186151514611fa257601554601754611f9d9190610b39905b8690611899565b611fb6565b601554601654611fb69190610b3990611f96565b90506000600187151514611fe457611fdf601754610b396014548561189990919063ffffffff16565b611fff565b611fff601654610b39600f548561189990919063ffffffff16565b60075490915061200f9082611857565b600755600061201e8383611857565b3060009081526006602052604090205490915061203b908261195d565b306000818152600660205260409020919091556001600160a01b0388167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61208284610b1c565b60405190815260200160405180910390a36007546040805184815260208101929092527fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac910160405180910390a16120da8584611857565b98975050505050505050565b600081836121075760405162461bcd60e51b815260040161091f9190612114565b50600061154f84866125f8565b600060208083528351808285015260005b8181101561214157858101830151858201604001528201612125565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561217457600080fd5b5035919050565b80356001600160a01b038116811461219257600080fd5b919050565b600080604083850312156121aa57600080fd5b6121b38361217b565b946020939093013593505050565b6000602082840312156121d357600080fd5b610ae48261217b565b600080604083850312156121ef57600080fd5b50508035926020909101359150565b60008060006060848603121561221357600080fd5b61221c8461217b565b925061222a6020850161217b565b9150604084013590509250925092565b8015158114610bc357600080fd5b60006020828403121561225a57600080fd5b8135610ae48161223a565b6000806000806080858703121561227b57600080fd5b6122848561217b565b93506122926020860161217b565b92506122a06040860161217b565b91506122ae6060860161217b565b905092959194509250565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156122e157600080fd5b813567ffffffffffffffff808211156122f957600080fd5b818401915084601f83011261230d57600080fd5b81358181111561231f5761231f6122b9565b604051601f8201601f19908116603f01168101908382118183101715612347576123476122b9565b8160405282815287602084870101111561236057600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000806000806080858703121561239657600080fd5b84356123a18161223a565b9350602085013592506040850135915060608501356123bf8161223a565b939692955090935050565b600080604083850312156123dd57600080fd5b6123e68361217b565b915060208301356123f68161223a565b809150509250929050565b60008060008060008060008060008060006101608c8e03121561242357600080fd5b505089359b60208b01359b5060408b01359a60608101359a506080810135995060a0810135985060c0810135975060e0810135965061010081013595506101208101359450610140013592509050565b60008083601f84011261248557600080fd5b50813567ffffffffffffffff81111561249d57600080fd5b6020830191508360208260051b85010111156124b857600080fd5b9250929050565b6000806000806000606086880312156124d757600080fd5b6124e08661217b565b9450602086013567ffffffffffffffff808211156124fd57600080fd5b61250989838a01612473565b9096509450604088013591508082111561252257600080fd5b5061252f88828901612473565b969995985093965092949392505050565b6000806040838503121561255357600080fd5b61255c8361217b565b915061256a6020840161217b565b90509250929050565b600181811c9082168061258757607f821691505b6020821081036125a757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008261261557634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610a0f57610a0f6125e2565b601f82111561267b57600081815260208120601f850160051c810160208610156126585750805b601f850160051c820191505b8181101561267757828155600101612664565b5050505b505050565b815167ffffffffffffffff81111561269a5761269a6122b9565b6126ae816126a88454612573565b84612631565b602080601f8311600181146126e357600084156126cb5750858301515b600019600386901b1c1916600185901b178555612677565b600085815260208120601f198616915b82811015612712578886015182559484019460019091019084016126f3565b50858210156127305787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b80820180821115610a0f57610a0f6125e2565b60006001820161277b5761277b6125e2565b5060010190565b60006020828403121561279457600080fd5b5051919050565b6000602082840312156127ad57600080fd5b8151610ae48161223a565b81810381811115610a0f57610a0f6125e2565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561281b5784516001600160a01b0316835293830193918301916001016127f6565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561285157600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212203549e50a0818794c1f61aad2b910681a221ed01f2ed15453a45606b40c7017bc64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102765760003560e01c8063715018a61161014f578063a9059cbb116100c1578063dd62ed3e1161007a578063dd62ed3e1461077c578063f0a9e365146107c2578063f2fde38b146107e2578063f84ba65d14610802578063f887ea4014610822578063ffb54a991461084257600080fd5b8063a9059cbb146106b4578063b0f7ec38146106d4578063b78e7edb146106f5578063b93bdb5f14610715578063bd9ab5371461073c578063d51ed1c81461075c57600080fd5b80638a8c523c116101135780638a8c523c146106165780638da5cb5b1461062b5780638f9a55c01461064957806395d89b411461065f578063a3895fff14610674578063a8aa1b311461069457600080fd5b8063715018a6146105775780637d1db4a51461058c578063832790fe146105a2578063878a9a61146105c4578063893d20e8146105e457600080fd5b80632d838119116101e85780635353a2d8116101ac5780635353a2d81461047f578063571ac8b01461049f578063613f930f146104bf5780636308fb9814610517578063658d4b7f1461053757806370a082311461055757600080fd5b80632d838119146103ee578063313ce5671461040e578063364333f41461042a5780633c8e556d1461043f57806345ce53651461045f57600080fd5b80631161ae391161023a5780631161ae391461034c578063178002871461036c57806318160ddd1461038257806323b872dd146103975780632b112e49146103b75780632d44c931146103cc57600080fd5b80630445b6671461028257806306fdde03146102ab57806309302dc6146102cd578063095ea7b3146102ef5780630cfc15f91461031f57600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b5061029860225481565b6040519081526020015b60405180910390f35b3480156102b757600080fd5b506102c0610863565b6040516102a29190612114565b3480156102d957600080fd5b506102ed6102e8366004612162565b6108f5565b005b3480156102fb57600080fd5b5061030f61030a366004612197565b6109a8565b60405190151581526020016102a2565b34801561032b57600080fd5b5061029861033a3660046121c1565b60066020526000908152604090205481565b34801561035857600080fd5b5061030f6103673660046121dc565b610a15565b34801561037857600080fd5b5061029860075481565b34801561038e57600080fd5b50600354610298565b3480156103a357600080fd5b5061030f6103b23660046121fe565b610a29565b3480156103c357600080fd5b50610298610aeb565b3480156103d857600080fd5b506102986103e7366004612248565b5060175490565b3480156103fa57600080fd5b50610298610409366004612162565b610b1c565b34801561041a57600080fd5b50604051600981526020016102a2565b34801561043657600080fd5b506102ed610b3f565b34801561044b57600080fd5b506102ed61045a366004612265565b610bc6565b34801561046b57600080fd5b5061029861047a366004612162565b610c3f565b34801561048b57600080fd5b506102ed61049a3660046122cf565b610c5c565b3480156104ab57600080fd5b5061030f6104ba3660046121c1565b610c96565b3480156104cb57600080fd5b50600b54600e54600c54601254600f546016546015545b604080519788526020880196909652948601939093526060850191909152608084015260a083015260c082015260e0016102a2565b34801561052357600080fd5b506102ed610532366004612380565b610ca4565b34801561054357600080fd5b506102ed6105523660046123ca565b610d10565b34801561056357600080fd5b506102986105723660046121c1565b610d65565b34801561058357600080fd5b506102ed610d87565b34801561059857600080fd5b5061029860045481565b3480156105ae57600080fd5b506102986105bd366004612248565b5060165490565b3480156105d057600080fd5b506102ed6105df366004612401565b610dfb565b3480156105f057600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102a2565b34801561062257600080fd5b506102ed610f60565b34801561063757600080fd5b506000546001600160a01b03166105fe565b34801561065557600080fd5b5061029860055481565b34801561066b57600080fd5b506102c0610f9f565b34801561068057600080fd5b506102ed61068f3660046122cf565b610fae565b3480156106a057600080fd5b50601f546105fe906001600160a01b031681565b3480156106c057600080fd5b5061030f6106cf366004612197565b610fe4565b3480156106e057600080fd5b50601f5461030f90600160a81b900460ff1681565b34801561070157600080fd5b506102ed6107103660046124bf565b610ff1565b34801561072157600080fd5b506010546013546011546012546014546017546015546104e2565b34801561074857600080fd5b506102ed610757366004612162565b6111ef565b34801561076857600080fd5b50610298610777366004612162565b6112a5565b34801561078857600080fd5b50610298610797366004612540565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b3480156107ce57600080fd5b5061030f6107dd366004612197565b6112df565b3480156107ee57600080fd5b506102ed6107fd3660046121c1565b6113df565b34801561080e57600080fd5b506102ed61081d3660046123ca565b6114c9565b34801561082e57600080fd5b50601e546105fe906001600160a01b031681565b34801561084e57600080fd5b50601f5461030f90600160a01b900460ff1681565b60606001805461087290612573565b80601f016020809104026020016040519081016040528092919081815260200182805461089e90612573565b80156108eb5780601f106108c0576101008083540402835291602001916108eb565b820191906000526020600020905b8154815290600101906020018083116108ce57829003601f168201915b5050505050905090565b6000546001600160a01b031633146109285760405162461bcd60e51b815260040161091f906125ad565b60405180910390fd5b6103e860035461093891906125f8565b8110156109875760405162461bcd60e51b815260206004820152601f60248201527f63616e6e6f7420736574206d61782077616c6c65742062656c6f77202e312500604482015260640161091f565b6103e881600354610998919061261a565b6109a291906125f8565b60055550565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a039086815260200190565b60405180910390a35060015b92915050565b600082610a21836112a5565b119392505050565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610ad6576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600882528381203382529091529190912054610ab191849061151e565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610ae1848484611558565b90505b9392505050565b6000610b17610afa6000610d65565b610b11610b0861dead610d65565b60035490611857565b90611857565b905090565b6000610a0f600754610b396003548561189990919063ffffffff16565b9061191b565b6000546001600160a01b03163314610b695760405162461bcd60e51b815260040161091f906125ad565b604051600090339061753090479084818181858888f193505050503d8060008114610bb0576040519150601f19603f3d011682016040523d82523d6000602084013e610bb5565b606091505b5050905080610bc357600080fd5b50565b6000546001600160a01b03163314610bf05760405162461bcd60e51b815260040161091f906125ad565b601980546001600160a01b03199081166001600160a01b0396871617909155601a805482169286169290921790915560188054821692851692909217909155601b805490911691909216179055565b6000610a0f600354610b396007548561189990919063ffffffff16565b6000546001600160a01b03163314610c865760405162461bcd60e51b815260040161091f906125ad565b6001610c928282612680565b5050565b6000610a0f826000196109a8565b6000546001600160a01b03163314610cce5760405162461bcd60e51b815260040161091f906125ad565b601f8054941515600160a81b0260ff60a81b19921515600160b01b029290921661ffff60a81b1990951694909417179092556020819055602191909155602255565b6000546001600160a01b03163314610d3a5760405162461bcd60e51b815260040161091f906125ad565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6001600160a01b038116600090815260066020526040812054610a0f90610b1c565b6000546001600160a01b03163314610db15760405162461bcd60e51b815260040161091f906125ad565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610e255760405162461bcd60e51b815260040161091f906125ad565b8a600b8190555089600f8190555088600e8190555087600c8190555086600d81905550610e77600d54610e71600c54610e71600e54610e71600f54600b5461195d90919063ffffffff16565b9061195d565b60165560108590556014849055601383905560118290556012819055610ea581610e71848187818b8b61195d565b6017556015869055601654605f1015610f005760405162461bcd60e51b815260206004820152601d60248201527f43616e6e6f74207365742062757920666565732061626f766520393525000000604482015260640161091f565b605f6017541115610f535760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74207365742073656c6c20666565732061626f7665203935250000604482015260640161091f565b5050505050505050505050565b6000546001600160a01b03163314610f8a5760405162461bcd60e51b815260040161091f906125ad565b601f805460ff60a01b1916600160a01b179055565b60606002805461087290612573565b6000546001600160a01b03163314610fd85760405162461bcd60e51b815260040161091f906125ad565b6002610c928282612680565b6000610ae4338484611558565b6000546001600160a01b0316331461101b5760405162461bcd60e51b815260040161091f906125ad565b6101f583106110825760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b606482015260840161091f565b8281146110e25760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b606482015260840161091f565b6000805b848110156111265783838281811061110057611100612740565b90506020020135826111129190612756565b91508061111e81612769565b9150506110e6565b508061113187610d65565b101561117f5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015260640161091f565b60005b848110156111e6576111d3878787848181106111a0576111a0612740565b90506020020160208101906111b591906121c1565b8686858181106111c7576111c7612740565b905060200201356119bc565b50806111de81612769565b915050611182565b50505050505050565b6000546001600160a01b031633146112195760405162461bcd60e51b815260040161091f906125ad565b6112356103e8610b39600260035461189990919063ffffffff16565b8110156112845760405162461bcd60e51b815260206004820152601b60248201527f63616e6e6f7420736574206d61782054582062656c6f77202e32250000000000604482015260640161091f565b6103e881600354611295919061261a565b61129f91906125f8565b60045550565b6000610a0f6112b2610aeb565b601f54610b39906112d8906002906112d2906001600160a01b0316610d65565b90611899565b8590611899565b336000908152600a602052604081205460ff166112fb57600080fd5b8160000361136e576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136b9190612782565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af11580156113bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae4919061279b565b6000546001600160a01b031633146114095760405162461bcd60e51b815260040161091f906125ad565b6001600160a01b03811661146e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161091f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114f35760405162461bcd60e51b815260040161091f906125ad565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b600081848411156115425760405162461bcd60e51b815260040161091f9190612114565b50600061154f84866127b8565b95945050505050565b60235460009060ff1615611578576115718484846119bc565b9050610ae4565b601f546001600160a01b038481169116148015906115a157506001600160a01b03831661dead14155b80156115bb57506019546001600160a01b03848116911614155b80156115e057506001600160a01b0383166000908152600a602052604090205460ff16155b1561164057600554826115f285610d65565b6115fc9190612756565b11156116405760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b604482015260640161091f565b601f546001600160a01b0384811691161480159061166957506001600160a01b03831661dead14155b801561168e57506001600160a01b0383166000908152600a602052604090205460ff16155b156116e357601f54600160a01b900460ff166116e35760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161091f565b6116eb611ac6565b156116f8576116f8611b16565b600061170383610c3f565b905061176b8160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060066000896001600160a01b03166001600160a01b031681526020019081526020016000205461151e9092919063ffffffff16565b6001600160a01b038616600090815260066020908152604080832093909355600990529081205460ff16156117a057816117cb565b601f546117cb906001600160a01b038881169116146117c05760006117c3565b60015b878785611f79565b6001600160a01b0386166000908152600660205260409020549091506117f1908261195d565b6001600160a01b0380871660008181526006602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61183a84610b1c565b60405190815260200160405180910390a350600195945050505050565b6000610ae483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061151e565b6000826000036118ab57506000610a0f565b60006118b7838561261a565b9050826118c485836125f8565b14610ae45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161091f565b6000610ae483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120e6565b60008061196a8385612756565b905083811015610ae45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161091f565b6000806119c883610c3f565b9050611a308160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060066000896001600160a01b03166001600160a01b031681526020019081526020016000205461151e9092919063ffffffff16565b6001600160a01b038087166000908152600660205260408082209390935590861681522054611a5f908261195d565b6001600160a01b0380861660008181526006602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611ab39087815260200190565b60405180910390a3506001949350505050565b601f546000906001600160a01b03163314801590611ae7575060235460ff16155b8015611afc5750601f54600160a81b900460ff165b8015610b175750602254611b0f30610d65565b1015905090565b6023805460ff19166001179055601c54601d54600091611b3591610a15565b611b4157601054611b44565b60005b90506000611b5f60145460175461185790919063ffffffff16565b90506000611b816002610b3984610b398760225461189990919063ffffffff16565b90506000611b9a8260225461185790919063ffffffff16565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611bd457611bd4612740565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611c1c57611c1c612740565b6001600160a01b039283166020918202929092010152601e5460405163791ac94760e01b81524792919091169063791ac94790611c669086906000908790309042906004016127cb565b600060405180830381600087803b158015611c8057600080fd5b505af1158015611c94573d6000803e3d6000fd5b505050506000611cad824761185790919063ffffffff16565b90506000611cc6611cbf89600261191b565b8890611857565b90506000611ce86002610b3984610b396010548861189990919063ffffffff16565b90506000611d0583610b396013548761189990919063ffffffff16565b90506000611d2284610b396011548861189990919063ffffffff16565b90506000611d3f85610b396012548961189990919063ffffffff16565b6019546040519192506000916001600160a01b039091169061753090869084818181858888f193505050503d8060008114611d96576040519150601f19603f3d011682016040523d82523d6000602084013e611d9b565b606091505b5050601a546040519192506001600160a01b0316906175309085906000818181858888f193505050503d8060008114611df0576040519150601f19603f3d011682016040523d82523d6000602084013e611df5565b606091505b5050601b546040519192506001600160a01b0316906175309084906000818181858888f193505050503d8060008114611e4a576040519150601f19603f3d011682016040523d82523d6000602084013e611e4f565b606091505b50909150508a15611f2c57601e5460185460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611eca573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611eef919061283c565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b601f54600160b01b900460ff1615611f595760205460225414611f5157602054611f5d565b602154611f5d565b6022545b60225550506023805460ff191690555050505050505050505050565b600080600186151514611fa257601554601754611f9d9190610b39905b8690611899565b611fb6565b601554601654611fb69190610b3990611f96565b90506000600187151514611fe457611fdf601754610b396014548561189990919063ffffffff16565b611fff565b611fff601654610b39600f548561189990919063ffffffff16565b60075490915061200f9082611857565b600755600061201e8383611857565b3060009081526006602052604090205490915061203b908261195d565b306000818152600660205260409020919091556001600160a01b0388167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61208284610b1c565b60405190815260200160405180910390a36007546040805184815260208101929092527fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac910160405180910390a16120da8584611857565b98975050505050505050565b600081836121075760405162461bcd60e51b815260040161091f9190612114565b50600061154f84866125f8565b600060208083528351808285015260005b8181101561214157858101830151858201604001528201612125565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561217457600080fd5b5035919050565b80356001600160a01b038116811461219257600080fd5b919050565b600080604083850312156121aa57600080fd5b6121b38361217b565b946020939093013593505050565b6000602082840312156121d357600080fd5b610ae48261217b565b600080604083850312156121ef57600080fd5b50508035926020909101359150565b60008060006060848603121561221357600080fd5b61221c8461217b565b925061222a6020850161217b565b9150604084013590509250925092565b8015158114610bc357600080fd5b60006020828403121561225a57600080fd5b8135610ae48161223a565b6000806000806080858703121561227b57600080fd5b6122848561217b565b93506122926020860161217b565b92506122a06040860161217b565b91506122ae6060860161217b565b905092959194509250565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156122e157600080fd5b813567ffffffffffffffff808211156122f957600080fd5b818401915084601f83011261230d57600080fd5b81358181111561231f5761231f6122b9565b604051601f8201601f19908116603f01168101908382118183101715612347576123476122b9565b8160405282815287602084870101111561236057600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000806000806080858703121561239657600080fd5b84356123a18161223a565b9350602085013592506040850135915060608501356123bf8161223a565b939692955090935050565b600080604083850312156123dd57600080fd5b6123e68361217b565b915060208301356123f68161223a565b809150509250929050565b60008060008060008060008060008060006101608c8e03121561242357600080fd5b505089359b60208b01359b5060408b01359a60608101359a506080810135995060a0810135985060c0810135975060e0810135965061010081013595506101208101359450610140013592509050565b60008083601f84011261248557600080fd5b50813567ffffffffffffffff81111561249d57600080fd5b6020830191508360208260051b85010111156124b857600080fd5b9250929050565b6000806000806000606086880312156124d757600080fd5b6124e08661217b565b9450602086013567ffffffffffffffff808211156124fd57600080fd5b61250989838a01612473565b9096509450604088013591508082111561252257600080fd5b5061252f88828901612473565b969995985093965092949392505050565b6000806040838503121561255357600080fd5b61255c8361217b565b915061256a6020840161217b565b90509250929050565b600181811c9082168061258757607f821691505b6020821081036125a757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008261261557634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610a0f57610a0f6125e2565b601f82111561267b57600081815260208120601f850160051c810160208610156126585750805b601f850160051c820191505b8181101561267757828155600101612664565b5050505b505050565b815167ffffffffffffffff81111561269a5761269a6122b9565b6126ae816126a88454612573565b84612631565b602080601f8311600181146126e357600084156126cb5750858301515b600019600386901b1c1916600185901b178555612677565b600085815260208120601f198616915b82811015612712578886015182559484019460019091019084016126f3565b50858210156127305787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b80820180821115610a0f57610a0f6125e2565b60006001820161277b5761277b6125e2565b5060010190565b60006020828403121561279457600080fd5b5051919050565b6000602082840312156127ad57600080fd5b8151610ae48161223a565b81810381811115610a0f57610a0f6125e2565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561281b5784516001600160a01b0316835293830193918301916001016127f6565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561285157600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212203549e50a0818794c1f61aad2b910681a221ed01f2ed15453a45606b40c7017bc64736f6c63430008110033

Deployed Bytecode Sourcemap

6836:16160:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9119:49;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;9119:49:0;;;;;;;;10343:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;20530:277::-;;;;;;;;;;-1:-1:-1;20530:277:0;;;;;:::i;:::-;;:::i;:::-;;11570:216;;;;;;;;;;-1:-1:-1;11570:216:0;;;;;:::i;:::-;;:::i;:::-;;;1536:14:1;;1529:22;1511:41;;1499:2;1484:18;11570:216:0;1371:187:1;7654:43:0;;;;;;;;;;-1:-1:-1;7654:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;22089:156;;;;;;;;;;-1:-1:-1;22089:156:0;;;;;:::i;:::-;;:::i;7704:46::-;;;;;;;;;;;;;;;;10172:88;;;;;;;;;;-1:-1:-1;10245:12:0;;10172:88;;12088:370;;;;;;;;;;-1:-1:-1;12088:370:0;;;;;:::i;:::-;;:::i;21762:142::-;;;;;;;;;;;;;:::i;14756:99::-;;;;;;;;;;-1:-1:-1;14756:99:0;;;;;:::i;:::-;-1:-1:-1;14835:12:0;;;14756:99;13773:155;;;;;;;;;;-1:-1:-1;13773:155:0;;;;;:::i;:::-;;:::i;10266:71::-;;;;;;;;;;-1:-1:-1;10266:71:0;;7340:1;2851:36:1;;2839:2;2824:18;10266:71:0;2709:184:1;15919:181:0;;;;;;;;;;;;;:::i;21369:385::-;;;;;;;;;;-1:-1:-1;21369:385:0;;;;;:::i;:::-;;:::i;13619:146::-;;;;;;;;;;-1:-1:-1;13619:146:0;;;;;:::i;:::-;;:::i;10420:82::-;;;;;;;;;;-1:-1:-1;10420:82:0;;;;;:::i;:::-;;:::i;11794:122::-;;;;;;;;;;-1:-1:-1;11794:122:0;;;;;:::i;:::-;;:::i;11042:250::-;;;;;;;;;;-1:-1:-1;11171:15:0;;11188:16;;11206:13;;11221:15;;11238:16;;11256:11;;11269:14;;11042:250;;;;4686:25:1;;;4742:2;4727:18;;4720:34;;;;4770:18;;;4763:34;;;;4828:2;4813:18;;4806:34;;;;4871:3;4856:19;;4849:35;4915:3;4900:19;;4893:35;4959:3;4944:19;;4937:35;4673:3;4658:19;11042:250:0;4371:607:1;18761:321:0;;;;;;;;;;-1:-1:-1;18761:321:0;;;;;:::i;:::-;;:::i;21101:119::-;;;;;;;;;;-1:-1:-1;21101:119:0;;;;;:::i;:::-;;:::i;10762:124::-;;;;;;;;;;-1:-1:-1;10762:124:0;;;;;:::i;:::-;;:::i;6282:148::-;;;;;;;;;;;;;:::i;7405:54::-;;;;;;;;;;;;;;;;14651:97;;;;;;;;;;-1:-1:-1;14651:97:0;;;;;:::i;:::-;-1:-1:-1;14729:11:0;;;14651:97;19205:1318;;;;;;;;;;-1:-1:-1;19205:1318:0;;;;;:::i;:::-;;:::i;10685:71::-;;;;;;;;;;-1:-1:-1;10728:7:0;5706:6;-1:-1:-1;;;;;5706:6:0;10685:71;;;-1:-1:-1;;;;;6860:32:1;;;6842:51;;6830:2;6815:18;10685:71:0;6696:203:1;19090:104:0;;;;;;;;;;;;;:::i;5641:79::-;;;;;;;;;;-1:-1:-1;5679:7:0;5706:6;-1:-1:-1;;;;;5706:6:0;5641:79;;7466:56;;;;;;;;;;;;;;;;10604:75;;;;;;;;;;;;;:::i;10508:90::-;;;;;;;;;;-1:-1:-1;10508:90:0;;;;;:::i;:::-;;:::i;8854:19::-;;;;;;;;;;-1:-1:-1;8854:19:0;;;;-1:-1:-1;;;;;8854:19:0;;;11924:156;;;;;;;;;;-1:-1:-1;11924:156:0;;;;;:::i;:::-;;:::i;8922:31::-;;;;;;;;;;-1:-1:-1;8922:31:0;;;;-1:-1:-1;;;8922:31:0;;;;;;22249:605;;;;;;;;;;-1:-1:-1;22249:605:0;;;;;:::i;:::-;;:::i;11306:256::-;;;;;;;;;;-1:-1:-1;11436:16:0;;11454:17;;11473:14;;11489:15;;11506:17;;11525:12;;11539:14;;11306:256;;20815:280;;;;;;;;;;-1:-1:-1;20815:280:0;;;;;:::i;:::-;;:::i;21912:169::-;;;;;;;;;;-1:-1:-1;21912:169:0;;;;;:::i;:::-;;:::i;10892:133::-;;;;;;;;;;-1:-1:-1;10892:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10994:19:0;;;10976:7;10994:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10892:133;16109:312;;;;;;;;;;-1:-1:-1;16109:312:0;;;;;:::i;:::-;;:::i;6585:244::-;;;;;;;;;;-1:-1:-1;6585:244:0;;;;;:::i;:::-;;:::i;21228:127::-;;;;;;;;;;-1:-1:-1;21228:127:0;;;;;:::i;:::-;;:::i;8823:24::-;;;;;;;;;;-1:-1:-1;8823:24:0;;;;-1:-1:-1;;;;;8823:24:0;;;8882:31;;;;;;;;;;-1:-1:-1;8882:31:0;;;;-1:-1:-1;;;8882:31:0;;;;;;10343:71;10382:13;10406:5;10399:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10343:71;:::o;20530:277::-;5853:6;;-1:-1:-1;;;;;5853:6:0;4072:10;5853:22;5845:67;;;;-1:-1:-1;;;5845:67:0;;;;;;;:::i;:::-;;;;;;;;;20683:4:::1;20668:12;;:19;;;;:::i;:::-;20641:23;:46;;20633:90;;;::::0;-1:-1:-1;;;20633:90:0;;9921:2:1;20633:90:0::1;::::0;::::1;9903:21:1::0;9960:2;9940:18;;;9933:30;9999:33;9979:18;;;9972:61;10050:18;;20633:90:0::1;9719:355:1::0;20633:90:0::1;20795:4;20767:23;20752:12;;:38;;;;:::i;:::-;20751:48;;;;:::i;:::-;20734:14;:65:::0;-1:-1:-1;20530:277:0:o;11570:216::-;11674:10;11645:4;11662:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;11662:32:0;;;;;;;;;;:41;;;11719:37;11645:4;;11662:32;;11719:37;;;;11697:6;160:25:1;;148:2;133:18;;14:177;11719:37:0;;;;;;;;-1:-1:-1;11774:4:0;11570:216;;;;;:::o;22089:156::-;22169:4;22225:6;22193:29;22213:8;22193:19;:29::i;:::-;:38;;22089:156;-1:-1:-1;;;22089:156:0:o;12088:370::-;-1:-1:-1;;;;;12208:19:0;;12188:4;12208:19;;;:11;:19;;;;;;;;12228:10;12208:31;;;;;;;;-1:-1:-1;;12208:52:0;12205:186;;12310:69;;;;;;;;;;;-1:-1:-1;;;12310:69:0;;;;;;;;-1:-1:-1;;;;;12310:19:0;;-1:-1:-1;12310:19:0;;;:11;:19;;;;;12330:10;12310:31;;;;;;;;;;:69;;12346:6;;12310:35;:69::i;:::-;-1:-1:-1;;;;;12276:19:0;;;;;;:11;:19;;;;;;;;12296:10;12276:31;;;;;;;:103;12205:186;12410:40;12424:6;12432:9;12443:6;12410:13;:40::i;:::-;12403:47;;12088:370;;;;;;:::o;21762:142::-;21815:7;21842:54;21880:15;7196:42;21880:9;:15::i;:::-;21842:33;21859:15;7114:42;21859:9;:15::i;:::-;21842:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;21835:61;;21762:142;:::o;13773:155::-;13843:7;13870:50;13903:16;;13870:28;13885:12;;13870:10;:14;;:28;;;;:::i;:::-;:32;;:50::i;15919:181::-;5853:6;;-1:-1:-1;;;;;5853:6:0;4072:10;5853:22;5845:67;;;;-1:-1:-1;;;5845:67:0;;;;;;;:::i;:::-;15995:70:::1;::::0;15978:12:::1;::::0;16003:10:::1;::::0;16055:5:::1;::::0;16027:21:::1;::::0;15978:12;15995:70;15978:12;15995:70;16027:21;16003:10;16055:5;15995:70:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15977:88;;;16084:7;16076:16;;;::::0;::::1;;15967:133;15919:181::o:0;21369:385::-;5853:6;;-1:-1:-1;;;;;5853:6:0;4072:10;5853:22;5845:67;;;;-1:-1:-1;;;5845:67:0;;;;;;;:::i;:::-;21543:21:::1;:46:::0;;-1:-1:-1;;;;;;21543:46:0;;::::1;-1:-1:-1::0;;;;;21543:46:0;;::::1;;::::0;;;21600:18:::1;:40:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;21651:21:::1;:42:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;21704:19:::1;:42:::0;;;;::::1;::::0;;;::::1;;::::0;;21369:385::o;13619:146::-;13684:7;13711:46;13744:12;;13711:28;13722:16;;13711:6;:10;;:28;;;;:::i;10420:82::-;5853:6;;-1:-1:-1;;;;;5853:6:0;4072:10;5853:22;5845:67;;;;-1:-1:-1;;;5845:67:0;;;;;;;:::i;:::-;10484:5:::1;:15;10492:7:::0;10484:5;:15:::1;:::i;:::-;;10420:82:::0;:::o;11794:122::-;11849:4;11873:35;11881:7;-1:-1:-1;;11873:7:0;:35::i;18761:321::-;5853:6;;-1:-1:-1;;;;;5853:6:0;4072:10;5853:22;5845:67;;;;-1:-1:-1;;;5845:67:0;;;;;;;:::i;:::-;18888:14:::1;:27:::0;;18926:23;::::1;;-1:-1:-1::0;;;18926:23:0::1;-1:-1:-1::0;;;;18888:27:0;::::1;;-1:-1:-1::0;;;18888:27:0::1;18926:23:::0;;;;-1:-1:-1;;;;18926:23:0;;;;;;;::::1;::::0;;;18960:18:::1;:29:::0;;;19000:18:::1;:29:::0;;;;19040:13:::1;:34:::0;18761:321::o;21101:119::-;5853:6;;-1:-1:-1;;;;;5853:6:0;4072:10;5853:22;5845:67;;;;-1:-1:-1;;;5845:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21184:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;21184:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21101:119::o;10762:124::-;-1:-1:-1;;;;;10866:16:0;;10828:7;10866:16;;;:7;:16;;;;;;10846:37;;:19;:37::i;6282:148::-;5853:6;;-1:-1:-1;;;;;5853:6:0;4072:10;5853:22;5845:67;;;;-1:-1:-1;;;5845:67:0;;;;;;;:::i;:::-;6389:1:::1;6373:6:::0;;6352:40:::1;::::0;-1:-1:-1;;;;;6373:6:0;;::::1;::::0;6352:40:::1;::::0;6389:1;;6352:40:::1;6420:1;6403:19:::0;;-1:-1:-1;;;;;;6403:19:0::1;::::0;;6282:148::o;19205:1318::-;5853:6;;-1:-1:-1;;;;;5853:6:0;4072:10;5853:22;5845:67;;;;-1:-1:-1;;;5845:67:0;;;;;;;:::i;:::-;19566:16:::1;19548:15;:34;;;;19612:17;19593:16;:36;;;;19659:17;19640:16;:36;;;;19703:14;19687:13;:30;;;;19745:15;19728:14;:32;;;;19785:98;19868:14;;19785:78;19849:13;;19785:59;19827:16;;19785:37;19805:16;;19785:15;;:19;;:37;;;;:::i;:::-;:41:::0;::::1;:59::i;:98::-;19771:11;:112:::0;19896:16:::1;:36:::0;;;19943:17:::1;:38:::0;;;19992:17:::1;:38:::0;;;20041:14:::1;:32:::0;;;20084:15:::1;:34:::0;;;20144:103:::1;20102:16:::0;20144:82:::1;20058:15:::0;20144:82;20012:18;20144:82;19915:17;19963:18;20144:20:::1;:39::i;:103::-;20129:12;:118:::0;20260:14:::1;:32:::0;;;20313:11:::1;::::0;20327:2:::1;-1:-1:-1::0;20313:16:0::1;20305:57;;;::::0;-1:-1:-1;;;20305:57:0;;12868:2:1;20305:57:0::1;::::0;::::1;12850:21:1::0;12907:2;12887:18;;;12880:30;12946:31;12926:18;;;12919:59;12995:18;;20305:57:0::1;12666:353:1::0;20305:57:0::1;20432:2;20417:12;;:17;;20409:59;;;::::0;-1:-1:-1;;;20409:59:0;;13226:2:1;20409:59:0::1;::::0;::::1;13208:21:1::0;13265:2;13245:18;;;13238:30;13304:32;13284:18;;;13277:60;13354:18;;20409:59:0::1;13024:354:1::0;20409:59:0::1;19205:1318:::0;;;;;;;;;;;:::o;19090:104::-;5853:6;;-1:-1:-1;;;;;5853:6:0;4072:10;5853:22;5845:67;;;;-1:-1:-1;;;5845:67:0;;;;;;;:::i;:::-;19144:11:::1;:18:::0;;-1:-1:-1;;;;19144:18:0::1;-1:-1:-1::0;;;19144:18:0::1;::::0;;19090:104::o;10604:75::-;10645:13;10669:7;10662:14;;;;;:::i;10508:90::-;5853:6;;-1:-1:-1;;;;;5853:6:0;4072:10;5853:22;5845:67;;;;-1:-1:-1;;;5845:67:0;;;;;;;:::i;:::-;10576:7:::1;:19;10586:9:::0;10576:7;:19:::1;:::i;11924:156::-:0;12004:4;12028:44;12042:10;12054:9;12065:6;12028:13;:44::i;22249:605::-;5853:6;;-1:-1:-1;;;;;5853:6:0;4072:10;5853:22;5845:67;;;;-1:-1:-1;;;5845:67:0;;;;;;;:::i;:::-;22397:3:::1;22378:22:::0;::::1;22370:79;;;::::0;-1:-1:-1;;;22370:79:0;;13585:2:1;22370:79:0::1;::::0;::::1;13567:21:1::0;13624:2;13604:18;;;13597:30;13663:34;13643:18;;;13636:62;-1:-1:-1;;;13714:18:1;;;13707:43;13767:19;;22370:79:0::1;13383:409:1::0;22370:79:0::1;22464:33:::0;;::::1;22456:85;;;::::0;-1:-1:-1;;;22456:85:0;;13999:2:1;22456:85:0::1;::::0;::::1;13981:21:1::0;14038:2;14018:18;;;14011:30;14077:34;14057:18;;;14050:62;-1:-1:-1;;;14128:18:1;;;14121:38;14176:19;;22456:85:0::1;13797:404:1::0;22456:85:0::1;22550:15;22582:6:::0;22578:88:::1;22592:20:::0;;::::1;22578:88;;;22649:6;;22656:1;22649:9;;;;;;;:::i;:::-;;;;;;;22639:7;:19;;;;:::i;:::-;22629:29:::0;-1:-1:-1;22614:3:0;::::1;::::0;::::1;:::i;:::-;;;;22578:88;;;;22701:7;22682:15;22692:4;22682:9;:15::i;:::-;:26;;22674:66;;;::::0;-1:-1:-1;;;22674:66:0;;14810:2:1;22674:66:0::1;::::0;::::1;14792:21:1::0;14849:2;14829:18;;;14822:30;14888:29;14868:18;;;14861:57;14935:18;;22674:66:0::1;14608:351:1::0;22674:66:0::1;22753:6;22749:102;22763:20:::0;;::::1;22749:102;;;22800:43;22815:4;22820:9;;22830:1;22820:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;22833:6;;22840:1;22833:9;;;;;;;:::i;:::-;;;;;;;22800:14;:43::i;:::-;-1:-1:-1::0;22785:3:0;::::1;::::0;::::1;:::i;:::-;;;;22749:102;;;;22361:493;22249:605:::0;;;;;:::o;20815:280::-;5853:6;;-1:-1:-1;;;;;5853:6:0;4072:10;5853:22;5845:67;;;;-1:-1:-1;;;5845:67:0;;;;;;;:::i;:::-;20950:29:::1;20974:4;20950:19;20967:1;20950:12;;:16;;:19;;;;:::i;:29::-;20923:24;:56;;20915:95;;;::::0;-1:-1:-1;;;20915:95:0;;15166:2:1;20915:95:0::1;::::0;::::1;15148:21:1::0;15205:2;15185:18;;;15178:30;15244:29;15224:18;;;15217:57;15291:18;;20915:95:0::1;14964:351:1::0;20915:95:0::1;21081:4;21052:24;21037:12;;:39;;;;:::i;:::-;21036:49;;;;:::i;:::-;21021:12;:64:::0;-1:-1:-1;20815:280:0:o;21912:169::-;21980:7;22007:64;22048:22;:20;:22::i;:::-;22030:4;;22007:36;;22020:22;;22040:1;;22020:15;;-1:-1:-1;;;;;22030:4:0;22020:9;:15::i;:::-;:19;;:22::i;:::-;22007:8;;:12;:36::i;16109:312::-;16231:10;16190:4;16215:27;;;:15;:27;;;;;;;;16207:36;;;;;;16254:6;16264:1;16254:11;16251:96;;16290:45;;-1:-1:-1;;;16290:45:0;;16329:4;16290:45;;;6842:51:1;-1:-1:-1;;;;;16290:30:0;;;;;6815:18:1;;16290:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16281:54;;16251:96;16364:49;;-1:-1:-1;;;16364:49:0;;16394:10;16364:49;;;15683:51:1;15750:18;;;15743:34;;;-1:-1:-1;;;;;16364:29:0;;;;;15656:18:1;;16364:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6585:244::-;5853:6;;-1:-1:-1;;;;;5853:6:0;4072:10;5853:22;5845:67;;;;-1:-1:-1;;;5845:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6674:22:0;::::1;6666:73;;;::::0;-1:-1:-1;;;6666:73:0;;16240:2:1;6666:73:0::1;::::0;::::1;16222:21:1::0;16279:2;16259:18;;;16252:30;16318:34;16298:18;;;16291:62;-1:-1:-1;;;16369:18:1;;;16362:36;16415:19;;6666:73:0::1;16038:402:1::0;6666:73:0::1;6776:6;::::0;;6755:38:::1;::::0;-1:-1:-1;;;;;6755:38:0;;::::1;::::0;6776:6;::::1;::::0;6755:38:::1;::::0;::::1;6804:6;:17:::0;;-1:-1:-1;;;;;;6804:17:0::1;-1:-1:-1::0;;;;;6804:17:0;;;::::1;::::0;;;::::1;::::0;;6585:244::o;21228:127::-;5853:6;;-1:-1:-1;;;;;5853:6:0;4072:10;5853:22;5845:67;;;;-1:-1:-1;;;5845:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21315:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;21315:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21228:127::o;3007:192::-;3093:7;3129:12;3121:6;;;;3113:29;;;;-1:-1:-1;;;3113:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3153:9:0;3165:5;3169:1;3165;:5;:::i;:::-;3153:17;3007:192;-1:-1:-1;;;;;3007:192:0:o;12468:1143::-;12580:6;;12560:4;;12580:6;;12577:63;;;12596:41;12611:6;12619:9;12630:6;12596:14;:41::i;:::-;12589:48;;;;12577:63;12669:4;;-1:-1:-1;;;;;12656:17:0;;;12669:4;;12656:17;;;;:38;;-1:-1:-1;;;;;;12677:17:0;;7114:42;12677:17;;12656:38;:76;;;;-1:-1:-1;12711:21:0;;-1:-1:-1;;;;;12698:34:0;;;12711:21;;12698:34;;12656:76;:107;;;;-1:-1:-1;;;;;;12737:26:0;;;;;;:15;:26;;;;;;;;12736:27;12656:107;12652:221;;;12821:14;;12811:6;12788:20;12798:9;12788;:20::i;:::-;:29;;;;:::i;:::-;:47;;12780:79;;;;-1:-1:-1;;;12780:79:0;;16780:2:1;12780:79:0;;;16762:21:1;16819:2;16799:18;;;16792:30;-1:-1:-1;;;16838:18:1;;;16831:49;16897:18;;12780:79:0;16578:343:1;12780:79:0;12907:4;;-1:-1:-1;;;;;12894:17:0;;;12907:4;;12894:17;;;;:38;;-1:-1:-1;;;;;;12915:17:0;;7114:42;12915:17;;12894:38;:69;;;;-1:-1:-1;;;;;;12937:26:0;;;;;;:15;:26;;;;;;;;12936:27;12894:69;12890:155;;;12988:11;;-1:-1:-1;;;12988:11:0;;;;12980:43;;;;-1:-1:-1;;;12980:43:0;;17128:2:1;12980:43:0;;;17110:21:1;17167:2;17147:18;;;17140:30;-1:-1:-1;;;17186:18:1;;;17179:50;17246:18;;12980:43:0;16926:344:1;12980:43:0;13060:16;:14;:16::i;:::-;13057:35;;;13079:10;:8;:10::i;:::-;13104:24;13131:26;13150:6;13131:18;:26::i;:::-;13104:53;;13188:61;13208:16;13188:61;;;;;;;;;;;;;-1:-1:-1;;;13188:61:0;;;:7;:15;13196:6;-1:-1:-1;;;;;13188:15:0;-1:-1:-1;;;;;13188:15:0;;;;;;;;;;;;;:19;;:61;;;;;:::i;:::-;-1:-1:-1;;;;;13170:15:0;;;;;;:7;:15;;;;;;;;:79;;;;14437:11;:19;;;;;;;;14436:20;13291:130;;13405:16;13291:130;;;13346:4;;13315:87;;-1:-1:-1;;;;;13336:14:0;;;13346:4;;13336:14;:28;;13359:5;13336:28;;;13352:4;13336:28;13366:6;13374:9;13385:16;13315:20;:87::i;:::-;-1:-1:-1;;;;;13453:18:0;;;;;;:7;:18;;;;;;13262:159;;-1:-1:-1;13453:42:0;;13262:159;13453:22;:42::i;:::-;-1:-1:-1;;;;;13432:18:0;;;;;;;:7;:18;;;;;:63;;;;13513:68;;;13541:39;13561:18;13541:19;:39::i;:::-;13513:68;;160:25:1;;;148:2;133:18;13513:68:0;;;;;;;-1:-1:-1;13599:4:0;;12468:1143;-1:-1:-1;;;;;12468:1143:0:o;2865:136::-;2923:7;2950:43;2954:1;2957;2950:43;;;;;;;;;;;;;;;;;:3;:43::i;3205:250::-;3263:7;3287:1;3292;3287:6;3283:47;;-1:-1:-1;3317:1:0;3310:8;;3283:47;3342:9;3354:5;3358:1;3354;:5;:::i;:::-;3342:17;-1:-1:-1;3387:1:0;3378:5;3382:1;3342:17;3378:5;:::i;:::-;:10;3370:56;;;;-1:-1:-1;;;3370:56:0;;17477:2:1;3370:56:0;;;17459:21:1;17516:2;17496:18;;;17489:30;17555:34;17535:18;;;17528:62;-1:-1:-1;;;17606:18:1;;;17599:31;17647:19;;3370:56:0;17275:397:1;3461:132:0;3519:7;3546:39;3550:1;3553;3546:39;;;;;;;;;;;;;;;;;:3;:39::i;2678:181::-;2736:7;;2768:5;2772:1;2768;:5;:::i;:::-;2756:17;;2797:1;2792;:6;;2784:46;;;;-1:-1:-1;;;2784:46:0;;17879:2:1;2784:46:0;;;17861:21:1;17918:2;17898:18;;;17891:30;17957:29;17937:18;;;17930:57;18004:18;;2784:46:0;17677:351:1;13936:406:0;14029:4;14046:24;14073:26;14092:6;14073:18;:26::i;:::-;14046:53;;14128:61;14148:16;14128:61;;;;;;;;;;;;;-1:-1:-1;;;14128:61:0;;;:7;:15;14136:6;-1:-1:-1;;;;;14128:15:0;-1:-1:-1;;;;;14128:15:0;;;;;;;;;;;;;:19;;:61;;;;;:::i;:::-;-1:-1:-1;;;;;14110:15:0;;;;;;;:7;:15;;;;;;:79;;;;14221:18;;;;;;;:40;;14244:16;14221:22;:40::i;:::-;-1:-1:-1;;;;;14200:18:0;;;;;;;:7;:18;;;;;;;:61;;;;14277:35;;;;;;;;;;14305:6;160:25:1;;148:2;133:18;;14:177;14277:35:0;;;;;;;;-1:-1:-1;14330:4:0;;13936:406;-1:-1:-1;;;;13936:406:0:o;16431:198::-;16518:4;;16480;;-1:-1:-1;;;;;16518:4:0;16504:10;:18;;;;:38;;-1:-1:-1;16536:6:0;;;;16535:7;16504:38;:63;;;;-1:-1:-1;16555:12:0;;-1:-1:-1;;;16555:12:0;;;;16504:63;:117;;;;;16608:13;;16580:24;16598:4;16580:9;:24::i;:::-;:41;;16497:124;;16431:198;:::o;16637:2116::-;9215:6;:13;;-1:-1:-1;;9215:13:0;9224:4;9215:13;;;16732:15:::1;::::0;16749:26:::1;::::0;9215:6;;16716:60:::1;::::0;:15:::1;:60::i;:::-;:83;;16783:16;;16716:83;;;16779:1;16716:83;16686:113;;16810:17;16830:35;16847:17;;16830:12;;:16;;:35;;;;:::i;:::-;16810:55;;16876:23;16902:60;16960:1;16902:53;16945:9;16902:38;16920:19;16902:13;;:17;;:38;;;;:::i;:60::-;16876:86;;16973:20;16996:34;17014:15;16996:13;;:17;;:34;;;;:::i;:::-;17067:16;::::0;;17081:1:::1;17067:16:::0;;;;;::::1;::::0;;16973:57;;-1:-1:-1;17043:21:0::1;::::0;17067:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;17067:16:0::1;17043:40;;17112:4;17094;17099:1;17094:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;17094:23:0::1;;;-1:-1:-1::0;;;;;17094:23:0::1;;;::::0;::::1;7032:42;17128:4;17133:1;17128:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17128:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;17213:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;17213:188:0;;17179:21:::1;::::0;17213:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;17285:12;;17155:21:::1;::::0;17328:4;;17355::::1;::::0;17375:15:::1;::::0;17213:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17414:17;17434:40;17460:13;17434:21;:25;;:40;;;;:::i;:::-;17414:60:::0;-1:-1:-1;17487:19:0::1;17509:41;17523:26;:19:::0;17547:1:::1;17523:23;:26::i;:::-;17509:9:::0;;:13:::1;:41::i;:::-;17487:63;;17561:26;17590:55;17643:1;17590:48;17626:11;17590:31;17604:16;;17590:9;:13;;:31;;;;:::i;:55::-;17561:84;;17656:27;17686:49;17723:11;17686:32;17700:17;;17686:9;:13;;:32;;;;:::i;:49::-;17656:79;;17746:24;17773:46;17807:11;17773:29;17787:14;;17773:9;:13;;:29;;;;:::i;:46::-;17746:73;;17830:25;17858:47;17893:11;17858:30;17872:15;;17858:9;:13;;:30;;;;:::i;:47::-;17947:21;::::0;17939:79:::1;::::0;17830:75;;-1:-1:-1;17919:15:0::1;::::0;-1:-1:-1;;;;;17947:21:0;;::::1;::::0;18008:5:::1;::::0;17982:19;;17919:15;17939:79;17919:15;17939:79;17982:19;17947:21;18008:5;17939:79:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;18053:18:0::1;::::0;18045:73:::1;::::0;17918:100;;-1:-1:-1;;;;;;18053:18:0::1;::::0;18108:5:::1;::::0;18085:16;;18045:73:::1;::::0;;;18085:16;18053:18;18108:5;18045:73:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;18153:19:0::1;::::0;18145:75:::1;::::0;18029:89;;-1:-1:-1;;;;;;18153:19:0::1;::::0;18210:5:::1;::::0;18186:17;;18145:75:::1;::::0;;;18186:17;18153:19;18210:5;18145:75:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;18129:91:0;;-1:-1:-1;;18246:19:0;;18243:363:::1;;18282:6;::::0;18456:21:::1;::::0;18282:244:::1;::::0;-1:-1:-1;;;18282:244:0;;18358:4:::1;18282:244;::::0;::::1;19359:34:1::0;19409:18;;;19402:34;;;18282:6:0::1;19452:18:1::0;;;19445:34;;;19495:18;;;19488:34;-1:-1:-1;;;;;18456:21:0;;::::1;19538:19:1::0;;;19531:44;18496:15:0::1;19591:19:1::0;;;19584:35;18282:6:0;::::1;::::0;:22:::1;::::0;18312:18;;19293:19:1;;18282:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;18546:48:0::1;::::0;;20115:25:1;;;20171:2;20156:18;;20149:34;;;18546:48:0::1;::::0;-1:-1:-1;20088:18:1;18546:48:0::1;;;;;;;18243:363;18635:14;::::0;-1:-1:-1;;;18635:14:0;::::1;;;18634:15;:111;;18685:18;;18668:13;;:35;:77;;18727:18;;18634:111;;18668:77;18706:18;;18634:111;;;18652:13;;18634:111;18618:13;:127:::0;-1:-1:-1;;9233:6:0;:14;;-1:-1:-1;;9233:14:0;;;-1:-1:-1;;;;;;;;;;;16637:2116:0:o;14863:1048::-;14984:7;;15044:4;15034:14;;;;:177;;15196:14;;14835:12;;15136:75;;15196:14;15136:55;;15157:33;15136:16;;:20;:55::i;:75::-;15034:177;;;15109:14;;14729:11;;15050:74;;15109:14;15050:54;;15071:32;14651:97;15050:74;15004:207;-1:-1:-1;15244:27:0;15284:4;15274:14;;;;:146;;15360:60;15407:12;;15360:42;15384:17;;15360:19;:23;;:42;;;;:::i;:60::-;15274:146;;;15290:58;15336:11;;15290:41;15314:16;;15290:19;:23;;:41;;;;:::i;:58::-;15452:16;;15244:176;;-1:-1:-1;15452:41:0;;15244:176;15452:20;:41::i;:::-;15433:16;:60;15528:29;15560:44;:19;15584;15560:23;:44::i;:::-;15656:4;15640:22;;;;:7;:22;;;;;;15528:76;;-1:-1:-1;15640:49:0;;15528:76;15640:26;:49::i;:::-;15631:4;15615:22;;;;:7;:22;;;;;:74;;;;-1:-1:-1;;;;;15707:75:0;;;15739:42;15759:21;15739:19;:42::i;:::-;15707:75;;160:25:1;;;148:2;133:18;15707:75:0;;;;;;;15827:16;;15798:46;;;20115:25:1;;;20171:2;20156:18;;20149:34;;;;15798:46:0;;20088:18:1;15798:46:0;;;;;;;15862:41;:16;15883:19;15862:20;:41::i;:::-;15855:48;14863:1048;-1:-1:-1;;;;;;;;14863:1048:0:o;3599:345::-;3685:7;3787:12;3780:5;3772:28;;;;-1:-1:-1;;;3772:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3811:9:0;3823:5;3827:1;3823;: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:180::-;808:6;861:2;849:9;840:7;836:23;832:32;829:52;;;877:1;874;867:12;829:52;-1:-1:-1;900:23:1;;749:180;-1:-1:-1;749:180:1:o;934:173::-;1002:20;;-1:-1:-1;;;;;1051:31:1;;1041:42;;1031:70;;1097:1;1094;1087:12;1031:70;934:173;;;:::o;1112:254::-;1180:6;1188;1241:2;1229:9;1220:7;1216:23;1212:32;1209:52;;;1257:1;1254;1247:12;1209:52;1280:29;1299:9;1280:29;:::i;:::-;1270:39;1356:2;1341:18;;;;1328:32;;-1:-1:-1;;;1112:254:1:o;1563:186::-;1622:6;1675:2;1663:9;1654:7;1650:23;1646:32;1643:52;;;1691:1;1688;1681:12;1643:52;1714:29;1733:9;1714:29;:::i;1754:248::-;1822:6;1830;1883:2;1871:9;1862:7;1858:23;1854:32;1851:52;;;1899:1;1896;1889:12;1851:52;-1:-1:-1;;1922:23:1;;;1992:2;1977:18;;;1964:32;;-1:-1:-1;1754:248:1:o;2007:328::-;2084:6;2092;2100;2153:2;2141:9;2132:7;2128:23;2124:32;2121:52;;;2169:1;2166;2159:12;2121:52;2192:29;2211:9;2192:29;:::i;:::-;2182:39;;2240:38;2274:2;2263:9;2259:18;2240:38;:::i;:::-;2230:48;;2325:2;2314:9;2310:18;2297:32;2287:42;;2007:328;;;;;:::o;2340:118::-;2426:5;2419:13;2412:21;2405:5;2402:32;2392:60;;2448:1;2445;2438:12;2463:241;2519:6;2572:2;2560:9;2551:7;2547:23;2543:32;2540:52;;;2588:1;2585;2578:12;2540:52;2627:9;2614:23;2646:28;2668:5;2646:28;:::i;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:127::-;3373:10;3368:3;3364:20;3361:1;3354:31;3404:4;3401:1;3394:15;3428:4;3425:1;3418:15;3444:922;3513:6;3566:2;3554:9;3545:7;3541:23;3537:32;3534:52;;;3582:1;3579;3572:12;3534:52;3622:9;3609:23;3651:18;3692:2;3684:6;3681:14;3678:34;;;3708:1;3705;3698:12;3678:34;3746:6;3735:9;3731:22;3721:32;;3791:7;3784:4;3780:2;3776:13;3772:27;3762:55;;3813:1;3810;3803:12;3762:55;3849:2;3836:16;3871:2;3867;3864:10;3861:36;;;3877:18;;:::i;:::-;3952:2;3946:9;3920:2;4006:13;;-1:-1:-1;;4002:22:1;;;4026:2;3998:31;3994:40;3982:53;;;4050:18;;;4070:22;;;4047:46;4044:72;;;4096:18;;:::i;:::-;4136:10;4132:2;4125:22;4171:2;4163:6;4156:18;4211:7;4206:2;4201;4197;4193:11;4189:20;4186:33;4183:53;;;4232:1;4229;4222:12;4183:53;4288:2;4283;4279;4275:11;4270:2;4262:6;4258:15;4245:46;4333:1;4311:15;;;4328:2;4307:24;4300:35;;;;-1:-1:-1;4315:6:1;3444:922;-1:-1:-1;;;;;3444:922:1:o;4983:513::-;5063:6;5071;5079;5087;5140:3;5128:9;5119:7;5115:23;5111:33;5108:53;;;5157:1;5154;5147:12;5108:53;5196:9;5183:23;5215:28;5237:5;5215:28;:::i;:::-;5262:5;-1:-1:-1;5314:2:1;5299:18;;5286:32;;-1:-1:-1;5365:2:1;5350:18;;5337:32;;-1:-1:-1;5421:2:1;5406:18;;5393:32;5434:30;5393:32;5434:30;:::i;:::-;4983:513;;;;-1:-1:-1;4983:513:1;;-1:-1:-1;;4983:513:1:o;5501:315::-;5566:6;5574;5627:2;5615:9;5606:7;5602:23;5598:32;5595:52;;;5643:1;5640;5633:12;5595:52;5666:29;5685:9;5666:29;:::i;:::-;5656:39;;5745:2;5734:9;5730:18;5717:32;5758:28;5780:5;5758:28;:::i;:::-;5805:5;5795:15;;;5501:315;;;;;:::o;5821:870::-;5970:6;5978;5986;5994;6002;6010;6018;6026;6034;6042;6050:7;6104:3;6092:9;6083:7;6079:23;6075:33;6072:53;;;6121:1;6118;6111:12;6072:53;-1:-1:-1;;6144:23:1;;;6214:2;6199:18;;6186:32;;-1:-1:-1;6265:2:1;6250:18;;6237:32;;6316:2;6301:18;;6288:32;;-1:-1:-1;6367:3:1;6352:19;;6339:33;;-1:-1:-1;6419:3:1;6404:19;;6391:33;;-1:-1:-1;6471:3:1;6456:19;;6443:33;;-1:-1:-1;6523:3:1;6508:19;;6495:33;;-1:-1:-1;6575:3:1;6560:19;;6547:33;;-1:-1:-1;6627:3:1;6612:19;;6599:33;;-1:-1:-1;6680:3:1;6665:19;6652:33;;-1:-1:-1;5821:870:1;-1:-1:-1;5821:870:1:o;6904:367::-;6967:8;6977:6;7031:3;7024:4;7016:6;7012:17;7008:27;6998:55;;7049:1;7046;7039:12;6998:55;-1:-1:-1;7072:20:1;;7115:18;7104:30;;7101:50;;;7147:1;7144;7137:12;7101:50;7184:4;7176:6;7172:17;7160:29;;7244:3;7237:4;7227:6;7224:1;7220:14;7212:6;7208:27;7204:38;7201:47;7198:67;;;7261:1;7258;7251:12;7198:67;6904:367;;;;;:::o;7276:847::-;7407:6;7415;7423;7431;7439;7492:2;7480:9;7471:7;7467:23;7463:32;7460:52;;;7508:1;7505;7498:12;7460:52;7531:29;7550:9;7531:29;:::i;:::-;7521:39;;7611:2;7600:9;7596:18;7583:32;7634:18;7675:2;7667:6;7664:14;7661:34;;;7691:1;7688;7681:12;7661:34;7730:70;7792:7;7783:6;7772:9;7768:22;7730:70;:::i;:::-;7819:8;;-1:-1:-1;7704:96:1;-1:-1:-1;7907:2:1;7892:18;;7879:32;;-1:-1:-1;7923:16:1;;;7920:36;;;7952:1;7949;7942:12;7920:36;;7991:72;8055:7;8044:8;8033:9;8029:24;7991:72;:::i;:::-;7276:847;;;;-1:-1:-1;7276:847:1;;-1:-1:-1;8082:8:1;;7965:98;7276:847;-1:-1:-1;;;7276:847:1:o;8128:260::-;8196:6;8204;8257:2;8245:9;8236:7;8232:23;8228:32;8225:52;;;8273:1;8270;8263:12;8225:52;8296:29;8315:9;8296:29;:::i;:::-;8286:39;;8344:38;8378:2;8367:9;8363:18;8344:38;:::i;:::-;8334:48;;8128:260;;;;;:::o;8619:380::-;8698:1;8694:12;;;;8741;;;8762:61;;8816:4;8808:6;8804:17;8794:27;;8762:61;8869:2;8861:6;8858:14;8838:18;8835:38;8832:161;;8915:10;8910:3;8906:20;8903:1;8896:31;8950:4;8947:1;8940:15;8978:4;8975:1;8968:15;8832:161;;8619:380;;;:::o;9004:356::-;9206:2;9188:21;;;9225:18;;;9218:30;9284:34;9279:2;9264:18;;9257:62;9351:2;9336:18;;9004:356::o;9365:127::-;9426:10;9421:3;9417:20;9414:1;9407:31;9457:4;9454:1;9447:15;9481:4;9478:1;9471:15;9497:217;9537:1;9563;9553:132;;9607:10;9602:3;9598:20;9595:1;9588:31;9642:4;9639:1;9632:15;9670:4;9667:1;9660:15;9553:132;-1:-1:-1;9699:9:1;;9497:217::o;10079:168::-;10152:9;;;10183;;10200:15;;;10194:22;;10180:37;10170:71;;10221:18;;:::i;10588:545::-;10690:2;10685:3;10682:11;10679:448;;;10726:1;10751:5;10747:2;10740:17;10796:4;10792:2;10782:19;10866:2;10854:10;10850:19;10847:1;10843:27;10837:4;10833:38;10902:4;10890:10;10887:20;10884:47;;;-1:-1:-1;10925:4:1;10884:47;10980:2;10975:3;10971:12;10968:1;10964:20;10958:4;10954:31;10944:41;;11035:82;11053:2;11046:5;11043:13;11035:82;;;11098:17;;;11079:1;11068:13;11035:82;;;11039:3;;;10679:448;10588:545;;;:::o;11309:1352::-;11435:3;11429:10;11462:18;11454:6;11451:30;11448:56;;;11484:18;;:::i;:::-;11513:97;11603:6;11563:38;11595:4;11589:11;11563:38;:::i;:::-;11557:4;11513:97;:::i;:::-;11665:4;;11729:2;11718:14;;11746:1;11741:663;;;;12448:1;12465:6;12462:89;;;-1:-1:-1;12517:19:1;;;12511:26;12462:89;-1:-1:-1;;11266:1:1;11262:11;;;11258:24;11254:29;11244:40;11290:1;11286:11;;;11241:57;12564:81;;11711:944;;11741:663;10535:1;10528:14;;;10572:4;10559:18;;-1:-1:-1;;11777:20:1;;;11895:236;11909:7;11906:1;11903:14;11895:236;;;11998:19;;;11992:26;11977:42;;12090:27;;;;12058:1;12046:14;;;;11925:19;;11895:236;;;11899:3;12159:6;12150:7;12147:19;12144:201;;;12220:19;;;12214:26;-1:-1:-1;;12303:1:1;12299:14;;;12315:3;12295:24;12291:37;12287:42;12272:58;12257:74;;12144:201;-1:-1:-1;;;;;12391:1:1;12375:14;;;12371:22;12358:36;;-1:-1:-1;11309:1352:1:o;14206:127::-;14267:10;14262:3;14258:20;14255:1;14248:31;14298:4;14295:1;14288:15;14322:4;14319:1;14312:15;14338:125;14403:9;;;14424:10;;;14421:36;;;14437:18;;:::i;14468:135::-;14507:3;14528:17;;;14525:43;;14548:18;;:::i;:::-;-1:-1:-1;14595:1:1;14584:13;;14468:135::o;15320:184::-;15390:6;15443:2;15431:9;15422:7;15418:23;15414:32;15411:52;;;15459:1;15456;15449:12;15411:52;-1:-1:-1;15482:16:1;;15320:184;-1:-1:-1;15320:184:1:o;15788:245::-;15855:6;15908:2;15896:9;15887:7;15883:23;15879:32;15876:52;;;15924:1;15921;15914:12;15876:52;15956:9;15950:16;15975:28;15997:5;15975:28;:::i;16445:128::-;16512:9;;;16533:11;;;16530:37;;;16547:18;;:::i;18033:980::-;18295:4;18343:3;18332:9;18328:19;18374:6;18363:9;18356:25;18400:2;18438:6;18433:2;18422:9;18418:18;18411:34;18481:3;18476:2;18465:9;18461:18;18454:31;18505:6;18540;18534:13;18571:6;18563;18556:22;18609:3;18598:9;18594:19;18587:26;;18648:2;18640:6;18636:15;18622:29;;18669:1;18679:195;18693:6;18690:1;18687:13;18679:195;;;18758:13;;-1:-1:-1;;;;;18754:39:1;18742:52;;18849:15;;;;18814:12;;;;18790:1;18708:9;18679:195;;;-1:-1:-1;;;;;;;18930:32:1;;;;18925:2;18910:18;;18903:60;-1:-1:-1;;;18994:3:1;18979:19;18972:35;18891:3;18033:980;-1:-1:-1;;;18033:980:1:o;19630:306::-;19718:6;19726;19734;19787:2;19775:9;19766:7;19762:23;19758:32;19755:52;;;19803:1;19800;19793:12;19755:52;19832:9;19826:16;19816:26;;19882:2;19871:9;19867:18;19861:25;19851:35;;19926:2;19915:9;19911:18;19905:25;19895:35;;19630:306;;;;;:::o

Swarm Source

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