ETH Price: $3,610.76 (-2.52%)

Token

ERC-20: Trooped (BONES)
 

Overview

Max Total Supply

100,000,000 BONES

Holders

219

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
23,315.41984582 BONES

Value
$0.00
0x1b0a3598739e20558d4a92303c118e511230c363
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:
Trooped

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/**
Trooped

Unite your clans, forge your path, conquer the ancient lands of Riada.

https://trooped.io
https://t.me/trooped_eth
https://twitter.com/TroopedEth

**/

pragma solidity ^0.8.17;

abstract contract Project {
    address public marketingWallet = 0x924d06A6Db71639589c0dd9c6954f974cCCA341C;

    string constant _name = "Trooped";
    string constant _symbol = "BONES";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1 * 10**8 * 10**_decimals;
    uint256 public _maxTxAmount = (_totalSupply * 5) / 1000;
    uint256 public _maxWalletToken = (_totalSupply * 5) / 1000;
    uint256 public buyFee             = 30;
    uint256 public buyTotalFee        = buyFee;
    uint256 public swapLpFee          = 1;
    uint256 public swapMarketing      = 29;
    uint256 public swapTotalFee       = swapMarketing + swapLpFee;
    uint256 public transFee           = 0;
    uint256 public feeDenominator     = 100;
}

// SafeMath Library

