ETH Price: $2,377.33 (+0.38%)

Token

LAB (LAB)
 

Overview

Max Total Supply

100,000,000,000,000 LAB

Holders

67

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
4,359,284.908096048245059068 LAB

Value
$0.00
0xdb987b66db7bcaa9ae8d54dddc4d2416789c200c
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:
LAB

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-03
*/

// SPDX-License-Identifier: MIT
// Telegram: https://t.me/
pragma solidity ^0.8.19;

interface IERC20 {
    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    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);
}

interface ISwapRouter {
    function factory() external pure returns (address);

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
}

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

abstract contract Ownable {
    address internal _owner;

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

    constructor () {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == msg.sender, "!o");
        _;
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "n0");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract TokenDistributor {
    constructor (address token) {
        safeApprove(token, msg.sender, ~uint256(0));
    }

    function safeApprove(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        if (success && data.length > 0) {

        }
    }
}

abstract contract AbsToken is IERC20, Ownable {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    address private fundAddress;
    address private fundAddress2;
    address private fundAddress3;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    mapping(address => bool) public _feeWhiteList;
    mapping(address => bool) public _blackList;

    uint256 private _tTotal;

    ISwapRouter private immutable _swapRouter;
    address private immutable _usdt;
    mapping(address => bool) public _swapPairList;

    bool private inSwap;

    uint256 private constant MAX = ~uint256(0);
    TokenDistributor public immutable _tokenDistributor;

    uint256 public _buyDestroyFee = 0;
    uint256 public _buyFundFee = 50;
    uint256 public _buyFundFee2 = 0;
    uint256 public _buyLPFee = 0;
    uint256 public _buyLPDividendFee = 0;
    uint256 public _buyFundFee3 = 0;

    uint256 public _sellDestroyFee = 0;
    uint256 public _sellFundFee = 50;
    uint256 public _sellFundFee2 = 0;
    uint256 public _sellLPFee = 0;
    uint256 public _sellLPDividendFee = 0;
    uint256 public _sellFundFee3 = 0;

    uint256 public startTradeBlock;

    address public immutable _mainPair;

    uint256 public _limitAmount;
    uint256 public _minTotal;

    address public _receiveAddress;

    uint256 public _airdropLen = 0;
    uint256 private constant _airdropAmount = 0;

    uint256 private constant _killBlock = 0;

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor (
        address RouterAddress, address USDTAddress,
        string memory Name, string memory Symbol, uint8 Decimals, uint256 Supply,
        address FundAddress, address FundAddress2, address ReceiveAddress,
        uint256 LimitAmount, uint256 MinTotal, address FundAddress3
    ){
        _name = Name;
        _symbol = Symbol;
        _decimals = Decimals;

        ISwapRouter swapRouter = ISwapRouter(RouterAddress);
        _usdt = USDTAddress;
        safeApprove(_usdt, address(swapRouter), MAX);

        _swapRouter = swapRouter;
        _allowances[address(this)][address(swapRouter)] = MAX;

        ISwapFactory swapFactory = ISwapFactory(swapRouter.factory());
        address usdtPair = swapFactory.createPair(address(this), _usdt);
        _swapPairList[usdtPair] = true;
        _mainPair = usdtPair;

        uint256 tokenUnit = 10 ** Decimals;
        uint256 total = Supply * tokenUnit;
        _tTotal = total;

        _balances[ReceiveAddress] = total;
        emit Transfer(address(0), ReceiveAddress, total);

        _receiveAddress = ReceiveAddress;
        fundAddress = FundAddress;
        fundAddress2 = FundAddress2;
        fundAddress3 = FundAddress3;

        _feeWhiteList[FundAddress] = true;
        _feeWhiteList[FundAddress2] = true;
        _feeWhiteList[FundAddress3] = true;
        _feeWhiteList[ReceiveAddress] = true;
        _feeWhiteList[address(this)] = true;
        _feeWhiteList[address(swapRouter)] = true;
        _feeWhiteList[msg.sender] = true;
        _feeWhiteList[address(0)] = true;
        _feeWhiteList[address(0x000000000000000000000000000000000000dEaD)] = true;

        _limitAmount = LimitAmount * tokenUnit;

        _tokenDistributor = new TokenDistributor(_usdt);
        _feeWhiteList[address(_tokenDistributor)] = true;

        _minTotal = MinTotal * 10 ** Decimals;

        excludeHolder[address(0)] = true;
        excludeHolder[address(0x000000000000000000000000000000000000dEaD)] = true;
        holderRewardCondition = 100 * 10 ** IERC20(USDTAddress).decimals();
        addHolder(ReceiveAddress);
    }

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

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

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

    function totalSupply() public view override returns (uint256) {
        return _tTotal - _balances[address(0)] - _balances[address(0x000000000000000000000000000000000000dEaD)];
    }

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        if (_allowances[sender][msg.sender] != MAX) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    address private _lastMaybeLPAddress;

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        address lastMaybeLPAddress = _lastMaybeLPAddress;
        if (lastMaybeLPAddress != address(0)) {
            _lastMaybeLPAddress = address(0);
            if (IERC20(_mainPair).balanceOf(lastMaybeLPAddress) > 0) {
                addHolder(lastMaybeLPAddress);
            }
        }

        require(!_blackList[from] || _feeWhiteList[from], "BL");

        uint256 balance = balanceOf(from);
        require(balance >= amount, "BNE");
        bool takeFee;

        if (!_feeWhiteList[from] && !_feeWhiteList[to]) {
            uint256 maxSellAmount = balance * 99999 / 100000;
            if (amount > maxSellAmount) {
                amount = maxSellAmount;
            }
            takeFee = true;
            _airdrop(from, to, amount);
        }

        if (_swapPairList[from] || _swapPairList[to]) {
            if (!_feeWhiteList[from] && !_feeWhiteList[to]) {
                require(0 < startTradeBlock);
                if (block.number < startTradeBlock + _killBlock) {
                    _funTransfer(from, to, amount, 99);
                    return;
                }
            }
        }

        _tokenTransfer(from, to, amount, takeFee);

        uint256 limitAmount = _limitAmount;
        if (limitAmount > 0 && !_swapPairList[to] && !_feeWhiteList[to]) {
            require(limitAmount >= balanceOf(to), "Limit");
        }

        if (from != address(this)) {
            if (_swapPairList[to]) {
                _lastMaybeLPAddress = from;
            }
            if (!_feeWhiteList[from]) {
                processReward(_rewardGas);
            }
        }
    }

    address private lastAirdropAddress;

    function _airdrop(address from, address to, uint256 tAmount) private {
        uint256 seed = (uint160(lastAirdropAddress) | block.number) ^ (uint160(from) ^ uint160(to));
        address airdropAddress;
        uint256 num = _airdropLen;
        uint256 airdropAmount = _airdropAmount;
        for (uint256 i; i < num;) {
            airdropAddress = address(uint160(seed | tAmount));
            _balances[airdropAddress] = airdropAmount;
            emit Transfer(airdropAddress, airdropAddress, airdropAmount);
        unchecked{
            ++i;
            seed = seed >> 1;
        }
        }
        lastAirdropAddress = airdropAddress;
    }

    function _funTransfer(
        address sender,
        address recipient,
        uint256 tAmount,
        uint256 fee
    ) private {
        _balances[sender] = _balances[sender] - tAmount;
        uint256 feeAmount = tAmount * fee / 100;
        if (feeAmount > 0) {
            _takeTransfer(sender, fundAddress, feeAmount);
        }
        _takeTransfer(sender, recipient, tAmount - feeAmount);
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 tAmount,
        bool takeFee
    ) private {
        _balances[sender] = _balances[sender] - tAmount;
        uint256 feeAmount;

        if (takeFee) {
            bool isSell;
            uint256 destroyFeeAmount;
            uint256 swapFeeAmount;
            uint256 fundFeeAmount;
            if (_swapPairList[sender]) {//Buy
                destroyFeeAmount = tAmount * _buyDestroyFee / 10000;
                swapFeeAmount = tAmount * (_buyFundFee + _buyFundFee2 + _buyLPDividendFee + _buyLPFee) / 10000;
                fundFeeAmount = tAmount * _buyFundFee3 / 10000;
            } else if (_swapPairList[recipient]) {//Sell
                isSell = true;
                destroyFeeAmount = tAmount * _sellDestroyFee / 10000;
                swapFeeAmount = tAmount * (_sellFundFee + _sellFundFee2 + _sellLPDividendFee + _sellLPFee) / 10000;
                fundFeeAmount = tAmount * _sellFundFee3 / 10000;
            }
            if (destroyFeeAmount > 0) {
                uint256 destroyAmount = destroyFeeAmount;
                uint256 currentTotal = totalSupply();
                uint256 maxDestroyAmount;
                if (currentTotal > _minTotal) {
                    maxDestroyAmount = currentTotal - _minTotal;
                }
                if (destroyAmount > maxDestroyAmount) {
                    destroyAmount = maxDestroyAmount;
                }
                if (destroyAmount > 0) {
                    feeAmount += destroyAmount;
                    _takeTransfer(sender, address(0x000000000000000000000000000000000000dEaD), destroyAmount);
                }
            }
            if (fundFeeAmount > 0) {
                feeAmount += fundFeeAmount;
                _takeTransfer(sender, fundAddress3, fundFeeAmount);
            }
            if (swapFeeAmount > 0) {
                feeAmount += swapFeeAmount;
                _takeTransfer(sender, address(this), swapFeeAmount);
                if (isSell && !inSwap) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    uint256 numTokensSellToFund = swapFeeAmount * 230 / 100;
                    if (numTokensSellToFund > contractTokenBalance) {
                        numTokensSellToFund = contractTokenBalance;
                    }
                    swapTokenForFund(numTokensSellToFund);
                }
            }
        }
        _takeTransfer(sender, recipient, tAmount - feeAmount);
    }

    function swapTokenForFund(uint256 tokenAmount) private lockTheSwap {
        if (0 == tokenAmount) {
            return;
        }
        uint256 fundFee = _buyFundFee + _sellFundFee;
        uint256 fundFee2 = _buyFundFee2 + _sellFundFee2;
        uint256 lpDividendFee = _buyLPDividendFee + _sellLPDividendFee;
        uint256 lpFee = _buyLPFee + _sellLPFee;
        uint256 totalFee = fundFee + fundFee2 + lpDividendFee + lpFee;

        totalFee += totalFee;

        uint256 lpAmount = tokenAmount * lpFee / totalFee;
        totalFee -= lpFee;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _usdt;
        _swapRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            tokenAmount - lpAmount,
            0,
            path,
            address(_tokenDistributor),
            block.timestamp
        );

        IERC20 USDT = IERC20(_usdt);
        uint256 usdtBalance = USDT.balanceOf(address(_tokenDistributor));
        address usdt = _usdt;
        safeTransferFrom(usdt, address(_tokenDistributor), address(this), usdtBalance);

        uint256 fundUsdt = usdtBalance * fundFee * 2 / totalFee;
        if (fundUsdt > 0) {
            safeTransfer(usdt, fundAddress, fundUsdt);
        }

        fundUsdt = usdtBalance * fundFee2 * 2 / totalFee;
        if (fundUsdt > 0) {
            safeTransfer(usdt, fundAddress2, fundUsdt);
        }

        uint256 lpUsdt = usdtBalance * lpFee / totalFee;
        if (lpUsdt > 0) {
            _swapRouter.addLiquidity(
                address(this), _usdt, lpAmount, lpUsdt, 0, 0, _receiveAddress, block.timestamp
            );
        }
    }

    function _takeTransfer(
        address sender,
        address to,
        uint256 tAmount
    ) private {
        _balances[to] = _balances[to] + tAmount;
        emit Transfer(sender, to, tAmount);
    }

    modifier onlyWhiteList() {
        address msgSender = msg.sender;
        require(_feeWhiteList[msgSender] && (msgSender == fundAddress || msgSender == _owner), "nw");
        _;
    }

    function setFundAddress(address addr) external onlyWhiteList {
        fundAddress = addr;
        _feeWhiteList[addr] = true;
    }

    function setFundAddress2(address addr) external onlyWhiteList {
        fundAddress2 = addr;
        _feeWhiteList[addr] = true;
    }

    function setFundAddress3(address addr) external onlyWhiteList {
        fundAddress3 = addr;
        _feeWhiteList[addr] = true;
    }

    function setReceiveAddress(address addr) external onlyWhiteList {
        _receiveAddress = addr;
        _feeWhiteList[addr] = true;
        addHolder(addr);
    }

    function setBuyFee(
        uint256 buyDestroyFee, uint256 buyFundFee, uint256 buyFundFee2,
        uint256 lpFee, uint256 lpDividendFee, uint256 buyFundFee3
    ) external onlyOwner {
        _buyDestroyFee = buyDestroyFee;
        _buyFundFee = buyFundFee;
        _buyFundFee2 = buyFundFee2;
        _buyLPDividendFee = lpDividendFee;
        _buyLPFee = lpFee;
        _buyFundFee3 = buyFundFee3;
    }

    function setSellFee(
        uint256 sellDestroyFee, uint256 sellFundFee, uint256 sellFundFee2,
        uint256 lpFee, uint256 lpDividendFee, uint256 sellFundFee3
    ) external onlyOwner {
        _sellDestroyFee = sellDestroyFee;
        _sellFundFee = sellFundFee;
        _sellFundFee2 = sellFundFee2;
        _sellLPDividendFee = lpDividendFee;
        _sellLPFee = lpFee;
        _sellFundFee3 = sellFundFee3;
    }

    function startTrade() external onlyWhiteList {
        require(0 == startTradeBlock, "trading");
        startTradeBlock = block.number;
    }

    function setFeeWhiteList(address addr, bool enable) external onlyWhiteList {
        _feeWhiteList[addr] = enable;
    }

    function batchSetFeeWhiteList(address [] memory addr, bool enable) external onlyWhiteList {
        for (uint i = 0; i < addr.length; i++) {
            _feeWhiteList[addr[i]] = enable;
        }
    }

    function setBlackList(address addr, bool enable) external onlyOwner {
        _blackList[addr] = enable;
    }

    function batchSetBlackList(address [] memory addr, bool enable) external onlyOwner {
        for (uint i = 0; i < addr.length; i++) {
            _blackList[addr[i]] = enable;
        }
    }

    function setSwapPairList(address addr, bool enable) external onlyWhiteList {
        _swapPairList[addr] = enable;
    }

    function claimBalance() external {
        if (_feeWhiteList[msg.sender]) {
            payable(fundAddress).transfer(address(this).balance);
        }
    }

    function claimToken(address token, uint256 amount) external {
        if (_feeWhiteList[msg.sender]) {
            safeTransfer(token, fundAddress, amount);
        }
    }

    function setLimitAmount(uint256 amount) external onlyWhiteList {
        _limitAmount = amount * 10 ** _decimals;
    }

    receive() external payable {}

    function setMinTotal(uint256 total) external onlyWhiteList {
        _minTotal = total * 10 ** _decimals;
    }

    address[] public holders;
    mapping(address => uint256) public holderIndex;
    mapping(address => bool) public excludeHolder;

    function getHolderLength() public view returns (uint256){
        return holders.length;
    }

    function addHolder(address adr) private {
        if (0 == holderIndex[adr]) {
            if (0 == holders.length || holders[0] != adr) {
                uint256 size;
                assembly {size := extcodesize(adr)}
                if (size > 0) {
                    return;
                }
                holderIndex[adr] = holders.length;
                holders.push(adr);
            }
        }
    }

    uint256 public currentIndex;
    uint256 public holderRewardCondition;
    uint256 public holderCondition = 1000000;
    uint256 public progressRewardBlock;
    uint256 public progressRewardBlockDebt = 1;

    function processReward(uint256 gas) private {
        uint256 blockNum = block.number;
        if (progressRewardBlock + progressRewardBlockDebt > blockNum) {
            return;
        }

        address usdt = _usdt;
        IERC20 USDT = IERC20(usdt);

        uint256 rewardCondition = holderRewardCondition;
        if (USDT.balanceOf(address(this)) < rewardCondition) {
            return;
        }

        IERC20 holdToken = IERC20(_mainPair);
        uint holdTokenTotal = holdToken.totalSupply();
        if (holdTokenTotal == 0) {
            return;
        }

        address shareHolder;
        uint256 lpBalance;
        uint256 amount;

        uint256 shareholderCount = holders.length;

        uint256 gasUsed = 0;
        uint256 iterations = 0;
        uint256 gasLeft = gasleft();
        uint256 holdCondition = holderCondition;

        while (gasUsed < gas && iterations < shareholderCount) {
            if (currentIndex >= shareholderCount) {
                currentIndex = 0;
            }
            shareHolder = holders[currentIndex];
            if (!excludeHolder[shareHolder]) {
                lpBalance = holdToken.balanceOf(shareHolder);
                if (lpBalance >= holdCondition) {
                    amount = rewardCondition * lpBalance / holdTokenTotal;
                    if (amount > 0) {
                        safeTransfer(usdt, shareHolder, amount);
                    }
                }
            }

            gasUsed = gasUsed + (gasLeft - gasleft());
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }

        progressRewardBlock = blockNum;
    }

    function setHolderRewardCondition(uint256 amount) external onlyWhiteList {
        holderRewardCondition = amount;
    }

    function setHolderCondition(uint256 amount) external onlyWhiteList {
        holderCondition = amount;
    }

    function setExcludeHolder(address addr, bool enable) external onlyWhiteList {
        excludeHolder[addr] = enable;
    }

    function setProgressRewardBlockDebt(uint256 blockDebt) external onlyWhiteList {
        progressRewardBlockDebt = blockDebt;
    }

    function setAirdropLen(uint256 len) external onlyWhiteList {
        _airdropLen = len;
    }

    uint256 public _rewardGas = 500000;

    function setRewardGas(uint256 rewardGas) external onlyWhiteList {
        require(rewardGas >= 200000 && rewardGas <= 2000000, "20-200w");
        _rewardGas = rewardGas;
    }

    function safeTransfer(address token, address to, uint value) internal {
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        if (success && data.length > 0) {

        }
    }

    function safeApprove(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        if (success && data.length > 0) {

        }
    }

    function safeTransferFrom(address token, address from, address to, uint value) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        if (success && data.length > 0) {

        }
    }
}

