ETH Price: $3,342.19 (-1.12%)

Token

Hainu (HAINU)
 

Overview

Max Total Supply

1,000,000,000,000 HAINU

Holders

243

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 HAINU

Value
$0.00
0xadb8fa5672c08a27ff6389c652eecf9907a5bc81
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:
Hainu

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-31
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.9.0;

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

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


interface IERC20Upgradeable {
 
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

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

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library Address {
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }


    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

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 Hainu is Context, IERC20Upgradeable {
    address private _owner;

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    address[] private _excluded;

    mapping (address => bool) private _liquidityHolders;
   
    uint256 private startingSupply;

    string private _name;
    string private _symbol;

    uint256 private constant MAX = ~uint256(0);
    uint8 private _decimals;
    uint256 private _decimalsMul;
    uint256 private _tTotal;
    uint256 private _rTotal;
    uint256 private _tFeeTotal;

    IUniswapV2Router02 public dexRouter;
    address public lpPair;

    // UNI ROUTER
    address public _routerAddress;

    address public DEAD = 0x000000000000000000000000000000000000dEaD;
    address public ZERO = 0x0000000000000000000000000000000000000000;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    
    uint256 private _maxTxAmount;
    uint256 public maxTxAmountUI;

    uint256 private _maxWalletSize;
    uint256 public maxWalletSizeUI;

    uint256 private swapThreshold;
    uint256 private swapAmount;

    bool tradingEnabled = false;

    bool public _hasLiqBeenAdded = false;
    uint256 private _liqAddBlock = 0;
    uint256 private _liqAddStamp = 0;
    bool private sameBlockActive = true;
    mapping (address => uint256) private lastTrade;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    event SniperCaught(address sniperAddress);
    uint256 Planted;
    
    bool contractlaunched = false;
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    constructor () payable {
        // Set the owner.
        _owner = msg.sender;

        if (block.chainid == 56) {
            _routerAddress = 0x10ED43C718714eb63d5aA57B78B54704E256024E;
        } else if (block.chainid == 97) {
            _routerAddress = 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3;
        } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3) {
            _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        } else {
            revert();
        }

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _liquidityHolders[owner()] = true;

        _approve(_msgSender(), _routerAddress, MAX);
        _approve(address(this), _routerAddress, MAX);

    }

    receive() external payable {}