library SafeMath {

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

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

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

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

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

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

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

// Standard IERC20 Interface

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

// Context

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

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

// Ownership

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

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

// Uniswap Factory

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

// Uniswap Pair

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

// Uniswap Router

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

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

// Uniswap Router Updated

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

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

contract Trooped is Project, IERC20, Ownable {
    using SafeMath for uint256;

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

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

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isMaxExempt;
    mapping (address => bool) isTimelockExempt;

    address public autoLiquidityReceiver;

    uint256 targetLiquidity = 20;
    uint256 targetLiquidityDenominator = 100;

    IUniswapV2Router02 public immutable contractRouter;
    address public immutable uniswapV2Pair;

    bool public tradingOpen = false;

    bool public buyCooldownEnabled = true;
    uint8 public cooldownTimerInterval = 10;
    mapping (address => uint) private cooldownTimer;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 20 / 10000;
    uint256 public swapAmount = _totalSupply * 10 / 10000;

    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //Mainnet & Testnet ETH
         // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        // set the rest of the contract variables
        contractRouter = _uniswapV2Router;

        _allowances[address(this)][address(contractRouter)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;
        isMaxExempt[msg.sender] = true;

        isTimelockExempt[msg.sender] = true;
        isTimelockExempt[DEAD] = true;
        isTimelockExempt[address(this)] = true;

        isFeeExempt[marketingWallet] = true;
        isMaxExempt[marketingWallet] = true;
        isTxLimitExempt[marketingWallet] = true;

        autoLiquidityReceiver = msg.sender;

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

    receive() external payable {}

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner(); }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    
    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

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

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

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

        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWallet(uint256 maxWalletPercent) external onlyOwner() {
        _maxWalletToken = maxWalletPercent;
    }

    function setMaxTx(uint256 maxTxPercent) external onlyOwner() {
        _maxTxAmount = maxTxPercent;
    }

    function setTxLimit(uint256 amount) external onlyOwner() {
        _maxTxAmount = amount;
    }

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

        if(sender != owner() && recipient != owner()){
            require(tradingOpen,"Trading not open yet");
        }

        bool inSell = (recipient == uniswapV2Pair);
        bool inTransfer = (recipient != uniswapV2Pair && sender != uniswapV2Pair);

        if (recipient != address(this) && 
            recipient != address(DEAD) && 
            recipient != uniswapV2Pair && 
            recipient != marketingWallet && 
            recipient != autoLiquidityReceiver
        ){
            uint256 heldTokens = balanceOf(recipient);
            if(!isMaxExempt[recipient]) {
                require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");
            }
        }

        if (sender == uniswapV2Pair &&
            buyCooldownEnabled &&
            !isTimelockExempt[recipient]
        ){
            require(cooldownTimer[recipient] < block.timestamp,"Please wait for 1min between two buys");
            cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval;
        }

        // Checks max transaction limit
        // but no point if the recipient is exempt
        // this check ensures that someone that is buying and is txnExempt then they are able to buy any amount
        if(!isTxLimitExempt[recipient]) {
            checkTxLimit(sender, amount);
        }

        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = amount;

        // Do NOT take a fee if sender AND recipient are NOT the contract
        // i.e. you are doing a transfer
        if(inTransfer) {
            if(transFee > 0) {
                amountReceived = takeTransferFee(sender, amount);
            }
        } else {
            amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount, inSell) : amount;
            
            if(shouldSwapBack()){ swapBack(); }
        }

        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

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

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

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

    function takeTransferFee(address sender, uint256 amount) internal returns (uint256) {

        uint256 feeToTake = transFee;
        uint256 feeAmount = amount.mul(feeToTake).mul(100).div(feeDenominator * 100);
        
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function takeFee(address sender, uint256 amount, bool isSell) internal returns (uint256) {
        uint256 feeToTake;
        feeToTake = isSell ? swapTotalFee : buyTotalFee;
        uint256 feeAmount = amount.mul(feeToTake).mul(100).div(feeDenominator * 100);
        
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != uniswapV2Pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

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

    function clearStuckBalance_sender(uint256 amountPercentage) external onlyOwner() {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer(amountETH * amountPercentage / 100);
    }

    // switch Trading
    function tradingStatus(bool _status) public onlyOwner {
        tradingOpen = _status;
    }

    function feeOnTransfer(uint256 fee) external onlyOwner() {
        require(swapTotalFee <= 10, "Transfer fee can not be above 10");
        transFee = fee;
    }

    function feeOnSell(uint256 _newSwapLpFee, uint256 _newSwapMarketingFee, uint256 _feeDenominator) external onlyOwner() {
        require(swapTotalFee <= 80, "Sell tax cannot be above 80");
        swapLpFee = _newSwapLpFee;
        swapMarketing = _newSwapMarketingFee;
        swapTotalFee = _newSwapLpFee.add(_newSwapMarketingFee);
        feeDenominator = _feeDenominator;
    }

    function feeOnBuy(uint256 buyTax) external onlyOwner() {
        require(buyTax <= 80, "Buy tax cannot be above 80");
        buyTotalFee = buyTax;
    }

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : swapLpFee;
        uint256 amountToLiquify = swapAmount.mul(dynamicLiquidityFee).div(swapTotalFee).div(2);
        uint256 amountToSwap = swapAmount.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

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

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

        uint256 totalETHFee = swapTotalFee.sub(dynamicLiquidityFee.div(2));

        uint256 amountETHLiquidity = amountETH.mul(swapLpFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(swapMarketing).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingWallet).call{value: amountETHMarketing, gas: 30000}("");

        // Supress warning msg
        tmpSuccess = false;

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

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

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

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

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

    function setFeeReceivers(address _autoLiquidityReceiver, address _newMarketingWallet) external onlyOwner() {

        isFeeExempt[marketingWallet] = false;
        isFeeExempt[_newMarketingWallet] = true;

        isMaxExempt[_newMarketingWallet] = true;

        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingWallet = _newMarketingWallet;
    }

    function setSwapThresholdAmount(uint256 _amount) external onlyOwner() {
        swapThreshold = _amount;
    }

    function setSwapAmount(uint256 _amount) external onlyOwner() {
        if(_amount > swapThreshold) {
            swapAmount = swapThreshold;
        } else {
            swapAmount = _amount;
        }        
    }

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external onlyOwner() {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }

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

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

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

/* Airdrop */
    function airDropCustom(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 SCCC = 0;

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

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

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

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

        require(addresses.length < 801,"GAS Error: max airdrop limit is 800 addresses");

        uint256 SCCC = tokens * addresses.length;

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

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

    event AutoLiquify(uint256 amountETH, uint256 amountBOG);
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"airDropCustom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"airDropFixed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance_sender","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyTax","type":"uint256"}],"name":"feeOnBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newSwapLpFee","type":"uint256"},{"internalType":"uint256","name":"_newSwapMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"feeOnSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"feeOnTransfer","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":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_newMarketingWallet","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":"setIsMaxExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","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":"maxTxPercent","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletPercent","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapThresholdAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapLpFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600080546001600160a01b03191673924d06a6db71639589c0dd9c6954f974ccca341c179055620000386009600a6200055e565b62000048906305f5e10062000576565b6001556103e860015460056200005f919062000576565b6200006b919062000590565b6002556103e8600154600562000082919062000576565b6200008e919062000590565b600355601e6004556004546005556001600655601d600755600654600754620000b89190620005b3565b60085560006009556064600a819055600e805461dead6001600160a01b031991821617909155600f80549091169055601460178190556018919091556019805462ffffff1916620a0100179055601b805460ff19166001908117909155546127109162000126919062000576565b62000132919062000590565b601c55612710600154600a62000149919062000576565b62000155919062000590565b601d553480156200016557600080fd5b50600b80546001600160a01b0319163390811790915560405181906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000201573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002279190620005c9565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000275573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029b9190620005c9565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030f9190620005c9565b6001600160a01b0390811660a052818116608081905230600081815260116020908152604080832094835293815283822060001990553380835260128083528584208054600160ff1991821681179092556013808652888720805483168417905560148087528988208054841685179055601587528988208054841685179055600e548b1688528988208054841685179055978752888720805483168417905586548a1687529285528786208054821683179055855489168652958452868520805487168217905584549097168452825284832080549094168617909355601680546001600160a01b031916841790559354828252601085528382208190559251928352909290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620005f4565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004a057816000190482111562000484576200048462000449565b808516156200049257918102915b93841c939080029062000464565b509250929050565b600082620004b95750600162000558565b81620004c85750600062000558565b8160018114620004e15760028114620004ec576200050c565b600191505062000558565b60ff84111562000500576200050062000449565b50506001821b62000558565b5060208310610133831016604e8410600b841016171562000531575081810a62000558565b6200053d83836200045f565b806000190482111562000554576200055462000449565b0290505b92915050565b60006200056f60ff841683620004a8565b9392505050565b808202811582820484141762000558576200055862000449565b600082620005ae57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000558576200055862000449565b600060208284031215620005dc57600080fd5b81516001600160a01b03811681146200056f57600080fd5b60805160a0516127b162000659600039600081816105ec0152818161147e0152818161175801528181611792015281816117f90152818161191a0152611e7901526000818161071701528181611f9f0152818161205901526121e501526127b16000f3fe6080604052600436106103545760003560e01c8063617fe0ed116101c65780639b928c2f116100f7578063dd395c6311610095578063e632313c1161006f578063e632313c146109b1578063f2fde38b146109d1578063f84ba65d146109f1578063ffb54a9914610a1157600080fd5b8063dd395c6314610935578063dd62ed3e14610955578063e53c30b01461099b57600080fd5b8063bc337182116100d1578063bc33718214610686578063ca33e64c146108d5578063cf703bb9146108f5578063d51ed1c81461091557600080fd5b80639b928c2f14610875578063a4b45c0014610895578063a9059cbb146108b557600080fd5b8063722b62ad116101645780637d1db4a51161013e5780637d1db4a5146107fe578063893d20e8146108145780638da5cb5b1461082957806395d89b411461084757600080fd5b8063722b62ad146107a857806375f0a874146107c857806378109e54146107e857600080fd5b80636ddd1713116101a05780636ddd17131461073957806370a0823114610753578063713e4ae514610773578063715018a61461079357600080fd5b8063617fe0ed146106c6578063658d4b7f146106e557806367ac77b41461070557600080fd5b80632b112e49116102a0578063470624021161023e57806350db71fb1161021857806350db71fb14610646578063571ac8b0146106665780635c85974f146106865780635d0044ca146106a657600080fd5b806347062402146105c457806349bd5a5e146105da5780634dd0e4d31461062657600080fd5b80633705b3921161027a5780633705b39214610558578063442a583d1461056e57806344a33fd21461058e57806346e421a2146105ae57600080fd5b80632b112e491461050b5780632e8fa82114610520578063313ce5671461053657600080fd5b8063180b0d7e1161030d5780631e25dc54116102e75780631e25dc5414610495578063201e7991146104ab57806323b872dd146104cb57806329e04b4a146104eb57600080fd5b8063180b0d7e1461044a57806318160ddd146104605780631da1db5e1461047557600080fd5b8063026f7d15146103605780630445b6671461038957806306fdde031461039f578063095ea7b3146103d85780630d295980146104085780631161ae391461042a57600080fd5b3661035b57005b600080fd5b34801561036c57600080fd5b5061037660075481565b6040519081526020015b60405180910390f35b34801561039557600080fd5b50610376601c5481565b3480156103ab57600080fd5b50604080518082019091526007815266151c9bdbdc195960ca1b60208201525b60405161038091906122a9565b3480156103e457600080fd5b506103f86103f336600461230c565b610a2b565b6040519015158152602001610380565b34801561041457600080fd5b5061042861042336600461234d565b610a98565b005b34801561043657600080fd5b506103f8610445366004612368565b610ade565b34801561045657600080fd5b50610376600a5481565b34801561046c57600080fd5b50600154610376565b34801561048157600080fd5b5061042861049036600461238a565b610af2565b3480156104a157600080fd5b5061037660095481565b3480156104b757600080fd5b506104286104c6366004612368565b610b70565b3480156104d757600080fd5b506103f86104e63660046123a3565b610ba5565b3480156104f757600080fd5b5061042861050636600461238a565b610c67565b34801561051757600080fd5b50610376610c96565b34801561052c57600080fd5b50610376601d5481565b34801561054257600080fd5b5060095b60405160ff9091168152602001610380565b34801561056457600080fd5b5061037660055481565b34801561057a57600080fd5b50610428610589366004612430565b610cdf565b34801561059a57600080fd5b506104286105a936600461238a565b610e2d565b3480156105ba57600080fd5b5061037660065481565b3480156105d057600080fd5b5061037660045481565b3480156105e657600080fd5b5061060e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610380565b34801561063257600080fd5b5061042861064136600461238a565b610e68565b34801561065257600080fd5b5061042861066136600461248c565b610ee8565b34801561067257600080fd5b506103f86106813660046124c1565b610f3d565b34801561069257600080fd5b506104286106a136600461238a565b610f4b565b3480156106b257600080fd5b506104286106c136600461238a565b610f7a565b3480156106d257600080fd5b506019546103f890610100900460ff1681565b3480156106f157600080fd5b5061042861070036600461248c565b610fa9565b34801561071157600080fd5b5061060e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561074557600080fd5b50601b546103f89060ff1681565b34801561075f57600080fd5b5061037661076e3660046124c1565b610ffe565b34801561077f57600080fd5b5061042861078e3660046124de565b611019565b34801561079f57600080fd5b50610428611217565b3480156107b457600080fd5b506019546105469062010000900460ff1681565b3480156107d457600080fd5b5060005461060e906001600160a01b031681565b3480156107f457600080fd5b5061037660035481565b34801561080a57600080fd5b5061037660025481565b34801561082057600080fd5b5061060e61128b565b34801561083557600080fd5b50600b546001600160a01b031661060e565b34801561085357600080fd5b50604080518082019091526005815264424f4e455360d81b60208201526103cb565b34801561088157600080fd5b50610428610890366004612561565b61129f565b3480156108a157600080fd5b506104286108b036600461258d565b61133a565b3480156108c157600080fd5b506103f86108d036600461230c565b6113d5565b3480156108e157600080fd5b5060165461060e906001600160a01b031681565b34801561090157600080fd5b5061042861091036600461238a565b6113e2565b34801561092157600080fd5b5061037661093036600461238a565b611464565b34801561094157600080fd5b5061042861095036600461248c565b6114b5565b34801561096157600080fd5b5061037661097036600461258d565b6001600160a01b03918216600090815260116020908152604080832093909416825291909152205490565b3480156109a757600080fd5b5061037660085481565b3480156109bd57600080fd5b506104286109cc36600461238a565b61150a565b3480156109dd57600080fd5b506104286109ec3660046124c1565b611550565b3480156109fd57600080fd5b50610428610a0c36600461248c565b61163b565b348015610a1d57600080fd5b506019546103f89060ff1681565b3360008181526011602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a869086815260200190565b60405180910390a35060015b92915050565b600b546001600160a01b03163314610acb5760405162461bcd60e51b8152600401610ac2906125c6565b60405180910390fd5b6019805460ff1916911515919091179055565b600082610aea83611464565b119392505050565b600b546001600160a01b03163314610b1c5760405162461bcd60e51b8152600401610ac2906125c6565b60005447906001600160a01b03166108fc6064610b398585612611565b610b439190612628565b6040518115909202916000818181858888f19350505050158015610b6b573d6000803e3d6000fd5b505050565b600b546001600160a01b03163314610b9a5760405162461bcd60e51b8152600401610ac2906125c6565b601791909155601855565b6001600160a01b038316600090815260116020908152604080832033845290915281205460001914610c52576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152601182528381203382529091529190912054610c2d918490611690565b6001600160a01b03851660009081526011602090815260408083203384529091529020555b610c5d8484846116bc565b90505b9392505050565b600b546001600160a01b03163314610c915760405162461bcd60e51b8152600401610ac2906125c6565b601c55565b600f54600090610cda90610cb2906001600160a01b0316610ffe565b600e54610cd490610ccb906001600160a01b0316610ffe565b60015490611ba8565b90611ba8565b905090565b600b546001600160a01b03163314610d095760405162461bcd60e51b8152600401610ac2906125c6565b6103218210610d705760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3830302061646472657373657360981b6064820152608401610ac2565b6000610d7c8383612611565b905080610d8886610ffe565b1015610dd65760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610ac2565b60005b83811015610e2557610e1286868684818110610df757610df761264a565b9050602002016020810190610e0c91906124c1565b85611bb4565b5080610e1d81612660565b915050610dd9565b505050505050565b600b546001600160a01b03163314610e575760405162461bcd60e51b8152600401610ac2906125c6565b47336108fc6064610b398585612611565b600b546001600160a01b03163314610e925760405162461bcd60e51b8152600401610ac2906125c6565b6050811115610ee35760405162461bcd60e51b815260206004820152601a60248201527f427579207461782063616e6e6f742062652061626f76652038300000000000006044820152606401610ac2565b600555565b600b546001600160a01b03163314610f125760405162461bcd60e51b8152600401610ac2906125c6565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6000610a9282600019610a2b565b600b546001600160a01b03163314610f755760405162461bcd60e51b8152600401610ac2906125c6565b600255565b600b546001600160a01b03163314610fa45760405162461bcd60e51b8152600401610ac2906125c6565b600355565b600b546001600160a01b03163314610fd35760405162461bcd60e51b8152600401610ac2906125c6565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526010602052604090205490565b600b546001600160a01b031633146110435760405162461bcd60e51b8152600401610ac2906125c6565b6101f583106110aa5760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b6064820152608401610ac2565b82811461110a5760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610ac2565b6000805b8481101561114e578383828181106111285761112861264a565b905060200201358261113a9190612679565b91508061114681612660565b91505061110e565b508061115987610ffe565b10156111a75760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610ac2565b60005b8481101561120e576111fb878787848181106111c8576111c861264a565b90506020020160208101906111dd91906124c1565b8686858181106111ef576111ef61264a565b90506020020135611bb4565b508061120681612660565b9150506111aa565b50505050505050565b600b546001600160a01b031633146112415760405162461bcd60e51b8152600401610ac2906125c6565b600b546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600b80546001600160a01b0319169055565b6000610cda600b546001600160a01b031690565b600b546001600160a01b031633146112c95760405162461bcd60e51b8152600401610ac2906125c6565b6050600854111561131c5760405162461bcd60e51b815260206004820152601b60248201527f53656c6c207461782063616e6e6f742062652061626f766520383000000000006044820152606401610ac2565b600683905560078290556113308383611c88565b600855600a555050565b600b546001600160a01b031633146113645760405162461bcd60e51b8152600401610ac2906125c6565b600080546001600160a01b039081168252601260209081526040808420805460ff199081169091559483168085528185208054871660019081179091556014909352908420805490951690911790935560168054949091166001600160a01b03199485161790558054909216179055565b6000610c603384846116bc565b600b546001600160a01b0316331461140c5760405162461bcd60e51b8152600401610ac2906125c6565b600a600854111561145f5760405162461bcd60e51b815260206004820181905260248201527f5472616e73666572206665652063616e206e6f742062652061626f76652031306044820152606401610ac2565b600955565b6000610a92611471610c96565b6114af6114a860026114a27f0000000000000000000000000000000000000000000000000000000000000000610ffe565b90611c94565b8590611c94565b90611ca0565b600b546001600160a01b031633146114df5760405162461bcd60e51b8152600401610ac2906125c6565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b600b546001600160a01b031633146115345760405162461bcd60e51b8152600401610ac2906125c6565b601c5481111561154757601c54601d5550565b601d8190555b50565b600b546001600160a01b0316331461157a5760405162461bcd60e51b8152600401610ac2906125c6565b6001600160a01b0381166115df5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ac2565b600b546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600b546001600160a01b031633146116655760405162461bcd60e51b8152600401610ac2906125c6565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b600081848411156116b45760405162461bcd60e51b8152600401610ac291906122a9565b505050900390565b601e5460009060ff16156116dc576116d5848484611bb4565b9050610c60565b600b546001600160a01b038581169116148015906117085750600b546001600160a01b03848116911614155b156117565760195460ff166117565760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610ac2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169084161460008115826117c757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031614155b90506001600160a01b03851630148015906117f05750600e546001600160a01b03868116911614155b801561182e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b801561184857506000546001600160a01b03868116911614155b801561186257506016546001600160a01b03868116911614155b1561191857600061187286610ffe565b6001600160a01b03871660009081526014602052604090205490915060ff16611916576003546118a28683612679565b11156119165760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610ac2565b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b03161480156119605750601954610100900460ff165b801561198557506001600160a01b03851660009081526015602052604090205460ff16155b15611a2f576001600160a01b0385166000908152601a602052604090205442116119ff5760405162461bcd60e51b815260206004820152602560248201527f506c65617365207761697420666f7220316d696e206265747765656e2074776f604482015264206275797360d81b6064820152608401610ac2565b601954611a159062010000900460ff1642612679565b6001600160a01b0386166000908152601a60205260409020555b6001600160a01b03851660009081526013602052604090205460ff16611a5957611a598685611cac565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038916600090815260109091529190912054611aab918690611690565b6001600160a01b038716600090815260106020526040902055838115611ae55760095415611ae057611add8786611d19565b90505b611b2e565b6001600160a01b03871660009081526012602052604090205460ff1615611b0c5784611b17565b611b17878685611dbb565b9050611b21611e6c565b15611b2e57611b2e611ed8565b6001600160a01b038616600090815260106020526040902054611b519082611c88565b6001600160a01b03808816600081815260106020526040908190209390935591519089169060008051602061275c83398151915290611b939085815260200190565b60405180910390a35060019695505050505050565b6000610c60828461268c565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152601090915291822054611c05918490611690565b6001600160a01b038086166000908152601060205260408082209390935590851681522054611c349083611c88565b6001600160a01b03808516600081815260106020526040908190209390935591519086169060008051602061275c83398151915290611c769086815260200190565b60405180910390a35060019392505050565b6000610c608284612679565b6000610c608284612611565b6000610c608284612628565b60025481111580611cd557506001600160a01b03821660009081526013602052604090205460ff165b611d155760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610ac2565b5050565b60008060095490506000611d44600a546064611d359190612611565b6114af60646114a28887611c94565b30600090815260106020526040902054909150611d619082611c88565b30600081815260106020526040908190209290925590516001600160a01b0387169060008051602061275c83398151915290611da09085815260200190565b60405180910390a3611db28482611ba8565b95945050505050565b60008082611dcb57600554611dcf565b6008545b90506000611df4600a546064611de59190612611565b6114af60646114a28987611c94565b30600090815260106020526040902054909150611e119082611c88565b30600081815260106020526040908190209290925590516001600160a01b0388169060008051602061275c83398151915290611e509085815260200190565b60405180910390a3611e628582611ba8565b9695505050505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801590611eaa5750601e5460ff16155b8015611eb85750601b5460ff165b8015610cda575050601c5430600090815260106020526040902054101590565b601e805460ff19166001179055601754601854600091611ef791610ade565b611f0357600654611f06565b60005b90506000611f2a60026114af6008546114af86601d54611c9490919063ffffffff16565b90506000611f4382601d54611ba890919063ffffffff16565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611f7d57611f7d61264a565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201f919061269f565b816001815181106120325761203261264a565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b815247917f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906120979086906000908790309042906004016126bc565b600060405180830381600087803b1580156120b157600080fd5b505af11580156120c5573d6000803e3d6000fd5b5050505060006120de8247611ba890919063ffffffff16565b905060006120f96120f0886002611ca0565b60085490611ba8565b9050600061211b60026114af846114af60065488611c9490919063ffffffff16565b90506000612138836114af60075487611c9490919063ffffffff16565b6000805460405192935090916001600160a01b039091169061753090849084818181858888f193505050503d806000811461218f576040519150601f19603f3d011682016040523d82523d6000602084013e612194565b606091505b506000925050891590506122935760165460405163f305d71960e01b8152306004820152602481018b905260006044820181905260648201526001600160a01b0391821660848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000009091169063f305d71990859060c40160606040518083038185885af1158015612231573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612256919061272d565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601e805460ff191690555050505050505050565b600060208083528351808285015260005b818110156122d6578581018301518582016040015282016122ba565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461154d57600080fd5b6000806040838503121561231f57600080fd5b823561232a816122f7565b946020939093013593505050565b8035801515811461234857600080fd5b919050565b60006020828403121561235f57600080fd5b610c6082612338565b6000806040838503121561237b57600080fd5b50508035926020909101359150565b60006020828403121561239c57600080fd5b5035919050565b6000806000606084860312156123b857600080fd5b83356123c3816122f7565b925060208401356123d3816122f7565b929592945050506040919091013590565b60008083601f8401126123f657600080fd5b50813567ffffffffffffffff81111561240e57600080fd5b6020830191508360208260051b850101111561242957600080fd5b9250929050565b6000806000806060858703121561244657600080fd5b8435612451816122f7565b9350602085013567ffffffffffffffff81111561246d57600080fd5b612479878288016123e4565b9598909750949560400135949350505050565b6000806040838503121561249f57600080fd5b82356124aa816122f7565b91506124b860208401612338565b90509250929050565b6000602082840312156124d357600080fd5b8135610c60816122f7565b6000806000806000606086880312156124f657600080fd5b8535612501816122f7565b9450602086013567ffffffffffffffff8082111561251e57600080fd5b61252a89838a016123e4565b9096509450604088013591508082111561254357600080fd5b50612550888289016123e4565b969995985093965092949392505050565b60008060006060848603121561257657600080fd5b505081359360208301359350604090920135919050565b600080604083850312156125a057600080fd5b82356125ab816122f7565b915060208301356125bb816122f7565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610a9257610a926125fb565b60008261264557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201612672576126726125fb565b5060010190565b80820180821115610a9257610a926125fb565b81810381811115610a9257610a926125fb565b6000602082840312156126b157600080fd5b8151610c60816122f7565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561270c5784516001600160a01b0316835293830193918301916001016126e7565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561274257600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220121fad594866f29b70f6c05b2242a45de42d26dc394396680d5e225b38664ff964736f6c63430008110033

Deployed Bytecode

0x6080604052600436106103545760003560e01c8063617fe0ed116101c65780639b928c2f116100f7578063dd395c6311610095578063e632313c1161006f578063e632313c146109b1578063f2fde38b146109d1578063f84ba65d146109f1578063ffb54a9914610a1157600080fd5b8063dd395c6314610935578063dd62ed3e14610955578063e53c30b01461099b57600080fd5b8063bc337182116100d1578063bc33718214610686578063ca33e64c146108d5578063cf703bb9146108f5578063d51ed1c81461091557600080fd5b80639b928c2f14610875578063a4b45c0014610895578063a9059cbb146108b557600080fd5b8063722b62ad116101645780637d1db4a51161013e5780637d1db4a5146107fe578063893d20e8146108145780638da5cb5b1461082957806395d89b411461084757600080fd5b8063722b62ad146107a857806375f0a874146107c857806378109e54146107e857600080fd5b80636ddd1713116101a05780636ddd17131461073957806370a0823114610753578063713e4ae514610773578063715018a61461079357600080fd5b8063617fe0ed146106c6578063658d4b7f146106e557806367ac77b41461070557600080fd5b80632b112e49116102a0578063470624021161023e57806350db71fb1161021857806350db71fb14610646578063571ac8b0146106665780635c85974f146106865780635d0044ca146106a657600080fd5b806347062402146105c457806349bd5a5e146105da5780634dd0e4d31461062657600080fd5b80633705b3921161027a5780633705b39214610558578063442a583d1461056e57806344a33fd21461058e57806346e421a2146105ae57600080fd5b80632b112e491461050b5780632e8fa82114610520578063313ce5671461053657600080fd5b8063180b0d7e1161030d5780631e25dc54116102e75780631e25dc5414610495578063201e7991146104ab57806323b872dd146104cb57806329e04b4a146104eb57600080fd5b8063180b0d7e1461044a57806318160ddd146104605780631da1db5e1461047557600080fd5b8063026f7d15146103605780630445b6671461038957806306fdde031461039f578063095ea7b3146103d85780630d295980146104085780631161ae391461042a57600080fd5b3661035b57005b600080fd5b34801561036c57600080fd5b5061037660075481565b6040519081526020015b60405180910390f35b34801561039557600080fd5b50610376601c5481565b3480156103ab57600080fd5b50604080518082019091526007815266151c9bdbdc195960ca1b60208201525b60405161038091906122a9565b3480156103e457600080fd5b506103f86103f336600461230c565b610a2b565b6040519015158152602001610380565b34801561041457600080fd5b5061042861042336600461234d565b610a98565b005b34801561043657600080fd5b506103f8610445366004612368565b610ade565b34801561045657600080fd5b50610376600a5481565b34801561046c57600080fd5b50600154610376565b34801561048157600080fd5b5061042861049036600461238a565b610af2565b3480156104a157600080fd5b5061037660095481565b3480156104b757600080fd5b506104286104c6366004612368565b610b70565b3480156104d757600080fd5b506103f86104e63660046123a3565b610ba5565b3480156104f757600080fd5b5061042861050636600461238a565b610c67565b34801561051757600080fd5b50610376610c96565b34801561052c57600080fd5b50610376601d5481565b34801561054257600080fd5b5060095b60405160ff9091168152602001610380565b34801561056457600080fd5b5061037660055481565b34801561057a57600080fd5b50610428610589366004612430565b610cdf565b34801561059a57600080fd5b506104286105a936600461238a565b610e2d565b3480156105ba57600080fd5b5061037660065481565b3480156105d057600080fd5b5061037660045481565b3480156105e657600080fd5b5061060e7f00000000000000000000000017631e1b9e8a2f75db3c5abc29ef3bffb1cc1c5d81565b6040516001600160a01b039091168152602001610380565b34801561063257600080fd5b5061042861064136600461238a565b610e68565b34801561065257600080fd5b5061042861066136600461248c565b610ee8565b34801561067257600080fd5b506103f86106813660046124c1565b610f3d565b34801561069257600080fd5b506104286106a136600461238a565b610f4b565b3480156106b257600080fd5b506104286106c136600461238a565b610f7a565b3480156106d257600080fd5b506019546103f890610100900460ff1681565b3480156106f157600080fd5b5061042861070036600461248c565b610fa9565b34801561071157600080fd5b5061060e7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561074557600080fd5b50601b546103f89060ff1681565b34801561075f57600080fd5b5061037661076e3660046124c1565b610ffe565b34801561077f57600080fd5b5061042861078e3660046124de565b611019565b34801561079f57600080fd5b50610428611217565b3480156107b457600080fd5b506019546105469062010000900460ff1681565b3480156107d457600080fd5b5060005461060e906001600160a01b031681565b3480156107f457600080fd5b5061037660035481565b34801561080a57600080fd5b5061037660025481565b34801561082057600080fd5b5061060e61128b565b34801561083557600080fd5b50600b546001600160a01b031661060e565b34801561085357600080fd5b50604080518082019091526005815264424f4e455360d81b60208201526103cb565b34801561088157600080fd5b50610428610890366004612561565b61129f565b3480156108a157600080fd5b506104286108b036600461258d565b61133a565b3480156108c157600080fd5b506103f86108d036600461230c565b6113d5565b3480156108e157600080fd5b5060165461060e906001600160a01b031681565b34801561090157600080fd5b5061042861091036600461238a565b6113e2565b34801561092157600080fd5b5061037661093036600461238a565b611464565b34801561094157600080fd5b5061042861095036600461248c565b6114b5565b34801561096157600080fd5b5061037661097036600461258d565b6001600160a01b03918216600090815260116020908152604080832093909416825291909152205490565b3480156109a757600080fd5b5061037660085481565b3480156109bd57600080fd5b506104286109cc36600461238a565b61150a565b3480156109dd57600080fd5b506104286109ec3660046124c1565b611550565b3480156109fd57600080fd5b50610428610a0c36600461248c565b61163b565b348015610a1d57600080fd5b506019546103f89060ff1681565b3360008181526011602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a869086815260200190565b60405180910390a35060015b92915050565b600b546001600160a01b03163314610acb5760405162461bcd60e51b8152600401610ac2906125c6565b60405180910390fd5b6019805460ff1916911515919091179055565b600082610aea83611464565b119392505050565b600b546001600160a01b03163314610b1c5760405162461bcd60e51b8152600401610ac2906125c6565b60005447906001600160a01b03166108fc6064610b398585612611565b610b439190612628565b6040518115909202916000818181858888f19350505050158015610b6b573d6000803e3d6000fd5b505050565b600b546001600160a01b03163314610b9a5760405162461bcd60e51b8152600401610ac2906125c6565b601791909155601855565b6001600160a01b038316600090815260116020908152604080832033845290915281205460001914610c52576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152601182528381203382529091529190912054610c2d918490611690565b6001600160a01b03851660009081526011602090815260408083203384529091529020555b610c5d8484846116bc565b90505b9392505050565b600b546001600160a01b03163314610c915760405162461bcd60e51b8152600401610ac2906125c6565b601c55565b600f54600090610cda90610cb2906001600160a01b0316610ffe565b600e54610cd490610ccb906001600160a01b0316610ffe565b60015490611ba8565b90611ba8565b905090565b600b546001600160a01b03163314610d095760405162461bcd60e51b8152600401610ac2906125c6565b6103218210610d705760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3830302061646472657373657360981b6064820152608401610ac2565b6000610d7c8383612611565b905080610d8886610ffe565b1015610dd65760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610ac2565b60005b83811015610e2557610e1286868684818110610df757610df761264a565b9050602002016020810190610e0c91906124c1565b85611bb4565b5080610e1d81612660565b915050610dd9565b505050505050565b600b546001600160a01b03163314610e575760405162461bcd60e51b8152600401610ac2906125c6565b47336108fc6064610b398585612611565b600b546001600160a01b03163314610e925760405162461bcd60e51b8152600401610ac2906125c6565b6050811115610ee35760405162461bcd60e51b815260206004820152601a60248201527f427579207461782063616e6e6f742062652061626f76652038300000000000006044820152606401610ac2565b600555565b600b546001600160a01b03163314610f125760405162461bcd60e51b8152600401610ac2906125c6565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6000610a9282600019610a2b565b600b546001600160a01b03163314610f755760405162461bcd60e51b8152600401610ac2906125c6565b600255565b600b546001600160a01b03163314610fa45760405162461bcd60e51b8152600401610ac2906125c6565b600355565b600b546001600160a01b03163314610fd35760405162461bcd60e51b8152600401610ac2906125c6565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526010602052604090205490565b600b546001600160a01b031633146110435760405162461bcd60e51b8152600401610ac2906125c6565b6101f583106110aa5760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b6064820152608401610ac2565b82811461110a5760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610ac2565b6000805b8481101561114e578383828181106111285761112861264a565b905060200201358261113a9190612679565b91508061114681612660565b91505061110e565b508061115987610ffe565b10156111a75760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610ac2565b60005b8481101561120e576111fb878787848181106111c8576111c861264a565b90506020020160208101906111dd91906124c1565b8686858181106111ef576111ef61264a565b90506020020135611bb4565b508061120681612660565b9150506111aa565b50505050505050565b600b546001600160a01b031633146112415760405162461bcd60e51b8152600401610ac2906125c6565b600b546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600b80546001600160a01b0319169055565b6000610cda600b546001600160a01b031690565b600b546001600160a01b031633146112c95760405162461bcd60e51b8152600401610ac2906125c6565b6050600854111561131c5760405162461bcd60e51b815260206004820152601b60248201527f53656c6c207461782063616e6e6f742062652061626f766520383000000000006044820152606401610ac2565b600683905560078290556113308383611c88565b600855600a555050565b600b546001600160a01b031633146113645760405162461bcd60e51b8152600401610ac2906125c6565b600080546001600160a01b039081168252601260209081526040808420805460ff199081169091559483168085528185208054871660019081179091556014909352908420805490951690911790935560168054949091166001600160a01b03199485161790558054909216179055565b6000610c603384846116bc565b600b546001600160a01b0316331461140c5760405162461bcd60e51b8152600401610ac2906125c6565b600a600854111561145f5760405162461bcd60e51b815260206004820181905260248201527f5472616e73666572206665652063616e206e6f742062652061626f76652031306044820152606401610ac2565b600955565b6000610a92611471610c96565b6114af6114a860026114a27f00000000000000000000000017631e1b9e8a2f75db3c5abc29ef3bffb1cc1c5d610ffe565b90611c94565b8590611c94565b90611ca0565b600b546001600160a01b031633146114df5760405162461bcd60e51b8152600401610ac2906125c6565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b600b546001600160a01b031633146115345760405162461bcd60e51b8152600401610ac2906125c6565b601c5481111561154757601c54601d5550565b601d8190555b50565b600b546001600160a01b0316331461157a5760405162461bcd60e51b8152600401610ac2906125c6565b6001600160a01b0381166115df5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ac2565b600b546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600b546001600160a01b031633146116655760405162461bcd60e51b8152600401610ac2906125c6565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b600081848411156116b45760405162461bcd60e51b8152600401610ac291906122a9565b505050900390565b601e5460009060ff16156116dc576116d5848484611bb4565b9050610c60565b600b546001600160a01b038581169116148015906117085750600b546001600160a01b03848116911614155b156117565760195460ff166117565760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610ac2565b7f00000000000000000000000017631e1b9e8a2f75db3c5abc29ef3bffb1cc1c5d6001600160a01b039081169084161460008115826117c757507f00000000000000000000000017631e1b9e8a2f75db3c5abc29ef3bffb1cc1c5d6001600160a01b0316866001600160a01b031614155b90506001600160a01b03851630148015906117f05750600e546001600160a01b03868116911614155b801561182e57507f00000000000000000000000017631e1b9e8a2f75db3c5abc29ef3bffb1cc1c5d6001600160a01b0316856001600160a01b031614155b801561184857506000546001600160a01b03868116911614155b801561186257506016546001600160a01b03868116911614155b1561191857600061187286610ffe565b6001600160a01b03871660009081526014602052604090205490915060ff16611916576003546118a28683612679565b11156119165760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610ac2565b505b7f00000000000000000000000017631e1b9e8a2f75db3c5abc29ef3bffb1cc1c5d6001600160a01b0316866001600160a01b03161480156119605750601954610100900460ff165b801561198557506001600160a01b03851660009081526015602052604090205460ff16155b15611a2f576001600160a01b0385166000908152601a602052604090205442116119ff5760405162461bcd60e51b815260206004820152602560248201527f506c65617365207761697420666f7220316d696e206265747765656e2074776f604482015264206275797360d81b6064820152608401610ac2565b601954611a159062010000900460ff1642612679565b6001600160a01b0386166000908152601a60205260409020555b6001600160a01b03851660009081526013602052604090205460ff16611a5957611a598685611cac565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038916600090815260109091529190912054611aab918690611690565b6001600160a01b038716600090815260106020526040902055838115611ae55760095415611ae057611add8786611d19565b90505b611b2e565b6001600160a01b03871660009081526012602052604090205460ff1615611b0c5784611b17565b611b17878685611dbb565b9050611b21611e6c565b15611b2e57611b2e611ed8565b6001600160a01b038616600090815260106020526040902054611b519082611c88565b6001600160a01b03808816600081815260106020526040908190209390935591519089169060008051602061275c83398151915290611b939085815260200190565b60405180910390a35060019695505050505050565b6000610c60828461268c565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152601090915291822054611c05918490611690565b6001600160a01b038086166000908152601060205260408082209390935590851681522054611c349083611c88565b6001600160a01b03808516600081815260106020526040908190209390935591519086169060008051602061275c83398151915290611c769086815260200190565b60405180910390a35060019392505050565b6000610c608284612679565b6000610c608284612611565b6000610c608284612628565b60025481111580611cd557506001600160a01b03821660009081526013602052604090205460ff165b611d155760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610ac2565b5050565b60008060095490506000611d44600a546064611d359190612611565b6114af60646114a28887611c94565b30600090815260106020526040902054909150611d619082611c88565b30600081815260106020526040908190209290925590516001600160a01b0387169060008051602061275c83398151915290611da09085815260200190565b60405180910390a3611db28482611ba8565b95945050505050565b60008082611dcb57600554611dcf565b6008545b90506000611df4600a546064611de59190612611565b6114af60646114a28987611c94565b30600090815260106020526040902054909150611e119082611c88565b30600081815260106020526040908190209290925590516001600160a01b0388169060008051602061275c83398151915290611e509085815260200190565b60405180910390a3611e628582611ba8565b9695505050505050565b6000336001600160a01b037f00000000000000000000000017631e1b9e8a2f75db3c5abc29ef3bffb1cc1c5d1614801590611eaa5750601e5460ff16155b8015611eb85750601b5460ff165b8015610cda575050601c5430600090815260106020526040902054101590565b601e805460ff19166001179055601754601854600091611ef791610ade565b611f0357600654611f06565b60005b90506000611f2a60026114af6008546114af86601d54611c9490919063ffffffff16565b90506000611f4382601d54611ba890919063ffffffff16565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611f7d57611f7d61264a565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201f919061269f565b816001815181106120325761203261264a565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b815247917f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906120979086906000908790309042906004016126bc565b600060405180830381600087803b1580156120b157600080fd5b505af11580156120c5573d6000803e3d6000fd5b5050505060006120de8247611ba890919063ffffffff16565b905060006120f96120f0886002611ca0565b60085490611ba8565b9050600061211b60026114af846114af60065488611c9490919063ffffffff16565b90506000612138836114af60075487611c9490919063ffffffff16565b6000805460405192935090916001600160a01b039091169061753090849084818181858888f193505050503d806000811461218f576040519150601f19603f3d011682016040523d82523d6000602084013e612194565b606091505b506000925050891590506122935760165460405163f305d71960e01b8152306004820152602481018b905260006044820181905260648201526001600160a01b0391821660848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063f305d71990859060c40160606040518083038185885af1158015612231573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612256919061272d565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601e805460ff191690555050505050505050565b600060208083528351808285015260005b818110156122d6578581018301518582016040015282016122ba565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461154d57600080fd5b6000806040838503121561231f57600080fd5b823561232a816122f7565b946020939093013593505050565b8035801515811461234857600080fd5b919050565b60006020828403121561235f57600080fd5b610c6082612338565b6000806040838503121561237b57600080fd5b50508035926020909101359150565b60006020828403121561239c57600080fd5b5035919050565b6000806000606084860312156123b857600080fd5b83356123c3816122f7565b925060208401356123d3816122f7565b929592945050506040919091013590565b60008083601f8401126123f657600080fd5b50813567ffffffffffffffff81111561240e57600080fd5b6020830191508360208260051b850101111561242957600080fd5b9250929050565b6000806000806060858703121561244657600080fd5b8435612451816122f7565b9350602085013567ffffffffffffffff81111561246d57600080fd5b612479878288016123e4565b9598909750949560400135949350505050565b6000806040838503121561249f57600080fd5b82356124aa816122f7565b91506124b860208401612338565b90509250929050565b6000602082840312156124d357600080fd5b8135610c60816122f7565b6000806000806000606086880312156124f657600080fd5b8535612501816122f7565b9450602086013567ffffffffffffffff8082111561251e57600080fd5b61252a89838a016123e4565b9096509450604088013591508082111561254357600080fd5b50612550888289016123e4565b969995985093965092949392505050565b60008060006060848603121561257657600080fd5b505081359360208301359350604090920135919050565b600080604083850312156125a057600080fd5b82356125ab816122f7565b915060208301356125bb816122f7565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610a9257610a926125fb565b60008261264557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201612672576126726125fb565b5060010190565b80820180821115610a9257610a926125fb565b81810381811115610a9257610a926125fb565b6000602082840312156126b157600080fd5b8151610c60816122f7565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561270c5784516001600160a01b0316835293830193918301916001016126e7565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561274257600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220121fad594866f29b70f6c05b2242a45de42d26dc394396680d5e225b38664ff964736f6c63430008110033

Deployed Bytecode Sourcemap

12816:14379:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;794:38;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;794:38:0;;;;;;;;13791:56;;;;;;;;;;;;;;;;15414:80;;;;;;;;;;-1:-1:-1;15486:5:0;;;;;;;;;;;;-1:-1:-1;;;15486:5:0;;;;15414:80;;;;;;;:::i;15842:216::-;;;;;;;;;;-1:-1:-1;15842:216:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;15842:216:0;1205:187:1;21631:94:0;;;;;;;;;;-1:-1:-1;21631:94:0;;;;;:::i;:::-;;:::i;:::-;;25860:150;;;;;;;;;;-1:-1:-1;25860:150:0;;;;;:::i;:::-;;:::i;951:39::-;;;;;;;;;;;;;;;;15144:88;;;;;;;;;;-1:-1:-1;15217:12:0;;15144:88;;21162:214;;;;;;;;;;-1:-1:-1;21162:214:0;;;;;:::i;:::-;;:::i;907:37::-;;;;;;;;;;;;;;;;25334:184;;;;;;;;;;-1:-1:-1;25334:184:0;;;;;:::i;:::-;;:::i;16360:370::-;;;;;;;;;;-1:-1:-1;16360:370:0;;;;;:::i;:::-;;:::i;24985:112::-;;;;;;;;;;-1:-1:-1;24985:112:0;;;;;:::i;:::-;;:::i;25526:142::-;;;;;;;;;;;;;:::i;13854:53::-;;;;;;;;;;;;;;;;15238:80;;;;;;;;;;-1:-1:-1;464:1:0;15238:80;;;2818:4:1;2806:17;;;2788:36;;2776:2;2761:18;15238:80:0;2646:184:1;701:42:0;;;;;;;;;;;;;;;;26679:449;;;;;;;;;;-1:-1:-1;26679:449:0;;;;;:::i;:::-;;:::i;21384:216::-;;;;;;;;;;-1:-1:-1;21384:216:0;;;;;:::i;:::-;;:::i;750:37::-;;;;;;;;;;;;;;;;656:38;;;;;;;;;;;;;;;;13521;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4016:32:1;;;3998:51;;3986:2;3971:18;13521:38:0;3852:203:1;22299:156:0;;;;;;;;;;-1:-1:-1;22299:156:0;;;;;:::i;:::-;;:::i;24465:131::-;;;;;;;;;;-1:-1:-1;24465:131:0;;;;;:::i;:::-;;:::i;16066:122::-;;;;;;;;;;-1:-1:-1;16066:122:0;;;;;:::i;:::-;;:::i;16983:97::-;;;;;;;;;;-1:-1:-1;16983:97:0;;;;;:::i;:::-;;:::i;16738:122::-;;;;;;;;;;-1:-1:-1;16738:122:0;;;;;:::i;:::-;;:::i;13608:37::-;;;;;;;;;;-1:-1:-1;13608:37:0;;;;;;;;;;;24070:121;;;;;;;;;;-1:-1:-1;24070:121:0;;;;;:::i;:::-;;:::i;13464:50::-;;;;;;;;;;;;;;;13754:30;;;;;;;;;;-1:-1:-1;13754:30:0;;;;;;;;15586:105;;;;;;;;;;-1:-1:-1;15586:105:0;;;;;:::i;:::-;;:::i;26033:638::-;;;;;;;;;;-1:-1:-1;26033:638:0;;;;;:::i;:::-;;:::i;4355:148::-;;;;;;;;;;;;;:::i;13652:39::-;;;;;;;;;;-1:-1:-1;13652:39:0;;;;;;;;;;;273:75;;;;;;;;;;-1:-1:-1;273:75:0;;;;-1:-1:-1;;;;;273:75:0;;;591:58;;;;;;;;;;;;;;;;529:55;;;;;;;;;;;;;;;;15500:80;;;;;;;;;;;;;:::i;4141:79::-;;;;;;;;;;-1:-1:-1;4206:6:0;;-1:-1:-1;;;;;4206:6:0;4141:79;;15324:84;;;;;;;;;;-1:-1:-1;15398:7:0;;;;;;;;;;;;-1:-1:-1;;;15398:7:0;;;;15324:84;;21905:386;;;;;;;;;;-1:-1:-1;21905:386:0;;;;;:::i;:::-;;:::i;24604:373::-;;;;;;;;;;-1:-1:-1;24604:373:0;;;;;:::i;:::-;;:::i;16196:156::-;;;;;;;;;;-1:-1:-1;16196:156:0;;;;;:::i;:::-;;:::i;13335:36::-;;;;;;;;;;-1:-1:-1;13335:36:0;;;;-1:-1:-1;;;;;13335:36:0;;;21733:164;;;;;;;;;;-1:-1:-1;21733:164:0;;;;;:::i;:::-;;:::i;25676:176::-;;;;;;;;;;-1:-1:-1;25676:176:0;;;;;:::i;:::-;;:::i;24199:121::-;;;;;;;;;;-1:-1:-1;24199:121:0;;;;;:::i;:::-;;:::i;15697:133::-;;;;;;;;;;-1:-1:-1;15697:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;15799:19:0;;;15781:7;15799:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;15697:133;839:61;;;;;;;;;;;;;;;;25105:221;;;;;;;;;;-1:-1:-1;25105:221:0;;;;;:::i;:::-;;:::i;4511:244::-;;;;;;;;;;-1:-1:-1;4511:244:0;;;;;:::i;:::-;;:::i;24328:129::-;;;;;;;;;;-1:-1:-1;24328:129:0;;;;;:::i;:::-;;:::i;13568:31::-;;;;;;;;;;-1:-1:-1;13568:31:0;;;;;;;;15842:216;15946:10;15917:4;15934:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;15934:32:0;;;;;;;;;;:41;;;15991:37;15917:4;;15934:32;;15991:37;;;;15969:6;160:25:1;;148:2;133:18;;14:177;15991:37:0;;;;;;;;-1:-1:-1;16046:4:0;15842:216;;;;;:::o;21631:94::-;4268:6;;-1:-1:-1;;;;;4268:6:0;3470:10;4268:22;4260:67;;;;-1:-1:-1;;;4260:67:0;;;;;;;:::i;:::-;;;;;;;;;21696:11:::1;:21:::0;;-1:-1:-1;;21696:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21631:94::o;25860:150::-;25940:4;25996:6;25964:29;25984:8;25964:19;:29::i;:::-;:38;;25860:150;-1:-1:-1;;;25860:150:0:o;21162:214::-;4268:6;;-1:-1:-1;;;;;4268:6:0;3470:10;4268:22;4260:67;;;;-1:-1:-1;;;4260:67:0;;;;;;;:::i;:::-;21247:17:::1;21307:15:::0;21267:21:::1;::::0;-1:-1:-1;;;;;21307:15:0::1;21299:69;21364:3;21333:28;21345:16:::0;21267:21;21333:28:::1;:::i;:::-;:34;;;;:::i;:::-;21299:69;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21236:140;21162:214:::0;:::o;25334:184::-;4268:6;;-1:-1:-1;;;;;4268:6:0;3470:10;4268:22;4260:67;;;;-1:-1:-1;;;4260:67:0;;;;;;;:::i;:::-;25433:15:::1;:25:::0;;;;25469:26:::1;:41:::0;25334:184::o;16360:370::-;-1:-1:-1;;;;;16480:19:0;;16460:4;16480:19;;;:11;:19;;;;;;;;16500:10;16480:31;;;;;;;;-1:-1:-1;;16480:52:0;16477:186;;16582:69;;;;;;;;;;;-1:-1:-1;;;16582:69:0;;;;;;;;-1:-1:-1;;;;;16582:19:0;;-1:-1:-1;16582:19:0;;;:11;:19;;;;;16602:10;16582:31;;;;;;;;;;:69;;16618:6;;16582:35;:69::i;:::-;-1:-1:-1;;;;;16548:19:0;;;;;;:11;:19;;;;;;;;16568:10;16548:31;;;;;;;:103;16477:186;16682:40;16696:6;16704:9;16715:6;16682:13;:40::i;:::-;16675:47;;16360:370;;;;;;:::o;24985:112::-;4268:6;;-1:-1:-1;;;;;4268:6:0;3470:10;4268:22;4260:67;;;;-1:-1:-1;;;4260:67:0;;;;;;;:::i;:::-;25066:13:::1;:23:::0;24985:112::o;25526:142::-;25654:4;;25579:7;;25606:54;;25644:15;;-1:-1:-1;;;;;25654:4:0;25644:9;:15::i;:::-;25633:4;;25606:33;;25623:15;;-1:-1:-1;;;;;25633:4:0;25623:9;:15::i;:::-;25606:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;25599:61;;25526:142;:::o;26679:449::-;4268:6;;-1:-1:-1;;;;;4268:6:0;3470:10;4268:22;4260:67;;;;-1:-1:-1;;;4260:67:0;;;;;;;:::i;:::-;26820:3:::1;26801:22:::0;::::1;26793:79;;;::::0;-1:-1:-1;;;26793:79:0;;7584:2:1;26793:79:0::1;::::0;::::1;7566:21:1::0;7623:2;7603:18;;;7596:30;7662:34;7642:18;;;7635:62;-1:-1:-1;;;7713:18:1;;;7706:43;7766:19;;26793:79:0::1;7382:409:1::0;26793:79:0::1;26885:12;26900:25;26909:9:::0;26900:6;:25:::1;:::i;:::-;26885:40;;26965:4;26946:15;26956:4;26946:9;:15::i;:::-;:23;;26938:63;;;::::0;-1:-1:-1;;;26938:63:0;;7998:2:1;26938:63:0::1;::::0;::::1;7980:21:1::0;8037:2;8017:18;;;8010:30;8076:29;8056:18;;;8049:57;8123:18;;26938:63:0::1;7796:351:1::0;26938:63:0::1;27018:6;27014:107;27028:20:::0;;::::1;27014:107;;;27069:40;27084:4;27089:9;;27099:1;27089:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;27102:6;27069:14;:40::i;:::-;-1:-1:-1::0;27050:3:0;::::1;::::0;::::1;:::i;:::-;;;;27014:107;;;;26780:348;26679:449:::0;;;;:::o;21384:216::-;4268:6;;-1:-1:-1;;;;;4268:6:0;3470:10;4268:22;4260:67;;;;-1:-1:-1;;;4260:67:0;;;;;;;:::i;:::-;21496:21:::1;21536:10;21528:64;21588:3;21557:28;21569:16:::0;21496:21;21557:28:::1;:::i;22299:156::-:0;4268:6;;-1:-1:-1;;;;;4268:6:0;3470:10;4268:22;4260:67;;;;-1:-1:-1;;;4260:67:0;;;;;;;:::i;:::-;22383:2:::1;22373:6;:12;;22365:51;;;::::0;-1:-1:-1;;;22365:51:0;;8626:2:1;22365:51:0::1;::::0;::::1;8608:21:1::0;8665:2;8645:18;;;8638:30;8704:28;8684:18;;;8677:56;8750:18;;22365:51:0::1;8424:350:1::0;22365:51:0::1;22427:11;:20:::0;22299:156::o;24465:131::-;4268:6;;-1:-1:-1;;;;;4268:6:0;3470:10;4268:22;4260:67;;;;-1:-1:-1;;;4260:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24555:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;24555:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24465:131::o;16066:122::-;16121:4;16145:35;16153:7;-1:-1:-1;;16145:7:0;:35::i;16983:97::-;4268:6;;-1:-1:-1;;;;;4268:6:0;3470:10;4268:22;4260:67;;;;-1:-1:-1;;;4260:67:0;;;;;;;:::i;:::-;17051:12:::1;:21:::0;16983:97::o;16738:122::-;4268:6;;-1:-1:-1;;;;;4268:6:0;3470:10;4268:22;4260:67;;;;-1:-1:-1;;;4260:67:0;;;;;;;:::i;:::-;16818:15:::1;:34:::0;16738:122::o;24070:121::-;4268:6;;-1:-1:-1;;;;;4268:6:0;3470:10;4268:22;4260:67;;;;-1:-1:-1;;;4260:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24155:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;24155:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24070:121::o;15586:105::-;-1:-1:-1;;;;;15670:18:0;15652:7;15670:18;;;:9;:18;;;;;;;15586:105::o;26033:638::-;4268:6;;-1:-1:-1;;;;;4268:6:0;3470:10;4268:22;4260:67;;;;-1:-1:-1;;;4260:67:0;;;;;;;:::i;:::-;26186:3:::1;26167:22:::0;::::1;26159:79;;;::::0;-1:-1:-1;;;26159:79:0;;8981:2:1;26159:79:0::1;::::0;::::1;8963:21:1::0;9020:2;9000:18;;;8993:30;9059:34;9039:18;;;9032:62;-1:-1:-1;;;9110:18:1;;;9103:43;9163:19;;26159:79:0::1;8779:409:1::0;26159:79:0::1;26257:33:::0;;::::1;26249:85;;;::::0;-1:-1:-1;;;26249:85:0;;9395:2:1;26249:85:0::1;::::0;::::1;9377:21:1::0;9434:2;9414:18;;;9407:30;9473:34;9453:18;;;9446:62;-1:-1:-1;;;9524:18:1;;;9517:38;9572:19;;26249:85:0::1;9193:404:1::0;26249:85:0::1;26347:12;26380:6:::0;26376:90:::1;26390:20:::0;;::::1;26376:90;;;26445:6;;26452:1;26445:9;;;;;;;:::i;:::-;;;;;;;26438:4;:16;;;;:::i;:::-;26431:23:::0;-1:-1:-1;26412:3:0;::::1;::::0;::::1;:::i;:::-;;;;26376:90;;;;26505:4;26486:15;26496:4;26486:9;:15::i;:::-;:23;;26478:63;;;::::0;-1:-1:-1;;;26478:63:0;;7998:2:1;26478:63:0::1;::::0;::::1;7980:21:1::0;8037:2;8017:18;;;8010:30;8076:29;8056:18;;;8049:57;8123:18;;26478:63:0::1;7796:351:1::0;26478:63:0::1;26558:6;26554:110;26568:20:::0;;::::1;26554:110;;;26609:43;26624:4;26629:9;;26639:1;26629:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;26642:6;;26649:1;26642:9;;;;;;;:::i;:::-;;;;;;;26609:14;:43::i;:::-;-1:-1:-1::0;26590:3:0;::::1;::::0;::::1;:::i;:::-;;;;26554:110;;;;26146:525;26033:638:::0;;;;;:::o;4355:148::-;4268:6;;-1:-1:-1;;;;;4268:6:0;3470:10;4268:22;4260:67;;;;-1:-1:-1;;;4260:67:0;;;;;;;:::i;:::-;4446:6:::1;::::0;4425:40:::1;::::0;4462:1:::1;::::0;-1:-1:-1;;;;;4446:6:0::1;::::0;4425:40:::1;::::0;4462:1;;4425:40:::1;4476:6;:19:::0;;-1:-1:-1;;;;;;4476:19:0::1;::::0;;4355:148::o;15500:80::-;15552:7;15570;4206:6;;-1:-1:-1;;;;;4206:6:0;;4141:79;21905:386;4268:6;;-1:-1:-1;;;;;4268:6:0;3470:10;4268:22;4260:67;;;;-1:-1:-1;;;4260:67:0;;;;;;;:::i;:::-;22058:2:::1;22042:12;;:18;;22034:58;;;::::0;-1:-1:-1;;;22034:58:0;;9934:2:1;22034:58:0::1;::::0;::::1;9916:21:1::0;9973:2;9953:18;;;9946:30;10012:29;9992:18;;;9985:57;10059:18;;22034:58:0::1;9732:351:1::0;22034:58:0::1;22103:9;:25:::0;;;22139:13:::1;:36:::0;;;22201:39:::1;22115:13:::0;22155:20;22201:17:::1;:39::i;:::-;22186:12;:54:::0;22251:14:::1;:32:::0;-1:-1:-1;;21905:386:0:o;24604:373::-;4268:6;;-1:-1:-1;;;;;4268:6:0;3470:10;4268:22;4260:67;;;;-1:-1:-1;;;4260:67:0;;;;;;;:::i;:::-;24755:5:::1;24736:15:::0;;-1:-1:-1;;;;;24736:15:0;;::::1;24724:28:::0;;:11:::1;:28;::::0;;;;;;;:36;;-1:-1:-1;;24724:36:0;;::::1;::::0;;;24771:32;;::::1;::::0;;;;;;:39;;;::::1;24736:15:::0;24771:39;;::::1;::::0;;;24823:11:::1;:32:::0;;;;;;:39;;;;::::1;::::0;;::::1;::::0;;;24875:21:::1;:46:::0;;;;;::::1;-1:-1:-1::0;;;;;;24875:46:0;;::::1;;::::0;;24932:37;;;;::::1;;::::0;;24604:373::o;16196:156::-;16276:4;16300:44;16314:10;16326:9;16337:6;16300:13;:44::i;21733:164::-;4268:6;;-1:-1:-1;;;;;4268:6:0;3470:10;4268:22;4260:67;;;;-1:-1:-1;;;4260:67:0;;;;;;;:::i;:::-;21825:2:::1;21809:12;;:18;;21801:63;;;::::0;-1:-1:-1;;;21801:63:0;;10290:2:1;21801:63:0::1;::::0;::::1;10272:21:1::0;;;10309:18;;;10302:30;10368:34;10348:18;;;10341:62;10420:18;;21801:63:0::1;10088:356:1::0;21801:63:0::1;21875:8;:14:::0;21733:164::o;25676:176::-;25744:7;25771:73;25821:22;:20;:22::i;:::-;25771:45;25784:31;25813:1;25784:24;25794:13;25784:9;:24::i;:::-;:28;;:31::i;:::-;25771:8;;:12;:45::i;:::-;:49;;:73::i;24199:121::-;4268:6;;-1:-1:-1;;;;;4268:6:0;3470:10;4268:22;4260:67;;;;-1:-1:-1;;;4260:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24284:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;24284:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24199:121::o;25105:221::-;4268:6;;-1:-1:-1;;;;;4268:6:0;3470:10;4268:22;4260:67;;;;-1:-1:-1;;;4260:67:0;;;;;;;:::i;:::-;25190:13:::1;;25180:7;:23;25177:134;;;25233:13;::::0;25220:10:::1;:26:::0;25105:221;:::o;25177:134::-:1;25279:10;:20:::0;;;25177:134:::1;25105:221:::0;:::o;4511:244::-;4268:6;;-1:-1:-1;;;;;4268:6:0;3470:10;4268:22;4260:67;;;;-1:-1:-1;;;4260:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4600:22:0;::::1;4592:73;;;::::0;-1:-1:-1;;;4592:73:0;;10651:2:1;4592:73:0::1;::::0;::::1;10633:21:1::0;10690:2;10670:18;;;10663:30;10729:34;10709:18;;;10702:62;-1:-1:-1;;;10780:18:1;;;10773:36;10826:19;;4592:73:0::1;10449:402:1::0;4592:73:0::1;4702:6;::::0;4681:38:::1;::::0;-1:-1:-1;;;;;4681:38:0;;::::1;::::0;4702:6:::1;::::0;4681:38:::1;::::0;4702:6:::1;::::0;4681:38:::1;4730:6;:17:::0;;-1:-1:-1;;;;;;4730:17:0::1;-1:-1:-1::0;;;;;4730:17:0;;;::::1;::::0;;;::::1;::::0;;4511:244::o;24328:129::-;4268:6;;-1:-1:-1;;;;;4268:6:0;3470:10;4268:22;4260:67;;;;-1:-1:-1;;;4260:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24417:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;24417:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24328:129::o;1577:240::-;1697:7;1758:12;1750:6;;;;1742:29;;;;-1:-1:-1;;;1742:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1793:5:0;;;1577:240::o;17088:2340::-;17200:6;;17180:4;;17200:6;;17197:63;;;17216:41;17231:6;17239:9;17250:6;17216:14;:41::i;:::-;17209:48;;;;17197:63;4206:6;;-1:-1:-1;;;;;17275:17:0;;;4206:6;;17275:17;;;;:41;;-1:-1:-1;4206:6:0;;-1:-1:-1;;;;;17296:20:0;;;4206:6;;17296:20;;17275:41;17272:115;;;17340:11;;;;17332:43;;;;-1:-1:-1;;;17332:43:0;;11058:2:1;17332:43:0;;;11040:21:1;11097:2;11077:18;;;11070:30;-1:-1:-1;;;11116:18:1;;;11109:50;11176:18;;17332:43:0;10856:344:1;17332:43:0;17427:13;-1:-1:-1;;;;;17414:26:0;;;;;;;17399:11;17471:26;;17414;17471:53;;;17511:13;-1:-1:-1;;;;;17501:23:0;:6;-1:-1:-1;;;;;17501:23:0;;;17471:53;17452:73;-1:-1:-1;;;;;;17542:26:0;;17563:4;17542:26;;;;:70;;-1:-1:-1;17607:4:0;;-1:-1:-1;;;;;17586:26:0;;;17607:4;;17586:26;;17542:70;:114;;;;;17643:13;-1:-1:-1;;;;;17630:26:0;:9;-1:-1:-1;;;;;17630:26:0;;;17542:114;:160;;;;-1:-1:-1;17687:15:0;;-1:-1:-1;;;;;17674:28:0;;;17687:15;;17674:28;;17542:160;:212;;;;-1:-1:-1;17733:21:0;;-1:-1:-1;;;;;17720:34:0;;;17733:21;;17720:34;;17542:212;17538:486;;;17780:18;17801:20;17811:9;17801;:20::i;:::-;-1:-1:-1;;;;;17840:22:0;;;;;;:11;:22;;;;;;17780:41;;-1:-1:-1;17840:22:0;;17836:177;;17916:15;;17892:19;17905:6;17892:10;:19;:::i;:::-;17891:40;;17883:114;;;;-1:-1:-1;;;17883:114:0;;11407:2:1;17883:114:0;;;11389:21:1;11446:2;11426:18;;;11419:30;11485:34;11465:18;;;11458:62;11556:32;11536:18;;;11529:60;11606:19;;17883:114:0;11205:426:1;17883:114:0;17765:259;17538:486;18050:13;-1:-1:-1;;;;;18040:23:0;:6;-1:-1:-1;;;;;18040:23:0;;:58;;;;-1:-1:-1;18080:18:0;;;;;;;18040:58;:103;;;;-1:-1:-1;;;;;;18116:27:0;;;;;;:16;:27;;;;;;;;18115:28;18040:103;18036:317;;;-1:-1:-1;;;;;18177:24:0;;;;;;:13;:24;;;;;;18204:15;-1:-1:-1;18169:91:0;;;;-1:-1:-1;;;18169:91:0;;11838:2:1;18169:91:0;;;11820:21:1;11877:2;11857:18;;;11850:30;11916:34;11896:18;;;11889:62;-1:-1:-1;;;11967:18:1;;;11960:35;12012:19;;18169:91:0;11636:401:1;18169:91:0;18320:21;;18302:39;;18320:21;;;;;18302:15;:39;:::i;:::-;-1:-1:-1;;;;;18275:24:0;;;;;;:13;:24;;;;;:66;18036:317;-1:-1:-1;;;;;18575:26:0;;;;;;:15;:26;;;;;;;;18571:87;;18618:28;18631:6;18639;18618:12;:28::i;:::-;18717:53;;;;;;;;;;;-1:-1:-1;;;18717:53:0;;;;;;;;-1:-1:-1;;;;;18717:17:0;;-1:-1:-1;18717:17:0;;;:9;:17;;;;;;;;:53;;18739:6;;18717:21;:53::i;:::-;-1:-1:-1;;;;;18697:17:0;;;;;;:9;:17;;;;;:73;18808:6;18944:318;;;;18977:8;;:12;18974:100;;19027:31;19043:6;19051;19027:15;:31::i;:::-;19010:48;;18974:100;18944:318;;;-1:-1:-1;;;;;20035:19:0;;20010:4;20035:19;;;:11;:19;;;;;;;;20034:20;19123:64;;19181:6;19123:64;;;19147:31;19155:6;19163;19171;19147:7;:31::i;:::-;19106:81;;19219:16;:14;:16::i;:::-;19216:35;;;19238:10;:8;:10::i;:::-;-1:-1:-1;;;;;19297:20:0;;;;;;:9;:20;;;;;;:40;;19322:14;19297:24;:40::i;:::-;-1:-1:-1;;;;;19274:20:0;;;;;;;:9;:20;;;;;;;:63;;;;19355:43;;;;;;-1:-1:-1;;;;;;;;;;;19355:43:0;;;19383:14;160:25:1;;148:2;133:18;;14:177;19355:43:0;;;;;;;;-1:-1:-1;19416:4:0;;17088:2340;-1:-1:-1;;;;;;17088:2340:0:o;1153:98::-;1211:7;1238:5;1242:1;1238;:5;:::i;19436:330::-;19566:53;;;;;;;;;;;-1:-1:-1;;;19566:53:0;;;;;;;;-1:-1:-1;;;;;19566:17:0;;19529:4;19566:17;;;:9;:17;;;;;;;:53;;19588:6;;19566:21;:53::i;:::-;-1:-1:-1;;;;;19546:17:0;;;;;;;:9;:17;;;;;;:73;;;;19653:20;;;;;;;:32;;19678:6;19653:24;:32::i;:::-;-1:-1:-1;;;;;19630:20:0;;;;;;;:9;:20;;;;;;;:55;;;;19701:35;;;;;;-1:-1:-1;;;;;;;;;;;19701:35:0;;;19729:6;160:25:1;;148:2;133:18;;14:177;19701:35:0;;;;;;;;-1:-1:-1;19754:4:0;19436:330;;;;;:::o;1047:98::-;1105:7;1132:5;1136:1;1132;:5;:::i;1259:98::-;1317:7;1344:5;1348:1;1344;:5;:::i;1365:98::-;1423:7;1450:5;1454:1;1450;:5;:::i;19774:166::-;19871:12;;19861:6;:22;;:49;;;-1:-1:-1;;;;;;19887:23:0;;;;;;:15;:23;;;;;;;;19861:49;19853:79;;;;-1:-1:-1;;;19853:79:0;;12377:2:1;19853:79:0;;;12359:21:1;12416:2;12396:18;;;12389:30;-1:-1:-1;;;12435:18:1;;;12428:47;12492:18;;19853:79:0;12175:341:1;19853:79:0;19774:166;;:::o;20070:406::-;20145:7;20167:17;20187:8;;20167:28;;20206:17;20226:56;20261:14;;20278:3;20261:20;;;;:::i;:::-;20226:30;20252:3;20226:21;:6;20237:9;20226:10;:21::i;:56::-;20348:4;20330:24;;;;:9;:24;;;;;;20206:76;;-1:-1:-1;20330:39:0;;20206:76;20330:28;:39::i;:::-;20321:4;20303:24;;;;:9;:24;;;;;;;:66;;;;20385:42;;-1:-1:-1;;;;;20385:42:0;;;-1:-1:-1;;;;;;;;;;;20385:42:0;;;20417:9;160:25:1;;148:2;133:18;;14:177;20385:42:0;;;;;;;;20447:21;:6;20458:9;20447:10;:21::i;:::-;20440:28;20070:406;-1:-1:-1;;;;;20070:406:0:o;20484:456::-;20564:7;20584:17;20624:6;:35;;20648:11;;20624:35;;;20633:12;;20624:35;20612:47;;20670:17;20690:56;20725:14;;20742:3;20725:20;;;;:::i;:::-;20690:30;20716:3;20690:21;:6;20701:9;20690:10;:21::i;:56::-;20812:4;20794:24;;;;:9;:24;;;;;;20670:76;;-1:-1:-1;20794:39:0;;20670:76;20794:28;:39::i;:::-;20785:4;20767:24;;;;:9;:24;;;;;;;:66;;;;20849:42;;-1:-1:-1;;;;;20849:42:0;;;-1:-1:-1;;;;;;;;;;;20849:42:0;;;20881:9;160:25:1;;148:2;133:18;;14:177;20849:42:0;;;;;;;;20911:21;:6;20922:9;20911:10;:21::i;:::-;20904:28;20484:456;-1:-1:-1;;;;;;20484:456:0:o;20948:206::-;20997:4;21021:10;-1:-1:-1;;;;;21035:13:0;21021:27;;;;;:47;;-1:-1:-1;21062:6:0;;;;21061:7;21021:47;:71;;;;-1:-1:-1;21081:11:0;;;;21021:71;:125;;;;-1:-1:-1;;21133:13:0;;21123:4;21105:24;;;;:9;:24;;;;;;:41;;;20948:206::o;22463:1599::-;13956:6;:13;;-1:-1:-1;;13956:13:0;13965:4;13956:13;;;22558:15:::1;::::0;22575:26:::1;::::0;13956:6;;22542:60:::1;::::0;:15:::1;:60::i;:::-;:76;;22609:9;;22542:76;;;22605:1;22542:76;22512:106;;22629:23;22655:60;22713:1;22655:53;22695:12;;22655:35;22670:19;22655:10;;:14;;:35;;;;:::i;:60::-;22629:86;;22726:20;22749:31;22764:15;22749:10;;:14;;:31;;;;:::i;:::-;22817:16;::::0;;22831:1:::1;22817:16:::0;;;;;::::1;::::0;;22726:54;;-1:-1:-1;22793:21:0::1;::::0;22817:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;22817:16:0::1;22793:40;;22862:4;22844;22849:1;22844:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;22844:23:0::1;;;-1:-1:-1::0;;;;;22844:23:0::1;;;::::0;::::1;22888:14;-1:-1:-1::0;;;;;22888:19:0::1;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22878:4;22883:1;22878:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22878:31:0;;::::1;:7;::::0;;::::1;::::0;;;;;:31;22980:196:::1;::::0;-1:-1:-1;;;22980:196:0;;22946:21:::1;::::0;22980:14:::1;:65;::::0;::::1;::::0;:196:::1;::::0;23060:12;;22922:21:::1;::::0;23103:4;;23130::::1;::::0;23150:15:::1;::::0;22980:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23189:17;23209:40;23235:13;23209:21;:25;;:40;;;;:::i;:::-;23189:60:::0;-1:-1:-1;23262:19:0::1;23284:44;23301:26;:19:::0;23325:1:::1;23301:23;:26::i;:::-;23284:12;::::0;;:16:::1;:44::i;:::-;23262:66;;23341:26;23370:48;23416:1;23370:41;23399:11;23370:24;23384:9;;23370;:13;;:24;;;;:::i;:48::-;23341:77;;23429:26;23458:45;23491:11;23458:28;23472:13;;23458:9;:13;;:28;;;;:::i;:45::-;23517:15;23545::::0;;23537:72:::1;::::0;23429:74;;-1:-1:-1;23517:15:0;;-1:-1:-1;;;;;23545:15:0;;::::1;::::0;23599:5:::1;::::0;23429:74;;23517:15;23537:72;23517:15;23537:72;23429:74;23545:15;23599:5;23537:72:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;23667:5:0::1;::::0;-1:-1:-1;;23688:19:0;;;-1:-1:-1;23685:370:0::1;;23905:21;::::0;23723:252:::1;::::0;-1:-1:-1;;;23723:252:0;;23807:4:::1;23723:252;::::0;::::1;14445:34:1::0;14495:18;;;14488:34;;;-1:-1:-1;14538:18:1;;;14531:34;;;14581:18;;;14574:34;-1:-1:-1;;;;;23905:21:0;;::::1;14624:19:1::0;;;14617:44;23945:15:0::1;14677:19:1::0;;;14670:35;23723:14:0::1;:30:::0;;::::1;::::0;::::1;::::0;23761:18;;14379:19:1;;23723:252:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;23995:48:0::1;::::0;;15201:25:1;;;15257:2;15242:18;;15235:34;;;23995:48:0::1;::::0;-1:-1:-1;15174:18:1;23995:48:0::1;;;;;;;23685:370;-1:-1:-1::0;;13974:6:0;:14;;-1:-1:-1;;13974:14:0;;;-1:-1:-1;;;;;;;;22463:1599:0:o;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:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:160::-;1462:20;;1518:13;;1511:21;1501:32;;1491:60;;1547:1;1544;1537:12;1491:60;1397:160;;;:::o;1562:180::-;1618:6;1671:2;1659:9;1650:7;1646:23;1642:32;1639:52;;;1687:1;1684;1677:12;1639:52;1710:26;1726:9;1710:26;:::i;1747:248::-;1815:6;1823;1876:2;1864:9;1855:7;1851:23;1847:32;1844:52;;;1892:1;1889;1882:12;1844:52;-1:-1:-1;;1915:23:1;;;1985:2;1970:18;;;1957:32;;-1:-1:-1;1747:248:1:o;2000:180::-;2059:6;2112:2;2100:9;2091:7;2087:23;2083:32;2080:52;;;2128:1;2125;2118:12;2080:52;-1:-1:-1;2151:23:1;;2000:180;-1:-1:-1;2000:180:1:o;2185:456::-;2262:6;2270;2278;2331:2;2319:9;2310:7;2306:23;2302:32;2299:52;;;2347:1;2344;2337:12;2299:52;2386:9;2373:23;2405:31;2430:5;2405:31;:::i;:::-;2455:5;-1:-1:-1;2512:2:1;2497:18;;2484:32;2525:33;2484:32;2525:33;:::i;:::-;2185:456;;2577:7;;-1:-1:-1;;;2631:2:1;2616:18;;;;2603:32;;2185:456::o;2835:367::-;2898:8;2908:6;2962:3;2955:4;2947:6;2943:17;2939:27;2929:55;;2980:1;2977;2970:12;2929:55;-1:-1:-1;3003:20:1;;3046:18;3035:30;;3032:50;;;3078:1;3075;3068:12;3032:50;3115:4;3107:6;3103:17;3091:29;;3175:3;3168:4;3158:6;3155:1;3151:14;3143:6;3139:27;3135:38;3132:47;3129:67;;;3192:1;3189;3182:12;3129:67;2835:367;;;;;:::o;3207:640::-;3311:6;3319;3327;3335;3388:2;3376:9;3367:7;3363:23;3359:32;3356:52;;;3404:1;3401;3394:12;3356:52;3443:9;3430:23;3462:31;3487:5;3462:31;:::i;:::-;3512:5;-1:-1:-1;3568:2:1;3553:18;;3540:32;3595:18;3584:30;;3581:50;;;3627:1;3624;3617:12;3581:50;3666:70;3728:7;3719:6;3708:9;3704:22;3666:70;:::i;:::-;3207:640;;3755:8;;-1:-1:-1;3640:96:1;;3837:2;3822:18;3809:32;;3207:640;-1:-1:-1;;;;3207:640:1:o;4060:315::-;4125:6;4133;4186:2;4174:9;4165:7;4161:23;4157:32;4154:52;;;4202:1;4199;4192:12;4154:52;4241:9;4228:23;4260:31;4285:5;4260:31;:::i;:::-;4310:5;-1:-1:-1;4334:35:1;4365:2;4350:18;;4334:35;:::i;:::-;4324:45;;4060:315;;;;;:::o;4380:247::-;4439:6;4492:2;4480:9;4471:7;4467:23;4463:32;4460:52;;;4508:1;4505;4498:12;4460:52;4547:9;4534:23;4566:31;4591:5;4566:31;:::i;4867:908::-;4998:6;5006;5014;5022;5030;5083:2;5071:9;5062:7;5058:23;5054:32;5051:52;;;5099:1;5096;5089:12;5051:52;5138:9;5125:23;5157:31;5182:5;5157:31;:::i;:::-;5207:5;-1:-1:-1;5263:2:1;5248:18;;5235:32;5286:18;5316:14;;;5313:34;;;5343:1;5340;5333:12;5313:34;5382:70;5444:7;5435:6;5424:9;5420:22;5382:70;:::i;:::-;5471:8;;-1:-1:-1;5356:96:1;-1:-1:-1;5559:2:1;5544:18;;5531:32;;-1:-1:-1;5575:16:1;;;5572:36;;;5604:1;5601;5594:12;5572:36;;5643:72;5707:7;5696:8;5685:9;5681:24;5643:72;:::i;:::-;4867:908;;;;-1:-1:-1;4867:908:1;;-1:-1:-1;5734:8:1;;5617:98;4867:908;-1:-1:-1;;;4867:908:1:o;5780:316::-;5857:6;5865;5873;5926:2;5914:9;5905:7;5901:23;5897:32;5894:52;;;5942:1;5939;5932:12;5894:52;-1:-1:-1;;5965:23:1;;;6035:2;6020:18;;6007:32;;-1:-1:-1;6086:2:1;6071:18;;;6058:32;;5780:316;-1:-1:-1;5780:316:1:o;6101:388::-;6169:6;6177;6230:2;6218:9;6209:7;6205:23;6201:32;6198:52;;;6246:1;6243;6236:12;6198:52;6285:9;6272:23;6304:31;6329:5;6304:31;:::i;:::-;6354:5;-1:-1:-1;6411:2:1;6396:18;;6383:32;6424:33;6383:32;6424:33;:::i;:::-;6476:7;6466:17;;;6101:388;;;;;:::o;6494:356::-;6696:2;6678:21;;;6715:18;;;6708:30;6774:34;6769:2;6754:18;;6747:62;6841:2;6826:18;;6494:356::o;6855:127::-;6916:10;6911:3;6907:20;6904:1;6897:31;6947:4;6944:1;6937:15;6971:4;6968:1;6961:15;6987:168;7060:9;;;7091;;7108:15;;;7102:22;;7088:37;7078:71;;7129:18;;:::i;7160:217::-;7200:1;7226;7216:132;;7270:10;7265:3;7261:20;7258:1;7251:31;7305:4;7302:1;7295:15;7333:4;7330:1;7323:15;7216:132;-1:-1:-1;7362:9:1;;7160:217::o;8152:127::-;8213:10;8208:3;8204:20;8201:1;8194:31;8244:4;8241:1;8234:15;8268:4;8265:1;8258:15;8284:135;8323:3;8344:17;;;8341:43;;8364:18;;:::i;:::-;-1:-1:-1;8411:1:1;8400:13;;8284:135::o;9602:125::-;9667:9;;;9688:10;;;9685:36;;;9701:18;;:::i;12042:128::-;12109:9;;;12130:11;;;12127:37;;;12144:18;;:::i;12653:251::-;12723:6;12776:2;12764:9;12755:7;12751:23;12747:32;12744:52;;;12792:1;12789;12782:12;12744:52;12824:9;12818:16;12843:31;12868:5;12843:31;:::i;12909:980::-;13171:4;13219:3;13208:9;13204:19;13250:6;13239:9;13232:25;13276:2;13314:6;13309:2;13298:9;13294:18;13287:34;13357:3;13352:2;13341:9;13337:18;13330:31;13381:6;13416;13410:13;13447:6;13439;13432:22;13485:3;13474:9;13470:19;13463:26;;13524:2;13516:6;13512:15;13498:29;;13545:1;13555:195;13569:6;13566:1;13563:13;13555:195;;;13634:13;;-1:-1:-1;;;;;13630:39:1;13618:52;;13725:15;;;;13690:12;;;;13666:1;13584:9;13555:195;;;-1:-1:-1;;;;;;;13806:32:1;;;;13801:2;13786:18;;13779:60;-1:-1:-1;;;13870:3:1;13855:19;13848:35;13767:3;12909:980;-1:-1:-1;;;12909:980:1:o;14716:306::-;14804:6;14812;14820;14873:2;14861:9;14852:7;14848:23;14844:32;14841:52;;;14889:1;14886;14879:12;14841:52;14918:9;14912:16;14902:26;;14968:2;14957:9;14953:18;14947:25;14937:35;;15012:2;15001:9;14997:18;14991:25;14981:35;;14716:306;;;;;:::o

Swarm Source

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