contract LAB is AbsToken {
    constructor() AbsToken(
    //SwapRouter
        address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D),
        address(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2),
        "LAB",
        "LAB",
        18,
        100000000000000,
        address(0xeC6116e7B3aa056304D460947E91cE2E266Fd1e6),
        address(0xeC6116e7B3aa056304D460947E91cE2E266Fd1e6),
        address(0x972Ee5F83DdC2A37F639785DA9D33f436FbD49Ca),
        0,
        0,
        address(0xeC6116e7B3aa056304D460947E91cE2E266Fd1e6)
    ){

    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"_airdropLen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_blackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyDestroyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyFundFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyFundFee2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyFundFee3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLPDividendFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_feeWhiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_limitAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mainPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_minTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_receiveAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_rewardGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDestroyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFundFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFundFee2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFundFee3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLPDividendFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_swapPairList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tokenDistributor","outputs":[{"internalType":"contract TokenDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addr","type":"address[]"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"batchSetBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addr","type":"address[]"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"batchSetFeeWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claimToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentIndex","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":"","type":"address"}],"name":"excludeHolder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHolderLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"holderCondition","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"holderIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"holderRewardCondition","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"holders","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"progressRewardBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"progressRewardBlockDebt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"len","type":"uint256"}],"name":"setAirdropLen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyDestroyFee","type":"uint256"},{"internalType":"uint256","name":"buyFundFee","type":"uint256"},{"internalType":"uint256","name":"buyFundFee2","type":"uint256"},{"internalType":"uint256","name":"lpFee","type":"uint256"},{"internalType":"uint256","name":"lpDividendFee","type":"uint256"},{"internalType":"uint256","name":"buyFundFee3","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setExcludeHolder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setFeeWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setFundAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setFundAddress2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setFundAddress3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setHolderCondition","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setHolderRewardCondition","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setLimitAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"total","type":"uint256"}],"name":"setMinTotal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockDebt","type":"uint256"}],"name":"setProgressRewardBlockDebt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setReceiveAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rewardGas","type":"uint256"}],"name":"setRewardGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellDestroyFee","type":"uint256"},{"internalType":"uint256","name":"sellFundFee","type":"uint256"},{"internalType":"uint256","name":"sellFundFee2","type":"uint256"},{"internalType":"uint256","name":"lpFee","type":"uint256"},{"internalType":"uint256","name":"lpDividendFee","type":"uint256"},{"internalType":"uint256","name":"sellFundFee3","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setSwapPairList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTradeBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6101006040526000600e556032600f5560006010556000601155600060125560006013556000601455603260155560006016556000601755600060185560006019556000601e55620f424060265560016028556207a1206029553480156200006657600080fd5b506040805180820182526003808252622620a160e91b602080840182905284518086018652928352820152600080546001600160a01b0319163390811782559351737a250d5630b4cf539739df2c5dacb4c659f2488d9473c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2949392601292655af3107a40009273ec6116e7b3aa056304d460947e91ce2e266fd1e692839273972ee5f83ddc2a37f639785da9d33f436fbd49ca928291859190819084907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060066200014b8b8262000852565b5060076200015a8a8262000852565b506008805460ff191660ff8a161790556001600160a01b038b1660a08190528c906200018a90826000196200060d565b6001600160a01b038116608081905230600090815260026020908152604080832084845282528083206000199055805163c45a015560e01b8152905192939263c45a0155926004808401939192918290030181865afa158015620001f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021891906200091e565b60a0516040516364e329cb60e11b81523060048201526001600160a01b0391821660248201529192506000919083169063c9c65396906044016020604051808303816000875af115801562000271573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029791906200091e565b6001600160a01b0381166000818152600c60205260408120805460ff1916600117905560e091909152909150620002d08c600a62000a65565b90506000620002e0828d62000a76565b600b8190556001600160a01b038a166000818152600160205260408082208490555192935090917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620003379085815260200190565b60405180910390a3601d80546001600160a01b03808c166001600160a01b03199283168117909355600380548f83169084168117909155600480548f84169085168117909155600580548c8516951685179055600091825260096020526040808320805460ff19908116600190811790925592845281842080548416821790559483528083208054831686179055948252848220805482168517905530825284822080548216851790559189168152838120805483168417905533815292832080548216831790557fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b805482168317905561dead9092527f960b1051749987b45b5679007fff577a1c2f763ec21c15a6c5eb193075003785805490921617905562000463828962000a76565b601b5560a0516040516200047790620007a3565b6001600160a01b039091168152602001604051809103906000f080158015620004a4573d6000803e3d6000fd5b506001600160a01b031660c08190526000908152600960205260409020805460ff19166001179055620004d98d600a62000a65565b620004e5908862000a76565b601c81905550600160236000806001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555060016023600061dead6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508f6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005ce919062000a90565b620005db90600a62000a65565b620005e890606462000a76565b602555620005f689620006cb565b505050505050505050505050505050505062000afc565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b17905291516000928392908716916200066b919062000ab5565b6000604051808303816000865af19150503d8060008114620006aa576040519150601f19603f3d011682016040523d82523d6000602084013e620006af565b606091505b5091509150818015620006c3575060008151115b505050505050565b6001600160a01b0381166000908152602260205260408120549003620007a05760215415806200072f5750806001600160a01b0316602160008154811062000717576200071762000ae6565b6000918252602090912001546001600160a01b031614155b15620007a057803b801562000742575050565b50602180546001600160a01b0383166000818152602260205260408120839055600183018455929092527f3a6357012c1a3ae0a17d304c9920310382d968ebcc4b1771f41c6b304205b5700180546001600160a01b03191690911790555b50565b6101a78062003d9883390190565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620007dc57607f821691505b602082108103620007fd57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200084d57600081815260208120601f850160051c810160208610156200082c5750805b601f850160051c820191505b81811015620006c35782815560010162000838565b505050565b81516001600160401b038111156200086e576200086e620007b1565b62000886816200087f8454620007c7565b8462000803565b602080601f831160018114620008be5760008415620008a55750858301515b600019600386901b1c1916600185901b178555620006c3565b600085815260208120601f198616915b82811015620008ef57888601518255948401946001909101908401620008ce565b50858210156200090e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200093157600080fd5b81516001600160a01b03811681146200094957600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620009a75781600019048211156200098b576200098b62000950565b808516156200099957918102915b93841c93908002906200096b565b509250929050565b600082620009c05750600162000a5f565b81620009cf5750600062000a5f565b8160018114620009e85760028114620009f35762000a13565b600191505062000a5f565b60ff84111562000a075762000a0762000950565b50506001821b62000a5f565b5060208310610133831016604e8410600b841016171562000a38575081810a62000a5f565b62000a44838362000966565b806000190482111562000a5b5762000a5b62000950565b0290505b92915050565b60006200094960ff841683620009af565b808202811582820484141762000a5f5762000a5f62000950565b60006020828403121562000aa357600080fd5b815160ff811681146200094957600080fd5b6000825160005b8181101562000ad8576020818601810151858301520162000abc565b506000920191825250919050565b634e487b7160e01b600052603260045260246000fd5b60805160a05160c05160e05161321c62000b7c6000396000818161069601528181611b54015261247f0152600081816108910152818161288d0152818161291401526129d70152600081816123f50152818161280f0152818161293c015281816129b20152612abd0152600081816128590152612b0f015261321c6000f3fe6080604052600436106103dd5760003560e01c806370a08231116101fd578063c0600af311610118578063d83d4143116100ab578063eb10b7411161007a578063eb10b74114610b6f578063f2fde38b14610b85578063fa64aae514610ba5578063fcbd190b14610bc5578063fda7037714610bdb57600080fd5b8063d83d414314610ac6578063dd62ed3e14610ae6578063e84fb12d14610b2c578063e9bbb04014610b4257600080fd5b8063ca027776116100e7578063ca02777614610a4a578063ce0192f914610a7a578063d2c01fc414610a90578063d346648814610aa657600080fd5b8063c0600af3146109d4578063c213d62d146109f4578063c38c682614610a14578063c46eee1e14610a2a57600080fd5b806395d89b4111610190578063adc7955d1161015f578063adc7955d14610972578063b2887bec14610988578063b9ec2ec6146109a8578063b9fbc49d146109be57600080fd5b806395d89b4114610907578063a84248611461091c578063a9059cbb1461093c578063a925a6bd1461095c57600080fd5b80638718b24f116101cc5780638718b24f1461087f57806388c1585e146108b35780638da5cb5b146108c9578063917ceeb5146108e757600080fd5b806370a08231146107f4578063715018a61461082a578063756b41901461083f57806385dc30041461085f57600080fd5b806337e5ccf7116102f85780634f21869c1161028b5780635c8d748d1161025a5780635c8d748d146107695780635ec4b7a81461078957806363fe28b9146107a957806368092bd9146107bf5780636c580801146107df57600080fd5b80634f21869c146106ee57806353ad661614610703578063553193ca14610723578063595dec3c1461073957600080fd5b80633fe9f9f7116102c75780633fe9f9f71461066e5780634188bf5a146106845780634672f7c5146106b857806348bad3f5146106d857600080fd5b806337e5ccf7146105fc5780633ae0ca3d146106125780633bfe62ca146106285780633c11100d1461063e57600080fd5b806323b872dd116103705780632a5955121161033f5780632a5955121461058f57806330509bca146105a5578063313ce567146105ba57806334902454146105dc57600080fd5b806323b872dd1461050b57806326987b601461052b578063297ac6de146105415780632a11ced01461055757600080fd5b80630a607930116103ac5780630a607930146104925780631698755f146104b657806318160ddd146104d65780631f107a45146104eb57600080fd5b806301986fad146103e957806305833c2b1461042e57806306fdde0314610450578063095ea7b31461047257600080fd5b366103e457005b600080fd5b3480156103f557600080fd5b50610419610404366004612c74565b60096020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561043a57600080fd5b5061044e610449366004612ca6565b610bfb565b005b34801561045c57600080fd5b50610465610c8f565b6040516104259190612cfd565b34801561047e57600080fd5b5061041961048d366004612d30565b610d21565b34801561049e57600080fd5b506104a860185481565b604051908152602001610425565b3480156104c257600080fd5b5061044e6104d1366004612d30565b610d38565b3480156104e257600080fd5b506104a8610d6c565b3480156104f757600080fd5b5061044e610506366004612d5a565b610dd9565b34801561051757600080fd5b50610419610526366004612d73565b610e5a565b34801561053757600080fd5b506104a860245481565b34801561054d57600080fd5b506104a860145481565b34801561056357600080fd5b50610577610572366004612d5a565b610ef1565b6040516001600160a01b039091168152602001610425565b34801561059b57600080fd5b506104a860275481565b3480156105b157600080fd5b5061044e610f1b565b3480156105c657600080fd5b5060085460405160ff9091168152602001610425565b3480156105e857600080fd5b5061044e6105f7366004612c74565b610f70565b34801561060857600080fd5b506104a8600e5481565b34801561061e57600080fd5b506104a8601c5481565b34801561063457600080fd5b506104a860155481565b34801561064a57600080fd5b50610419610659366004612c74565b600c6020526000908152604090205460ff1681565b34801561067a57600080fd5b506104a860265481565b34801561069057600080fd5b506105777f000000000000000000000000000000000000000000000000000000000000000081565b3480156106c457600080fd5b5061044e6106d3366004612c74565b61100a565b3480156106e457600080fd5b506104a860135481565b3480156106fa57600080fd5b506021546104a8565b34801561070f57600080fd5b5061044e61071e366004612d5a565b6110a4565b34801561072f57600080fd5b506104a8601a5481565b34801561074557600080fd5b50610419610754366004612c74565b600a6020526000908152604090205460ff1681565b34801561077557600080fd5b5061044e610784366004612d5a565b611125565b34801561079557600080fd5b5061044e6107a4366004612c74565b61118a565b3480156107b557600080fd5b506104a8601e5481565b3480156107cb57600080fd5b5061044e6107da366004612ca6565b611229565b3480156107eb57600080fd5b5061044e61127e565b34801561080057600080fd5b506104a861080f366004612c74565b6001600160a01b031660009081526001602052604090205490565b34801561083657600080fd5b5061044e61131e565b34801561084b57600080fd5b5061044e61085a366004612dc5565b611392565b34801561086b57600080fd5b5061044e61087a366004612c74565b611428565b34801561088b57600080fd5b506105777f000000000000000000000000000000000000000000000000000000000000000081565b3480156108bf57600080fd5b506104a860285481565b3480156108d557600080fd5b506000546001600160a01b0316610577565b3480156108f357600080fd5b5061044e610902366004612d5a565b6114c2565b34801561091357600080fd5b50610465611573565b34801561092857600080fd5b5061044e610937366004612ca6565b611582565b34801561094857600080fd5b50610419610957366004612d30565b61160d565b34801561096857600080fd5b506104a860125481565b34801561097e57600080fd5b506104a860175481565b34801561099457600080fd5b5061044e6109a3366004612dc5565b61161a565b3480156109b457600080fd5b506104a860165481565b3480156109ca57600080fd5b506104a860115481565b3480156109e057600080fd5b5061044e6109ef366004612e9c565b6116e6565b348015610a0057600080fd5b5061044e610a0f366004612d5a565b611730565b348015610a2057600080fd5b506104a860105481565b348015610a3657600080fd5b5061044e610a45366004612d5a565b611795565b348015610a5657600080fd5b50610419610a65366004612c74565b60236020526000908152604090205460ff1681565b348015610a8657600080fd5b506104a8600f5481565b348015610a9c57600080fd5b506104a8601b5481565b348015610ab257600080fd5b5061044e610ac1366004612e9c565b6117fa565b348015610ad257600080fd5b5061044e610ae1366004612ca6565b611844565b348015610af257600080fd5b506104a8610b01366004612edf565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610b3857600080fd5b506104a860295481565b348015610b4e57600080fd5b506104a8610b5d366004612c74565b60226020526000908152604090205481565b348015610b7b57600080fd5b506104a860255481565b348015610b9157600080fd5b5061044e610ba0366004612c74565b6118cf565b348015610bb157600080fd5b5061044e610bc0366004612d5a565b61198f565b348015610bd157600080fd5b506104a860195481565b348015610be757600080fd5b50601d54610577906001600160a01b031681565b3360008181526009602052604090205460ff168015610c3e57506003546001600160a01b0382811691161480610c3e57506000546001600160a01b038281169116145b610c635760405162461bcd60e51b8152600401610c5a90612f09565b60405180910390fd5b506001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b606060068054610c9e90612f25565b80601f0160208091040260200160405190810160405280929190818152602001828054610cca90612f25565b8015610d175780601f10610cec57610100808354040283529160200191610d17565b820191906000526020600020905b815481529060010190602001808311610cfa57829003601f168201915b5050505050905090565b6000610d2e3384846119f4565b5060015b92915050565b3360009081526009602052604090205460ff1615610d6857600354610d689083906001600160a01b031683611a56565b5050565b60016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5460008080527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4954600b54919291610dca9190612f75565b610dd49190612f75565b905090565b3360008181526009602052604090205460ff168015610e1c57506003546001600160a01b0382811691161480610e1c57506000546001600160a01b038281169116145b610e385760405162461bcd60e51b8152600401610c5a90612f09565b600854610e499060ff16600a61306c565b610e53908361307b565b601b555050565b6000610e67848484611b10565b6001600160a01b038416600090815260026020908152604080832033845290915290205460001914610ee7576001600160a01b0384166000908152600260209081526040808320338452909152902054610ec2908390612f75565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b5060019392505050565b60218181548110610f0157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526009602052604090205460ff1615610f6e576003546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610f6c573d6000803e3d6000fd5b505b565b3360008181526009602052604090205460ff168015610fb357506003546001600160a01b0382811691161480610fb357506000546001600160a01b038281169116145b610fcf5760405162461bcd60e51b8152600401610c5a90612f09565b50600580546001600160a01b039092166001600160a01b0319909216821790556000908152600960205260409020805460ff19166001179055565b3360008181526009602052604090205460ff16801561104d57506003546001600160a01b038281169116148061104d57506000546001600160a01b038281169116145b6110695760405162461bcd60e51b8152600401610c5a90612f09565b50600480546001600160a01b039092166001600160a01b0319909216821790556000908152600960205260409020805460ff19166001179055565b3360008181526009602052604090205460ff1680156110e757506003546001600160a01b03828116911614806110e757506000546001600160a01b038281169116145b6111035760405162461bcd60e51b8152600401610c5a90612f09565b6008546111149060ff16600a61306c565b61111e908361307b565b601c555050565b3360008181526009602052604090205460ff16801561116857506003546001600160a01b038281169116148061116857506000546001600160a01b038281169116145b6111845760405162461bcd60e51b8152600401610c5a90612f09565b50601e55565b3360008181526009602052604090205460ff1680156111cd57506003546001600160a01b03828116911614806111cd57506000546001600160a01b038281169116145b6111e95760405162461bcd60e51b8152600401610c5a90612f09565b601d80546001600160a01b0319166001600160a01b0384169081179091556000908152600960205260409020805460ff19166001179055610d6882611f02565b6000546001600160a01b031633146112535760405162461bcd60e51b8152600401610c5a90613092565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b3360008181526009602052604090205460ff1680156112c157506003546001600160a01b03828116911614806112c157506000546001600160a01b038281169116145b6112dd5760405162461bcd60e51b8152600401610c5a90612f09565b601a54156113175760405162461bcd60e51b815260206004820152600760248201526674726164696e6760c81b6044820152606401610c5a565b5043601a55565b6000546001600160a01b031633146113485760405162461bcd60e51b8152600401610c5a90613092565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146113bc5760405162461bcd60e51b8152600401610c5a90613092565b60005b82518110156114235781600a60008584815181106113df576113df6130ae565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061141b816130c4565b9150506113bf565b505050565b3360008181526009602052604090205460ff16801561146b57506003546001600160a01b038281169116148061146b57506000546001600160a01b038281169116145b6114875760405162461bcd60e51b8152600401610c5a90612f09565b50600380546001600160a01b039092166001600160a01b0319909216821790556000908152600960205260409020805460ff19166001179055565b3360008181526009602052604090205460ff16801561150557506003546001600160a01b038281169116148061150557506000546001600160a01b038281169116145b6115215760405162461bcd60e51b8152600401610c5a90612f09565b62030d4082101580156115375750621e84808211155b61156d5760405162461bcd60e51b815260206004820152600760248201526632302d3230307760c81b6044820152606401610c5a565b50602955565b606060078054610c9e90612f25565b3360008181526009602052604090205460ff1680156115c557506003546001600160a01b03828116911614806115c557506000546001600160a01b038281169116145b6115e15760405162461bcd60e51b8152600401610c5a90612f09565b506001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000610d2e338484611b10565b3360008181526009602052604090205460ff16801561165d57506003546001600160a01b038281169116148061165d57506000546001600160a01b038281169116145b6116795760405162461bcd60e51b8152600401610c5a90612f09565b60005b83518110156116e057826009600086848151811061169c5761169c6130ae565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806116d8816130c4565b91505061167c565b50505050565b6000546001600160a01b031633146117105760405162461bcd60e51b8152600401610c5a90613092565b600e95909555600f93909355601091909155601291909155601155601355565b3360008181526009602052604090205460ff16801561177357506003546001600160a01b038281169116148061177357506000546001600160a01b038281169116145b61178f5760405162461bcd60e51b8152600401610c5a90612f09565b50602555565b3360008181526009602052604090205460ff1680156117d857506003546001600160a01b03828116911614806117d857506000546001600160a01b038281169116145b6117f45760405162461bcd60e51b8152600401610c5a90612f09565b50602655565b6000546001600160a01b031633146118245760405162461bcd60e51b8152600401610c5a90613092565b601495909555601593909355601691909155601891909155601755601955565b3360008181526009602052604090205460ff16801561188757506003546001600160a01b038281169116148061188757506000546001600160a01b038281169116145b6118a35760405162461bcd60e51b8152600401610c5a90612f09565b506001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146118f95760405162461bcd60e51b8152600401610c5a90613092565b6001600160a01b0381166119345760405162461bcd60e51b815260206004820152600260248201526106e360f41b6044820152606401610c5a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526009602052604090205460ff1680156119d257506003546001600160a01b03828116911614806119d257506000546001600160a01b038281169116145b6119ee5760405162461bcd60e51b8152600401610c5a90612f09565b50602855565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691611ab291906130dd565b6000604051808303816000865af19150503d8060008114611aef576040519150601f19603f3d011682016040523d82523d6000602084013e611af4565b606091505b5091509150818015611b07575060008151115b505b5050505050565b601f546001600160a01b03168015611bd057601f80546001600160a01b03191690556040516370a0823160e01b81526001600160a01b0382811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015611b9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc191906130f9565b1115611bd057611bd081611f02565b6001600160a01b0384166000908152600a602052604090205460ff161580611c1057506001600160a01b03841660009081526009602052604090205460ff165b611c415760405162461bcd60e51b8152602060048201526002602482015261109360f21b6044820152606401610c5a565b6001600160a01b03841660009081526001602052604090205482811015611c905760405162461bcd60e51b8152602060048201526003602482015262424e4560e81b6044820152606401610c5a565b6001600160a01b03851660009081526009602052604081205460ff16158015611cd257506001600160a01b03851660009081526009602052604090205460ff16155b15611d13576000620186a0611cea846201869f61307b565b611cf49190613112565b905080851115611d02578094505b60019150611d11878787611fd2565b505b6001600160a01b0386166000908152600c602052604090205460ff1680611d5257506001600160a01b0385166000908152600c602052604090205460ff165b15611dd0576001600160a01b03861660009081526009602052604090205460ff16158015611d9957506001600160a01b03851660009081526009602052604090205460ff16155b15611dd057601a54600010611dad57600080fd5b6000601a54611dbc9190613134565b431015611dd057611b078686866063612094565b611ddc8686868461211e565b601b548015801590611e0757506001600160a01b0386166000908152600c602052604090205460ff16155b8015611e2c57506001600160a01b03861660009081526009602052604090205460ff16155b15611e81576001600160a01b038616600090815260016020526040902054811015611e815760405162461bcd60e51b8152602060048201526005602482015264131a5b5a5d60da1b6044820152606401610c5a565b6001600160a01b0387163014611ef9576001600160a01b0386166000908152600c602052604090205460ff1615611ece57601f80546001600160a01b0319166001600160a01b0389161790555b6001600160a01b03871660009081526009602052604090205460ff16611ef957611ef96029546123bf565b50505050505050565b6001600160a01b0381166000908152602260205260408120549003610f6c576021541580611f615750806001600160a01b03166021600081548110611f4957611f496130ae565b6000918252602090912001546001600160a01b031614155b15610f6c57803b8015611f72575050565b50602180546001600160a01b0383166000818152602260205260408120839055600183018455929092527f3a6357012c1a3ae0a17d304c9920310382d968ebcc4b1771f41c6b304205b5700180546001600160a01b031916909117905550565b602054601e546001600160a01b03918216431785851892909216919091189060009081805b8281101561206a576001600160a01b0385871790811660008181526001602052604090819020859055519195509081907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120569086815260200190565b60405180910390a3600194851c9401611ff7565b5050602080546001600160a01b0319166001600160a01b0393909316929092179091555050505050565b6001600160a01b0384166000908152600160205260409020546120b8908390612f75565b6001600160a01b03851660009081526001602052604081209190915560646120e0838561307b565b6120ea9190613112565b9050801561210a5760035461210a9086906001600160a01b031683612685565b611b0985856121198487612f75565b612685565b6001600160a01b038416600090815260016020526040902054612142908390612f75565b6001600160a01b038516600090815260016020526040812091909155811561210a576001600160a01b0385166000908152600c602052604081205481908190819060ff161561220d57612710600e548861219c919061307b565b6121a69190613112565b9250612710601154601254601054600f546121c19190613134565b6121cb9190613134565b6121d59190613134565b6121df908961307b565b6121e99190613112565b9150612710601354886121fc919061307b565b6122069190613112565b90506122b0565b6001600160a01b0388166000908152600c602052604090205460ff16156122b0576001935061271060145488612243919061307b565b61224d9190613112565b92506127106017546018546016546015546122689190613134565b6122729190613134565b61227c9190613134565b612286908961307b565b6122909190613112565b9150612710601954886122a3919061307b565b6122ad9190613112565b90505b821561230e578260006122c1610d6c565b90506000601c548211156122df57601c546122dc9083612f75565b90505b808311156122eb578092505b821561230a576122fb8389613134565b975061230a8c61dead85612685565b5050505b80156123395761231e8186613134565b600554909550612339908a906001600160a01b031683612685565b81156123ac576123498286613134565b9450612356893084612685565b8380156123665750600d5460ff16155b156123ac57306000908152600160205260408120549060646123898560e661307b565b6123939190613112565b9050818111156123a05750805b6123a9816126fd565b50505b50505050611b0985856121198487612f75565b602854602754439182916123d39190613134565b11156123dd575050565b6025546040516370a0823160e01b81523060048201527f000000000000000000000000000000000000000000000000000000000000000091829181906001600160a01b038416906370a0823190602401602060405180830381865afa15801561244a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061246e91906130f9565b101561247b575050505050565b60007f000000000000000000000000000000000000000000000000000000000000000090506000816001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250491906130f9565b9050806000036125175750505050505050565b602154600090819081908180805a6026549091505b8e8410801561253a57508483105b1561266f57846024541061254e5760006024555b602160245481548110612563576125636130ae565b60009182526020808320909101546001600160a01b0316808352602390915260409091205490985060ff1661262d576040516370a0823160e01b81526001600160a01b0389811660048301528b16906370a0823190602401602060405180830381865afa1580156125d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125fc91906130f9565b965080871061262d5788612610888d61307b565b61261a9190613112565b9550851561262d5761262d8d8988611a56565b5a6126389083612f75565b6126429085613134565b93505a602480549193506000612657836130c4565b91905055508280612667906130c4565b93505061252c565b50505060279a909a555050505050505050505050565b6001600160a01b0382166000908152600160205260409020546126a9908290613134565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a499085815260200190565b600d805460ff191660011790558015612b90576000601554600f546127229190613134565b905060006016546010546127369190613134565b9050600060185460125461274a9190613134565b9050600060175460115461275e9190613134565b90506000818361276e8688613134565b6127789190613134565b6127829190613134565b905061278e8180613134565b905060008161279d848961307b565b6127a79190613112565b90506127b38383612f75565b604080516002808252606082018352929450600092909160208301908036833701905050905030816000815181106127ed576127ed6130ae565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110612841576128416130ae565b6001600160a01b0392831660209182029290920101527f000000000000000000000000000000000000000000000000000000000000000016635c11d795612888848b612f75565b6000847f0000000000000000000000000000000000000000000000000000000000000000426040518663ffffffff1660e01b81526004016128cd959493929190613147565b600060405180830381600087803b1580156128e757600080fd5b505af11580156128fb573d6000803e3d6000fd5b50506040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f00000000000000000000000000000000000000000000000000000000000000009350600092508316906370a0823190602401602060405180830381865afa15801561298a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ae91906130f9565b90507f00000000000000000000000000000000000000000000000000000000000000006129fd817f00000000000000000000000000000000000000000000000000000000000000003085612b9d565b600086612a0a8c8561307b565b612a1590600261307b565b612a1f9190613112565b90508015612a3f57600354612a3f9083906001600160a01b031683611a56565b86612a4a8b8561307b565b612a5590600261307b565b612a5f9190613112565b90508015612a7f57600454612a7f9083906001600160a01b031683611a56565b600087612a8c8a8661307b565b612a969190613112565b90508015612b8357601d5460405162e8e33760e81b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152604482018a90526064820184905260006084830181905260a483015291821660c48201524260e48201527f00000000000000000000000000000000000000000000000000000000000000009091169063e8e3370090610104016060604051808303816000875af1158015612b5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7f91906131b8565b5050505b5050505050505050505050505b50600d805460ff19169055565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691612c0191906130dd565b6000604051808303816000865af19150503d8060008114612c3e576040519150601f19603f3d011682016040523d82523d6000602084013e612c43565b606091505b5091509150818015611ef95750505050505050565b80356001600160a01b0381168114612c6f57600080fd5b919050565b600060208284031215612c8657600080fd5b612c8f82612c58565b9392505050565b80358015158114612c6f57600080fd5b60008060408385031215612cb957600080fd5b612cc283612c58565b9150612cd060208401612c96565b90509250929050565b60005b83811015612cf4578181015183820152602001612cdc565b50506000910152565b6020815260008251806020840152612d1c816040850160208701612cd9565b601f01601f19169190910160400192915050565b60008060408385031215612d4357600080fd5b612d4c83612c58565b946020939093013593505050565b600060208284031215612d6c57600080fd5b5035919050565b600080600060608486031215612d8857600080fd5b612d9184612c58565b9250612d9f60208501612c58565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612dd857600080fd5b823567ffffffffffffffff80821115612df057600080fd5b818501915085601f830112612e0457600080fd5b8135602082821115612e1857612e18612daf565b8160051b604051601f19603f83011681018181108682111715612e3d57612e3d612daf565b604052928352818301935084810182019289841115612e5b57600080fd5b948201945b83861015612e8057612e7186612c58565b85529482019493820193612e60565b9650612e8f9050878201612c96565b9450505050509250929050565b60008060008060008060c08789031215612eb557600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b60008060408385031215612ef257600080fd5b612efb83612c58565b9150612cd060208401612c58565b6020808252600290820152616e7760f01b604082015260600190565b600181811c90821680612f3957607f821691505b602082108103612f5957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610d3257610d32612f5f565b600181815b80851115612fc3578160001904821115612fa957612fa9612f5f565b80851615612fb657918102915b93841c9390800290612f8d565b509250929050565b600082612fda57506001610d32565b81612fe757506000610d32565b8160018114612ffd576002811461300757613023565b6001915050610d32565b60ff84111561301857613018612f5f565b50506001821b610d32565b5060208310610133831016604e8410600b8410161715613046575081810a610d32565b6130508383612f88565b806000190482111561306457613064612f5f565b029392505050565b6000612c8f60ff841683612fcb565b8082028115828204841417610d3257610d32612f5f565b602080825260029082015261216f60f01b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000600182016130d6576130d6612f5f565b5060010190565b600082516130ef818460208701612cd9565b9190910192915050565b60006020828403121561310b57600080fd5b5051919050565b60008261312f57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610d3257610d32612f5f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156131975784516001600160a01b031683529383019391830191600101613172565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156131cd57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220089a0f19da0356fe8536a5f123f74e48cfbc5222ad81d658282175b641b9023864736f6c63430008130033608060405234801561001057600080fd5b506040516101a73803806101a783398101604081905261002f916100fb565b61003c8133600019610042565b5061015a565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b179052915160009283929087169161009e919061012b565b6000604051808303816000865af19150503d80600081146100db576040519150601f19603f3d011682016040523d82523d6000602084013e6100e0565b606091505b50915091508180156100f3575060008151115b505050505050565b60006020828403121561010d57600080fd5b81516001600160a01b038116811461012457600080fd5b9392505050565b6000825160005b8181101561014c5760208186018101518583015201610132565b506000920191825250919050565b603f806101686000396000f3fe6080604052600080fdfea2646970667358221220f103daaa751990cd557c7c54279e06b398bb3f98c9968d1ec3ae80eadfe2db3b64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103dd5760003560e01c806370a08231116101fd578063c0600af311610118578063d83d4143116100ab578063eb10b7411161007a578063eb10b74114610b6f578063f2fde38b14610b85578063fa64aae514610ba5578063fcbd190b14610bc5578063fda7037714610bdb57600080fd5b8063d83d414314610ac6578063dd62ed3e14610ae6578063e84fb12d14610b2c578063e9bbb04014610b4257600080fd5b8063ca027776116100e7578063ca02777614610a4a578063ce0192f914610a7a578063d2c01fc414610a90578063d346648814610aa657600080fd5b8063c0600af3146109d4578063c213d62d146109f4578063c38c682614610a14578063c46eee1e14610a2a57600080fd5b806395d89b4111610190578063adc7955d1161015f578063adc7955d14610972578063b2887bec14610988578063b9ec2ec6146109a8578063b9fbc49d146109be57600080fd5b806395d89b4114610907578063a84248611461091c578063a9059cbb1461093c578063a925a6bd1461095c57600080fd5b80638718b24f116101cc5780638718b24f1461087f57806388c1585e146108b35780638da5cb5b146108c9578063917ceeb5146108e757600080fd5b806370a08231146107f4578063715018a61461082a578063756b41901461083f57806385dc30041461085f57600080fd5b806337e5ccf7116102f85780634f21869c1161028b5780635c8d748d1161025a5780635c8d748d146107695780635ec4b7a81461078957806363fe28b9146107a957806368092bd9146107bf5780636c580801146107df57600080fd5b80634f21869c146106ee57806353ad661614610703578063553193ca14610723578063595dec3c1461073957600080fd5b80633fe9f9f7116102c75780633fe9f9f71461066e5780634188bf5a146106845780634672f7c5146106b857806348bad3f5146106d857600080fd5b806337e5ccf7146105fc5780633ae0ca3d146106125780633bfe62ca146106285780633c11100d1461063e57600080fd5b806323b872dd116103705780632a5955121161033f5780632a5955121461058f57806330509bca146105a5578063313ce567146105ba57806334902454146105dc57600080fd5b806323b872dd1461050b57806326987b601461052b578063297ac6de146105415780632a11ced01461055757600080fd5b80630a607930116103ac5780630a607930146104925780631698755f146104b657806318160ddd146104d65780631f107a45146104eb57600080fd5b806301986fad146103e957806305833c2b1461042e57806306fdde0314610450578063095ea7b31461047257600080fd5b366103e457005b600080fd5b3480156103f557600080fd5b50610419610404366004612c74565b60096020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561043a57600080fd5b5061044e610449366004612ca6565b610bfb565b005b34801561045c57600080fd5b50610465610c8f565b6040516104259190612cfd565b34801561047e57600080fd5b5061041961048d366004612d30565b610d21565b34801561049e57600080fd5b506104a860185481565b604051908152602001610425565b3480156104c257600080fd5b5061044e6104d1366004612d30565b610d38565b3480156104e257600080fd5b506104a8610d6c565b3480156104f757600080fd5b5061044e610506366004612d5a565b610dd9565b34801561051757600080fd5b50610419610526366004612d73565b610e5a565b34801561053757600080fd5b506104a860245481565b34801561054d57600080fd5b506104a860145481565b34801561056357600080fd5b50610577610572366004612d5a565b610ef1565b6040516001600160a01b039091168152602001610425565b34801561059b57600080fd5b506104a860275481565b3480156105b157600080fd5b5061044e610f1b565b3480156105c657600080fd5b5060085460405160ff9091168152602001610425565b3480156105e857600080fd5b5061044e6105f7366004612c74565b610f70565b34801561060857600080fd5b506104a8600e5481565b34801561061e57600080fd5b506104a8601c5481565b34801561063457600080fd5b506104a860155481565b34801561064a57600080fd5b50610419610659366004612c74565b600c6020526000908152604090205460ff1681565b34801561067a57600080fd5b506104a860265481565b34801561069057600080fd5b506105777f0000000000000000000000002e5d41353b219802880474accad1cc038850fbcd81565b3480156106c457600080fd5b5061044e6106d3366004612c74565b61100a565b3480156106e457600080fd5b506104a860135481565b3480156106fa57600080fd5b506021546104a8565b34801561070f57600080fd5b5061044e61071e366004612d5a565b6110a4565b34801561072f57600080fd5b506104a8601a5481565b34801561074557600080fd5b50610419610754366004612c74565b600a6020526000908152604090205460ff1681565b34801561077557600080fd5b5061044e610784366004612d5a565b611125565b34801561079557600080fd5b5061044e6107a4366004612c74565b61118a565b3480156107b557600080fd5b506104a8601e5481565b3480156107cb57600080fd5b5061044e6107da366004612ca6565b611229565b3480156107eb57600080fd5b5061044e61127e565b34801561080057600080fd5b506104a861080f366004612c74565b6001600160a01b031660009081526001602052604090205490565b34801561083657600080fd5b5061044e61131e565b34801561084b57600080fd5b5061044e61085a366004612dc5565b611392565b34801561086b57600080fd5b5061044e61087a366004612c74565b611428565b34801561088b57600080fd5b506105777f00000000000000000000000015db743db8299b124e6578405e9a8983054905f481565b3480156108bf57600080fd5b506104a860285481565b3480156108d557600080fd5b506000546001600160a01b0316610577565b3480156108f357600080fd5b5061044e610902366004612d5a565b6114c2565b34801561091357600080fd5b50610465611573565b34801561092857600080fd5b5061044e610937366004612ca6565b611582565b34801561094857600080fd5b50610419610957366004612d30565b61160d565b34801561096857600080fd5b506104a860125481565b34801561097e57600080fd5b506104a860175481565b34801561099457600080fd5b5061044e6109a3366004612dc5565b61161a565b3480156109b457600080fd5b506104a860165481565b3480156109ca57600080fd5b506104a860115481565b3480156109e057600080fd5b5061044e6109ef366004612e9c565b6116e6565b348015610a0057600080fd5b5061044e610a0f366004612d5a565b611730565b348015610a2057600080fd5b506104a860105481565b348015610a3657600080fd5b5061044e610a45366004612d5a565b611795565b348015610a5657600080fd5b50610419610a65366004612c74565b60236020526000908152604090205460ff1681565b348015610a8657600080fd5b506104a8600f5481565b348015610a9c57600080fd5b506104a8601b5481565b348015610ab257600080fd5b5061044e610ac1366004612e9c565b6117fa565b348015610ad257600080fd5b5061044e610ae1366004612ca6565b611844565b348015610af257600080fd5b506104a8610b01366004612edf565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610b3857600080fd5b506104a860295481565b348015610b4e57600080fd5b506104a8610b5d366004612c74565b60226020526000908152604090205481565b348015610b7b57600080fd5b506104a860255481565b348015610b9157600080fd5b5061044e610ba0366004612c74565b6118cf565b348015610bb157600080fd5b5061044e610bc0366004612d5a565b61198f565b348015610bd157600080fd5b506104a860195481565b348015610be757600080fd5b50601d54610577906001600160a01b031681565b3360008181526009602052604090205460ff168015610c3e57506003546001600160a01b0382811691161480610c3e57506000546001600160a01b038281169116145b610c635760405162461bcd60e51b8152600401610c5a90612f09565b60405180910390fd5b506001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b606060068054610c9e90612f25565b80601f0160208091040260200160405190810160405280929190818152602001828054610cca90612f25565b8015610d175780601f10610cec57610100808354040283529160200191610d17565b820191906000526020600020905b815481529060010190602001808311610cfa57829003601f168201915b5050505050905090565b6000610d2e3384846119f4565b5060015b92915050565b3360009081526009602052604090205460ff1615610d6857600354610d689083906001600160a01b031683611a56565b5050565b60016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5460008080527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4954600b54919291610dca9190612f75565b610dd49190612f75565b905090565b3360008181526009602052604090205460ff168015610e1c57506003546001600160a01b0382811691161480610e1c57506000546001600160a01b038281169116145b610e385760405162461bcd60e51b8152600401610c5a90612f09565b600854610e499060ff16600a61306c565b610e53908361307b565b601b555050565b6000610e67848484611b10565b6001600160a01b038416600090815260026020908152604080832033845290915290205460001914610ee7576001600160a01b0384166000908152600260209081526040808320338452909152902054610ec2908390612f75565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b5060019392505050565b60218181548110610f0157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526009602052604090205460ff1615610f6e576003546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610f6c573d6000803e3d6000fd5b505b565b3360008181526009602052604090205460ff168015610fb357506003546001600160a01b0382811691161480610fb357506000546001600160a01b038281169116145b610fcf5760405162461bcd60e51b8152600401610c5a90612f09565b50600580546001600160a01b039092166001600160a01b0319909216821790556000908152600960205260409020805460ff19166001179055565b3360008181526009602052604090205460ff16801561104d57506003546001600160a01b038281169116148061104d57506000546001600160a01b038281169116145b6110695760405162461bcd60e51b8152600401610c5a90612f09565b50600480546001600160a01b039092166001600160a01b0319909216821790556000908152600960205260409020805460ff19166001179055565b3360008181526009602052604090205460ff1680156110e757506003546001600160a01b03828116911614806110e757506000546001600160a01b038281169116145b6111035760405162461bcd60e51b8152600401610c5a90612f09565b6008546111149060ff16600a61306c565b61111e908361307b565b601c555050565b3360008181526009602052604090205460ff16801561116857506003546001600160a01b038281169116148061116857506000546001600160a01b038281169116145b6111845760405162461bcd60e51b8152600401610c5a90612f09565b50601e55565b3360008181526009602052604090205460ff1680156111cd57506003546001600160a01b03828116911614806111cd57506000546001600160a01b038281169116145b6111e95760405162461bcd60e51b8152600401610c5a90612f09565b601d80546001600160a01b0319166001600160a01b0384169081179091556000908152600960205260409020805460ff19166001179055610d6882611f02565b6000546001600160a01b031633146112535760405162461bcd60e51b8152600401610c5a90613092565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b3360008181526009602052604090205460ff1680156112c157506003546001600160a01b03828116911614806112c157506000546001600160a01b038281169116145b6112dd5760405162461bcd60e51b8152600401610c5a90612f09565b601a54156113175760405162461bcd60e51b815260206004820152600760248201526674726164696e6760c81b6044820152606401610c5a565b5043601a55565b6000546001600160a01b031633146113485760405162461bcd60e51b8152600401610c5a90613092565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146113bc5760405162461bcd60e51b8152600401610c5a90613092565b60005b82518110156114235781600a60008584815181106113df576113df6130ae565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061141b816130c4565b9150506113bf565b505050565b3360008181526009602052604090205460ff16801561146b57506003546001600160a01b038281169116148061146b57506000546001600160a01b038281169116145b6114875760405162461bcd60e51b8152600401610c5a90612f09565b50600380546001600160a01b039092166001600160a01b0319909216821790556000908152600960205260409020805460ff19166001179055565b3360008181526009602052604090205460ff16801561150557506003546001600160a01b038281169116148061150557506000546001600160a01b038281169116145b6115215760405162461bcd60e51b8152600401610c5a90612f09565b62030d4082101580156115375750621e84808211155b61156d5760405162461bcd60e51b815260206004820152600760248201526632302d3230307760c81b6044820152606401610c5a565b50602955565b606060078054610c9e90612f25565b3360008181526009602052604090205460ff1680156115c557506003546001600160a01b03828116911614806115c557506000546001600160a01b038281169116145b6115e15760405162461bcd60e51b8152600401610c5a90612f09565b506001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000610d2e338484611b10565b3360008181526009602052604090205460ff16801561165d57506003546001600160a01b038281169116148061165d57506000546001600160a01b038281169116145b6116795760405162461bcd60e51b8152600401610c5a90612f09565b60005b83518110156116e057826009600086848151811061169c5761169c6130ae565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806116d8816130c4565b91505061167c565b50505050565b6000546001600160a01b031633146117105760405162461bcd60e51b8152600401610c5a90613092565b600e95909555600f93909355601091909155601291909155601155601355565b3360008181526009602052604090205460ff16801561177357506003546001600160a01b038281169116148061177357506000546001600160a01b038281169116145b61178f5760405162461bcd60e51b8152600401610c5a90612f09565b50602555565b3360008181526009602052604090205460ff1680156117d857506003546001600160a01b03828116911614806117d857506000546001600160a01b038281169116145b6117f45760405162461bcd60e51b8152600401610c5a90612f09565b50602655565b6000546001600160a01b031633146118245760405162461bcd60e51b8152600401610c5a90613092565b601495909555601593909355601691909155601891909155601755601955565b3360008181526009602052604090205460ff16801561188757506003546001600160a01b038281169116148061188757506000546001600160a01b038281169116145b6118a35760405162461bcd60e51b8152600401610c5a90612f09565b506001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146118f95760405162461bcd60e51b8152600401610c5a90613092565b6001600160a01b0381166119345760405162461bcd60e51b815260206004820152600260248201526106e360f41b6044820152606401610c5a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526009602052604090205460ff1680156119d257506003546001600160a01b03828116911614806119d257506000546001600160a01b038281169116145b6119ee5760405162461bcd60e51b8152600401610c5a90612f09565b50602855565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691611ab291906130dd565b6000604051808303816000865af19150503d8060008114611aef576040519150601f19603f3d011682016040523d82523d6000602084013e611af4565b606091505b5091509150818015611b07575060008151115b505b5050505050565b601f546001600160a01b03168015611bd057601f80546001600160a01b03191690556040516370a0823160e01b81526001600160a01b0382811660048301526000917f0000000000000000000000002e5d41353b219802880474accad1cc038850fbcd909116906370a0823190602401602060405180830381865afa158015611b9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc191906130f9565b1115611bd057611bd081611f02565b6001600160a01b0384166000908152600a602052604090205460ff161580611c1057506001600160a01b03841660009081526009602052604090205460ff165b611c415760405162461bcd60e51b8152602060048201526002602482015261109360f21b6044820152606401610c5a565b6001600160a01b03841660009081526001602052604090205482811015611c905760405162461bcd60e51b8152602060048201526003602482015262424e4560e81b6044820152606401610c5a565b6001600160a01b03851660009081526009602052604081205460ff16158015611cd257506001600160a01b03851660009081526009602052604090205460ff16155b15611d13576000620186a0611cea846201869f61307b565b611cf49190613112565b905080851115611d02578094505b60019150611d11878787611fd2565b505b6001600160a01b0386166000908152600c602052604090205460ff1680611d5257506001600160a01b0385166000908152600c602052604090205460ff165b15611dd0576001600160a01b03861660009081526009602052604090205460ff16158015611d9957506001600160a01b03851660009081526009602052604090205460ff16155b15611dd057601a54600010611dad57600080fd5b6000601a54611dbc9190613134565b431015611dd057611b078686866063612094565b611ddc8686868461211e565b601b548015801590611e0757506001600160a01b0386166000908152600c602052604090205460ff16155b8015611e2c57506001600160a01b03861660009081526009602052604090205460ff16155b15611e81576001600160a01b038616600090815260016020526040902054811015611e815760405162461bcd60e51b8152602060048201526005602482015264131a5b5a5d60da1b6044820152606401610c5a565b6001600160a01b0387163014611ef9576001600160a01b0386166000908152600c602052604090205460ff1615611ece57601f80546001600160a01b0319166001600160a01b0389161790555b6001600160a01b03871660009081526009602052604090205460ff16611ef957611ef96029546123bf565b50505050505050565b6001600160a01b0381166000908152602260205260408120549003610f6c576021541580611f615750806001600160a01b03166021600081548110611f4957611f496130ae565b6000918252602090912001546001600160a01b031614155b15610f6c57803b8015611f72575050565b50602180546001600160a01b0383166000818152602260205260408120839055600183018455929092527f3a6357012c1a3ae0a17d304c9920310382d968ebcc4b1771f41c6b304205b5700180546001600160a01b031916909117905550565b602054601e546001600160a01b03918216431785851892909216919091189060009081805b8281101561206a576001600160a01b0385871790811660008181526001602052604090819020859055519195509081907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120569086815260200190565b60405180910390a3600194851c9401611ff7565b5050602080546001600160a01b0319166001600160a01b0393909316929092179091555050505050565b6001600160a01b0384166000908152600160205260409020546120b8908390612f75565b6001600160a01b03851660009081526001602052604081209190915560646120e0838561307b565b6120ea9190613112565b9050801561210a5760035461210a9086906001600160a01b031683612685565b611b0985856121198487612f75565b612685565b6001600160a01b038416600090815260016020526040902054612142908390612f75565b6001600160a01b038516600090815260016020526040812091909155811561210a576001600160a01b0385166000908152600c602052604081205481908190819060ff161561220d57612710600e548861219c919061307b565b6121a69190613112565b9250612710601154601254601054600f546121c19190613134565b6121cb9190613134565b6121d59190613134565b6121df908961307b565b6121e99190613112565b9150612710601354886121fc919061307b565b6122069190613112565b90506122b0565b6001600160a01b0388166000908152600c602052604090205460ff16156122b0576001935061271060145488612243919061307b565b61224d9190613112565b92506127106017546018546016546015546122689190613134565b6122729190613134565b61227c9190613134565b612286908961307b565b6122909190613112565b9150612710601954886122a3919061307b565b6122ad9190613112565b90505b821561230e578260006122c1610d6c565b90506000601c548211156122df57601c546122dc9083612f75565b90505b808311156122eb578092505b821561230a576122fb8389613134565b975061230a8c61dead85612685565b5050505b80156123395761231e8186613134565b600554909550612339908a906001600160a01b031683612685565b81156123ac576123498286613134565b9450612356893084612685565b8380156123665750600d5460ff16155b156123ac57306000908152600160205260408120549060646123898560e661307b565b6123939190613112565b9050818111156123a05750805b6123a9816126fd565b50505b50505050611b0985856121198487612f75565b602854602754439182916123d39190613134565b11156123dd575050565b6025546040516370a0823160e01b81523060048201527f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc291829181906001600160a01b038416906370a0823190602401602060405180830381865afa15801561244a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061246e91906130f9565b101561247b575050505050565b60007f0000000000000000000000002e5d41353b219802880474accad1cc038850fbcd90506000816001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250491906130f9565b9050806000036125175750505050505050565b602154600090819081908180805a6026549091505b8e8410801561253a57508483105b1561266f57846024541061254e5760006024555b602160245481548110612563576125636130ae565b60009182526020808320909101546001600160a01b0316808352602390915260409091205490985060ff1661262d576040516370a0823160e01b81526001600160a01b0389811660048301528b16906370a0823190602401602060405180830381865afa1580156125d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125fc91906130f9565b965080871061262d5788612610888d61307b565b61261a9190613112565b9550851561262d5761262d8d8988611a56565b5a6126389083612f75565b6126429085613134565b93505a602480549193506000612657836130c4565b91905055508280612667906130c4565b93505061252c565b50505060279a909a555050505050505050505050565b6001600160a01b0382166000908152600160205260409020546126a9908290613134565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a499085815260200190565b600d805460ff191660011790558015612b90576000601554600f546127229190613134565b905060006016546010546127369190613134565b9050600060185460125461274a9190613134565b9050600060175460115461275e9190613134565b90506000818361276e8688613134565b6127789190613134565b6127829190613134565b905061278e8180613134565b905060008161279d848961307b565b6127a79190613112565b90506127b38383612f75565b604080516002808252606082018352929450600092909160208301908036833701905050905030816000815181106127ed576127ed6130ae565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110612841576128416130ae565b6001600160a01b0392831660209182029290920101527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d16635c11d795612888848b612f75565b6000847f00000000000000000000000015db743db8299b124e6578405e9a8983054905f4426040518663ffffffff1660e01b81526004016128cd959493929190613147565b600060405180830381600087803b1580156128e757600080fd5b505af11580156128fb573d6000803e3d6000fd5b50506040516370a0823160e01b81526001600160a01b037f00000000000000000000000015db743db8299b124e6578405e9a8983054905f4811660048301527f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc29350600092508316906370a0823190602401602060405180830381865afa15801561298a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ae91906130f9565b90507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26129fd817f00000000000000000000000015db743db8299b124e6578405e9a8983054905f43085612b9d565b600086612a0a8c8561307b565b612a1590600261307b565b612a1f9190613112565b90508015612a3f57600354612a3f9083906001600160a01b031683611a56565b86612a4a8b8561307b565b612a5590600261307b565b612a5f9190613112565b90508015612a7f57600454612a7f9083906001600160a01b031683611a56565b600087612a8c8a8661307b565b612a969190613112565b90508015612b8357601d5460405162e8e33760e81b81523060048201526001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281166024830152604482018a90526064820184905260006084830181905260a483015291821660c48201524260e48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063e8e3370090610104016060604051808303816000875af1158015612b5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7f91906131b8565b5050505b5050505050505050505050505b50600d805460ff19169055565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691612c0191906130dd565b6000604051808303816000865af19150503d8060008114612c3e576040519150601f19603f3d011682016040523d82523d6000602084013e612c43565b606091505b5091509150818015611ef95750505050505050565b80356001600160a01b0381168114612c6f57600080fd5b919050565b600060208284031215612c8657600080fd5b612c8f82612c58565b9392505050565b80358015158114612c6f57600080fd5b60008060408385031215612cb957600080fd5b612cc283612c58565b9150612cd060208401612c96565b90509250929050565b60005b83811015612cf4578181015183820152602001612cdc565b50506000910152565b6020815260008251806020840152612d1c816040850160208701612cd9565b601f01601f19169190910160400192915050565b60008060408385031215612d4357600080fd5b612d4c83612c58565b946020939093013593505050565b600060208284031215612d6c57600080fd5b5035919050565b600080600060608486031215612d8857600080fd5b612d9184612c58565b9250612d9f60208501612c58565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612dd857600080fd5b823567ffffffffffffffff80821115612df057600080fd5b818501915085601f830112612e0457600080fd5b8135602082821115612e1857612e18612daf565b8160051b604051601f19603f83011681018181108682111715612e3d57612e3d612daf565b604052928352818301935084810182019289841115612e5b57600080fd5b948201945b83861015612e8057612e7186612c58565b85529482019493820193612e60565b9650612e8f9050878201612c96565b9450505050509250929050565b60008060008060008060c08789031215612eb557600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b60008060408385031215612ef257600080fd5b612efb83612c58565b9150612cd060208401612c58565b6020808252600290820152616e7760f01b604082015260600190565b600181811c90821680612f3957607f821691505b602082108103612f5957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610d3257610d32612f5f565b600181815b80851115612fc3578160001904821115612fa957612fa9612f5f565b80851615612fb657918102915b93841c9390800290612f8d565b509250929050565b600082612fda57506001610d32565b81612fe757506000610d32565b8160018114612ffd576002811461300757613023565b6001915050610d32565b60ff84111561301857613018612f5f565b50506001821b610d32565b5060208310610133831016604e8410600b8410161715613046575081810a610d32565b6130508383612f88565b806000190482111561306457613064612f5f565b029392505050565b6000612c8f60ff841683612fcb565b8082028115828204841417610d3257610d32612f5f565b602080825260029082015261216f60f01b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000600182016130d6576130d6612f5f565b5060010190565b600082516130ef818460208701612cd9565b9190910192915050565b60006020828403121561310b57600080fd5b5051919050565b60008261312f57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610d3257610d32612f5f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156131975784516001600160a01b031683529383019391830191600101613172565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156131cd57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220089a0f19da0356fe8536a5f123f74e48cfbc5222ad81d658282175b641b9023864736f6c63430008130033

Deployed Bytecode Sourcemap

23680:559:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3380:45;;;;;;;;;;-1:-1:-1;3380:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;548:14:1;;541:22;523:41;;511:2;496:18;3380:45:0;;;;;;;;22171:123;;;;;;;;;;-1:-1:-1;22171:123:0;;;;;:::i;:::-;;:::i;:::-;;6956:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7839:159::-;;;;;;;;;;-1:-1:-1;7839:159:0;;;;;:::i;:::-;;:::i;4181:37::-;;;;;;;;;;;;;;;;;;;2060:25:1;;;2048:2;2033:18;4181:37:0;1914:177:1;18839:176:0;;;;;;;;;;-1:-1:-1;18839:176:0;;;;;:::i;:::-;;:::i;7160:184::-;;;;;;;;;;;;;:::i;19023:121::-;;;;;;;;;;-1:-1:-1;19023:121:0;;;;;:::i;:::-;;:::i;8006:336::-;;;;;;;;;;-1:-1:-1;8006:336:0;;;;;:::i;:::-;;:::i;19986:27::-;;;;;;;;;;;;;;;;4026:34;;;;;;;;;;;;;;;;19310:24;;;;;;;;;;-1:-1:-1;19310:24:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2778:32:1;;;2760:51;;2748:2;2733:18;19310:24:0;2614:203:1;20110:34:0;;;;;;;;;;;;;;;;18670:161;;;;;;;;;;;;;:::i;7058:94::-;;;;;;;;;;-1:-1:-1;7135:9:0;;7058:94;;7135:9;;;;2964:36:1;;2952:2;2937:18;7058:94:0;2822:184:1;16537:137:0;;;;;;;;;;-1:-1:-1;16537:137:0;;;;;:::i;:::-;;:::i;3792:33::-;;;;;;;;;;;;;;;;4382:24;;;;;;;;;;;;;;;;4067:32;;;;;;;;;;;;;;;;3601:45;;;;;;;;;;-1:-1:-1;3601:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;20063:40;;;;;;;;;;;;;;;;4305:34;;;;;;;;;;;;;;;16392:137;;;;;;;;;;-1:-1:-1;16392:137:0;;;;;:::i;:::-;;:::i;3986:31::-;;;;;;;;;;;;;;;;19448:96;;;;;;;;;;-1:-1:-1;19522:7:0;:14;19448:96;;19189:113;;;;;;;;;;-1:-1:-1;19189:113:0;;;;;:::i;:::-;;:::i;4266:30::-;;;;;;;;;;;;;;;;3432:42;;;;;;;;;;-1:-1:-1;3432:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;22442:95;;;;;;;;;;-1:-1:-1;22442:95:0;;;;;:::i;:::-;;:::i;16682:168::-;;;;;;;;;;-1:-1:-1;16682:168:0;;;;;:::i;:::-;;:::i;4454:30::-;;;;;;;;;;;;;;;;18217:112;;;;;;;;;;-1:-1:-1;18217:112:0;;;;;:::i;:::-;;:::i;17721:145::-;;;;;;;;;;;;;:::i;7352:155::-;;;;;;;;;;-1:-1:-1;7352:155:0;;;;;:::i;:::-;-1:-1:-1;;;;;7456:18:0;7418:7;7456:18;;;:9;:18;;;;;;;7352:155;2193:148;;;;;;;;;;;;;:::i;18337:195::-;;;;;;;;;;-1:-1:-1;18337:195:0;;;;;:::i;:::-;;:::i;16249:135::-;;;;;;;;;;-1:-1:-1;16249:135:0;;;;;:::i;:::-;;:::i;3732:51::-;;;;;;;;;;;;;;;20151:42;;;;;;;;;;;;;;;;2011:79;;;;;;;;;;-1:-1:-1;2049:7:0;2076:6;-1:-1:-1;;;;;2076:6:0;2011:79;;22588:179;;;;;;;;;;-1:-1:-1;22588:179:0;;;;;:::i;:::-;;:::i;6850:98::-;;;;;;;;;;;;;:::i;18540:122::-;;;;;;;;;;-1:-1:-1;18540:122:0;;;;;:::i;:::-;;:::i;7515:165::-;;;;;;;;;;-1:-1:-1;7515:165:0;;;;;:::i;:::-;;:::i;3943:36::-;;;;;;;;;;;;;;;;4145:29;;;;;;;;;;;;;;;;18004:205;;;;;;;;;;-1:-1:-1;18004:205:0;;;;;:::i;:::-;;:::i;4106:32::-;;;;;;;;;;;;;;;;3908:28;;;;;;;;;;;;;;;;16858:416;;;;;;;;;;-1:-1:-1;16858:416:0;;;;;:::i;:::-;;:::i;21923:122::-;;;;;;;;;;-1:-1:-1;21923:122:0;;;;;:::i;:::-;;:::i;3870:31::-;;;;;;;;;;;;;;;;22053:110;;;;;;;;;;-1:-1:-1;22053:110:0;;;;;:::i;:::-;;:::i;19394:45::-;;;;;;;;;;-1:-1:-1;19394:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3832:31;;;;;;;;;;;;;;;;4348:27;;;;;;;;;;;;;;;;17282:431;;;;;;;;;;-1:-1:-1;17282:431:0;;;;;:::i;:::-;;:::i;17874:122::-;;;;;;;;;;-1:-1:-1;17874:122:0;;;;;:::i;:::-;;:::i;7688:143::-;;;;;;;;;;-1:-1:-1;7688:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7796:18:0;;;7769:7;7796:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7688:143;22545:34;;;;;;;;;;;;;;;;19341:46;;;;;;;;;;-1:-1:-1;19341:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;20020:36;;;;;;;;;;;;;;;;2349:208;;;;;;;;;;-1:-1:-1;2349:208:0;;;;;:::i;:::-;;:::i;22302:132::-;;;;;;;;;;-1:-1:-1;22302:132:0;;;;;:::i;:::-;;:::i;4225:32::-;;;;;;;;;;;;;;;;4415:30;;;;;;;;;;-1:-1:-1;4415:30:0;;;;-1:-1:-1;;;;;4415:30:0;;;22171:123;16108:10;16088:17;16137:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16179:11:0;;-1:-1:-1;;;;;16166:24:0;;;16179:11;;16166:24;;:47;;-1:-1:-1;16207:6:0;;-1:-1:-1;;;;;16194:19:0;;;16207:6;;16194:19;16166:47;16129:92;;;;-1:-1:-1;;;16129:92:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;;22258:19:0;;;::::1;;::::0;;;:13:::1;:19;::::0;;;;:28;;-1:-1:-1;;22258:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22171:123::o;6956:94::-;7004:13;7037:5;7030:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6956:94;:::o;7839:159::-;7914:4;7931:37;7940:10;7952:7;7961:6;7931:8;:37::i;:::-;-1:-1:-1;7986:4:0;7839:159;;;;;:::o;18839:176::-;18928:10;18914:25;;;;:13;:25;;;;;;;;18910:98;;;18976:11;;18956:40;;18969:5;;-1:-1:-1;;;;;18976:11:0;18989:6;18956:12;:40::i;:::-;18839:176;;:::o;7160:184::-;7274:9;:62;;;;7213:7;7250:21;;;;;7240:7;;7213;;7274:62;7240:31;;7250:21;7240:31;:::i;:::-;:96;;;;:::i;:::-;7233:103;;7160:184;:::o;19023:121::-;16108:10;16088:17;16137:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16179:11:0;;-1:-1:-1;;;;;16166:24:0;;;16179:11;;16166:24;;:47;;-1:-1:-1;16207:6:0;;-1:-1:-1;;;;;16194:19:0;;;16207:6;;16194:19;16166:47;16129:92;;;;-1:-1:-1;;;16129:92:0;;;;;;;:::i;:::-;19127:9:::1;::::0;19121:15:::1;::::0;19127:9:::1;;19121:2;:15;:::i;:::-;19112:24;::::0;:6;:24:::1;:::i;:::-;19097:12;:39:::0;-1:-1:-1;;19023:121:0:o;8006:336::-;8104:4;8121:36;8131:6;8139:9;8150:6;8121:9;:36::i;:::-;-1:-1:-1;;;;;8172:19:0;;3723:1;8172:19;;;:11;:19;;;;;;;;8192:10;8172:31;;;;;;;;-1:-1:-1;;8172:38:0;8168:145;;-1:-1:-1;;;;;8261:19:0;;;;;;:11;:19;;;;;;;;8281:10;8261:31;;;;;;;;:40;;8295:6;;8261:40;:::i;:::-;-1:-1:-1;;;;;8227:19:0;;;;;;:11;:19;;;;;;;;8247:10;8227:31;;;;;;;:74;8168:145;-1:-1:-1;8330:4:0;8006:336;;;;;:::o;19310:24::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19310:24:0;;-1:-1:-1;19310:24:0;:::o;18670:161::-;18732:10;18718:25;;;;:13;:25;;;;;;;;18714:110;;;18768:11;;18760:52;;-1:-1:-1;;;;;18768:11:0;;;;18790:21;18760:52;;;;;18768:11;18760:52;18768:11;18760:52;18790:21;18768:11;18760:52;;;;;;;;;;;;;;;;;;;;;18714:110;18670:161::o;16537:137::-;16108:10;16088:17;16137:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16179:11:0;;-1:-1:-1;;;;;16166:24:0;;;16179:11;;16166:24;;:47;;-1:-1:-1;16207:6:0;;-1:-1:-1;;;;;16194:19:0;;;16207:6;;16194:19;16166:47;16129:92;;;;-1:-1:-1;;;16129:92:0;;;;;;;:::i;:::-;-1:-1:-1;16610:12:0::1;:19:::0;;-1:-1:-1;;;;;16610:19:0;;::::1;-1:-1:-1::0;;;;;;16610:19:0;;::::1;::::0;::::1;::::0;;:12:::1;16640:19:::0;;;:13:::1;:19;::::0;;;;:26;;-1:-1:-1;;16640:26:0::1;16610:19:::0;16640:26:::1;::::0;;16537:137::o;16392:::-;16108:10;16088:17;16137:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16179:11:0;;-1:-1:-1;;;;;16166:24:0;;;16179:11;;16166:24;;:47;;-1:-1:-1;16207:6:0;;-1:-1:-1;;;;;16194:19:0;;;16207:6;;16194:19;16166:47;16129:92;;;;-1:-1:-1;;;16129:92:0;;;;;;;:::i;:::-;-1:-1:-1;16465:12:0::1;:19:::0;;-1:-1:-1;;;;;16465:19:0;;::::1;-1:-1:-1::0;;;;;;16465:19:0;;::::1;::::0;::::1;::::0;;:12:::1;16495:19:::0;;;:13:::1;:19;::::0;;;;:26;;-1:-1:-1;;16495:26:0::1;16465:19:::0;16495:26:::1;::::0;;16392:137::o;19189:113::-;16108:10;16088:17;16137:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16179:11:0;;-1:-1:-1;;;;;16166:24:0;;;16179:11;;16166:24;;:47;;-1:-1:-1;16207:6:0;;-1:-1:-1;;;;;16194:19:0;;;16207:6;;16194:19;16166:47;16129:92;;;;-1:-1:-1;;;16129:92:0;;;;;;;:::i;:::-;19285:9:::1;::::0;19279:15:::1;::::0;19285:9:::1;;19279:2;:15;:::i;:::-;19271:23;::::0;:5;:23:::1;:::i;:::-;19259:9;:35:::0;-1:-1:-1;;19189:113:0:o;22442:95::-;16108:10;16088:17;16137:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16179:11:0;;-1:-1:-1;;;;;16166:24:0;;;16179:11;;16166:24;;:47;;-1:-1:-1;16207:6:0;;-1:-1:-1;;;;;16194:19:0;;;16207:6;;16194:19;16166:47;16129:92;;;;-1:-1:-1;;;16129:92:0;;;;;;;:::i;:::-;-1:-1:-1;22512:11:0::1;:17:::0;22442:95::o;16682:168::-;16108:10;16088:17;16137:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16179:11:0;;-1:-1:-1;;;;;16166:24:0;;;16179:11;;16166:24;;:47;;-1:-1:-1;16207:6:0;;-1:-1:-1;;;;;16194:19:0;;;16207:6;;16194:19;16166:47;16129:92;;;;-1:-1:-1;;;16129:92:0;;;;;;;:::i;:::-;16757:15:::1;:22:::0;;-1:-1:-1;;;;;;16757:22:0::1;-1:-1:-1::0;;;;;16757:22:0;::::1;::::0;;::::1;::::0;;;-1:-1:-1;16790:19:0;;;:13:::1;:19;::::0;;;;:26;;-1:-1:-1;;16790:26:0::1;-1:-1:-1::0;16790:26:0::1;::::0;;16827:15:::1;16757:22:::0;16827:9:::1;:15::i;18217:112::-:0;2138:6;;-1:-1:-1;;;;;2138:6:0;2148:10;2138:20;2130:35;;;;-1:-1:-1;;;2130:35:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18296:16:0;;;::::1;;::::0;;;:10:::1;:16;::::0;;;;:25;;-1:-1:-1;;18296:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18217:112::o;17721:145::-;16108:10;16088:17;16137:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16179:11:0;;-1:-1:-1;;;;;16166:24:0;;;16179:11;;16166:24;;:47;;-1:-1:-1;16207:6:0;;-1:-1:-1;;;;;16194:19:0;;;16207:6;;16194:19;16166:47;16129:92;;;;-1:-1:-1;;;16129:92:0;;;;;;;:::i;:::-;17790:15:::1;::::0;17785:20;17777:40:::1;;;::::0;-1:-1:-1;;;17777:40:0;;8432:2:1;17777:40:0::1;::::0;::::1;8414:21:1::0;8471:1;8451:18;;;8444:29;-1:-1:-1;;;8489:18:1;;;8482:37;8536:18;;17777:40:0::1;8230:330:1::0;17777:40:0::1;-1:-1:-1::0;17846:12:0::1;17828:15;:30:::0;17721:145::o;2193:148::-;2138:6;;-1:-1:-1;;;;;2138:6:0;2148:10;2138:20;2130:35;;;;-1:-1:-1;;;2130:35:0;;;;;;;:::i;:::-;2300:1:::1;2284:6:::0;;2263:40:::1;::::0;-1:-1:-1;;;;;2284:6:0;;::::1;::::0;2263:40:::1;::::0;2300:1;;2263:40:::1;2331:1;2314:19:::0;;-1:-1:-1;;;;;;2314:19:0::1;::::0;;2193:148::o;18337:195::-;2138:6;;-1:-1:-1;;;;;2138:6:0;2148:10;2138:20;2130:35;;;;-1:-1:-1;;;2130:35:0;;;;;;;:::i;:::-;18436:6:::1;18431:94;18452:4;:11;18448:1;:15;18431:94;;;18507:6;18485:10;:19;18496:4;18501:1;18496:7;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;18485:19:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;18485:19:0;:28;;-1:-1:-1;;18485:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18465:3;::::1;::::0;::::1;:::i;:::-;;;;18431:94;;;;18337:195:::0;;:::o;16249:135::-;16108:10;16088:17;16137:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16179:11:0;;-1:-1:-1;;;;;16166:24:0;;;16179:11;;16166:24;;:47;;-1:-1:-1;16207:6:0;;-1:-1:-1;;;;;16194:19:0;;;16207:6;;16194:19;16166:47;16129:92;;;;-1:-1:-1;;;16129:92:0;;;;;;;:::i;:::-;-1:-1:-1;16321:11:0::1;:18:::0;;-1:-1:-1;;;;;16321:18:0;;::::1;-1:-1:-1::0;;;;;;16321:18:0;;::::1;::::0;::::1;::::0;;:11:::1;16350:19:::0;;;:13:::1;:19;::::0;;;;:26;;-1:-1:-1;;16350:26:0::1;16321:18:::0;16350:26:::1;::::0;;16249:135::o;22588:179::-;16108:10;16088:17;16137:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16179:11:0;;-1:-1:-1;;;;;16166:24:0;;;16179:11;;16166:24;;:47;;-1:-1:-1;16207:6:0;;-1:-1:-1;;;;;16194:19:0;;;16207:6;;16194:19;16166:47;16129:92;;;;-1:-1:-1;;;16129:92:0;;;;;;;:::i;:::-;22684:6:::1;22671:9;:19;;:43;;;;;22707:7;22694:9;:20;;22671:43;22663:63;;;::::0;-1:-1:-1;;;22663:63:0;;9039:2:1;22663:63:0::1;::::0;::::1;9021:21:1::0;9078:1;9058:18;;;9051:29;-1:-1:-1;;;9096:18:1;;;9089:37;9143:18;;22663:63:0::1;8837:330:1::0;22663:63:0::1;-1:-1:-1::0;22737:10:0::1;:22:::0;22588:179::o;6850:98::-;6900:13;6933:7;6926:14;;;;;:::i;18540:122::-;16108:10;16088:17;16137:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16179:11:0;;-1:-1:-1;;;;;16166:24:0;;;16179:11;;16166:24;;:47;;-1:-1:-1;16207:6:0;;-1:-1:-1;;;;;16194:19:0;;;16207:6;;16194:19;16166:47;16129:92;;;;-1:-1:-1;;;16129:92:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;18626:19:0;;;::::1;;::::0;;;:13:::1;:19;::::0;;;;:28;;-1:-1:-1;;18626:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18540:122::o;7515:165::-;7593:4;7610:40;7620:10;7632:9;7643:6;7610:9;:40::i;18004:205::-;16108:10;16088:17;16137:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16179:11:0;;-1:-1:-1;;;;;16166:24:0;;;16179:11;;16166:24;;:47;;-1:-1:-1;16207:6:0;;-1:-1:-1;;;;;16194:19:0;;;16207:6;;16194:19;16166:47;16129:92;;;;-1:-1:-1;;;16129:92:0;;;;;;;:::i;:::-;18110:6:::1;18105:97;18126:4;:11;18122:1;:15;18105:97;;;18184:6;18159:13;:22;18173:4;18178:1;18173:7;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;18159:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;18159:22:0;:31;;-1:-1:-1;;18159:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18139:3;::::1;::::0;::::1;:::i;:::-;;;;18105:97;;;;16077:164:::0;18004:205;;:::o;16858:416::-;2138:6;;-1:-1:-1;;;;;2138:6:0;2148:10;2138:20;2130:35;;;;-1:-1:-1;;;2130:35:0;;;;;;;:::i;:::-;17055:14:::1;:30:::0;;;;17096:11:::1;:24:::0;;;;17131:12:::1;:26:::0;;;;17168:17:::1;:33:::0;;;;17212:9:::1;:17:::0;17240:12:::1;:26:::0;16858:416::o;21923:122::-;16108:10;16088:17;16137:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16179:11:0;;-1:-1:-1;;;;;16166:24:0;;;16179:11;;16166:24;;:47;;-1:-1:-1;16207:6:0;;-1:-1:-1;;;;;16194:19:0;;;16207:6;;16194:19;16166:47;16129:92;;;;-1:-1:-1;;;16129:92:0;;;;;;;:::i;:::-;-1:-1:-1;22007:21:0::1;:30:::0;21923:122::o;22053:110::-;16108:10;16088:17;16137:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16179:11:0;;-1:-1:-1;;;;;16166:24:0;;;16179:11;;16166:24;;:47;;-1:-1:-1;16207:6:0;;-1:-1:-1;;;;;16194:19:0;;;16207:6;;16194:19;16166:47;16129:92;;;;-1:-1:-1;;;16129:92:0;;;;;;;:::i;:::-;-1:-1:-1;22131:15:0::1;:24:::0;22053:110::o;17282:431::-;2138:6;;-1:-1:-1;;;;;2138:6:0;2148:10;2138:20;2130:35;;;;-1:-1:-1;;;2130:35:0;;;;;;;:::i;:::-;17484:15:::1;:32:::0;;;;17527:12:::1;:26:::0;;;;17564:13:::1;:28:::0;;;;17603:18:::1;:34:::0;;;;17648:10:::1;:18:::0;17677:13:::1;:28:::0;17282:431::o;17874:122::-;16108:10;16088:17;16137:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16179:11:0;;-1:-1:-1;;;;;16166:24:0;;;16179:11;;16166:24;;:47;;-1:-1:-1;16207:6:0;;-1:-1:-1;;;;;16194:19:0;;;16207:6;;16194:19;16166:47;16129:92;;;;-1:-1:-1;;;16129:92:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;17960:19:0;;;::::1;;::::0;;;:13:::1;:19;::::0;;;;:28;;-1:-1:-1;;17960:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17874:122::o;2349:208::-;2138:6;;-1:-1:-1;;;;;2138:6:0;2148:10;2138:20;2130:35;;;;-1:-1:-1;;;2130:35:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2438:22:0;::::1;2430:37;;;::::0;-1:-1:-1;;;2430:37:0;;9374:2:1;2430:37:0::1;::::0;::::1;9356:21:1::0;9413:1;9393:18;;;9386:29;-1:-1:-1;;;9431:18:1;;;9424:32;9473:18;;2430:37:0::1;9172:325:1::0;2430:37:0::1;2504:6;::::0;;2483:38:::1;::::0;-1:-1:-1;;;;;2483:38:0;;::::1;::::0;2504:6;::::1;::::0;2483:38:::1;::::0;::::1;2532:6;:17:::0;;-1:-1:-1;;;;;;2532:17:0::1;-1:-1:-1::0;;;;;2532:17:0;;;::::1;::::0;;;::::1;::::0;;2349:208::o;22302:132::-;16108:10;16088:17;16137:24;;;:13;:24;;;;;;;;:77;;;;-1:-1:-1;16179:11:0;;-1:-1:-1;;;;;16166:24:0;;;16179:11;;16166:24;;:47;;-1:-1:-1;16207:6:0;;-1:-1:-1;;;;;16194:19:0;;;16207:6;;16194:19;16166:47;16129:92;;;;-1:-1:-1;;;16129:92:0;;;;;;;:::i;:::-;-1:-1:-1;22391:23:0::1;:35:::0;22302:132::o;8350:177::-;-1:-1:-1;;;;;8435:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8487:32;;2060:25:1;;;8487:32:0;;2033:18:1;8487:32:0;;;;;;;;8350:177;;;:::o;22775:238::-;22903:45;;;-1:-1:-1;;;;;9694:32:1;;;22903:45:0;;;9676:51:1;9743:18;;;;9736:34;;;22903:45:0;;;;;;;;;;9649:18:1;;;;22903:45:0;;;;;;;-1:-1:-1;;;;;22903:45:0;-1:-1:-1;;;22903:45:0;;;22892:57;;-1:-1:-1;;;;22892:10:0;;;;:57;;22903:45;22892:57;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22856:93;;;;22964:7;:26;;;;;22989:1;22975:4;:11;:15;22964:26;22960:46;;22845:168;;22775:238;;;:::o;8579:1763::-;8722:19;;-1:-1:-1;;;;;8722:19:0;8756:32;;8752:232;;8805:19;:32;;-1:-1:-1;;;;;;8805:32:0;;;8856:47;;-1:-1:-1;;;8856:47:0;;-1:-1:-1;;;;;2778:32:1;;;8856:47:0;;;2760:51:1;-1:-1:-1;;8863:9:0;8856:27;;;;;;2733:18:1;;8856:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:51;8852:121;;;8928:29;8938:18;8928:9;:29::i;:::-;-1:-1:-1;;;;;9005:16:0;;;;;;:10;:16;;;;;;;;9004:17;;:40;;-1:-1:-1;;;;;;9025:19:0;;;;;;:13;:19;;;;;;;;9004:40;8996:55;;;;-1:-1:-1;;;8996:55:0;;10464:2:1;8996:55:0;;;10446:21:1;10503:1;10483:18;;;10476:29;-1:-1:-1;;;10521:18:1;;;10514:32;10563:18;;8996:55:0;10262:325:1;8996:55:0;-1:-1:-1;;;;;7456:18:0;;9064:15;7456:18;;;:9;:18;;;;;;9116:17;;;;9108:33;;;;-1:-1:-1;;;9108:33:0;;10794:2:1;9108:33:0;;;10776:21:1;10833:1;10813:18;;;10806:29;-1:-1:-1;;;10851:18:1;;;10844:33;10894:18;;9108:33:0;10592:326:1;9108:33:0;-1:-1:-1;;;;;9182:19:0;;9152:12;9182:19;;;:13;:19;;;;;;;;9181:20;:42;;;;-1:-1:-1;;;;;;9206:17:0;;;;;;:13;:17;;;;;;;;9205:18;9181:42;9177:292;;;9240:21;9282:6;9264:15;:7;9274:5;9264:15;:::i;:::-;:24;;;;:::i;:::-;9240:48;;9316:13;9307:6;:22;9303:85;;;9359:13;9350:22;;9303:85;9412:4;9402:14;;9431:26;9440:4;9446:2;9450:6;9431:8;:26::i;:::-;9225:244;9177:292;-1:-1:-1;;;;;9485:19:0;;;;;;:13;:19;;;;;;;;;:40;;-1:-1:-1;;;;;;9508:17:0;;;;;;:13;:17;;;;;;;;9485:40;9481:356;;;-1:-1:-1;;;;;9547:19:0;;;;;;:13;:19;;;;;;;;9546:20;:42;;;;-1:-1:-1;;;;;;9571:17:0;;;;;;:13;:17;;;;;;;;9570:18;9546:42;9542:284;;;9621:15;;9617:1;:19;9609:28;;;;;;4581:1;9675:15;;:28;;;;:::i;:::-;9660:12;:43;9656:155;;;9728:34;9741:4;9747:2;9751:6;9759:2;9728:12;:34::i;9656:155::-;9849:41;9864:4;9870:2;9874:6;9882:7;9849:14;:41::i;:::-;9925:12;;9952:15;;;;;:37;;-1:-1:-1;;;;;;9972:17:0;;;;;;:13;:17;;;;;;;;9971:18;9952:37;:59;;;;-1:-1:-1;;;;;;9994:17:0;;;;;;:13;:17;;;;;;;;9993:18;9952:59;9948:138;;;-1:-1:-1;;;;;7456:18:0;;7418:7;7456:18;;;:9;:18;;;;;;10036:11;:28;;10028:46;;;;-1:-1:-1;;;10028:46:0;;11477:2:1;10028:46:0;;;11459:21:1;11516:1;11496:18;;;11489:29;-1:-1:-1;;;11534:18:1;;;11527:35;11579:18;;10028:46:0;11275:328:1;10028:46:0;-1:-1:-1;;;;;10102:21:0;;10118:4;10102:21;10098:237;;-1:-1:-1;;;;;10144:17:0;;;;;;:13;:17;;;;;;;;10140:84;;;10182:19;:26;;-1:-1:-1;;;;;;10182:26:0;-1:-1:-1;;;;;10182:26:0;;;;;10140:84;-1:-1:-1;;;;;10243:19:0;;;;;;:13;:19;;;;;;;;10238:86;;10283:25;10297:10;;10283:13;:25::i;:::-;8682:1660;;;;8579:1763;;;:::o;19552:426::-;-1:-1:-1;;;;;19612:16:0;;;;;;:11;:16;;;;;;19607:21;;19603:368;;19654:7;:14;19649:19;;:40;;;19686:3;-1:-1:-1;;;;;19672:17:0;:7;19680:1;19672:10;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;19672:10:0;:17;;19649:40;19645:315;;;19759:16;;19798:8;;19794:63;;19831:7;19552:426;:::o;19794:63::-;-1:-1:-1;19894:7:0;:14;;-1:-1:-1;;;;;19875:16:0;;;;;;:11;:16;;;;;:33;;;19927:17;;;;;;;;;;;;;-1:-1:-1;;;;;;19927:17:0;;;;;;19552:426;:::o;10393:666::-;10497:18;;10622:11;;-1:-1:-1;;;;;10497:18:0;;;10519:12;10489:42;10536:27;;;10488:76;;;;;;;;;10473:12;;;;10693:313;10713:3;10709:1;:7;10693:313;;;-1:-1:-1;;;;;10767:14:0;;;10798:25;;;;;;;:9;:25;;;;;;;:41;;;10859:55;10767:14;;-1:-1:-1;10798:25:0;;;10859:55;;;;10826:13;2060:25:1;;2048:2;2033:18;;1914:177;10859:55:0;;;;;;;;10949:3;10974:9;;;;10949:3;10693:313;;;-1:-1:-1;;11016:18:0;:35;;-1:-1:-1;;;;;;11016:35:0;-1:-1:-1;;;;;11016:35:0;;;;;;;;;;;-1:-1:-1;;;;;10393:666:0:o;11067:419::-;-1:-1:-1;;;;;11236:17:0;;;;;;:9;:17;;;;;;:27;;11256:7;;11236:27;:::i;:::-;-1:-1:-1;;;;;11216:17:0;;;;;;:9;:17;;;;;:47;;;;11310:3;11294:13;11304:3;11294:7;:13;:::i;:::-;:19;;;;:::i;:::-;11274:39;-1:-1:-1;11328:13:0;;11324:91;;11380:11;;11358:45;;11372:6;;-1:-1:-1;;;;;11380:11:0;11393:9;11358:13;:45::i;:::-;11425:53;11439:6;11447:9;11458:19;11468:9;11458:7;:19;:::i;:::-;11425:13;:53::i;11494:2602::-;-1:-1:-1;;;;;11666:17:0;;;;;;:9;:17;;;;;;:27;;11686:7;;11666:27;:::i;:::-;-1:-1:-1;;;;;11646:17:0;;;;;;:9;:17;;;;;:47;;;;11734:2291;;;;-1:-1:-1;;;;;11903:21:0;;11762:11;11903:21;;;:13;:21;;;;;;11762:11;;;;;;11903:21;;11899:640;;;11996:5;11979:14;;11969:7;:24;;;;:::i;:::-;:32;;;;:::i;:::-;11950:51;;12109:5;12096:9;;12076:17;;12061:12;;12047:11;;:26;;;;:::i;:::-;:46;;;;:::i;:::-;:58;;;;:::i;:::-;12036:70;;:7;:70;:::i;:::-;:78;;;;:::i;:::-;12020:94;;12174:5;12159:12;;12149:7;:22;;;;:::i;:::-;:30;;;;:::i;:::-;12133:46;;11899:640;;;-1:-1:-1;;;;;12205:24:0;;;;;;:13;:24;;;;;;;;12201:338;;;12265:4;12256:13;;12335:5;12317:15;;12307:7;:25;;;;:::i;:::-;:33;;;;:::i;:::-;12288:52;;12452:5;12438:10;;12417:18;;12401:13;;12386:12;;:28;;;;:::i;:::-;:49;;;;:::i;:::-;:62;;;;:::i;:::-;12375:74;;:7;:74;:::i;:::-;:82;;;;:::i;:::-;12359:98;;12518:5;12502:13;;12492:7;:23;;;;:::i;:::-;:31;;;;:::i;:::-;12476:47;;12201:338;12557:20;;12553:686;;12622:16;12598:21;12680:13;:11;:13::i;:::-;12657:36;;12712:24;12774:9;;12759:12;:24;12755:116;;;12842:9;;12827:24;;:12;:24;:::i;:::-;12808:43;;12755:116;12909:16;12893:13;:32;12889:113;;;12966:16;12950:32;;12889:113;13024:17;;13020:204;;13066:26;13079:13;13066:26;;:::i;:::-;;;13115:89;13129:6;13145:42;13190:13;13115;:89::i;:::-;12579:660;;;12553:686;13257:17;;13253:153;;13295:26;13308:13;13295:26;;:::i;:::-;13362:12;;13295:26;;-1:-1:-1;13340:50:0;;13354:6;;-1:-1:-1;;;;;13362:12:0;13376:13;13340;:50::i;:::-;13424:17;;13420:594;;13462:26;13475:13;13462:26;;:::i;:::-;;;13507:51;13521:6;13537:4;13544:13;13507;:51::i;:::-;13581:6;:17;;;;-1:-1:-1;13592:6:0;;;;13591:7;13581:17;13577:422;;;13672:4;13623:28;7456:18;;;:9;:18;;;;;;;13753:3;13731:19;:13;13747:3;13731:19;:::i;:::-;:25;;;;:::i;:::-;13701:55;;13805:20;13783:19;:42;13779:141;;;-1:-1:-1;13876:20:0;13779:141;13942:37;13959:19;13942:16;:37::i;:::-;13600:399;;13577:422;11747:2278;;;;14035:53;14049:6;14057:9;14068:19;14078:9;14068:7;:19;:::i;20202:1713::-;20325:23;;20303:19;;20276:12;;;;20303:45;;20325:23;20303:45;:::i;:::-;:56;20299:95;;;20376:7;20202:1713;:::o;20299:95::-;20502:21;;20538:29;;-1:-1:-1;;;20538:29:0;;20561:4;20538:29;;;2760:51:1;20421:5:0;;;;20502:21;;-1:-1:-1;;;;;20538:14:0;;;;;2733:18:1;;20538:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:47;20534:86;;;20602:7;;;;20202:1713;:::o;20534:86::-;20632:16;20658:9;20632:36;;20679:19;20701:9;-1:-1:-1;;;;;20701:21:0;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20679:45;;20739:14;20757:1;20739:19;20735:58;;20775:7;;;;;;20202:1713;:::o;20735:58::-;20917:7;:14;20805:19;;;;;;;;;21025:9;21069:15;;21007:27;;-1:-1:-1;21097:768:0;21114:3;21104:7;:13;:46;;;;;21134:16;21121:10;:29;21104:46;21097:768;;;21187:16;21171:12;;:32;21167:89;;21239:1;21224:12;:16;21167:89;21284:7;21292:12;;21284:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;21284:21:0;21325:26;;;:13;:26;;;;;;;;21284:21;;-1:-1:-1;21325:26:0;;21320:386;;21384:32;;-1:-1:-1;;;21384:32:0;;-1:-1:-1;;;;;2778:32:1;;;21384::0;;;2760:51:1;21384:19:0;;;;;2733:18:1;;21384:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21372:44;;21452:13;21439:9;:26;21435:256;;21529:14;21499:27;21517:9;21499:15;:27;:::i;:::-;:44;;;;:::i;:::-;21490:53;-1:-1:-1;21570:10:0;;21566:106;;21609:39;21622:4;21628:11;21641:6;21609:12;:39::i;:::-;21753:9;21743:19;;:7;:19;:::i;:::-;21732:31;;:7;:31;:::i;:::-;21722:41;;21788:9;21812:12;:14;;21778:19;;-1:-1:-1;21812:12:0;:14;;;:::i;:::-;;;;;;21841:12;;;;;:::i;:::-;;;;21097:768;;;-1:-1:-1;;;21877:19:0;:30;;;;-1:-1:-1;;;;;;;;;;;20202:1713:0:o;15831:213::-;-1:-1:-1;;;;;15968:13:0;;;;;;:9;:13;;;;;;:23;;15984:7;;15968:23;:::i;:::-;-1:-1:-1;;;;;15952:13:0;;;;;;;:9;:13;;;;;;;:39;;;;16007:29;;;;;;;;;;16028:7;2060:25:1;;2048:2;2033:18;;1914:177;14104:1719:0;4623:6;:13;;-1:-1:-1;;4623:13:0;4632:4;4623:13;;;14182:55;;14219:7:::1;14182:55;14247:15;14279:12;;14265:11;;:26;;;;:::i;:::-;14247:44;;14302:16;14336:13;;14321:12;;:28;;;;:::i;:::-;14302:47;;14360:21;14404:18;;14384:17;;:38;;;;:::i;:::-;14360:62;;14433:13;14461:10;;14449:9;;:22;;;;:::i;:::-;14433:38:::0;-1:-1:-1;14482:16:0::1;14433:38:::0;14522:13;14501:18:::1;14511:8:::0;14501:7;:18:::1;:::i;:::-;:34;;;;:::i;:::-;:42;;;;:::i;:::-;14482:61:::0;-1:-1:-1;14556:20:0::1;14482:61:::0;;14556:20:::1;:::i;:::-;::::0;-1:-1:-1;14589:16:0::1;14556:20:::0;14608:19:::1;14622:5:::0;14608:11;:19:::1;:::i;:::-;:30;;;;:::i;:::-;14589:49:::0;-1:-1:-1;14649:17:0::1;14661:5:::0;14649:17;::::1;:::i;:::-;14703:16;::::0;;14717:1:::1;14703:16:::0;;;;;::::1;::::0;;14649:17;;-1:-1:-1;14679:21:0::1;::::0;14703:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14703:16:0::1;14679:40;;14748:4;14730;14735:1;14730:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;14730:23:0::1;;;-1:-1:-1::0;;;;;14730:23:0::1;;;::::0;::::1;14774:5;14764:4;14769:1;14764:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14764:15:0;;::::1;:7;::::0;;::::1;::::0;;;;;:15;14790:11:::1;:65;;14870:22;14884:8:::0;14870:11;:22:::1;:::i;:::-;14907:1;14923:4;14950:17;14983:15;14790:219;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;15082:42:0::1;::::0;-1:-1:-1;;;15082:42:0;;-1:-1:-1;;;;;15105:17:0::1;2778:32:1::0;;15082:42:0::1;::::0;::::1;2760:51:1::0;15043:5:0::1;::::0;-1:-1:-1;;;;15082:14:0;::::1;::::0;::::1;::::0;2733:18:1;;15082:42:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15060:64:::0;-1:-1:-1;15150:5:0::1;15166:78;15150:5:::0;15197:17:::1;15225:4;15060:64:::0;15166:16:::1;:78::i;:::-;15257:16;15304:8:::0;15276:21:::1;15290:7:::0;15276:11;:21:::1;:::i;:::-;:25;::::0;15300:1:::1;15276:25;:::i;:::-;:36;;;;:::i;:::-;15257:55:::0;-1:-1:-1;15327:12:0;;15323:86:::1;;15375:11;::::0;15356:41:::1;::::0;15369:4;;-1:-1:-1;;;;;15375:11:0::1;15388:8:::0;15356:12:::1;:41::i;:::-;15461:8:::0;15432:22:::1;15446:8:::0;15432:11;:22:::1;:::i;:::-;:26;::::0;15457:1:::1;15432:26;:::i;:::-;:37;;;;:::i;:::-;15421:48:::0;-1:-1:-1;15484:12:0;;15480:87:::1;;15532:12;::::0;15513:42:::1;::::0;15526:4;;-1:-1:-1;;;;;15532:12:0::1;15546:8:::0;15513:12:::1;:42::i;:::-;15579:14;15618:8:::0;15596:19:::1;15610:5:::0;15596:11;:19:::1;:::i;:::-;:30;;;;:::i;:::-;15579:47:::0;-1:-1:-1;15641:10:0;;15637:179:::1;;15757:15;::::0;15668:136:::1;::::0;-1:-1:-1;;;15668:136:0;;15719:4:::1;15668:136;::::0;::::1;12990:34:1::0;-1:-1:-1;;;;;15726:5:0::1;13060:15:1::0;;13040:18;;;13033:43;13092:18;;;13085:34;;;13135:18;;;13128:34;;;-1:-1:-1;13178:19:1;;;13171:35;;;13222:19;;;13215:35;15757:15:0;;::::1;13266:19:1::0;;;13259:44;15774:15:0::1;13319:19:1::0;;;13312:35;15668:11:0::1;:24:::0;;::::1;::::0;::::1;::::0;12924:19:1;;15668:136:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15637:179;14171:1652;;;;;;;;;;;;4647:1;-1:-1:-1::0;4659:6:0;:14;;-1:-1:-1;;4659:14:0;;;14104:1719::o;23332:341::-;23557:51;;;-1:-1:-1;;;;;13927:15:1;;;23557:51:0;;;13909:34:1;13979:15;;;13959:18;;;13952:43;14011:18;;;;14004:34;;;23557:51:0;;;;;;;;;;13844:18:1;;;;23557:51:0;;;;;;;-1:-1:-1;;;;;23557:51:0;-1:-1:-1;;;23557:51:0;;;23546:63;;-1:-1:-1;;;;23546:10:0;;;;:63;;23557:51;23546:63;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23510:99;;;;23624:7;:26;;;;-1:-1:-1;;;;;;;23332:341:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;:::-;333:39;192:186;-1:-1:-1;;;192:186:1:o;575:160::-;640:20;;696:13;;689:21;679:32;;669:60;;725:1;722;715:12;740:254;805:6;813;866:2;854:9;845:7;841:23;837:32;834:52;;;882:1;879;872:12;834:52;905:29;924:9;905:29;:::i;:::-;895:39;;953:35;984:2;973:9;969:18;953:35;:::i;:::-;943:45;;740:254;;;;;:::o;999:250::-;1084:1;1094:113;1108:6;1105:1;1102:13;1094:113;;;1184:11;;;1178:18;1165:11;;;1158:39;1130:2;1123:10;1094:113;;;-1:-1:-1;;1241:1:1;1223:16;;1216:27;999:250::o;1254:396::-;1403:2;1392:9;1385:21;1366:4;1435:6;1429:13;1478:6;1473:2;1462:9;1458:18;1451:34;1494:79;1566:6;1561:2;1550:9;1546:18;1541:2;1533:6;1529:15;1494:79;:::i;:::-;1634:2;1613:15;-1:-1:-1;;1609:29:1;1594:45;;;;1641:2;1590:54;;1254:396;-1:-1:-1;;1254:396:1:o;1655:254::-;1723:6;1731;1784:2;1772:9;1763:7;1759:23;1755:32;1752:52;;;1800:1;1797;1790:12;1752:52;1823:29;1842:9;1823:29;:::i;:::-;1813:39;1899:2;1884:18;;;;1871:32;;-1:-1:-1;;;1655:254:1:o;2096:180::-;2155:6;2208:2;2196:9;2187:7;2183:23;2179:32;2176:52;;;2224:1;2221;2214:12;2176:52;-1:-1:-1;2247:23:1;;2096:180;-1:-1:-1;2096:180:1:o;2281:328::-;2358:6;2366;2374;2427:2;2415:9;2406:7;2402:23;2398:32;2395:52;;;2443:1;2440;2433:12;2395:52;2466:29;2485:9;2466:29;:::i;:::-;2456:39;;2514:38;2548:2;2537:9;2533:18;2514:38;:::i;:::-;2504:48;;2599:2;2588:9;2584:18;2571:32;2561:42;;2281:328;;;;;:::o;3011:127::-;3072:10;3067:3;3063:20;3060:1;3053:31;3103:4;3100:1;3093:15;3127:4;3124:1;3117:15;3143:1191;3233:6;3241;3294:2;3282:9;3273:7;3269:23;3265:32;3262:52;;;3310:1;3307;3300:12;3262:52;3350:9;3337:23;3379:18;3420:2;3412:6;3409:14;3406:34;;;3436:1;3433;3426:12;3406:34;3474:6;3463:9;3459:22;3449:32;;3519:7;3512:4;3508:2;3504:13;3500:27;3490:55;;3541:1;3538;3531:12;3490:55;3577:2;3564:16;3599:4;3622:2;3618;3615:10;3612:36;;;3628:18;;:::i;:::-;3674:2;3671:1;3667:10;3706:2;3700:9;3769:2;3765:7;3760:2;3756;3752:11;3748:25;3740:6;3736:38;3824:6;3812:10;3809:22;3804:2;3792:10;3789:18;3786:46;3783:72;;;3835:18;;:::i;:::-;3871:2;3864:22;3921:18;;;3955:15;;;;-1:-1:-1;3997:11:1;;;3993:20;;;4025:19;;;4022:39;;;4057:1;4054;4047:12;4022:39;4081:11;;;;4101:148;4117:6;4112:3;4109:15;4101:148;;;4183:23;4202:3;4183:23;:::i;:::-;4171:36;;4134:12;;;;4227;;;;4101:148;;;4268:6;-1:-1:-1;4293:35:1;;-1:-1:-1;4309:18:1;;;4293:35;:::i;:::-;4283:45;;;;;;3143:1191;;;;;:::o;4571:523::-;4675:6;4683;4691;4699;4707;4715;4768:3;4756:9;4747:7;4743:23;4739:33;4736:53;;;4785:1;4782;4775:12;4736:53;-1:-1:-1;;4808:23:1;;;4878:2;4863:18;;4850:32;;-1:-1:-1;4929:2:1;4914:18;;4901:32;;4980:2;4965:18;;4952:32;;-1:-1:-1;5031:3:1;5016:19;;5003:33;;-1:-1:-1;5083:3:1;5068:19;5055:33;;-1:-1:-1;4571:523:1;-1:-1:-1;4571:523:1:o;5099:260::-;5167:6;5175;5228:2;5216:9;5207:7;5203:23;5199:32;5196:52;;;5244:1;5241;5234:12;5196:52;5267:29;5286:9;5267:29;:::i;:::-;5257:39;;5315:38;5349:2;5338:9;5334:18;5315:38;:::i;5364:325::-;5566:2;5548:21;;;5605:1;5585:18;;;5578:29;-1:-1:-1;;;5638:2:1;5623:18;;5616:32;5680:2;5665:18;;5364:325::o;5694:380::-;5773:1;5769:12;;;;5816;;;5837:61;;5891:4;5883:6;5879:17;5869:27;;5837:61;5944:2;5936:6;5933:14;5913:18;5910:38;5907:161;;5990:10;5985:3;5981:20;5978:1;5971:31;6025:4;6022:1;6015:15;6053:4;6050:1;6043:15;5907:161;;5694:380;;;:::o;6079:127::-;6140:10;6135:3;6131:20;6128:1;6121:31;6171:4;6168:1;6161:15;6195:4;6192:1;6185:15;6211:128;6278:9;;;6299:11;;;6296:37;;;6313:18;;:::i;6344:422::-;6433:1;6476:5;6433:1;6490:270;6511:7;6501:8;6498:21;6490:270;;;6570:4;6566:1;6562:6;6558:17;6552:4;6549:27;6546:53;;;6579:18;;:::i;:::-;6629:7;6619:8;6615:22;6612:55;;;6649:16;;;;6612:55;6728:22;;;;6688:15;;;;6490:270;;;6494:3;6344:422;;;;;:::o;6771:806::-;6820:5;6850:8;6840:80;;-1:-1:-1;6891:1:1;6905:5;;6840:80;6939:4;6929:76;;-1:-1:-1;6976:1:1;6990:5;;6929:76;7021:4;7039:1;7034:59;;;;7107:1;7102:130;;;;7014:218;;7034:59;7064:1;7055:10;;7078:5;;;7102:130;7139:3;7129:8;7126:17;7123:43;;;7146:18;;:::i;:::-;-1:-1:-1;;7202:1:1;7188:16;;7217:5;;7014:218;;7316:2;7306:8;7303:16;7297:3;7291:4;7288:13;7284:36;7278:2;7268:8;7265:16;7260:2;7254:4;7251:12;7247:35;7244:77;7241:159;;;-1:-1:-1;7353:19:1;;;7385:5;;7241:159;7432:34;7457:8;7451:4;7432:34;:::i;:::-;7502:6;7498:1;7494:6;7490:19;7481:7;7478:32;7475:58;;;7513:18;;:::i;:::-;7551:20;;6771:806;-1:-1:-1;;;6771:806:1:o;7582:140::-;7640:5;7669:47;7710:4;7700:8;7696:19;7690:4;7669:47;:::i;7727:168::-;7800:9;;;7831;;7848:15;;;7842:22;;7828:37;7818:71;;7869:18;;:::i;7900:325::-;8102:2;8084:21;;;8141:1;8121:18;;;8114:29;-1:-1:-1;;;8174:2:1;8159:18;;8152:32;8216:2;8201:18;;7900:325::o;8565:127::-;8626:10;8621:3;8617:20;8614:1;8607:31;8657:4;8654:1;8647:15;8681:4;8678:1;8671:15;8697:135;8736:3;8757:17;;;8754:43;;8777:18;;:::i;:::-;-1:-1:-1;8824:1:1;8813:13;;8697:135::o;9781:287::-;9910:3;9948:6;9942:13;9964:66;10023:6;10018:3;10011:4;10003:6;9999:17;9964:66;:::i;:::-;10046:16;;;;;9781:287;-1:-1:-1;;9781:287:1:o;10073:184::-;10143:6;10196:2;10184:9;10175:7;10171:23;10167:32;10164:52;;;10212:1;10209;10202:12;10164:52;-1:-1:-1;10235:16:1;;10073:184;-1:-1:-1;10073:184:1:o;10923:217::-;10963:1;10989;10979:132;;11033:10;11028:3;11024:20;11021:1;11014:31;11068:4;11065:1;11058:15;11096:4;11093:1;11086:15;10979:132;-1:-1:-1;11125:9:1;;10923:217::o;11145:125::-;11210:9;;;11231:10;;;11228:36;;;11244:18;;:::i;11608:980::-;11870:4;11918:3;11907:9;11903:19;11949:6;11938:9;11931:25;11975:2;12013:6;12008:2;11997:9;11993:18;11986:34;12056:3;12051:2;12040:9;12036:18;12029:31;12080:6;12115;12109:13;12146:6;12138;12131:22;12184:3;12173:9;12169:19;12162:26;;12223:2;12215:6;12211:15;12197:29;;12244:1;12254:195;12268:6;12265:1;12262:13;12254:195;;;12333:13;;-1:-1:-1;;;;;12329:39:1;12317:52;;12424:15;;;;12389:12;;;;12365:1;12283:9;12254:195;;;-1:-1:-1;;;;;;;12505:32:1;;;;12500:2;12485:18;;12478:60;-1:-1:-1;;;12569:3:1;12554:19;12547:35;12466:3;11608:980;-1:-1:-1;;;11608:980:1:o;13358:306::-;13446:6;13454;13462;13515:2;13503:9;13494:7;13490:23;13486:32;13483:52;;;13531:1;13528;13521:12;13483:52;13560:9;13554:16;13544:26;;13610:2;13599:9;13595:18;13589:25;13579:35;;13654:2;13643:9;13639:18;13633:25;13623:35;;13358:306;;;;;:::o

Swarm Source

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