    function launchContract( string memory _tokenname, string memory _tokensymbol) external onlyOwner {
        require(!contractlaunched);

        _name = _tokenname;
        _symbol = _tokensymbol;
        startingSupply = 1_000_000_000_000;
        if (startingSupply < 10000000000000) {
            _decimals = 18;
            _decimalsMul = _decimals;
        } else {
            _decimals = 9;
            _decimalsMul = _decimals;
        }
        _tTotal = startingSupply * (10**_decimalsMul);
        _rTotal = (MAX - (MAX % _tTotal));

        dexRouter = IUniswapV2Router02(_routerAddress);
        lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;
        _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        
        _maxTxAmount = (_tTotal * 100000) / 100000;
        maxTxAmountUI = (startingSupply * 100000) / 100000;
        _maxWalletSize = (_tTotal * 1000) / 1000;
        maxWalletSizeUI = (startingSupply * 1000) / 1000;
        swapThreshold = (_tTotal * 5) / 10000;
        swapAmount = (_tTotal * 5) / 1000;

        approve(_routerAddress, type(uint256).max);

        contractlaunched = true;
        _rOwned[owner()] = _rTotal;
        emit Transfer(ZERO, owner(), _tTotal);

        _approve(address(this), address(dexRouter), type(uint256).max);

        _transfer(owner(), address(this), balanceOf(owner()));


        

        dexRouter.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0, 
            0, 
            owner(),
            block.timestamp
        );
        Planted = block.number;
    
    }


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

    function transferOwner(address newOwner) external onlyOwner() {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        setExcludedFromFee(_owner, false);
        setExcludedFromFee(newOwner, true);
        setExcludedFromReward(newOwner, true);
                
        _allowances[_owner][newOwner] = balanceOf(_owner);
        if(balanceOf(_owner) > 0) {
            _transfer(_owner, newOwner, balanceOf(_owner));
        }
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
        
    }

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

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

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount);
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

    function setNewRouter(address newRouter) external onlyOwner() {
        IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter);
        address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        _approve(address(this), newRouter, MAX);
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (enabled == false) {
            lpPairs[pair] = false;
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 1 weeks, "Cannot set a new pair this week!");
            }
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
        }
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
    }
    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setExcludedFromFee(address account, bool enabled) public onlyOwner {
        _isExcludedFromFee[account] = enabled;
    }

    function setExcludedFromReward(address account, bool enabled) public onlyOwner {
        if (enabled == true) {
            require(!_isExcluded[account], "Account is already excluded.");
            if(_rOwned[account] > 0) {
                _tOwned[account] = tokenFromReflection(_rOwned[account]);
            }
            _isExcluded[account] = true;
            _excluded.push(account);
        } else if (enabled == false) {
            require(_isExcluded[account], "Account is already included.");
            for (uint256 i = 0; i < _excluded.length; i++) {
                if (_excluded[i] == account) {
                    _excluded[i] = _excluded[_excluded.length - 1];
                    _tOwned[account] = 0;
                    _isExcluded[account] = false;
                    _excluded.pop();
                    break;
                }
            }
        }
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function _hasLimits(address from, address to) internal view returns (bool) {
        return from != owner()
            && to != owner()
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this);
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount / currentRate;
    }
    
    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if(_hasLimits(from, to)) {
            if(!tradingEnabled) {
                revert("Trading not yet enabled!");
            }
            if (sameBlockActive) {
                if (lpPairs[from]){
                    require(lastTrade[to] != block.number);
                    lastTrade[to] = block.number;
                } else {
                    require(lastTrade[from] != block.number);
                    lastTrade[from] = block.number;
                }
            }
            if(to != _routerAddress && !lpPairs[to]) {
                require(balanceOf(to)  <= _tTotal, "Transfer amount exceeds the total tokens.");
            }
        }
        return _finalizeTransfer(from, to, amount);
    }

    

    function _checkLiquidityAdd(address from, address to) internal {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            _liqAddStamp = block.timestamp;

            swapAndLiquifyEnabled = true;
            emit SwapAndLiquifyEnabledUpdated(true);
        }
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        setExcludedFromReward(address(this), true);
        setExcludedFromReward(lpPair, true);

        tradingEnabled = true;
        swapAndLiquifyEnabled = true;
    }

    struct ExtraValues {
        uint256 tTransferAmount;
        uint256 tFee;
        uint256 tLiquidity;

        uint256 rTransferAmount;
        uint256 rAmount;
        uint256 rFee;
    }

    function _finalizeTransfer(address from, address to, uint256 tAmount) internal returns (bool) {


        if (!_hasLiqBeenAdded) {
                _checkLiquidityAdd(from, to);
                if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                    revert("Only owner can transfer at this time.");
                }
        }
        uint256 tTransferAmount;
        uint256 rTransferAmount;
        uint256 rAmount;
        uint256 currentRate = _getRate();
        tTransferAmount = tAmount;
        rAmount = tAmount * currentRate;
        rTransferAmount = rAmount;

        _rOwned[from] = _rOwned[from] - rAmount;
        _rOwned[to] = _rOwned[to] + rTransferAmount;

        if (_isExcluded[from] && !_isExcluded[to]) {
            _tOwned[from] = _tOwned[from] - tAmount;
        } else if (!_isExcluded[from] && _isExcluded[to]) {
            _tOwned[to] = _tOwned[to] + tTransferAmount;  
        } else if (_isExcluded[from] && _isExcluded[to]) {
            _tOwned[from] = _tOwned[from] - tAmount;
            _tOwned[to] = _tOwned[to] + tTransferAmount;
        }
        emit Transfer(from, to, tTransferAmount);
        return true;
    }

    function _getRate() internal view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply / tSupply;
    }

    function _getCurrentSupply() internal view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply - _rOwned[_excluded[i]];
            tSupply = tSupply - _tOwned[_excluded[i]];
        }
        if (rSupply < _rTotal / _tTotal) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
    
    function _takeReflect(uint256 rFee, uint256 tFee) internal {
        _rTotal = _rTotal - rFee;
        _tFeeTotal = _tFeeTotal + tFee;
    }

    function rescueETH() external onlyOwner {
        payable(owner()).transfer(address(this).balance);
    }
    
    function _takeLiquidity(address sender, uint256 tLiquidity) internal {
        uint256 currentRate =  _getRate();
        uint256 rLiquidity = tLiquidity * currentRate;
        _rOwned[address(this)] = _rOwned[address(this)] + rLiquidity;
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)] + tLiquidity;
        emit Transfer(sender, address(this), tLiquidity); 
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ZERO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_routerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_tokenname","type":"string"},{"internalType":"string","name":"_tokensymbol","type":"string"}],"name":"launchContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmountUI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSizeUI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260006004819055601580546001600160a01b031990811661dead1790915560168054600161ff0160a01b0319169055601d805461ffff19169055601e829055601f8290556020805460ff199081166001179091556023805490911690558154163317905560384614156200009e57601480546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e17905562000127565b4660611415620000d457601480546001600160a01b031916739ac64cc6e4415144c455bd8e4837fea55603e5c317905562000127565b4660011480620000e45750466004145b80620000f05750466003145b156200012257601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d17905562000127565b600080fd5b600160066000620001406000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526006909252812080549092166001908117909255600990620001996000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055620001e2620001cd3390565b6014546001600160a01b031660001962000204565b601454620001fe9030906001600160a01b031660001962000204565b62000330565b6001600160a01b0383166200026c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620002cf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000263565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b612b6a80620003406000396000f3fe6080604052600436106102295760003560e01c8063640384091161012357806395d89b41116100ab578063dd62ed3e1161006f578063dd62ed3e14610656578063eafb5a3c1461069c578063f4b72b2f146106bc578063f6540ec7146106dc578063fb78680d146106f257600080fd5b806395d89b41146105c1578063a457c2d7146105d6578063a9059cbb146105f6578063c49b9a8014610616578063d9e664601461063657600080fd5b806380c581d1116100f257806380c581d11461053557806388f8202014610555578063893d20e81461058e5780638a8c523c146105ac5780638da5cb5b1461058e57600080fd5b806364038409146104ca5780636612e66f146104e057806370a0823114610500578063715018a61461052057600080fd5b80632d838119116101b15780634fb2e45d116101755780634fb2e45d1461041257806350a8e016146104325780635342acb414610451578063571ac8b01461048a57806358fa63ca146104aa57600080fd5b80632d8381191461036f578063313ce5671461038f57806339509351146103b1578063452ed4f1146103d15780634a74bb02146103f157600080fd5b806313114a9d116101f857806313114a9d146102e457806313e461921461030357806318160ddd1461032557806320800a001461033a57806323b872dd1461034f57600080fd5b806303fd2a451461023557806306fdde03146102725780630758d92414610294578063095ea7b3146102b457600080fd5b3661023057005b600080fd5b34801561024157600080fd5b50601554610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b50610287610712565b604051610269919061255f565b3480156102a057600080fd5b50601254610255906001600160a01b031681565b3480156102c057600080fd5b506102d46102cf3660046125c9565b6107a4565b6040519015158152602001610269565b3480156102f057600080fd5b506011545b604051908152602001610269565b34801561030f57600080fd5b5061032361031e36600461260a565b6107bb565b005b34801561033157600080fd5b50600f546102f5565b34801561034657600080fd5b50610323610ab8565b34801561035b57600080fd5b506102d461036a36600461263f565b610b1f565b34801561037b57600080fd5b506102f561038a366004612680565b610b72565b34801561039b57600080fd5b50600d5460405160ff9091168152602001610269565b3480156103bd57600080fd5b506102d46103cc3660046125c9565b610bf6565b3480156103dd57600080fd5b50601354610255906001600160a01b031681565b3480156103fd57600080fd5b506016546102d490600160a81b900460ff1681565b34801561041e57600080fd5b5061032361042d366004612699565b610c2d565b34801561043e57600080fd5b50601d546102d490610100900460ff1681565b34801561045d57600080fd5b506102d461046c366004612699565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561049657600080fd5b506102d46104a5366004612699565b610d9a565b3480156104b657600080fd5b50601654610255906001600160a01b031681565b3480156104d657600080fd5b506102f560185481565b3480156104ec57600080fd5b506103236104fb36600461260a565b610da8565b34801561050c57600080fd5b506102f561051b366004612699565b610dfd565b34801561052c57600080fd5b50610323610e5c565b34801561054157600080fd5b5061032361055036600461260a565b610edb565b34801561056157600080fd5b506102d4610570366004612699565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561059a57600080fd5b506000546001600160a01b0316610255565b3480156105b857600080fd5b50610323610fbe565b3480156105cd57600080fd5b5061028761107f565b3480156105e257600080fd5b506102d46105f13660046125c9565b61108e565b34801561060257600080fd5b506102d46106113660046125c9565b6110c5565b34801561062257600080fd5b506103236106313660046126b6565b6110d2565b34801561064257600080fd5b50601454610255906001600160a01b031681565b34801561066257600080fd5b506102f56106713660046126d1565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156106a857600080fd5b506103236106b7366004612699565b611154565b3480156106c857600080fd5b506103236106d73660046127ad565b611484565b3480156106e857600080fd5b506102f5601a5481565b3480156106fe57600080fd5b5061032361070d366004612811565b611985565b6060600b805461072190612843565b80601f016020809104026020016040519081016040528092919081815260200182805461074d90612843565b801561079a5780601f1061076f5761010080835404028352916020019161079a565b820191906000526020600020905b81548152906001019060200180831161077d57829003601f168201915b5050505050905090565b60006107b13384846119ee565b5060015b92915050565b6000546001600160a01b031633146107ee5760405162461bcd60e51b81526004016107e59061287e565b60405180910390fd5b60018115151415610923576001600160a01b03821660009081526007602052604090205460ff16156108625760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c7265616479206578636c756465642e0000000060448201526064016107e5565b6001600160a01b038216600090815260016020526040902054156108bc576001600160a01b0382166000908152600160205260409020546108a290610b72565b6001600160a01b0383166000908152600260205260409020555b506001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b80610ab4576001600160a01b03821660009081526007602052604090205460ff166109905760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c726561647920696e636c756465642e0000000060448201526064016107e5565b60005b600854811015610ab257826001600160a01b0316600882815481106109ba576109ba6128b3565b6000918252602090912001546001600160a01b03161415610aa057600880546109e5906001906128df565b815481106109f5576109f56128b3565b600091825260209091200154600880546001600160a01b039092169183908110610a2157610a216128b3565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152600282526040808220829055600790925220805460ff191690556008805480610a7957610a796128f6565b600082815260209020810160001990810180546001600160a01b0319169055019055610ab2565b80610aaa8161290c565b915050610993565b505b5050565b6000546001600160a01b03163314610ae25760405162461bcd60e51b81526004016107e59061287e565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015610b1c573d6000803e3d6000fd5b50565b6000610b2c848484611b12565b506001600160a01b038416600090815260056020908152604080832033808552925290912054610b68918691610b639086906128df565b6119ee565b5060019392505050565b6000601054821115610bd95760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016107e5565b6000610be3611e0a565b9050610bef818461293d565b9392505050565b3360008181526005602090815260408083206001600160a01b038716845290915281205490916107b1918590610b63908690612951565b6000546001600160a01b03163314610c575760405162461bcd60e51b81526004016107e59061287e565b6001600160a01b038116610c7d5760405162461bcd60e51b81526004016107e590612969565b6015546001600160a01b0382811691161415610cab5760405162461bcd60e51b81526004016107e590612969565b60008054610cc4916001600160a01b0390911690610da8565b610ccf816001610da8565b610cda8160016107bb565b600054610cef906001600160a01b0316610dfd565b600080546001600160a01b039081168252600560209081526040808420868416855290915282209290925580549091610d289116610dfd565b1115610d4f57600054610d4d906001600160a01b031682610d4882610dfd565b611b12565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60006107b5826000196107a4565b6000546001600160a01b03163314610dd25760405162461bcd60e51b81526004016107e59061287e565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6001600160a01b03811660009081526007602052604081205460ff1615610e3a57506001600160a01b031660009081526002602052604090205490565b6001600160a01b0382166000908152600160205260409020546107b590610b72565b6000546001600160a01b03163314610e865760405162461bcd60e51b81526004016107e59061287e565b60008054610e9f916001600160a01b0390911690610da8565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314610f055760405162461bcd60e51b81526004016107e59061287e565b80610f2c57506001600160a01b03166000908152600360205260409020805460ff19169055565b60045415610f935762093a8060045442610f4691906128df565b11610f935760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f74207365742061206e657720706169722074686973207765656b2160448201526064016107e5565b6001600160a01b0382166000908152600360205260409020805460ff19166001179055426004555050565b6000546001600160a01b03163314610fe85760405162461bcd60e51b81526004016107e59061287e565b601d5460ff161561103b5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c656421000000000000000060448201526064016107e5565b6110463060016107bb565b60135461105d906001600160a01b031660016107bb565b601d805460ff191660011790556016805460ff60a81b1916600160a81b179055565b6060600c805461072190612843565b3360008181526005602090815260408083206001600160a01b038716845290915281205490916107b1918590610b639086906128df565b6000610b68338484611b12565b6000546001600160a01b031633146110fc5760405162461bcd60e51b81526004016107e59061287e565b60168054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061114990831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461117e5760405162461bcd60e51b81526004016107e59061287e565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e791906129c6565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611234573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125891906129c6565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156112a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c791906129c6565b90506001600160a01b03811661144057816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611315573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133991906129c6565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611386573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113aa91906129c6565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156113f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141b91906129c6565b601380546001600160a01b0319166001600160a01b039290921691909117905561145c565b601380546001600160a01b0319166001600160a01b0383161790555b601280546001600160a01b0319166001600160a01b038416179055610ab230846000196119ee565b6000546001600160a01b031633146114ae5760405162461bcd60e51b81526004016107e59061287e565b60235460ff16156114be57600080fd5b81516114d190600b9060208501906124c6565b5080516114e590600c9060208401906124c6565b5064e8d4a51000600a55600d805460ff19166012908117909155600e55600e5461151090600a612ac7565b600a5461151d9190612ad3565b600f81905561152e90600019612af2565b61153a906000196128df565b601055601454601280546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015611599573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115bd91906129c6565b6001600160a01b031663c9c65396601260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561161e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164291906129c6565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801561168e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b291906129c6565b601380546001600160a01b0319166001600160a01b039283169081179091556000908152600360209081526040808320805460ff19166001179055308352600582528083206012549094168352929052206000199055600f54620186a09061171a9082612ad3565b611724919061293d565b601755600a54620186a0906117399082612ad3565b611743919061293d565b601855600f546103e8906117579082612ad3565b611761919061293d565b601955600a546103e8906117759082612ad3565b61177f919061293d565b601a55600f5461271090611794906005612ad3565b61179e919061293d565b601b55600f546103e8906117b3906005612ad3565b6117bd919061293d565b601c556014546117d8906001600160a01b03166000196107a4565b506023805460ff191660019081179091556010549060006118016000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000205561182d6000546001600160a01b031690565b601654600f546040519081526001600160a01b0392831692909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36012546118909030906001600160a01b03166000196119ee565b6118bb6118a56000546001600160a01b031690565b30610d4861051b6000546001600160a01b031690565b506012546001600160a01b031663f305d71947306118d881610dfd565b6000806118ed6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611955573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061197a9190612b06565b505043602255505050565b6000546001600160a01b031633146119af5760405162461bcd60e51b81526004016107e59061287e565b8284600f546119be9190612ad3565b6119c8919061293d565b601b55600f5481906119db908490612ad3565b6119e5919061293d565b601c5550505050565b6001600160a01b038316611a505760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107e5565b6001600160a01b038216611ab15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107e5565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611b785760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107e5565b6001600160a01b038316611bda5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107e5565b60008211611c3c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107e5565b611c468484611e2d565b15611df757601d5460ff16611c9d5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c656421000000000000000060448201526064016107e5565b60205460ff1615611d4f576001600160a01b03841660009081526003602052604090205460ff1615611d0e576001600160a01b038316600090815260216020526040902054431415611cee57600080fd5b6001600160a01b0383166000908152602160205260409020439055611d4f565b6001600160a01b038416600090815260216020526040902054431415611d3357600080fd5b6001600160a01b03841660009081526021602052604090204390555b6014546001600160a01b03848116911614801590611d8657506001600160a01b03831660009081526003602052604090205460ff16155b15611df757600f54611d9784610dfd565b1115611df75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e7420657863656564732074686520746f746160448201526836103a37b5b2b7399760b91b60648201526084016107e5565b611e02848484611eed565b949350505050565b6000806000611e17612229565b9092509050611e26818361293d565b9250505090565b600080546001600160a01b03848116911614801590611e5a57506000546001600160a01b03838116911614155b8015611e7f57506001600160a01b03821660009081526009602052604090205460ff16155b8015611ea457506001600160a01b03831660009081526009602052604090205460ff16155b8015611ebe57506015546001600160a01b03838116911614155b8015611ed257506001600160a01b03821615155b8015610bef57506001600160a01b0383163014159392505050565b601d54600090610100900460ff16611f8157611f0984846123ac565b601d54610100900460ff16158015611f265750611f268484611e2d565b15611f815760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b60648201526084016107e5565b600080600080611f8f611e0a565b8694509050611f9e8185612ad3565b6001600160a01b038916600090815260016020526040902054909350839250611fc89083906128df565b6001600160a01b03808a166000908152600160205260408082209390935590891681522054611ff8908490612951565b6001600160a01b03808916600090815260016020908152604080832094909455918b1681526007909152205460ff16801561204c57506001600160a01b03871660009081526007602052604090205460ff16155b15612093576001600160a01b0388166000908152600260205260409020546120759087906128df565b6001600160a01b0389166000908152600260205260409020556121ce565b6001600160a01b03881660009081526007602052604090205460ff161580156120d457506001600160a01b03871660009081526007602052604090205460ff165b1561211b576001600160a01b0387166000908152600260205260409020546120fd908590612951565b6001600160a01b0388166000908152600260205260409020556121ce565b6001600160a01b03881660009081526007602052604090205460ff16801561215b57506001600160a01b03871660009081526007602052604090205460ff165b156121ce576001600160a01b0388166000908152600260205260409020546121849087906128df565b6001600160a01b03808a1660009081526002602052604080822093909355908916815220546121b4908590612951565b6001600160a01b0388166000908152600260205260409020555b866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161221391815260200190565b60405180910390a3506001979650505050505050565b601054600f546000918291825b60085481101561237b57826001600060088481548110612258576122586128b3565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806122c3575081600260006008848154811061229c5761229c6128b3565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156122d957601054600f54945094505050509091565b60016000600883815481106122f0576122f06128b3565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461231f90846128df565b92506002600060088381548110612338576123386128b3565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461236790836128df565b9150806123738161290c565b915050612236565b50600f5460105461238c919061293d565b8210156123a357601054600f549350935050509091565b90939092509050565b601d54610100900460ff16156124105760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016107e5565b61241a8282611e2d565b15801561243457506013546001600160a01b038281169116145b15610ab4576001600160a01b03821660009081526009602052604090819020805460ff19166001908117909155601d805461ff00191661010017905542601f556016805460ff60a81b1916600160a81b17905590517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159916124ba91901515815260200190565b60405180910390a15050565b8280546124d290612843565b90600052602060002090601f0160209004810192826124f4576000855561253a565b82601f1061250d57805160ff191683800117855561253a565b8280016001018555821561253a579182015b8281111561253a57825182559160200191906001019061251f565b5061254692915061254a565b5090565b5b80821115612546576000815560010161254b565b600060208083528351808285015260005b8181101561258c57858101830151858201604001528201612570565b8181111561259e576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610b1c57600080fd5b600080604083850312156125dc57600080fd5b82356125e7816125b4565b946020939093013593505050565b8035801515811461260557600080fd5b919050565b6000806040838503121561261d57600080fd5b8235612628816125b4565b9150612636602084016125f5565b90509250929050565b60008060006060848603121561265457600080fd5b833561265f816125b4565b9250602084013561266f816125b4565b929592945050506040919091013590565b60006020828403121561269257600080fd5b5035919050565b6000602082840312156126ab57600080fd5b8135610bef816125b4565b6000602082840312156126c857600080fd5b610bef826125f5565b600080604083850312156126e457600080fd5b82356126ef816125b4565b915060208301356126ff816125b4565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261273157600080fd5b813567ffffffffffffffff8082111561274c5761274c61270a565b604051601f8301601f19908116603f011681019082821181831017156127745761277461270a565b8160405283815286602085880101111561278d57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080604083850312156127c057600080fd5b823567ffffffffffffffff808211156127d857600080fd5b6127e486838701612720565b935060208501359150808211156127fa57600080fd5b5061280785828601612720565b9150509250929050565b6000806000806080858703121561282757600080fd5b5050823594602084013594506040840135936060013592509050565b600181811c9082168061285757607f821691505b6020821081141561287857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156128f1576128f16128c9565b500390565b634e487b7160e01b600052603160045260246000fd5b6000600019821415612920576129206128c9565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261294c5761294c612927565b500490565b60008219821115612964576129646128c9565b500190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b6000602082840312156129d857600080fd5b8151610bef816125b4565b600181815b80851115612a1e578160001904821115612a0457612a046128c9565b80851615612a1157918102915b93841c93908002906129e8565b509250929050565b600082612a35575060016107b5565b81612a42575060006107b5565b8160018114612a585760028114612a6257612a7e565b60019150506107b5565b60ff841115612a7357612a736128c9565b50506001821b6107b5565b5060208310610133831016604e8410600b8410161715612aa1575081810a6107b5565b612aab83836129e3565b8060001904821115612abf57612abf6128c9565b029392505050565b6000610bef8383612a26565b6000816000190483118215151615612aed57612aed6128c9565b500290565b600082612b0157612b01612927565b500690565b600080600060608486031215612b1b57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220460cc91a037f0a7fbfb59368b2adadcc2213f9436bff912be1e0504af828a28d64736f6c634300080b0033

Deployed Bytecode

0x6080604052600436106102295760003560e01c8063640384091161012357806395d89b41116100ab578063dd62ed3e1161006f578063dd62ed3e14610656578063eafb5a3c1461069c578063f4b72b2f146106bc578063f6540ec7146106dc578063fb78680d146106f257600080fd5b806395d89b41146105c1578063a457c2d7146105d6578063a9059cbb146105f6578063c49b9a8014610616578063d9e664601461063657600080fd5b806380c581d1116100f257806380c581d11461053557806388f8202014610555578063893d20e81461058e5780638a8c523c146105ac5780638da5cb5b1461058e57600080fd5b806364038409146104ca5780636612e66f146104e057806370a0823114610500578063715018a61461052057600080fd5b80632d838119116101b15780634fb2e45d116101755780634fb2e45d1461041257806350a8e016146104325780635342acb414610451578063571ac8b01461048a57806358fa63ca146104aa57600080fd5b80632d8381191461036f578063313ce5671461038f57806339509351146103b1578063452ed4f1146103d15780634a74bb02146103f157600080fd5b806313114a9d116101f857806313114a9d146102e457806313e461921461030357806318160ddd1461032557806320800a001461033a57806323b872dd1461034f57600080fd5b806303fd2a451461023557806306fdde03146102725780630758d92414610294578063095ea7b3146102b457600080fd5b3661023057005b600080fd5b34801561024157600080fd5b50601554610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b50610287610712565b604051610269919061255f565b3480156102a057600080fd5b50601254610255906001600160a01b031681565b3480156102c057600080fd5b506102d46102cf3660046125c9565b6107a4565b6040519015158152602001610269565b3480156102f057600080fd5b506011545b604051908152602001610269565b34801561030f57600080fd5b5061032361031e36600461260a565b6107bb565b005b34801561033157600080fd5b50600f546102f5565b34801561034657600080fd5b50610323610ab8565b34801561035b57600080fd5b506102d461036a36600461263f565b610b1f565b34801561037b57600080fd5b506102f561038a366004612680565b610b72565b34801561039b57600080fd5b50600d5460405160ff9091168152602001610269565b3480156103bd57600080fd5b506102d46103cc3660046125c9565b610bf6565b3480156103dd57600080fd5b50601354610255906001600160a01b031681565b3480156103fd57600080fd5b506016546102d490600160a81b900460ff1681565b34801561041e57600080fd5b5061032361042d366004612699565b610c2d565b34801561043e57600080fd5b50601d546102d490610100900460ff1681565b34801561045d57600080fd5b506102d461046c366004612699565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561049657600080fd5b506102d46104a5366004612699565b610d9a565b3480156104b657600080fd5b50601654610255906001600160a01b031681565b3480156104d657600080fd5b506102f560185481565b3480156104ec57600080fd5b506103236104fb36600461260a565b610da8565b34801561050c57600080fd5b506102f561051b366004612699565b610dfd565b34801561052c57600080fd5b50610323610e5c565b34801561054157600080fd5b5061032361055036600461260a565b610edb565b34801561056157600080fd5b506102d4610570366004612699565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561059a57600080fd5b506000546001600160a01b0316610255565b3480156105b857600080fd5b50610323610fbe565b3480156105cd57600080fd5b5061028761107f565b3480156105e257600080fd5b506102d46105f13660046125c9565b61108e565b34801561060257600080fd5b506102d46106113660046125c9565b6110c5565b34801561062257600080fd5b506103236106313660046126b6565b6110d2565b34801561064257600080fd5b50601454610255906001600160a01b031681565b34801561066257600080fd5b506102f56106713660046126d1565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156106a857600080fd5b506103236106b7366004612699565b611154565b3480156106c857600080fd5b506103236106d73660046127ad565b611484565b3480156106e857600080fd5b506102f5601a5481565b3480156106fe57600080fd5b5061032361070d366004612811565b611985565b6060600b805461072190612843565b80601f016020809104026020016040519081016040528092919081815260200182805461074d90612843565b801561079a5780601f1061076f5761010080835404028352916020019161079a565b820191906000526020600020905b81548152906001019060200180831161077d57829003601f168201915b5050505050905090565b60006107b13384846119ee565b5060015b92915050565b6000546001600160a01b031633146107ee5760405162461bcd60e51b81526004016107e59061287e565b60405180910390fd5b60018115151415610923576001600160a01b03821660009081526007602052604090205460ff16156108625760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c7265616479206578636c756465642e0000000060448201526064016107e5565b6001600160a01b038216600090815260016020526040902054156108bc576001600160a01b0382166000908152600160205260409020546108a290610b72565b6001600160a01b0383166000908152600260205260409020555b506001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b80610ab4576001600160a01b03821660009081526007602052604090205460ff166109905760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c726561647920696e636c756465642e0000000060448201526064016107e5565b60005b600854811015610ab257826001600160a01b0316600882815481106109ba576109ba6128b3565b6000918252602090912001546001600160a01b03161415610aa057600880546109e5906001906128df565b815481106109f5576109f56128b3565b600091825260209091200154600880546001600160a01b039092169183908110610a2157610a216128b3565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152600282526040808220829055600790925220805460ff191690556008805480610a7957610a796128f6565b600082815260209020810160001990810180546001600160a01b0319169055019055610ab2565b80610aaa8161290c565b915050610993565b505b5050565b6000546001600160a01b03163314610ae25760405162461bcd60e51b81526004016107e59061287e565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015610b1c573d6000803e3d6000fd5b50565b6000610b2c848484611b12565b506001600160a01b038416600090815260056020908152604080832033808552925290912054610b68918691610b639086906128df565b6119ee565b5060019392505050565b6000601054821115610bd95760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016107e5565b6000610be3611e0a565b9050610bef818461293d565b9392505050565b3360008181526005602090815260408083206001600160a01b038716845290915281205490916107b1918590610b63908690612951565b6000546001600160a01b03163314610c575760405162461bcd60e51b81526004016107e59061287e565b6001600160a01b038116610c7d5760405162461bcd60e51b81526004016107e590612969565b6015546001600160a01b0382811691161415610cab5760405162461bcd60e51b81526004016107e590612969565b60008054610cc4916001600160a01b0390911690610da8565b610ccf816001610da8565b610cda8160016107bb565b600054610cef906001600160a01b0316610dfd565b600080546001600160a01b039081168252600560209081526040808420868416855290915282209290925580549091610d289116610dfd565b1115610d4f57600054610d4d906001600160a01b031682610d4882610dfd565b611b12565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60006107b5826000196107a4565b6000546001600160a01b03163314610dd25760405162461bcd60e51b81526004016107e59061287e565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6001600160a01b03811660009081526007602052604081205460ff1615610e3a57506001600160a01b031660009081526002602052604090205490565b6001600160a01b0382166000908152600160205260409020546107b590610b72565b6000546001600160a01b03163314610e865760405162461bcd60e51b81526004016107e59061287e565b60008054610e9f916001600160a01b0390911690610da8565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314610f055760405162461bcd60e51b81526004016107e59061287e565b80610f2c57506001600160a01b03166000908152600360205260409020805460ff19169055565b60045415610f935762093a8060045442610f4691906128df565b11610f935760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f74207365742061206e657720706169722074686973207765656b2160448201526064016107e5565b6001600160a01b0382166000908152600360205260409020805460ff19166001179055426004555050565b6000546001600160a01b03163314610fe85760405162461bcd60e51b81526004016107e59061287e565b601d5460ff161561103b5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c656421000000000000000060448201526064016107e5565b6110463060016107bb565b60135461105d906001600160a01b031660016107bb565b601d805460ff191660011790556016805460ff60a81b1916600160a81b179055565b6060600c805461072190612843565b3360008181526005602090815260408083206001600160a01b038716845290915281205490916107b1918590610b639086906128df565b6000610b68338484611b12565b6000546001600160a01b031633146110fc5760405162461bcd60e51b81526004016107e59061287e565b60168054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061114990831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461117e5760405162461bcd60e51b81526004016107e59061287e565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e791906129c6565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611234573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125891906129c6565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156112a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c791906129c6565b90506001600160a01b03811661144057816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611315573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133991906129c6565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611386573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113aa91906129c6565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156113f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141b91906129c6565b601380546001600160a01b0319166001600160a01b039290921691909117905561145c565b601380546001600160a01b0319166001600160a01b0383161790555b601280546001600160a01b0319166001600160a01b038416179055610ab230846000196119ee565b6000546001600160a01b031633146114ae5760405162461bcd60e51b81526004016107e59061287e565b60235460ff16156114be57600080fd5b81516114d190600b9060208501906124c6565b5080516114e590600c9060208401906124c6565b5064e8d4a51000600a55600d805460ff19166012908117909155600e55600e5461151090600a612ac7565b600a5461151d9190612ad3565b600f81905561152e90600019612af2565b61153a906000196128df565b601055601454601280546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015611599573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115bd91906129c6565b6001600160a01b031663c9c65396601260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561161e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164291906129c6565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801561168e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b291906129c6565b601380546001600160a01b0319166001600160a01b039283169081179091556000908152600360209081526040808320805460ff19166001179055308352600582528083206012549094168352929052206000199055600f54620186a09061171a9082612ad3565b611724919061293d565b601755600a54620186a0906117399082612ad3565b611743919061293d565b601855600f546103e8906117579082612ad3565b611761919061293d565b601955600a546103e8906117759082612ad3565b61177f919061293d565b601a55600f5461271090611794906005612ad3565b61179e919061293d565b601b55600f546103e8906117b3906005612ad3565b6117bd919061293d565b601c556014546117d8906001600160a01b03166000196107a4565b506023805460ff191660019081179091556010549060006118016000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000205561182d6000546001600160a01b031690565b601654600f546040519081526001600160a01b0392831692909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36012546118909030906001600160a01b03166000196119ee565b6118bb6118a56000546001600160a01b031690565b30610d4861051b6000546001600160a01b031690565b506012546001600160a01b031663f305d71947306118d881610dfd565b6000806118ed6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611955573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061197a9190612b06565b505043602255505050565b6000546001600160a01b031633146119af5760405162461bcd60e51b81526004016107e59061287e565b8284600f546119be9190612ad3565b6119c8919061293d565b601b55600f5481906119db908490612ad3565b6119e5919061293d565b601c5550505050565b6001600160a01b038316611a505760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107e5565b6001600160a01b038216611ab15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107e5565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611b785760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107e5565b6001600160a01b038316611bda5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107e5565b60008211611c3c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107e5565b611c468484611e2d565b15611df757601d5460ff16611c9d5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c656421000000000000000060448201526064016107e5565b60205460ff1615611d4f576001600160a01b03841660009081526003602052604090205460ff1615611d0e576001600160a01b038316600090815260216020526040902054431415611cee57600080fd5b6001600160a01b0383166000908152602160205260409020439055611d4f565b6001600160a01b038416600090815260216020526040902054431415611d3357600080fd5b6001600160a01b03841660009081526021602052604090204390555b6014546001600160a01b03848116911614801590611d8657506001600160a01b03831660009081526003602052604090205460ff16155b15611df757600f54611d9784610dfd565b1115611df75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e7420657863656564732074686520746f746160448201526836103a37b5b2b7399760b91b60648201526084016107e5565b611e02848484611eed565b949350505050565b6000806000611e17612229565b9092509050611e26818361293d565b9250505090565b600080546001600160a01b03848116911614801590611e5a57506000546001600160a01b03838116911614155b8015611e7f57506001600160a01b03821660009081526009602052604090205460ff16155b8015611ea457506001600160a01b03831660009081526009602052604090205460ff16155b8015611ebe57506015546001600160a01b03838116911614155b8015611ed257506001600160a01b03821615155b8015610bef57506001600160a01b0383163014159392505050565b601d54600090610100900460ff16611f8157611f0984846123ac565b601d54610100900460ff16158015611f265750611f268484611e2d565b15611f815760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b60648201526084016107e5565b600080600080611f8f611e0a565b8694509050611f9e8185612ad3565b6001600160a01b038916600090815260016020526040902054909350839250611fc89083906128df565b6001600160a01b03808a166000908152600160205260408082209390935590891681522054611ff8908490612951565b6001600160a01b03808916600090815260016020908152604080832094909455918b1681526007909152205460ff16801561204c57506001600160a01b03871660009081526007602052604090205460ff16155b15612093576001600160a01b0388166000908152600260205260409020546120759087906128df565b6001600160a01b0389166000908152600260205260409020556121ce565b6001600160a01b03881660009081526007602052604090205460ff161580156120d457506001600160a01b03871660009081526007602052604090205460ff165b1561211b576001600160a01b0387166000908152600260205260409020546120fd908590612951565b6001600160a01b0388166000908152600260205260409020556121ce565b6001600160a01b03881660009081526007602052604090205460ff16801561215b57506001600160a01b03871660009081526007602052604090205460ff165b156121ce576001600160a01b0388166000908152600260205260409020546121849087906128df565b6001600160a01b03808a1660009081526002602052604080822093909355908916815220546121b4908590612951565b6001600160a01b0388166000908152600260205260409020555b866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161221391815260200190565b60405180910390a3506001979650505050505050565b601054600f546000918291825b60085481101561237b57826001600060088481548110612258576122586128b3565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806122c3575081600260006008848154811061229c5761229c6128b3565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156122d957601054600f54945094505050509091565b60016000600883815481106122f0576122f06128b3565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461231f90846128df565b92506002600060088381548110612338576123386128b3565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461236790836128df565b9150806123738161290c565b915050612236565b50600f5460105461238c919061293d565b8210156123a357601054600f549350935050509091565b90939092509050565b601d54610100900460ff16156124105760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016107e5565b61241a8282611e2d565b15801561243457506013546001600160a01b038281169116145b15610ab4576001600160a01b03821660009081526009602052604090819020805460ff19166001908117909155601d805461ff00191661010017905542601f556016805460ff60a81b1916600160a81b17905590517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159916124ba91901515815260200190565b60405180910390a15050565b8280546124d290612843565b90600052602060002090601f0160209004810192826124f4576000855561253a565b82601f1061250d57805160ff191683800117855561253a565b8280016001018555821561253a579182015b8281111561253a57825182559160200191906001019061251f565b5061254692915061254a565b5090565b5b80821115612546576000815560010161254b565b600060208083528351808285015260005b8181101561258c57858101830151858201604001528201612570565b8181111561259e576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610b1c57600080fd5b600080604083850312156125dc57600080fd5b82356125e7816125b4565b946020939093013593505050565b8035801515811461260557600080fd5b919050565b6000806040838503121561261d57600080fd5b8235612628816125b4565b9150612636602084016125f5565b90509250929050565b60008060006060848603121561265457600080fd5b833561265f816125b4565b9250602084013561266f816125b4565b929592945050506040919091013590565b60006020828403121561269257600080fd5b5035919050565b6000602082840312156126ab57600080fd5b8135610bef816125b4565b6000602082840312156126c857600080fd5b610bef826125f5565b600080604083850312156126e457600080fd5b82356126ef816125b4565b915060208301356126ff816125b4565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261273157600080fd5b813567ffffffffffffffff8082111561274c5761274c61270a565b604051601f8301601f19908116603f011681019082821181831017156127745761277461270a565b8160405283815286602085880101111561278d57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080604083850312156127c057600080fd5b823567ffffffffffffffff808211156127d857600080fd5b6127e486838701612720565b935060208501359150808211156127fa57600080fd5b5061280785828601612720565b9150509250929050565b6000806000806080858703121561282757600080fd5b5050823594602084013594506040840135936060013592509050565b600181811c9082168061285757607f821691505b6020821081141561287857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156128f1576128f16128c9565b500390565b634e487b7160e01b600052603160045260246000fd5b6000600019821415612920576129206128c9565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261294c5761294c612927565b500490565b60008219821115612964576129646128c9565b500190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b6000602082840312156129d857600080fd5b8151610bef816125b4565b600181815b80851115612a1e578160001904821115612a0457612a046128c9565b80851615612a1157918102915b93841c93908002906129e8565b509250929050565b600082612a35575060016107b5565b81612a42575060006107b5565b8160018114612a585760028114612a6257612a7e565b60019150506107b5565b60ff841115612a7357612a736128c9565b50506001821b6107b5565b5060208310610133831016604e8410600b8410161715612aa1575081810a6107b5565b612aab83836129e3565b8060001904821115612abf57612abf6128c9565b029392505050565b6000610bef8383612a26565b6000816000190483118215151615612aed57612aed6128c9565b500290565b600082612b0157612b01612927565b500690565b600080600060608486031215612b1b57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220460cc91a037f0a7fbfb59368b2adadcc2213f9436bff912be1e0504af828a28d64736f6c634300080b0033

Deployed Bytecode Sourcemap

6182:16426:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7174:64;;;;;;;;;;-1:-1:-1;7174:64:0;;;;-1:-1:-1;;;;;7174:64:0;;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;7174:64:0;;;;;;;;12440:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7045:35::-;;;;;;;;;;-1:-1:-1;7045:35:0;;;;-1:-1:-1;;;;;7045:35:0;;;13116:161;;;;;;;;;;-1:-1:-1;13116:161:0;;;;;:::i;:::-;;:::i;:::-;;;1679:14:1;;1672:22;1654:41;;1642:2;1627:18;13116:161:0;1514:187:1;16923:87:0;;;;;;;;;;-1:-1:-1;16992:10:0;;16923:87;;;1852:25:1;;;1840:2;1825:18;16923:87:0;1706:177:1;16009:906:0;;;;;;;;;;-1:-1:-1;16009:906:0;;;;;:::i;:::-;;:::i;:::-;;12193:83;;;;;;;;;;-1:-1:-1;12266:7:0;;12193:83;;22063:107;;;;;;;;;;;;;:::i;13413:266::-;;;;;;;;;;-1:-1:-1;13413:266:0;;;;;:::i;:::-;;:::i;17350:250::-;;;;;;;;;;-1:-1:-1;17350:250:0;;;;;:::i;:::-;;:::i;12282:71::-;;;;;;;;;;-1:-1:-1;12341:9:0;;12282:71;;12341:9;;;;3161:36:1;;3149:2;3134:18;12282:71:0;3019:184:1;13687:215:0;;;;;;;;;;-1:-1:-1;13687:215:0;;;;;:::i;:::-;;:::i;7087:21::-;;;;;;;;;;-1:-1:-1;7087:21:0;;;;-1:-1:-1;;;;;7087:21:0;;;7350:41;;;;;;;;;;-1:-1:-1;7350:41:0;;;;-1:-1:-1;;;7350:41:0;;;;;;11279:704;;;;;;;;;;-1:-1:-1;11279:704:0;;;;;:::i;:::-;;:::i;7659:36::-;;;;;;;;;;-1:-1:-1;7659:36:0;;;;;;;;;;;15264:123;;;;;;;;;;-1:-1:-1;15264:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;15352:27:0;15328:4;15352:27;;;:18;:27;;;;;;;;;15264:123;13285:120;;;;;;;;;;-1:-1:-1;13285:120:0;;;;;:::i;:::-;;:::i;7245:64::-;;;;;;;;;;-1:-1:-1;7245:64:0;;;;-1:-1:-1;;;;;7245:64:0;;;7439:28;;;;;;;;;;;;;;;;15869:132;;;;;;;;;;-1:-1:-1;15869:132:0;;;;;:::i;:::-;;:::i;12735:198::-;;;;;;;;;;-1:-1:-1;12735:198:0;;;;;:::i;:::-;;:::i;11991:194::-;;;;;;;;;;;;;:::i;14704:424::-;;;;;;;;;;-1:-1:-1;14704:424:0;;;;;:::i;:::-;;:::i;15136:120::-;;;;;;;;;;-1:-1:-1;15136:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;15228:20:0;15204:4;15228:20;;;:11;:20;;;;;;;;;15136:120;12517:71;;;;;;;;;;-1:-1:-1;12560:7:0;11257:6;-1:-1:-1;;;;;11257:6:0;12517:71;;19480:285;;;;;;;;;;;;;:::i;12359:75::-;;;;;;;;;;;;;:::i;13910:225::-;;;;;;;;;;-1:-1:-1;13910:225:0;;;;;:::i;:::-;;:::i;12941:167::-;;;;;;;;;;-1:-1:-1;12941:167:0;;;;;:::i;:::-;;:::i;15690:171::-;;;;;;;;;;-1:-1:-1;15690:171:0;;;;;:::i;:::-;;:::i;7136:29::-;;;;;;;;;;-1:-1:-1;7136:29:0;;;;-1:-1:-1;;;;;7136:29:0;;;12594:133;;;;;;;;;;-1:-1:-1;12594:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;12696:19:0;;;12678:7;12696:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12594:133;14143:553;;;;;;;;;;-1:-1:-1;14143:553:0;;;;;:::i;:::-;;:::i;9419:1763::-;;;;;;;;;;-1:-1:-1;9419:1763:0;;;;;:::i;:::-;;:::i;7513:30::-;;;;;;;;;;;;;;;;15395:289;;;;;;;;;;-1:-1:-1;15395:289:0;;;;;:::i;:::-;;:::i;12440:71::-;12479:13;12503:5;12496:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12440:71;:::o;13116:161::-;13191:4;13208:39;189:10;13231:7;13240:6;13208:8;:39::i;:::-;-1:-1:-1;13265:4:0;13116:161;;;;;:::o;16009:906::-;8499:6;;-1:-1:-1;;;;;8499:6:0;189:10;8499:22;8491:67;;;;-1:-1:-1;;;8491:67:0;;;;;;;:::i;:::-;;;;;;;;;16114:4:::1;16103:15:::0;::::1;;;16099:809;;;-1:-1:-1::0;;;;;16144:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;16143:21;16135:62;;;::::0;-1:-1:-1;;;16135:62:0;;6780:2:1;16135:62:0::1;::::0;::::1;6762:21:1::0;6819:2;6799:18;;;6792:30;6858;6838:18;;;6831:58;6906:18;;16135:62:0::1;6578:352:1::0;16135:62:0::1;-1:-1:-1::0;;;;;16215:16:0;::::1;16234:1;16215:16:::0;;;:7:::1;:16;::::0;;;;;:20;16212:116:::1;;-1:-1:-1::0;;;;;16295:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;16275:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;16256:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;16212:116:::1;-1:-1:-1::0;;;;;;16342:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;16342:27:0::1;16365:4;16342:27:::0;;::::1;::::0;;;16384:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;16384:23:0::1;::::0;;::::1;::::0;;16009:906::o;16099:809::-:1;16429:16:::0;16425:483:::1;;-1:-1:-1::0;;;;;16470:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;16462:61;;;::::0;-1:-1:-1;;;16462:61:0;;7137:2:1;16462:61:0::1;::::0;::::1;7119:21:1::0;7176:2;7156:18;;;7149:30;7215;7195:18;;;7188:58;7263:18;;16462:61:0::1;6935:352:1::0;16462:61:0::1;16543:9;16538:359;16562:9;:16:::0;16558:20;::::1;16538:359;;;16624:7;-1:-1:-1::0;;;;;16608:23:0::1;:9;16618:1;16608:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;16608:12:0::1;:23;16604:278;;;16671:9;16681:16:::0;;:20:::1;::::0;16700:1:::1;::::0;16681:20:::1;:::i;:::-;16671:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;16656:9:::1;:12:::0;;-1:-1:-1;;;;;16671:31:0;;::::1;::::0;16666:1;;16656:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;16656:46:0::1;-1:-1:-1::0;;;;;16656:46:0;;::::1;;::::0;;16725:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;16768:11:::1;:20:::0;;;;:28;;-1:-1:-1;;16768:28:0::1;::::0;;16819:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;16819:15:0;;;;;-1:-1:-1;;;;;;16819:15:0::1;::::0;;;;;16857:5:::1;;16604:278;16580:3:::0;::::1;::::0;::::1;:::i;:::-;;;;16538:359;;;;16425:483;16009:906:::0;;:::o;22063:107::-;8499:6;;-1:-1:-1;;;;;8499:6:0;189:10;8499:22;8491:67;;;;-1:-1:-1;;;8491:67:0;;;;;;;:::i;:::-;11230:7;11257:6;;22114:48:::1;::::0;-1:-1:-1;;;;;11257:6:0;;;;22140:21:::1;22114:48:::0;::::1;;;::::0;22140:21;;22114:48;11230:7;22114:48;22140:21;11257:6;22114:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;22063:107::o:0;13413:266::-;13511:4;13528:36;13538:6;13546:9;13557:6;13528:9;:36::i;:::-;-1:-1:-1;;;;;;13606:19:0;;;;;;:11;:19;;;;;;;;189:10;13606:33;;;;;;;;;13575:74;;13584:6;;13606:42;;13642:6;;13606:42;:::i;:::-;13575:8;:74::i;:::-;-1:-1:-1;13667:4:0;13413:266;;;;;:::o;17350:250::-;17416:7;17455;;17444;:18;;17436:73;;;;-1:-1:-1;;;17436:73:0;;8160:2:1;17436:73:0;;;8142:21:1;8199:2;8179:18;;;8172:30;8238:34;8218:18;;;8211:62;-1:-1:-1;;;8289:18:1;;;8282:40;8339:19;;17436:73:0;7958:406:1;17436:73:0;17520:19;17543:10;:8;:10::i;:::-;17520:33;-1:-1:-1;17571:21:0;17520:33;17571:7;:21;:::i;:::-;17564:28;17350:250;-1:-1:-1;;;17350:250:0:o;13687:215::-;189:10;13775:4;13824:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13824:34:0;;;;;;;;;;13775:4;;13792:80;;13815:7;;13824:47;;13861:10;;13824:47;:::i;11279:704::-;8499:6;;-1:-1:-1;;;;;8499:6:0;189:10;8499:22;8491:67;;;;-1:-1:-1;;;8491:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11360:22:0;::::1;11352:96;;;;-1:-1:-1::0;;;11352:96:0::1;;;;;;;:::i;:::-;11479:4;::::0;-1:-1:-1;;;;;11467:16:0;;::::1;11479:4:::0;::::1;11467:16;;11459:90;;;;-1:-1:-1::0;;;11459:90:0::1;;;;;;;:::i;:::-;11579:6;::::0;;11560:33:::1;::::0;-1:-1:-1;;;;;11579:6:0;;::::1;::::0;11560:18:::1;:33::i;:::-;11604:34;11623:8;11633:4;11604:18;:34::i;:::-;11649:37;11671:8;11681:4;11649:21;:37::i;:::-;11757:6;::::0;11747:17:::1;::::0;-1:-1:-1;;;;;11757:6:0::1;11747:9;:17::i;:::-;11715:19;11727:6:::0;;-1:-1:-1;;;;;11727:6:0;;::::1;11715:19:::0;;:11:::1;:19;::::0;;;;;;;:29;;::::1;::::0;;;;;;;:49;;;;11788:6;;11715:19;;11778:17:::1;::::0;11788:6:::1;11778:9;:17::i;:::-;:21;11775:99;;;11826:6;::::0;11816:46:::1;::::0;-1:-1:-1;;;;;11826:6:0::1;11834:8:::0;11844:17:::1;11826:6:::0;11844:9:::1;:17::i;:::-;11816:9;:46::i;:::-;;11775:99;11894:6;:17:::0;;-1:-1:-1;;;;;;11894:17:0::1;-1:-1:-1::0;;;;;11894:17:0;::::1;::::0;;::::1;::::0;;11927:38:::1;::::0;11894:17;;;;11927:38:::1;::::0;11894:6;11927:38:::1;11279:704:::0;:::o;13285:120::-;13338:4;13362:35;13370:7;-1:-1:-1;;13362:7:0;:35::i;15869:132::-;8499:6;;-1:-1:-1;;;;;8499:6:0;189:10;8499:22;8491:67;;;;-1:-1:-1;;;8491:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15956:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:37;;-1:-1:-1;;15956:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15869:132::o;12735:198::-;-1:-1:-1;;;;;12825:20:0;;12801:7;12825:20;;;:11;:20;;;;;;;;12821:49;;;-1:-1:-1;;;;;;12854:16:0;;;;;:7;:16;;;;;;;12735:198::o;12821:49::-;-1:-1:-1;;;;;12908:16:0;;;;;;:7;:16;;;;;;12888:37;;:19;:37::i;11991:194::-;8499:6;;-1:-1:-1;;;;;8499:6:0;189:10;8499:22;8491:67;;;;-1:-1:-1;;;8491:67:0;;;;;;;:::i;:::-;12077:6:::1;::::0;;12058:33:::1;::::0;-1:-1:-1;;;;;12077:6:0;;::::1;::::0;12058:18:::1;:33::i;:::-;12119:1;12102:19:::0;;-1:-1:-1;;;;;;12102:19:0::1;::::0;;12137:40:::1;::::0;12119:1;;12137:40:::1;::::0;12119:1;;12137:40:::1;11991:194::o:0;14704:424::-;8499:6;;-1:-1:-1;;;;;8499:6:0;189:10;8499:22;8491:67;;;;-1:-1:-1;;;8491:67:0;;;;;;;:::i;:::-;14785:16;14781:340:::1;;-1:-1:-1::0;;;;;;14818:13:0::1;14834:5;14818:13:::0;;;:7:::1;:13;::::0;;;;:21;;-1:-1:-1;;14818:21:0::1;::::0;;16009:906::o;14781:340::-:1;14876:17;::::0;:22;14872:153:::1;;14965:7;14945:17;;14927:15;:35;;;;:::i;:::-;:45;14919:90;;;::::0;-1:-1:-1;;;14919:90:0;;9391:2:1;14919:90:0::1;::::0;::::1;9373:21:1::0;;;9410:18;;;9403:30;9469:34;9449:18;;;9442:62;9521:18;;14919:90:0::1;9189:356:1::0;14919:90:0::1;-1:-1:-1::0;;;;;15039:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;:20;;-1:-1:-1;;15039:20:0::1;15055:4;15039:20;::::0;;15094:15:::1;15074:17;:35:::0;14704:424;;:::o;19480:285::-;8499:6;;-1:-1:-1;;;;;8499:6:0;189:10;8499:22;8491:67;;;;-1:-1:-1;;;8491:67:0;;;;;;;:::i;:::-;19542:14:::1;::::0;::::1;;19541:15;19533:52;;;::::0;-1:-1:-1;;;19533:52:0;;9752:2:1;19533:52:0::1;::::0;::::1;9734:21:1::0;9791:2;9771:18;;;9764:30;9830:26;9810:18;;;9803:54;9874:18;;19533:52:0::1;9550:348:1::0;19533:52:0::1;19596:42;19626:4;19633;19596:21;:42::i;:::-;19671:6;::::0;19649:35:::1;::::0;-1:-1:-1;;;;;19671:6:0::1;::::0;19649:21:::1;:35::i;:::-;19697:14;:21:::0;;-1:-1:-1;;19697:21:0::1;19714:4;19697:21;::::0;;19729::::1;:28:::0;;-1:-1:-1;;;;19729:28:0::1;-1:-1:-1::0;;;19729:28:0::1;::::0;;19480:285::o;12359:75::-;12400:13;12424:7;12417:14;;;;;:::i;13910:225::-;189:10;14003:4;14052:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14052:34:0;;;;;;;;;;14003:4;;14020:85;;14043:7;;14052:52;;14089:15;;14052:52;:::i;12941:167::-;13019:4;13036:42;189:10;13060:9;13071:6;13036:9;:42::i;15690:171::-;8499:6;;-1:-1:-1;;;;;8499:6:0;189:10;8499:22;8491:67;;;;-1:-1:-1;;;8491:67:0;;;;;;;:::i;:::-;15767:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;15767:32:0::1;-1:-1:-1::0;;;;15767:32:0;;::::1;;::::0;;15815:38:::1;::::0;::::1;::::0;::::1;::::0;15791:8;1679:14:1;1672:22;1654:41;;1642:2;1627:18;;1514:187;15815:38:0::1;;;;;;;;15690:171:::0;:::o;14143:553::-;8499:6;;-1:-1:-1;;;;;8499:6:0;189:10;8499:22;8491:67;;;;-1:-1:-1;;;8491:67:0;;;;;;;:::i;:::-;14216:29:::1;14267:9;14216:61;;14288:16;14325:10;-1:-1:-1::0;;;;;14325:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14307:47:0::1;;14363:4;14370:10;-1:-1:-1::0;;;;;14370:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14307:81;::::0;-1:-1:-1;;;;;;14307:81:0::1;::::0;;;;;;-1:-1:-1;;;;;10389:15:1;;;14307:81:0::1;::::0;::::1;10371:34:1::0;10441:15;;10421:18;;;10414:43;10306:18;;14307:81:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14288:100:::0;-1:-1:-1;;;;;;14403:22:0;::::1;14399:207;;14469:10;-1:-1:-1::0;;;;;14469:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14451:50:0::1;;14510:4;14517:10;-1:-1:-1::0;;;;;14517:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14451:84;::::0;-1:-1:-1;;;;;;14451:84:0::1;::::0;;;;;;-1:-1:-1;;;;;10389:15:1;;;14451:84:0::1;::::0;::::1;10371:34:1::0;10441:15;;10421:18;;;10414:43;10306:18;;14451:84:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14442:6;:93:::0;;-1:-1:-1;;;;;;14442:93:0::1;-1:-1:-1::0;;;;;14442:93:0;;;::::1;::::0;;;::::1;::::0;;14399:207:::1;;;14577:6;:17:::0;;-1:-1:-1;;;;;;14577:17:0::1;-1:-1:-1::0;;;;;14577:17:0;::::1;;::::0;;14399:207:::1;14616:9;:22:::0;;-1:-1:-1;;;;;;14616:22:0::1;-1:-1:-1::0;;;;;14616:22:0;::::1;;::::0;;14649:39:::1;14666:4;14673:9:::0;-1:-1:-1;;14649:8:0::1;:39::i;9419:1763::-:0;8499:6;;-1:-1:-1;;;;;8499:6:0;189:10;8499:22;8491:67;;;;-1:-1:-1;;;8491:67:0;;;;;;;:::i;:::-;9537:16:::1;::::0;::::1;;9536:17;9528:26;;;::::0;::::1;;9567:18:::0;;::::1;::::0;:5:::1;::::0;:18:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;9596:22:0;;::::1;::::0;:7:::1;::::0;:22:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;9646:17:0::1;9629:14;:34:::0;9726:9:::1;:14:::0;;-1:-1:-1;;9726:14:0::1;9738:2;9726:14:::0;;::::1;::::0;;;9755:12:::1;:24:::0;9918:12:::1;::::0;9914:16:::1;::::0;:2:::1;:16;:::i;:::-;9896:14;;:35;;;;:::i;:::-;9886:7;:45:::0;;;9960:13:::1;::::0;-1:-1:-1;;9960:13:0::1;:::i;:::-;9953:21;::::0;-1:-1:-1;;9953:21:0::1;:::i;:::-;9942:7;:33:::0;10019:14:::1;::::0;9988:9:::1;:46:::0;;-1:-1:-1;;;;;;9988:46:0::1;-1:-1:-1::0;;;;;10019:14:0;;::::1;9988:46:::0;;::::1;::::0;;10072:19:::1;::::0;;-1:-1:-1;;;10072:19:0;;;;:17:::1;::::0;:19:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;10019:14;10072:19:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10054:49:0::1;;10104:9;;;;;;;;;-1:-1:-1::0;;;;;10104:9:0::1;-1:-1:-1::0;;;;;10104:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10054:82;::::0;-1:-1:-1;;;;;;10054:82:0::1;::::0;;;;;;-1:-1:-1;;;;;10389:15:1;;;10054:82:0::1;::::0;::::1;10371:34:1::0;10130:4:0::1;10421:18:1::0;;;10414:43;10306:18;;10054:82:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10045:6;:91:::0;;-1:-1:-1;;;;;;10045:91:0::1;-1:-1:-1::0;;;;;10045:91:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;10147:15:0;;;:7:::1;:15;::::0;;;;;;;:22;;-1:-1:-1;;10147:22:0::1;-1:-1:-1::0;10147:22:0::1;::::0;;10200:4:::1;10180:26:::0;;:11:::1;:26:::0;;;;;10215:9:::1;::::0;;;::::1;10180:46:::0;;;;;;-1:-1:-1;;10180:66:0;;10283:7:::1;::::0;10303:6:::1;::::0;10283:16:::1;::::0;10303:6;10283:16:::1;:::i;:::-;10282:27;;;;:::i;:::-;10267:12;:42:::0;10337:14:::1;::::0;10364:6:::1;::::0;10337:23:::1;::::0;10364:6;10337:23:::1;:::i;:::-;10336:34;;;;:::i;:::-;10320:13;:50:::0;10399:7:::1;::::0;10417:4:::1;::::0;10399:14:::1;::::0;10417:4;10399:14:::1;:::i;:::-;10398:23;;;;:::i;:::-;10381:14;:40:::0;10451:14:::1;::::0;10476:4:::1;::::0;10451:21:::1;::::0;10476:4;10451:21:::1;:::i;:::-;10450:30;;;;:::i;:::-;10432:15;:48:::0;10508:7:::1;::::0;10523:5:::1;::::0;10508:11:::1;::::0;10518:1:::1;10508:11;:::i;:::-;10507:21;;;;:::i;:::-;10491:13;:37:::0;10553:7:::1;::::0;10568:4:::1;::::0;10553:11:::1;::::0;10563:1:::1;10553:11;:::i;:::-;10552:20;;;;:::i;:::-;10539:10;:33:::0;10593:14:::1;::::0;10585:42:::1;::::0;-1:-1:-1;;;;;10593:14:0::1;-1:-1:-1::0;;10585:7:0::1;:42::i;:::-;-1:-1:-1::0;10640:16:0::1;:23:::0;;-1:-1:-1;;10640:23:0::1;10659:4;10640:23:::0;;::::1;::::0;;;10693:7:::1;::::0;;10640:16:::1;10682:7;11230::::0;11257:6;-1:-1:-1;;;;;11257:6:0;;11192:79;10682:7:::1;-1:-1:-1::0;;;;;10674:16:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;10674:16:0;:26;10731:7:::1;11230::::0;11257:6;-1:-1:-1;;;;;11257:6:0;;11192:79;10731:7:::1;10725:4;::::0;10740:7:::1;::::0;10716:32:::1;::::0;1852:25:1;;;-1:-1:-1;;;;;10716:32:0;;::::1;::::0;10725:4;;::::1;::::0;10716:32:::1;::::0;1840:2:1;1825:18;10716:32:0::1;;;;;;;10793:9;::::0;10761:62:::1;::::0;10778:4:::1;::::0;-1:-1:-1;;;;;10793:9:0::1;-1:-1:-1::0;;10761:8:0::1;:62::i;:::-;10836:53;10846:7;11230::::0;11257:6;-1:-1:-1;;;;;11257:6:0;;11192:79;10846:7:::1;10863:4;10870:18;10880:7;11230::::0;11257:6;-1:-1:-1;;;;;11257:6:0;;11192:79;10836:53:::1;-1:-1:-1::0;10916:9:0::1;::::0;-1:-1:-1;;;;;10916:9:0::1;:25;10949:21;10994:4;11014:24;10994:4:::0;11014:9:::1;:24::i;:::-;11053:1;11070::::0;11087:7:::1;11230::::0;11257:6;-1:-1:-1;;;;;11257:6:0;;11192:79;11087:7:::1;10916:219;::::0;::::1;::::0;;;-1:-1:-1;;;;;;10916:219:0;;;-1:-1:-1;;;;;12491:15:1;;;10916:219:0::1;::::0;::::1;12473:34:1::0;12523:18;;;12516:34;;;;12566:18;;;12559:34;;;;12609:18;;;12602:34;12673:15;;;12652:19;;;12645:44;11109:15:0::1;12705:19:1::0;;;12698:35;12407:19;;10916:219:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;11156:12:0::1;11146:7;:22:::0;-1:-1:-1;;;9419:1763:0:o;15395:289::-;8499:6;;-1:-1:-1;;;;;8499:6:0;189:10;8499:22;8491:67;;;;-1:-1:-1;;;8491:67:0;;;;;;;:::i;:::-;15595:16:::1;15575;15565:7;;:26;;;;:::i;:::-;15564:47;;;;:::i;:::-;15548:13;:63:::0;15636:7:::1;::::0;15663:13;;15636:23:::1;::::0;15646:13;;15636:23:::1;:::i;:::-;15635:41;;;;:::i;:::-;15622:10;:54:::0;-1:-1:-1;;;;15395:289:0:o;17612:342::-;-1:-1:-1;;;;;17707:20:0;;17699:69;;;;-1:-1:-1;;;17699:69:0;;13257:2:1;17699:69:0;;;13239:21:1;13296:2;13276:18;;;13269:30;13335:34;13315:18;;;13308:62;-1:-1:-1;;;13386:18:1;;;13379:34;13430:19;;17699:69:0;13055:400:1;17699:69:0;-1:-1:-1;;;;;17787:21:0;;17779:68;;;;-1:-1:-1;;;17779:68:0;;13662:2:1;17779:68:0;;;13644:21:1;13701:2;13681:18;;;13674:30;13740:34;13720:18;;;13713:62;-1:-1:-1;;;13791:18:1;;;13784:32;13833:19;;17779:68:0;13460:398:1;17779:68:0;-1:-1:-1;;;;;17860:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;17913:33;;1852:25:1;;;17913:33:0;;1825:18:1;17913:33:0;;;;;;;17612:342;;;:::o;17962:1055::-;18041:4;-1:-1:-1;;;;;18066:18:0;;18058:68;;;;-1:-1:-1;;;18058:68:0;;14065:2:1;18058:68:0;;;14047:21:1;14104:2;14084:18;;;14077:30;14143:34;14123:18;;;14116:62;-1:-1:-1;;;14194:18:1;;;14187:35;14239:19;;18058:68:0;13863:401:1;18058:68:0;-1:-1:-1;;;;;18145:16:0;;18137:64;;;;-1:-1:-1;;;18137:64:0;;14471:2:1;18137:64:0;;;14453:21:1;14510:2;14490:18;;;14483:30;14549:34;14529:18;;;14522:62;-1:-1:-1;;;14600:18:1;;;14593:33;14643:19;;18137:64:0;14269:399:1;18137:64:0;18229:1;18220:6;:10;18212:64;;;;-1:-1:-1;;;18212:64:0;;14875:2:1;18212:64:0;;;14857:21:1;14914:2;14894:18;;;14887:30;14953:34;14933:18;;;14926:62;-1:-1:-1;;;15004:18:1;;;14997:39;15053:19;;18212:64:0;14673:405:1;18212:64:0;18290:20;18301:4;18307:2;18290:10;:20::i;:::-;18287:670;;;18331:14;;;;18327:89;;18366:34;;-1:-1:-1;;;18366:34:0;;15285:2:1;18366:34:0;;;15267:21:1;15324:2;15304:18;;;15297:30;15363:26;15343:18;;;15336:54;15407:18;;18366:34:0;15083:348:1;18327:89:0;18434:15;;;;18430:347;;;-1:-1:-1;;;;;18474:13:0;;;;;;:7;:13;;;;;;;;18470:292;;;-1:-1:-1;;;;;18519:13:0;;;;;;:9;:13;;;;;;18536:12;18519:29;;18511:38;;;;;;-1:-1:-1;;;;;18572:13:0;;;;;;:9;:13;;;;;18588:12;18572:28;;18470:292;;;-1:-1:-1;;;;;18657:15:0;;;;;;:9;:15;;;;;;18676:12;18657:31;;18649:40;;;;;;-1:-1:-1;;;;;18712:15:0;;;;;;:9;:15;;;;;18730:12;18712:30;;18470:292;18800:14;;-1:-1:-1;;;;;18794:20:0;;;18800:14;;18794:20;;;;:36;;-1:-1:-1;;;;;;18819:11:0;;;;;;:7;:11;;;;;;;;18818:12;18794:36;18791:155;;;18877:7;;18859:13;18869:2;18859:9;:13::i;:::-;:25;;18851:79;;;;-1:-1:-1;;;18851:79:0;;15638:2:1;18851:79:0;;;15620:21:1;15677:2;15657:18;;;15650:30;15716:34;15696:18;;;15689:62;-1:-1:-1;;;15767:18:1;;;15760:39;15816:19;;18851:79:0;15436:405:1;18851:79:0;18974:35;18992:4;18998:2;19002:6;18974:17;:35::i;:::-;18967:42;17962:1055;-1:-1:-1;;;;17962:1055:0:o;21184:161::-;21226:7;21247:15;21264;21283:19;:17;:19::i;:::-;21246:56;;-1:-1:-1;21246:56:0;-1:-1:-1;21320:17:0;21246:56;;21320:17;:::i;:::-;21313:24;;;;21184:161;:::o;17018:324::-;17087:4;11257:6;;-1:-1:-1;;;;;17111:15:0;;;11257:6;;17111:15;;;;:45;;-1:-1:-1;11230:7:0;11257:6;-1:-1:-1;;;;;17143:13:0;;;11257:6;;17143:13;;17111:45;:84;;;;-1:-1:-1;;;;;;17174:21:0;;;;;;:17;:21;;;;;;;;17173:22;17111:84;:125;;;;-1:-1:-1;;;;;;17213:23:0;;;;;;:17;:23;;;;;;;;17212:24;17111:125;:152;;;;-1:-1:-1;17259:4:0;;-1:-1:-1;;;;;17253:10:0;;;17259:4;;17253:10;;17111:152;:185;;;;-1:-1:-1;;;;;;17280:16:0;;;;17111:185;:223;;;;-1:-1:-1;;;;;;17313:21:0;;17329:4;17313:21;;17104:230;17018:324;-1:-1:-1;;;17018:324:0:o;19979:1197::-;20093:16;;20067:4;;20093:16;;;;;20088:237;;20130:28;20149:4;20155:2;20130:18;:28::i;:::-;20182:16;;;;;;;20181:17;:41;;;;;20202:20;20213:4;20219:2;20202:10;:20::i;:::-;20177:137;;;20247:47;;-1:-1:-1;;;20247:47:0;;16048:2:1;20247:47:0;;;16030:21:1;16087:2;16067:18;;;16060:30;16126:34;16106:18;;;16099:62;-1:-1:-1;;;16177:18:1;;;16170:35;16222:19;;20247:47:0;15846:401:1;20177:137:0;20335:23;20369;20403:15;20429:19;20451:10;:8;:10::i;:::-;20490:7;;-1:-1:-1;20429:32:0;-1:-1:-1;20518:21:0;20429:32;20490:7;20518:21;:::i;:::-;-1:-1:-1;;;;;20604:13:0;;;;;;:7;:13;;;;;;20508:31;;-1:-1:-1;20508:31:0;;-1:-1:-1;20604:23:0;;20508:31;;20604:23;:::i;:::-;-1:-1:-1;;;;;20588:13:0;;;;;;;:7;:13;;;;;;:39;;;;20652:11;;;;;;;:29;;20666:15;;20652:29;:::i;:::-;-1:-1:-1;;;;;20638:11:0;;;;;;;:7;:11;;;;;;;;:43;;;;20698:17;;;;;:11;:17;;;;;;;:37;;;;-1:-1:-1;;;;;;20720:15:0;;;;;;:11;:15;;;;;;;;20719:16;20698:37;20694:402;;;-1:-1:-1;;;;;20768:13:0;;;;;;:7;:13;;;;;;:23;;20784:7;;20768:23;:::i;:::-;-1:-1:-1;;;;;20752:13:0;;;;;;:7;:13;;;;;:39;20694:402;;;-1:-1:-1;;;;;20814:17:0;;;;;;:11;:17;;;;;;;;20813:18;:37;;;;-1:-1:-1;;;;;;20835:15:0;;;;;;:11;:15;;;;;;;;20813:37;20809:287;;;-1:-1:-1;;;;;20881:11:0;;;;;;:7;:11;;;;;;:29;;20895:15;;20881:29;:::i;:::-;-1:-1:-1;;;;;20867:11:0;;;;;;:7;:11;;;;;:43;20809:287;;;-1:-1:-1;;;;;20934:17:0;;;;;;:11;:17;;;;;;;;:36;;;;-1:-1:-1;;;;;;20955:15:0;;;;;;:11;:15;;;;;;;;20934:36;20930:166;;;-1:-1:-1;;;;;21003:13:0;;;;;;:7;:13;;;;;;:23;;21019:7;;21003:23;:::i;:::-;-1:-1:-1;;;;;20987:13:0;;;;;;;:7;:13;;;;;;:39;;;;21055:11;;;;;;;:29;;21069:15;;21055:29;:::i;:::-;-1:-1:-1;;;;;21041:11:0;;;;;;:7;:11;;;;;:43;20930:166;21126:2;-1:-1:-1;;;;;21111:35:0;21120:4;-1:-1:-1;;;;;21111:35:0;;21130:15;21111:35;;;;1852:25:1;;1840:2;1825:18;;1706:177;21111:35:0;;;;;;;;-1:-1:-1;21164:4:0;;19979:1197;-1:-1:-1;;;;;;;19979:1197:0:o;21353:547::-;21451:7;;21487;;21404;;;;;21505:283;21529:9;:16;21525:20;;21505:283;;;21595:7;21571;:21;21579:9;21589:1;21579:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;21579:12:0;21571:21;;;;;;;;;;;;;:31;;:66;;;21630:7;21606;:21;21614:9;21624:1;21614:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;21614:12:0;21606:21;;;;;;;;;;;;;:31;21571:66;21567:97;;;21647:7;;21656;;21639:25;;;;;;;21353:547;;:::o;21567:97::-;21699:7;:21;21707:9;21717:1;21707:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;21707:12:0;21699:21;;;;;;;;;;;;;21689:31;;:7;:31;:::i;:::-;21679:41;;21755:7;:21;21763:9;21773:1;21763:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;21763:12:0;21755:21;;;;;;;;;;;;;21745:31;;:7;:31;:::i;:::-;21735:41;-1:-1:-1;21547:3:0;;;;:::i;:::-;;;;21505:283;;;;21822:7;;21812;;:17;;;;:::i;:::-;21802:7;:27;21798:58;;;21839:7;;21848;;21831:25;;;;;;21353:547;;:::o;21798:58::-;21875:7;;21884;;-1:-1:-1;21353:547:0;-1:-1:-1;21353:547:0:o;19033:439::-;19116:16;;;;;;;19115:17;19107:65;;;;-1:-1:-1;;;19107:65:0;;16454:2:1;19107:65:0;;;16436:21:1;16493:2;16473:18;;;16466:30;16532:34;16512:18;;;16505:62;-1:-1:-1;;;16583:18:1;;;16576:33;16626:19;;19107:65:0;16252:399:1;19107:65:0;19188:20;19199:4;19205:2;19188:10;:20::i;:::-;19187:21;:37;;;;-1:-1:-1;19218:6:0;;-1:-1:-1;;;;;19212:12:0;;;19218:6;;19212:12;19187:37;19183:282;;;-1:-1:-1;;;;;19241:23:0;;;;;;:17;:23;;;;;;;:30;;-1:-1:-1;;19241:30:0;19267:4;19241:30;;;;;;19286:16;:23;;-1:-1:-1;;19286:23:0;19241:30;19286:23;;;19339:15;19324:12;:30;19371:21;:28;;-1:-1:-1;;;;19371:28:0;-1:-1:-1;;;19371:28:0;;;19419:34;;;;;;1679:14:1;;1672:22;1654:41;;1642:2;1627:18;;1514:187;19419:34:0;;;;;;;;19033:439;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;222:597:1;334:4;363:2;392;381:9;374:21;424:6;418:13;467:6;462:2;451:9;447:18;440:34;492:1;502:140;516:6;513:1;510:13;502:140;;;611:14;;;607:23;;601:30;577:17;;;596:2;573:26;566:66;531:10;;502:140;;;660:6;657:1;654:13;651:91;;;730:1;725:2;716:6;705:9;701:22;697:31;690:42;651:91;-1:-1:-1;803:2:1;782:15;-1:-1:-1;;778:29:1;763:45;;;;810:2;759:54;;222:597;-1:-1:-1;;;222:597:1:o;1058:131::-;-1:-1:-1;;;;;1133:31:1;;1123:42;;1113:70;;1179:1;1176;1169:12;1194:315;1262:6;1270;1323:2;1311:9;1302:7;1298:23;1294:32;1291:52;;;1339:1;1336;1329:12;1291:52;1378:9;1365:23;1397:31;1422:5;1397:31;:::i;:::-;1447:5;1499:2;1484:18;;;;1471:32;;-1:-1:-1;;;1194:315:1:o;1888:160::-;1953:20;;2009:13;;2002:21;1992:32;;1982:60;;2038:1;2035;2028:12;1982:60;1888:160;;;:::o;2053:315::-;2118:6;2126;2179:2;2167:9;2158:7;2154:23;2150:32;2147:52;;;2195:1;2192;2185:12;2147:52;2234:9;2221:23;2253:31;2278:5;2253:31;:::i;:::-;2303:5;-1:-1:-1;2327:35:1;2358:2;2343:18;;2327:35;:::i;:::-;2317:45;;2053:315;;;;;:::o;2373:456::-;2450:6;2458;2466;2519:2;2507:9;2498:7;2494:23;2490:32;2487:52;;;2535:1;2532;2525:12;2487:52;2574:9;2561:23;2593:31;2618:5;2593:31;:::i;:::-;2643:5;-1:-1:-1;2700:2:1;2685:18;;2672:32;2713:33;2672:32;2713:33;:::i;:::-;2373:456;;2765:7;;-1:-1:-1;;;2819:2:1;2804:18;;;;2791:32;;2373:456::o;2834:180::-;2893:6;2946:2;2934:9;2925:7;2921:23;2917:32;2914:52;;;2962:1;2959;2952:12;2914:52;-1:-1:-1;2985:23:1;;2834:180;-1:-1:-1;2834:180:1:o;3208:247::-;3267:6;3320:2;3308:9;3299:7;3295:23;3291:32;3288:52;;;3336:1;3333;3326:12;3288:52;3375:9;3362:23;3394:31;3419:5;3394:31;:::i;3460:180::-;3516:6;3569:2;3557:9;3548:7;3544:23;3540:32;3537:52;;;3585:1;3582;3575:12;3537:52;3608:26;3624:9;3608:26;:::i;3645:388::-;3713:6;3721;3774:2;3762:9;3753:7;3749:23;3745:32;3742:52;;;3790:1;3787;3780:12;3742:52;3829:9;3816:23;3848:31;3873:5;3848:31;:::i;:::-;3898:5;-1:-1:-1;3955:2:1;3940:18;;3927:32;3968:33;3927:32;3968:33;:::i;:::-;4020:7;4010:17;;;3645:388;;;;;:::o;4038:127::-;4099:10;4094:3;4090:20;4087:1;4080:31;4130:4;4127:1;4120:15;4154:4;4151:1;4144:15;4170:719;4213:5;4266:3;4259:4;4251:6;4247:17;4243:27;4233:55;;4284:1;4281;4274:12;4233:55;4320:6;4307:20;4346:18;4383:2;4379;4376:10;4373:36;;;4389:18;;:::i;:::-;4464:2;4458:9;4432:2;4518:13;;-1:-1:-1;;4514:22:1;;;4538:2;4510:31;4506:40;4494:53;;;4562:18;;;4582:22;;;4559:46;4556:72;;;4608:18;;:::i;:::-;4648:10;4644:2;4637:22;4683:2;4675:6;4668:18;4729:3;4722:4;4717:2;4709:6;4705:15;4701:26;4698:35;4695:55;;;4746:1;4743;4736:12;4695:55;4810:2;4803:4;4795:6;4791:17;4784:4;4776:6;4772:17;4759:54;4857:1;4850:4;4845:2;4837:6;4833:15;4829:26;4822:37;4877:6;4868:15;;;;;;4170:719;;;;:::o;4894:543::-;4982:6;4990;5043:2;5031:9;5022:7;5018:23;5014:32;5011:52;;;5059:1;5056;5049:12;5011:52;5099:9;5086:23;5128:18;5169:2;5161:6;5158:14;5155:34;;;5185:1;5182;5175:12;5155:34;5208:50;5250:7;5241:6;5230:9;5226:22;5208:50;:::i;:::-;5198:60;;5311:2;5300:9;5296:18;5283:32;5267:48;;5340:2;5330:8;5327:16;5324:36;;;5356:1;5353;5346:12;5324:36;;5379:52;5423:7;5412:8;5401:9;5397:24;5379:52;:::i;:::-;5369:62;;;4894:543;;;;;:::o;5442:385::-;5528:6;5536;5544;5552;5605:3;5593:9;5584:7;5580:23;5576:33;5573:53;;;5622:1;5619;5612:12;5573:53;-1:-1:-1;;5645:23:1;;;5715:2;5700:18;;5687:32;;-1:-1:-1;5766:2:1;5751:18;;5738:32;;5817:2;5802:18;5789:32;;-1:-1:-1;5442:385:1;-1:-1:-1;5442:385:1:o;5832:380::-;5911:1;5907:12;;;;5954;;;5975:61;;6029:4;6021:6;6017:17;6007:27;;5975:61;6082:2;6074:6;6071:14;6051:18;6048:38;6045:161;;;6128:10;6123:3;6119:20;6116:1;6109:31;6163:4;6160:1;6153:15;6191:4;6188:1;6181:15;6045:161;;5832:380;;;:::o;6217:356::-;6419:2;6401:21;;;6438:18;;;6431:30;6497:34;6492:2;6477:18;;6470:62;6564:2;6549:18;;6217:356::o;7292:127::-;7353:10;7348:3;7344:20;7341:1;7334:31;7384:4;7381:1;7374:15;7408:4;7405:1;7398:15;7424:127;7485:10;7480:3;7476:20;7473:1;7466:31;7516:4;7513:1;7506:15;7540:4;7537:1;7530:15;7556:125;7596:4;7624:1;7621;7618:8;7615:34;;;7629:18;;:::i;:::-;-1:-1:-1;7666:9:1;;7556:125::o;7686:127::-;7747:10;7742:3;7738:20;7735:1;7728:31;7778:4;7775:1;7768:15;7802:4;7799:1;7792:15;7818:135;7857:3;-1:-1:-1;;7878:17:1;;7875:43;;;7898:18;;:::i;:::-;-1:-1:-1;7945:1:1;7934:13;;7818:135::o;8369:127::-;8430:10;8425:3;8421:20;8418:1;8411:31;8461:4;8458:1;8451:15;8485:4;8482:1;8475:15;8501:120;8541:1;8567;8557:35;;8572:18;;:::i;:::-;-1:-1:-1;8606:9:1;;8501:120::o;8626:128::-;8666:3;8697:1;8693:6;8690:1;8687:13;8684:39;;;8703:18;;:::i;:::-;-1:-1:-1;8739:9:1;;8626:128::o;8759:425::-;8961:2;8943:21;;;9000:2;8980:18;;;8973:30;9039:34;9034:2;9019:18;;9012:62;9110:31;9105:2;9090:18;;9083:59;9174:3;9159:19;;8759:425::o;9903:251::-;9973:6;10026:2;10014:9;10005:7;10001:23;9997:32;9994:52;;;10042:1;10039;10032:12;9994:52;10074:9;10068:16;10093:31;10118:5;10093:31;:::i;10468:422::-;10557:1;10600:5;10557:1;10614:270;10635:7;10625:8;10622:21;10614:270;;;10694:4;10690:1;10686:6;10682:17;10676:4;10673:27;10670:53;;;10703:18;;:::i;:::-;10753:7;10743:8;10739:22;10736:55;;;10773:16;;;;10736:55;10852:22;;;;10812:15;;;;10614:270;;;10618:3;10468:422;;;;;:::o;10895:806::-;10944:5;10974:8;10964:80;;-1:-1:-1;11015:1:1;11029:5;;10964:80;11063:4;11053:76;;-1:-1:-1;11100:1:1;11114:5;;11053:76;11145:4;11163:1;11158:59;;;;11231:1;11226:130;;;;11138:218;;11158:59;11188:1;11179:10;;11202:5;;;11226:130;11263:3;11253:8;11250:17;11247:43;;;11270:18;;:::i;:::-;-1:-1:-1;;11326:1:1;11312:16;;11341:5;;11138:218;;11440:2;11430:8;11427:16;11421:3;11415:4;11412:13;11408:36;11402:2;11392:8;11389:16;11384:2;11378:4;11375:12;11371:35;11368:77;11365:159;;;-1:-1:-1;11477:19:1;;;11509:5;;11365:159;11556:34;11581:8;11575:4;11556:34;:::i;:::-;11626:6;11622:1;11618:6;11614:19;11605:7;11602:32;11599:58;;;11637:18;;:::i;:::-;11675:20;;10895:806;-1:-1:-1;;;10895:806:1:o;11706:131::-;11766:5;11795:36;11822:8;11816:4;11795:36;:::i;11842:168::-;11882:7;11948:1;11944;11940:6;11936:14;11933:1;11930:21;11925:1;11918:9;11911:17;11907:45;11904:71;;;11955:18;;:::i;:::-;-1:-1:-1;11995:9:1;;11842:168::o;12015:112::-;12047:1;12073;12063:35;;12078:18;;:::i;:::-;-1:-1:-1;12112:9:1;;12015:112::o;12744:306::-;12832:6;12840;12848;12901:2;12889:9;12880:7;12876:23;12872:32;12869:52;;;12917:1;12914;12907:12;12869:52;12946:9;12940:16;12930:26;;12996:2;12985:9;12981:18;12975:25;12965:35;;13040:2;13029:9;13025:18;13019:25;13009:35;;12744:306;;;;;:::o

Swarm Source

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