BNB Price: $639.85 (+0.62%)
 

Overview

Max Total Supply

21,000,000KP (CSupply: 20,999,999.9)

Holders

1,260

Market

Price

$0.00 @ 0.000000 BNB

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.1 KP

Value
$0.00
0x672F526f1809F6Bac75b9B38168784fd425efbCB
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
KPCoin

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at BscScan.com on 2026-03-04
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

interface IUniswapV2Pair {
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function sync() external;
}

interface IUniswapV2Factory {
    function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IERC20 {
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 amount) external returns (bool);
    function approve(address spender, uint256 amount) external returns (bool);
}

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

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

interface IShareholderDistributor {
    function notifyShareholderTaxUSDT(uint256 amountUSDT) external;
}

contract KPCoin {

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

    modifier onlyOwner() {
        require(msg.sender == owner, "E0");
        _;
    }

    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0), "Invalid owner");
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }

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

    address public ecoPool;
    address public usdt;
    ISwapRouter public swapRouter;
    bool public swapEnabled;
    bool private inSwap;

    uint256 public buyTaxKPAccum;
    uint256 public dumpTaxKPAccum;
    uint256 public shareholderTaxKPAccum;

    mapping(address => bool) public tradeWhitelist;

    event EcoPoolUpdated(address indexed ecoPool);
    event SwapConfigUpdated(address indexed router, address indexed usdt, address indexed weth);
    event SwapPerformed(address indexed to, uint256 amountInKP, uint256 amountOutUSDT);
    event BuybackPerformed(uint256 amountInUSDT, uint256 amountOutKP);
    event TradeWhitelistUpdated(address indexed account, bool status);
    event SwapFailed(uint256 amountInKP);

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

    uint256 public constant MIN_U_RESERVE_TO_TRADE = 100000 * 10**18;
    string public name = "KP Coin";
    string public symbol = "KP";
    uint8 public decimals = 18;
    uint256 public totalSupply = 21000000 * 10**18;

    address public constant BLACK_HOLE = 0x000000000000000000000000000000000000dEaD;

    mapping(address => uint256) public balanceOf;
    mapping(address => mapping(address => uint256)) public allowance;

    address public uniswapV2Pair;
    address public uniswapV2Factory;
    address public WETH;

    uint256 public constant BASE_TAX_RATE = 200;

    uint256 public constant DUMP_TAX_MAX = 800;
    uint256 public constant PRICE_DROP_THRESHOLD = 100;
    uint256 public constant DUMP_BUYBACK_BPS = 7000;
    uint256 public constant DUMP_PROJECT_BPS = 3000;

    uint256 public dailyBasePrice;
    uint256 public lastPriceUpdateDay;

    bool public taxesEnabled;

    address public shareholderWallet;
    address public projectWallet;
    address public shareholderDistributor;

    uint256 public constant TARGET_CIRCULATING_SUPPLY = 5000000 * 10**18;
    bool public taxesPermanentlyDisabled;

    uint256 public constant BURN_INTERVAL = 1 days;
    uint256 public constant BURN_RATE_BPS = 240;
    uint256 public constant MIN_POOL_TO_BURN = 300000 * 10**18;
    uint256 public lastBurnTimestamp;

    address public constant ROUTER_ADDRESS = 0x10ED43C718714eb63d5aA57B78B54704E256024E;

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event TaxCollected(address indexed from, address indexed to, uint256 amount, uint256 taxRate);
    event PairUpdated(address indexed pair);
    event WalletsUpdated(address indexed shareholderWallet, address indexed projectWallet);
    event ShareholderDistributorUpdated(address indexed distributor);
    event TaxesPermanentlyDisabled(uint256 circulatingSupply);
    event AutoBurn(uint256 amount, uint256 timestamp);

    constructor() {
        owner = msg.sender;
        balanceOf[msg.sender] = totalSupply;
        emit Transfer(address(0), msg.sender, totalSupply);
        taxesEnabled = true;
        shareholderWallet = msg.sender;
        projectWallet = msg.sender;

        swapRouter = ISwapRouter(ROUTER_ADDRESS);

        tradeWhitelist[msg.sender] = true;
        tradeWhitelist[address(this)] = true;
        tradeWhitelist[ROUTER_ADDRESS] = true;
        emit TradeWhitelistUpdated(msg.sender, true);
        emit TradeWhitelistUpdated(address(this), true);
        emit TradeWhitelistUpdated(ROUTER_ADDRESS, true);
        usdt = 0x55d398326f99059fF775485246999027B3197955;
        WETH = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c;
        swapEnabled = true;

        lastBurnTimestamp = block.timestamp;
    }

    function setPair(address _pair) public onlyOwner {
        require(_pair != address(0), "Invalid pair address");
        uniswapV2Pair = _pair;
        emit PairUpdated(_pair);

        if (taxesEnabled && !taxesPermanentlyDisabled) {
            _updateDailyBasePrice();
        }
    }

    function setEcoPool(address _ecoPool) external onlyOwner {
        ecoPool = _ecoPool;
        emit EcoPoolUpdated(_ecoPool);
    }

    function setShareholderDistributor(address _distributor) external onlyOwner {
        require(_distributor != address(0), "Invalid distributor");
        shareholderDistributor = _distributor;
        emit ShareholderDistributorUpdated(_distributor);
    }

    function setSwapConfig(address _router, address _usdt, address _weth) external onlyOwner {
        require(_router != address(0) && _usdt != address(0) && _weth != address(0), "Invalid config");
        swapRouter = ISwapRouter(_router);
        usdt = _usdt;
        WETH = _weth;
        emit SwapConfigUpdated(_router, _usdt, _weth);
    }

    function multiSetTradeWhitelist(address[] calldata accounts, bool status) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            tradeWhitelist[accounts[i]] = status;
            emit TradeWhitelistUpdated(accounts[i], status);
        }
    }

    function setSwapEnabled(bool _enabled) external onlyOwner {
        swapEnabled = _enabled;
    }

    function enableTaxes() public onlyOwner {
        require(uniswapV2Pair != address(0), "Pair not set");
        require(!taxesPermanentlyDisabled, "Taxes permanently disabled");
        taxesEnabled = true;
        _updateDailyBasePrice();
    }

    function disableTaxes() public onlyOwner {
        taxesEnabled = false;
    }

    function setTaxWallets(address _shareholderWallet, address _projectWallet) public onlyOwner {
        require(_shareholderWallet != address(0) && _projectWallet != address(0), "Invalid wallet");
        shareholderWallet = _shareholderWallet;
        projectWallet = _projectWallet;
        emit WalletsUpdated(_shareholderWallet, _projectWallet);
    }

    function getPair() public view returns (address) {
        if (uniswapV2Pair != address(0)) {
            return uniswapV2Pair;
        }
        if (uniswapV2Factory != address(0) && WETH != address(0)) {
            return IUniswapV2Factory(uniswapV2Factory).getPair(address(this), WETH);
        }
        return address(0);
    }

    function getCurrentPrice() public view returns (uint256) {
        address pair = getPair();
        if (pair == address(0)) return 0;

        IUniswapV2Pair pairContract = IUniswapV2Pair(pair);
        (uint112 reserve0, uint112 reserve1, ) = pairContract.getReserves();
        if (reserve0 == 0 || reserve1 == 0) return 0;

        address token0 = pairContract.token0();
        if (token0 == address(this)) {

            return (uint256(reserve1) * 1e18) / reserve0;
        } else {
            return (uint256(reserve0) * 1e18) / reserve1;
        }
    }

    function _updateDailyBasePrice() internal {
        uint256 today = block.timestamp / 1 days;
        if (today == lastPriceUpdateDay && dailyBasePrice != 0) return;

        uint256 p = getCurrentPrice();
        if (p == 0) return;

        dailyBasePrice = p;
        lastPriceUpdateDay = today;
    }

    function _calculateDumpTaxRate() internal returns (uint256 dumpTaxRate) {
        if (!taxesEnabled || taxesPermanentlyDisabled) return 0;

        _updateDailyBasePrice();
        uint256 base = dailyBasePrice;
        if (base == 0) return 0;

        uint256 currentPrice = getCurrentPrice();
        if (currentPrice == 0 || currentPrice >= base) return 0;

        uint256 dropBps = ((base - currentPrice) * 10000) / base;
        if (dropBps <= PRICE_DROP_THRESHOLD) return 0;

        uint256 extraBps = (dropBps - PRICE_DROP_THRESHOLD) ;
        if (extraBps > DUMP_TAX_MAX) extraBps = DUMP_TAX_MAX;
        return extraBps;
    }

    function isTradingOpen() public view returns (bool) {
        address pair = getPair();
        if (pair == address(0)) return false;

        IUniswapV2Pair pairContract = IUniswapV2Pair(pair);
        (uint112 r0, uint112 r1, ) = pairContract.getReserves();
        if (r0 == 0 || r1 == 0) return false;

        address token0 = pairContract.token0();
        uint256 usdtReserve = token0 == usdt ? uint256(r0) : uint256(r1);
        return usdtReserve >= MIN_U_RESERVE_TO_TRADE;
    }

    function isTaxableLiquidityReady() public view returns (bool) {
        address pair = getPair();
        if (pair == address(0)) return false;
        (uint112 r0, uint112 r1, ) = IUniswapV2Pair(pair).getReserves();
        return (r0 > 0 && r1 > 0);
    }

    function _isTrading(address from, address to) internal view returns (bool isBuy, bool isSell) {

        if (!isTaxableLiquidityReady()) return (false, false);

        address pair = getPair();
        if (pair == address(0)) return (false, false);

        if (from == pair && to != pair && to != address(0)) {
            isBuy = true;
            return (isBuy, false);
        }

        if (to == pair && from != pair && from != address(0)) {
            isSell = true;
            return (false, isSell);
        }

        return (false, false);
    }

    function _swapKPToUSDT(uint256 amountInKP, address to) internal lockTheSwap returns (uint256 outUSDT) {
        if (!swapEnabled || amountInKP == 0) return 0;
        uint256 beforeBal = IERC20(usdt).balanceOf(to);
        balanceOf[address(this)] += amountInKP;
        allowance[address(this)][address(swapRouter)] = amountInKP;

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

        try swapRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            amountInKP, 0, path, to, block.timestamp
        ) {} catch {
            balanceOf[address(this)] -= amountInKP;
            return 0;
        }
        balanceOf[address(this)] -= amountInKP;
        uint256 afterBal = IERC20(usdt).balanceOf(to);
        if (afterBal > beforeBal) outUSDT = afterBal - beforeBal;
    }

    function _swapUSDTToKP(uint256 amountInUSDT, address to) internal lockTheSwap returns (uint256 outKP) {
        if (!swapEnabled || amountInUSDT == 0) return 0;
        uint256 beforeBal = balanceOf[to];
        IERC20(usdt).approve(address(swapRouter), amountInUSDT);

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

        try swapRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            amountInUSDT, 0, path, to, block.timestamp
        ) {} catch { return 0; }

        uint256 afterBal = balanceOf[to];
        if (afterBal > beforeBal) outKP = afterBal - beforeBal;
    }

    function _processAutoSwap(bool ) internal {
        if (inSwap || !swapEnabled) return;

        if (buyTaxKPAccum > 0) {
            uint256 kpAmt = buyTaxKPAccum;
            address target = ecoPool == address(0) ? owner : ecoPool;
            uint256 out = _swapKPToUSDT(kpAmt, target);
            if (out > 0) {
                buyTaxKPAccum = 0;
                emit SwapPerformed(target, kpAmt, out);
            }
        }

        if (shareholderTaxKPAccum > 0) {
            uint256 kpAmt2 = shareholderTaxKPAccum;
            address dist = shareholderDistributor;
            if (dist != address(0)) {
                uint256 usdtOut = _swapKPToUSDT(kpAmt2, dist);
                if (usdtOut > 0) {
                    shareholderTaxKPAccum = 0;
                    try IShareholderDistributor(dist).notifyShareholderTaxUSDT(usdtOut) {
                        emit SwapPerformed(dist, kpAmt2, usdtOut);
                    } catch {

                        emit SwapFailed(kpAmt2);
                    }
                }
            }
        }

        if (dumpTaxKPAccum > 0) {
            uint256 kpAmt3 = dumpTaxKPAccum;

            uint256 out3 = _swapKPToUSDT(kpAmt3, projectWallet);
            if (out3 > 0) {
                dumpTaxKPAccum = 0;
                emit SwapPerformed(projectWallet, kpAmt3, out3);
            }
        }
    }

    function _distributeTax(
        address _from,
        uint256 ,
        bool isBuy,
        bool isSell,
        uint256 baseTax,
        uint256 dumpTax
    ) internal returns (uint256 taxAmount) {
        taxAmount = baseTax + dumpTax;
        if (taxAmount == 0) return 0;

        uint256 ecoPart = 0;

        if (baseTax > 0) {
            if (isBuy) {
                ecoPart = baseTax;
            } else if (isSell) {

                shareholderTaxKPAccum += baseTax;
                balanceOf[address(this)] += baseTax;
                emit Transfer(_from, address(this), baseTax);
            }
        }

        uint256 toContract = ecoPart + dumpTax;
        if (toContract > 0) {
            balanceOf[address(this)] += toContract;
            if (isBuy) buyTaxKPAccum += ecoPart;
            dumpTaxKPAccum += dumpTax;
            emit Transfer(_from, address(this), toContract);
        }

        balanceOf[_from] -= taxAmount;
        emit TaxCollected(_from, address(this), taxAmount, BASE_TAX_RATE);
    }

    function _transfer(address _from, address _to, uint256 _value) internal returns (bool success) {
        require(balanceOf[_from] >= _value, "E1");

        address pair = getPair();
        if (!isTradingOpen() && pair != address(0) && (_from == pair || _to == pair)) {
            if (_from == pair) {

                require(tradeWhitelist[_to], "E2_BUY");
            } else {

                require(tradeWhitelist[_from], "E2_SELL");
            }
        }

        (bool isBuy, bool isSell) = _isTrading(_from, _to);
        uint256 taxAmount = 0;

        if ((isBuy || isSell) && taxesEnabled && !taxesPermanentlyDisabled && circulatingSupply() > TARGET_CIRCULATING_SUPPLY) {
            uint256 baseTax = (_value * BASE_TAX_RATE) / 10000;
            uint256 dumpTax = isSell ? (_value * _calculateDumpTaxRate()) / 10000 : 0;
            taxAmount = _distributeTax(_from, _value, isBuy, isSell, baseTax, dumpTax);
            _updateDailyBasePrice();
        }

        uint256 transferAmount = _value - taxAmount;
        balanceOf[_from] -= transferAmount;
        balanceOf[_to] += transferAmount;
        emit Transfer(_from, _to, transferAmount);

        if (isBuy && taxesEnabled && !taxesPermanentlyDisabled) _updateDailyBasePrice();
        _checkAndDisableTaxesIfNeeded();

        return true;
    }

    function triggerMaintenance() external {
        _autoBurn();
        _processAutoSwap(false);
        _processAutoSwap(true);
    }

    function _autoBurn() internal {
        if (uniswapV2Pair == address(0)) return;
        if (block.timestamp < lastBurnTimestamp + BURN_INTERVAL) return;
        uint256 poolBal = balanceOf[uniswapV2Pair];
        if (poolBal < MIN_POOL_TO_BURN) {
            lastBurnTimestamp = block.timestamp;
            return;
        }
        uint256 burnAmount = (poolBal * BURN_RATE_BPS) / 10000;
        if (burnAmount == 0) return;

        balanceOf[uniswapV2Pair] -= burnAmount;
        balanceOf[BLACK_HOLE] += burnAmount;
        lastBurnTimestamp = block.timestamp;
        try IUniswapV2Pair(uniswapV2Pair).sync() {} catch {}
        emit Transfer(uniswapV2Pair, BLACK_HOLE, burnAmount);
        emit AutoBurn(burnAmount, block.timestamp);
    }

    function transfer(address _to, uint256 _value) public returns (bool success) {
        return _transfer(msg.sender, _to, _value);
    }

    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
        require(allowance[_from][msg.sender] >= _value, "Insufficient allowance");
        allowance[_from][msg.sender] -= _value;
        return _transfer(_from, _to, _value);
    }

    function circulatingSupply() public view returns (uint256) {
        return totalSupply - balanceOf[BLACK_HOLE] - balanceOf[address(this)];
    }

    function _checkAndDisableTaxesIfNeeded() internal {
        if (!taxesPermanentlyDisabled && circulatingSupply() <= TARGET_CIRCULATING_SUPPLY) {
            taxesEnabled = false;
            taxesPermanentlyDisabled = true;
            emit TaxesPermanentlyDisabled(circulatingSupply());
        }
    }

    function approve(address _spender, uint256 _value) public returns (bool success) {
        allowance[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }

    function depositRewardPool(uint256 _amount) public returns (bool) {
        require(balanceOf[msg.sender] >= _amount && allowance[msg.sender][address(this)] >= _amount, "Error");
        balanceOf[msg.sender] -= _amount;
        allowance[msg.sender][address(this)] -= _amount;
        balanceOf[address(this)] += _amount;
        emit Transfer(msg.sender, address(this), _amount);
        return true;
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"AutoBurn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountInUSDT","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountOutKP","type":"uint256"}],"name":"BuybackPerformed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"ecoPool","type":"address"}],"name":"EcoPoolUpdated","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":"pair","type":"address"}],"name":"PairUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"distributor","type":"address"}],"name":"ShareholderDistributorUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"router","type":"address"},{"indexed":true,"internalType":"address","name":"usdt","type":"address"},{"indexed":true,"internalType":"address","name":"weth","type":"address"}],"name":"SwapConfigUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountInKP","type":"uint256"}],"name":"SwapFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountInKP","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountOutUSDT","type":"uint256"}],"name":"SwapPerformed","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":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"taxRate","type":"uint256"}],"name":"TaxCollected","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"circulatingSupply","type":"uint256"}],"name":"TaxesPermanentlyDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"TradeWhitelistUpdated","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"shareholderWallet","type":"address"},{"indexed":true,"internalType":"address","name":"projectWallet","type":"address"}],"name":"WalletsUpdated","type":"event"},{"inputs":[],"name":"BASE_TAX_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BLACK_HOLE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BURN_INTERVAL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BURN_RATE_BPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DUMP_BUYBACK_BPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DUMP_PROJECT_BPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DUMP_TAX_MAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_POOL_TO_BURN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_U_RESERVE_TO_TRADE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICE_DROP_THRESHOLD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ROUTER_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TARGET_CIRCULATING_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTaxKPAccum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dailyBasePrice","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":"uint256","name":"_amount","type":"uint256"}],"name":"depositRewardPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dumpTaxKPAccum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ecoPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCurrentPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTaxableLiquidityReady","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastBurnTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastPriceUpdateDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"multiSetTradeWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_ecoPool","type":"address"}],"name":"setEcoPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_distributor","type":"address"}],"name":"setShareholderDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"},{"internalType":"address","name":"_usdt","type":"address"},{"internalType":"address","name":"_weth","type":"address"}],"name":"setSwapConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_shareholderWallet","type":"address"},{"internalType":"address","name":"_projectWallet","type":"address"}],"name":"setTaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shareholderDistributor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"shareholderTaxKPAccum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"shareholderWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract ISwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxesEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxesPermanentlyDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tradeWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"triggerMaintenance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"usdt","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60806040526040518060400160405280600781526020017f4b5020436f696e00000000000000000000000000000000000000000000000000815250600890816200004a9190620007f2565b506040518060400160405280600281526020017f4b5000000000000000000000000000000000000000000000000000000000000081525060099081620000919190620007f2565b506012600a5f6101000a81548160ff021916908360ff1602179055506a115eec47f6cf7e35000000600b55348015620000c8575f80fd5b50335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b54600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b54604051620001ad9190620008e7565b60405180910390a3600160135f6101000a81548160ff02191690831515021790555033601360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507310ed43c718714eb63d5aa57b78b54704e256024e60035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f7310ed43c718714eb63d5aa57b78b54704e256024e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff167fc4144b7dd0e868dd7f7a1611979646c73b59e8f0d15b6d9814dbe9663d81f84060016040516200040091906200091e565b60405180910390a23073ffffffffffffffffffffffffffffffffffffffff167fc4144b7dd0e868dd7f7a1611979646c73b59e8f0d15b6d9814dbe9663d81f84060016040516200045191906200091e565b60405180910390a27310ed43c718714eb63d5aa57b78b54704e256024e73ffffffffffffffffffffffffffffffffffffffff167fc4144b7dd0e868dd7f7a1611979646c73b59e8f0d15b6d9814dbe9663d81f8406001604051620004b691906200091e565b60405180910390a27355d398326f99059ff775485246999027b319795560025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c60105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360146101000a81548160ff0219169083151502179055504260168190555062000939565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200060a57607f821691505b60208210810362000620576200061f620005c5565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620006847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000647565b62000690868362000647565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620006da620006d4620006ce84620006a8565b620006b1565b620006a8565b9050919050565b5f819050919050565b620006f583620006ba565b6200070d6200070482620006e1565b84845462000653565b825550505050565b5f90565b6200072362000715565b62000730818484620006ea565b505050565b5b8181101562000757576200074b5f8262000719565b60018101905062000736565b5050565b601f821115620007a657620007708162000626565b6200077b8462000638565b810160208510156200078b578190505b620007a36200079a8562000638565b83018262000735565b50505b505050565b5f82821c905092915050565b5f620007c85f1984600802620007ab565b1980831691505092915050565b5f620007e28383620007b7565b9150826002028217905092915050565b620007fd826200058e565b67ffffffffffffffff81111562000819576200081862000598565b5b620008258254620005f2565b620008328282856200075b565b5f60209050601f83116001811462000868575f841562000853578287015190505b6200085f8582620007d5565b865550620008ce565b601f198416620008788662000626565b5f5b82811015620008a1578489015182556001820191506020850194506020810190506200087a565b86831015620008c15784890151620008bd601f891682620007b7565b8355505b6001600288020188555050505b505050505050565b620008e181620006a8565b82525050565b5f602082019050620008fc5f830184620008d6565b92915050565b5f8115159050919050565b620009188162000902565b82525050565b5f602082019050620009335f8301846200090d565b92915050565b61525380620009475f395ff3fe608060405234801561000f575f80fd5b5060043610610397575f3560e01c80637b1648e2116101e7578063b94a6dfe1161010d578063dd62ed3e116100ab578063f1bb83d91161007a578063f1bb83d914610a1b578063f1cfad6014610a39578063f2fde38b14610a69578063f676539714610a8557610397565b8063dd62ed3e14610993578063e01af92c146109c3578063e6b3356a146109df578063eb91d37e146109fd57610397565b8063c1f1b1b5116100e7578063c1f1b1b51461092f578063c31c9c071461094d578063d523e0921461096b578063d9214b431461097557610397565b8063b94a6dfe146108d5578063beb08ab9146108f3578063bff51ef81461091157610397565b806395d89b4111610185578063a9059cbb11610154578063a9059cbb1461085f578063a96073e61461088f578063ad5c4648146108ad578063b0f67dfd146108cb57610397565b806395d89b41146107e7578063967ab76a14610805578063980fae2d14610823578063a2af116f1461084157610397565b806382d18da6116101c157806382d18da61461076f5780638da5cb5b1461078d57806391422994146107ab5780639358928b146107c957610397565b80637b1648e2146107195780637fff46c3146107375780638187f5161461075357610397565b8063432954c3116102cc57806356a060a21161026a5780636ddd1713116102395780636ddd1713146106a557806370a08231146106c3578063715018a6146106f3578063740bf497146106fd57610397565b806356a060a21461062f57806359d0f7131461064d57806366a0954b1461066b5780636b28e5871461068957610397565b80634c15d259116102a65780634c15d259146105b9578063512937f7146105e957806352b66a9b146105f357806355eda4e81461061157610397565b8063432954c314610561578063494ef9b71461057f57806349bd5a5e1461059b57610397565b806323b872dd11610339578063340ad18711610313578063340ad187146104e95780633d3d937d146105075780633dcc24af146105255780634031d49e1461054357610397565b806323b872dd1461047d5780632f48ab7d146104ad578063313ce567146104cb57610397565b806315f2ed861161037557806315f2ed8614610405578063177ae0441461042357806318160ddd146104415780632300f4101461045f57610397565b806306fdde031461039b57806307ed4ac9146103b9578063095ea7b3146103d5575b5f80fd5b6103a3610aa3565b6040516103b09190614361565b60405180910390f35b6103d360048036038101906103ce91906143e3565b610b2f565b005b6103ef60048036038101906103ea9190614441565b610cb0565b6040516103fc9190614499565b60405180910390f35b61040d610d9d565b60405161041a91906144c1565b60405180910390f35b61042b610da3565b60405161043891906144c1565b60405180910390f35b610449610da9565b60405161045691906144c1565b60405180910390f35b610467610daf565b60405161047491906144c1565b60405180910390f35b610497600480360381019061049291906144da565b610db4565b6040516104a49190614499565b60405180910390f35b6104b5610f12565b6040516104c29190614539565b60405180910390f35b6104d3610f37565b6040516104e0919061456d565b60405180910390f35b6104f1610f49565b6040516104fe91906144c1565b60405180910390f35b61050f610f4f565b60405161051c91906144c1565b60405180910390f35b61052d610f55565b60405161053a91906144c1565b60405180910390f35b61054b610f5b565b60405161055891906144c1565b60405180910390f35b610569610f61565b6040516105769190614539565b60405180910390f35b61059960048036038101906105949190614611565b610f86565b005b6105a3611129565b6040516105b09190614539565b60405180910390f35b6105d360048036038101906105ce919061466e565b61114e565b6040516105e09190614499565b60405180910390f35b6105f16113f5565b005b6105fb611412565b60405161060891906144c1565b60405180910390f35b610619611421565b6040516106269190614539565b60405180910390f35b610637611427565b6040516106449190614499565b60405180910390f35b61065561162e565b6040516106629190614539565b60405180910390f35b610673611653565b6040516106809190614499565b60405180910390f35b6106a3600480360381019061069e9190614699565b611666565b005b6106ad611908565b6040516106ba9190614499565b60405180910390f35b6106dd60048036038101906106d891906143e3565b61191b565b6040516106ea91906144c1565b60405180910390f35b6106fb611930565b005b610717600480360381019061071291906146e9565b611a77565b005b610721611c8a565b60405161072e91906144c1565b60405180910390f35b610751600480360381019061074c91906143e3565b611c91565b005b61076d600480360381019061076891906143e3565b611da4565b005b610777611f5b565b60405161078491906144c1565b60405180910390f35b610795611f60565b6040516107a29190614539565b60405180910390f35b6107b3611f83565b6040516107c091906144c1565b60405180910390f35b6107d1611f89565b6040516107de91906144c1565b60405180910390f35b6107ef612024565b6040516107fc9190614361565b60405180910390f35b61080d6120b0565b60405161081a91906144c1565b60405180910390f35b61082b6120be565b60405161083891906144c1565b60405180910390f35b6108496120cc565b6040516108569190614539565b60405180910390f35b61087960048036038101906108749190614441565b6120f2565b6040516108869190614499565b60405180910390f35b610897612106565b6040516108a49190614499565b60405180910390f35b6108b56121f9565b6040516108c29190614539565b60405180910390f35b6108d361221e565b005b6108dd6123ae565b6040516108ea9190614539565b60405180910390f35b6108fb6123c6565b6040516109089190614539565b60405180910390f35b6109196123eb565b6040516109269190614499565b60405180910390f35b6109376123fd565b6040516109449190614539565b60405180910390f35b6109556125f4565b6040516109629190614782565b60405180910390f35b610973612619565b005b61097d6126c1565b60405161098a9190614539565b60405180910390f35b6109ad60048036038101906109a891906146e9565b6126e6565b6040516109ba91906144c1565b60405180910390f35b6109dd60048036038101906109d8919061479b565b612706565b005b6109e76127b0565b6040516109f491906144c1565b60405180910390f35b610a056127b5565b604051610a1291906144c1565b60405180910390f35b610a236129eb565b604051610a3091906144c1565b60405180910390f35b610a536004803603810190610a4e91906143e3565b6129f1565b604051610a609190614499565b60405180910390f35b610a836004803603810190610a7e91906143e3565b612a0e565b005b610a8d612bc4565b604051610a9a91906144c1565b60405180910390f35b60088054610ab0906147f3565b80601f0160208091040260200160405190810160405280929190818152602001828054610adc906147f3565b8015610b275780601f10610afe57610100808354040283529160200191610b27565b820191905f5260205f20905b815481529060010190602001808311610b0a57829003601f168201915b505050505081565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb39061486d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c21906148d5565b60405180910390fd5b8060155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167ffc36690b6657fd7c36951a3c4e7468a5a2f388f7138b83c412ee768c668adbdb60405160405180910390a250565b5f81600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d8b91906144c1565b60405180910390a36001905092915050565b610bb881565b60125481565b600b5481565b60f081565b5f81600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610e70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e679061493d565b60405180910390fd5b81600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610ef79190614988565b92505081905550610f09848484612bca565b90509392505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5f9054906101000a900460ff1681565b61032081565b60165481565b611b5881565b60115481565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611013576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100a9061486d565b60405180910390fd5b5f5b83839050811015611123578160075f868685818110611037576110366149bb565b5b905060200201602081019061104c91906143e3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508383828181106110ae576110ad6149bb565b5b90506020020160208101906110c391906143e3565b73ffffffffffffffffffffffffffffffffffffffff167fc4144b7dd0e868dd7f7a1611979646c73b59e8f0d15b6d9814dbe9663d81f840836040516111089190614499565b60405180910390a2808061111b906149e8565b915050611015565b50505050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f81600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410158015611214575081600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b611253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124a90614a79565b60405180910390fd5b81600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461129f9190614988565b9250508190555081600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461132d9190614988565b9250508190555081600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546113809190614a97565b925050819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113e491906144c1565b60405180910390a360019050919050565b6113fd613099565b6114065f6133bf565b61141060016133bf565b565b6a0422ca8b0a00a42500000081565b61dead81565b5f806114316123fd565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361146f575f91505061162b565b5f8190505f808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156114be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114e29190614b46565b50915091505f826dffffffffffffffffffffffffffff16148061151457505f816dffffffffffffffffffffffffffff16145b15611525575f94505050505061162b565b5f8373ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561156f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115939190614baa565b90505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461160057826dffffffffffffffffffffffffffff16611612565b836dffffffffffffffffffffffffffff165b905069152d02c7e14af680000081101596505050505050505b90565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601560149054906101000a900460ff1681565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ea9061486d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561175b57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561179357505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6117d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c990614c1f565b60405180910390fd5b8260035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fd3bf5d7059e81dc6c85625daa1b7676571e3d8584aef89f26b2975a4e723618960405160405180910390a4505050565b600360149054906101000a900460ff1681565b600c602052805f5260405f205f915090505481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b49061486d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afb9061486d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611b6c57505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b611bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba290614c87565b60405180910390fd5b81601360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f316af92955f23ddbd4c570a5f8cda8a10b192f24d8f58524deb2fcb03a8bc79460405160405180910390a35050565b6201518081565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d159061486d565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f7a6cb7833493bcd9b5d5f7a0338e05e6d0a6c35c39604b9c153a0656f84224bb60405160405180910390a250565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e289061486d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9690614cef565b60405180910390fd5b80600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f1d288f7aba265e8b154b112bbb631ceca5df5fe93a750b2fe042fd1cc826647f60405160405180910390a260135f9054906101000a900460ff168015611f4a5750601560149054906101000a900460ff16155b15611f5857611f5761374d565b5b50565b60c881565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b5f600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600c5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600b546120159190614988565b61201f9190614988565b905090565b60098054612031906147f3565b80601f016020809104026020016040519081016040528092919081815260200182805461205d906147f3565b80156120a85780601f1061207f576101008083540402835291602001916120a8565b820191905f5260205f20905b81548152906001019060200180831161208b57829003601f168201915b505050505081565b69152d02c7e14af680000081565b693f870857a3e0e380000081565b601360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6120fe338484612bca565b905092915050565b5f806121106123fd565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361214e575f9150506121f6565b5f808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612199573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121bd9190614b46565b50915091505f826dffffffffffffffffffffffffffff161180156121f057505f816dffffffffffffffffffffffffffff16115b93505050505b90565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146122ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a29061486d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361233a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233190614d57565b60405180910390fd5b601560149054906101000a900460ff161561238a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238190614dbf565b60405180910390fd5b600160135f6101000a81548160ff0219169083151502179055506123ac61374d565b565b7310ed43c718714eb63d5aa57b78b54704e256024e81565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135f9054906101000a900460ff1681565b5f8073ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461247b57600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506125f1565b5f73ffffffffffffffffffffffffffffffffffffffff16600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561252557505f73ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156125ed57600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6a439053060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016125a7929190614ddd565b602060405180830381865afa1580156125c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125e69190614baa565b90506125f1565b5f90505b90565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146126a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269d9061486d565b60405180910390fd5b5f60135f6101000a81548160ff021916908315150217905550565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d602052815f5260405f20602052805f5260405f205f91509150505481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278a9061486d565b60405180910390fd5b80600360146101000a81548160ff02191690831515021790555050565b606481565b5f806127bf6123fd565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127fd575f9150506129e8565b5f8190505f808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561284c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128709190614b46565b50915091505f826dffffffffffffffffffffffffffff1614806128a257505f816dffffffffffffffffffffffffffff16145b156128b3575f9450505050506129e8565b5f8373ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128fd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129219190614baa565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036129a157826dffffffffffffffffffffffffffff16670de0b6b3a7640000836dffffffffffffffffffffffffffff1661298b9190614e04565b6129959190614e72565b955050505050506129e8565b816dffffffffffffffffffffffffffff16670de0b6b3a7640000846dffffffffffffffffffffffffffff166129d69190614e04565b6129e09190614e72565b955050505050505b90565b60055481565b6007602052805f5260405f205f915054906101000a900460ff1681565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a929061486d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0090614eec565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045481565b5f81600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015612c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4290614f54565b60405180910390fd5b5f612c546123fd565b9050612c5e611427565b158015612c9757505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015612d0457508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480612d0357508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b5b15612e55578073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612dca5760075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612dc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dbc90614fbc565b60405180910390fd5b612e54565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4a90615024565b60405180910390fd5b5b5b5f80612e6187876137a9565b915091505f8280612e6f5750815b8015612e86575060135f9054906101000a900460ff165b8015612e9f5750601560149054906101000a900460ff16155b8015612ebc57506a0422ca8b0a00a425000000612eba611f89565b115b15612f28575f61271060c888612ed29190614e04565b612edc9190614e72565b90505f83612eea575f612f0b565b612710612ef5613980565b89612f009190614e04565b612f0a9190614e72565b5b9050612f1b8a8987878686613a60565b9250612f2561374d565b50505b5f8187612f359190614988565b905080600c5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612f839190614988565b9250508190555080600c5f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612fd69190614a97565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161303a91906144c1565b60405180910390a383801561305a575060135f9054906101000a900460ff165b80156130735750601560149054906101000a900460ff16155b156130815761308061374d565b5b613089613d3d565b6001955050505050509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603156133bd57620151806016546130ff9190614a97565b42106133bd575f600c5f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050693f870857a3e0e38000008110156131865742601681905550506133bd565b5f61271060f0836131979190614e04565b6131a19190614e72565b90505f81036131b15750506133bd565b80600c5f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461321e9190614988565b9250508190555080600c5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546132739190614a97565b9250508190555042601681905550600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156132e7575f80fd5b505af19250505080156132f8575060015b5061dead73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161337991906144c1565b60405180910390a37f95954142be1f3de223185f4e14866682691e9dd326233b23397b70eb61ca1e8581426040516133b2929190615042565b60405180910390a150505b565b600360159054906101000a900460ff16806133e75750600360149054906101000a900460ff16155b61374a575f600454111561350b575f60045490505f8073ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146134775760015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613498565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b90505f6134a58383613de6565b90505f811115613507575f6004819055508173ffffffffffffffffffffffffffffffffffffffff167f713c4b3f53fb02904414178ee81caa411e2aad22d8a64c1ce8c46aeecef7ab3584836040516134fe929190615042565b60405180910390a25b5050505b5f6006541115613687575f60065490505f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613684575f61357e8383613de6565b90505f811115613682575f6006819055508173ffffffffffffffffffffffffffffffffffffffff1663fa51e155826040518263ffffffff1660e01b81526004016135c891906144c1565b5f604051808303815f87803b1580156135df575f80fd5b505af19250505080156135f0575060015b613630577ff9e10ddceffcb10b96e8833202366240699b814c91f371ddd9befa3aee9bc60f8360405161362391906144c1565b60405180910390a1613681565b8173ffffffffffffffffffffffffffffffffffffffff167f713c4b3f53fb02904414178ee81caa411e2aad22d8a64c1ce8c46aeecef7ab358483604051613678929190615042565b60405180910390a25b5b505b50505b5f6005541115613749575f60055490505f6136c38260145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613de6565b90505f811115613746575f60058190555060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f713c4b3f53fb02904414178ee81caa411e2aad22d8a64c1ce8c46aeecef7ab35838360405161373d929190615042565b60405180910390a25b50505b5b50565b5f620151804261375d9190614e72565b90506012548114801561377257505f60115414155b1561377d57506137a7565b5f6137866127b5565b90505f81036137965750506137a7565b806011819055508160128190555050505b565b5f806137b3612106565b6137c2575f8091509150613979565b5f6137cb6123fd565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361380c575f809250925050613979565b8073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614801561387357508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156138ab57505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156138c05760019250825f9250925050613979565b8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561392757508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561395f57505f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561397157600191505f925050613979565b5f8092509250505b9250929050565b5f60135f9054906101000a900460ff1615806139a85750601560149054906101000a900460ff165b156139b5575f9050613a5d565b6139bd61374d565b5f60115490505f81036139d3575f915050613a5d565b5f6139dc6127b5565b90505f8114806139ec5750818110155b156139fb575f92505050613a5d565b5f826127108385613a0c9190614988565b613a169190614e04565b613a209190614e72565b905060648111613a35575f9350505050613a5d565b5f606482613a439190614988565b9050610320811115613a555761032090505b809450505050505b90565b5f8183613a6d9190614a97565b90505f8103613a7e575f9050613d33565b5f80841115613b6e578515613a9557839050613b6d565b8415613b6c578360065f828254613aac9190614a97565b9250508190555083600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254613aff9190614a97565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051613b6391906144c1565b60405180910390a35b5b5b5f8382613b7b9190614a97565b90505f811115613c755780600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254613bd19190614a97565b925050819055508615613bf7578160045f828254613bef9190614a97565b925050819055505b8360055f828254613c089190614a97565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c6c91906144c1565b60405180910390a35b82600c5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254613cc19190614988565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddb30886d90db45adc1b2edcbabe12227896c25143cd155d3bf62ec8eff678568560c8604051613d28929190615042565b60405180910390a350505b9695505050505050565b601560149054906101000a900460ff16158015613d6c57506a0422ca8b0a00a425000000613d69611f89565b11155b15613de4575f60135f6101000a81548160ff0219169083151502179055506001601560146101000a81548160ff0219169083151502179055507f5048dba8fbd9b8372e207a0bba02242024baa8da8e27516c046d86d9d5f612d1613dce611f89565b604051613ddb91906144c1565b60405180910390a15b565b5f6001600360156101000a81548160ff021916908315150217905550600360149054906101000a900460ff161580613e1d57505f83145b15613e2a575f90506142b7565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401613e859190614539565b602060405180830381865afa158015613ea0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ec4919061507d565b905083600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254613f129190614a97565b9250508190555083600d5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f600267ffffffffffffffff811115613fd357613fd26150a8565b5b6040519080825280602002602001820160405280156140015781602001602082028036833780820191505090505b50905030815f81518110614018576140176149bb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110614088576140876149bb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795865f8488426040518663ffffffff1660e01b81526004016141249594939291906151c5565b5f604051808303815f87803b15801561413b575f80fd5b505af192505050801561414c575060015b6141ad5784600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461419c9190614988565b925050819055505f925050506142b7565b84600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546141f99190614988565b925050819055505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b815260040161425b9190614539565b602060405180830381865afa158015614276573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061429a919061507d565b9050828111156142b35782816142b09190614988565b93505b5050505b5f600360156101000a81548160ff02191690831515021790555092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561430e5780820151818401526020810190506142f3565b5f8484015250505050565b5f601f19601f8301169050919050565b5f614333826142d7565b61433d81856142e1565b935061434d8185602086016142f1565b61435681614319565b840191505092915050565b5f6020820190508181035f8301526143798184614329565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6143b282614389565b9050919050565b6143c2816143a8565b81146143cc575f80fd5b50565b5f813590506143dd816143b9565b92915050565b5f602082840312156143f8576143f7614381565b5b5f614405848285016143cf565b91505092915050565b5f819050919050565b6144208161440e565b811461442a575f80fd5b50565b5f8135905061443b81614417565b92915050565b5f806040838503121561445757614456614381565b5b5f614464858286016143cf565b92505060206144758582860161442d565b9150509250929050565b5f8115159050919050565b6144938161447f565b82525050565b5f6020820190506144ac5f83018461448a565b92915050565b6144bb8161440e565b82525050565b5f6020820190506144d45f8301846144b2565b92915050565b5f805f606084860312156144f1576144f0614381565b5b5f6144fe868287016143cf565b935050602061450f868287016143cf565b92505060406145208682870161442d565b9150509250925092565b614533816143a8565b82525050565b5f60208201905061454c5f83018461452a565b92915050565b5f60ff82169050919050565b61456781614552565b82525050565b5f6020820190506145805f83018461455e565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126145a7576145a6614586565b5b8235905067ffffffffffffffff8111156145c4576145c361458a565b5b6020830191508360208202830111156145e0576145df61458e565b5b9250929050565b6145f08161447f565b81146145fa575f80fd5b50565b5f8135905061460b816145e7565b92915050565b5f805f6040848603121561462857614627614381565b5b5f84013567ffffffffffffffff81111561464557614644614385565b5b61465186828701614592565b93509350506020614664868287016145fd565b9150509250925092565b5f6020828403121561468357614682614381565b5b5f6146908482850161442d565b91505092915050565b5f805f606084860312156146b0576146af614381565b5b5f6146bd868287016143cf565b93505060206146ce868287016143cf565b92505060406146df868287016143cf565b9150509250925092565b5f80604083850312156146ff576146fe614381565b5b5f61470c858286016143cf565b925050602061471d858286016143cf565b9150509250929050565b5f819050919050565b5f61474a61474561474084614389565b614727565b614389565b9050919050565b5f61475b82614730565b9050919050565b5f61476c82614751565b9050919050565b61477c81614762565b82525050565b5f6020820190506147955f830184614773565b92915050565b5f602082840312156147b0576147af614381565b5b5f6147bd848285016145fd565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061480a57607f821691505b60208210810361481d5761481c6147c6565b5b50919050565b7f45300000000000000000000000000000000000000000000000000000000000005f82015250565b5f6148576002836142e1565b915061486282614823565b602082019050919050565b5f6020820190508181035f8301526148848161484b565b9050919050565b7f496e76616c6964206469737472696275746f72000000000000000000000000005f82015250565b5f6148bf6013836142e1565b91506148ca8261488b565b602082019050919050565b5f6020820190508181035f8301526148ec816148b3565b9050919050565b7f496e73756666696369656e7420616c6c6f77616e6365000000000000000000005f82015250565b5f6149276016836142e1565b9150614932826148f3565b602082019050919050565b5f6020820190508181035f8301526149548161491b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6149928261440e565b915061499d8361440e565b92508282039050818111156149b5576149b461495b565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6149f28261440e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614a2457614a2361495b565b5b600182019050919050565b7f4572726f720000000000000000000000000000000000000000000000000000005f82015250565b5f614a636005836142e1565b9150614a6e82614a2f565b602082019050919050565b5f6020820190508181035f830152614a9081614a57565b9050919050565b5f614aa18261440e565b9150614aac8361440e565b9250828201905080821115614ac457614ac361495b565b5b92915050565b5f6dffffffffffffffffffffffffffff82169050919050565b614aec81614aca565b8114614af6575f80fd5b50565b5f81519050614b0781614ae3565b92915050565b5f63ffffffff82169050919050565b614b2581614b0d565b8114614b2f575f80fd5b50565b5f81519050614b4081614b1c565b92915050565b5f805f60608486031215614b5d57614b5c614381565b5b5f614b6a86828701614af9565b9350506020614b7b86828701614af9565b9250506040614b8c86828701614b32565b9150509250925092565b5f81519050614ba4816143b9565b92915050565b5f60208284031215614bbf57614bbe614381565b5b5f614bcc84828501614b96565b91505092915050565b7f496e76616c696420636f6e6669670000000000000000000000000000000000005f82015250565b5f614c09600e836142e1565b9150614c1482614bd5565b602082019050919050565b5f6020820190508181035f830152614c3681614bfd565b9050919050565b7f496e76616c69642077616c6c65740000000000000000000000000000000000005f82015250565b5f614c71600e836142e1565b9150614c7c82614c3d565b602082019050919050565b5f6020820190508181035f830152614c9e81614c65565b9050919050565b7f496e76616c6964207061697220616464726573730000000000000000000000005f82015250565b5f614cd96014836142e1565b9150614ce482614ca5565b602082019050919050565b5f6020820190508181035f830152614d0681614ccd565b9050919050565b7f50616972206e6f742073657400000000000000000000000000000000000000005f82015250565b5f614d41600c836142e1565b9150614d4c82614d0d565b602082019050919050565b5f6020820190508181035f830152614d6e81614d35565b9050919050565b7f5461786573207065726d616e656e746c792064697361626c65640000000000005f82015250565b5f614da9601a836142e1565b9150614db482614d75565b602082019050919050565b5f6020820190508181035f830152614dd681614d9d565b9050919050565b5f604082019050614df05f83018561452a565b614dfd602083018461452a565b9392505050565b5f614e0e8261440e565b9150614e198361440e565b9250828202614e278161440e565b91508282048414831517614e3e57614e3d61495b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614e7c8261440e565b9150614e878361440e565b925082614e9757614e96614e45565b5b828204905092915050565b7f496e76616c6964206f776e6572000000000000000000000000000000000000005f82015250565b5f614ed6600d836142e1565b9150614ee182614ea2565b602082019050919050565b5f6020820190508181035f830152614f0381614eca565b9050919050565b7f45310000000000000000000000000000000000000000000000000000000000005f82015250565b5f614f3e6002836142e1565b9150614f4982614f0a565b602082019050919050565b5f6020820190508181035f830152614f6b81614f32565b9050919050565b7f45325f42555900000000000000000000000000000000000000000000000000005f82015250565b5f614fa66006836142e1565b9150614fb182614f72565b602082019050919050565b5f6020820190508181035f830152614fd381614f9a565b9050919050565b7f45325f53454c4c000000000000000000000000000000000000000000000000005f82015250565b5f61500e6007836142e1565b915061501982614fda565b602082019050919050565b5f6020820190508181035f83015261503b81615002565b9050919050565b5f6040820190506150555f8301856144b2565b61506260208301846144b2565b9392505050565b5f8151905061507781614417565b92915050565b5f6020828403121561509257615091614381565b5b5f61509f84828501615069565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f819050919050565b5f6150f86150f36150ee846150d5565b614727565b61440e565b9050919050565b615108816150de565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b615140816143a8565b82525050565b5f6151518383615137565b60208301905092915050565b5f602082019050919050565b5f6151738261510e565b61517d8185615118565b935061518883615128565b805f5b838110156151b857815161519f8882615146565b97506151aa8361515d565b92505060018101905061518b565b5085935050505092915050565b5f60a0820190506151d85f8301886144b2565b6151e560208301876150ff565b81810360408301526151f78186615169565b9050615206606083018561452a565b61521360808301846144b2565b969550505050505056fea2646970667358221220bbbe2abd4b074456e590e23e303dece349fe7819320981748b566db7b8b33a5764736f6c63430008140033

Deployed Bytecode

0x608060405234801561000f575f80fd5b5060043610610397575f3560e01c80637b1648e2116101e7578063b94a6dfe1161010d578063dd62ed3e116100ab578063f1bb83d91161007a578063f1bb83d914610a1b578063f1cfad6014610a39578063f2fde38b14610a69578063f676539714610a8557610397565b8063dd62ed3e14610993578063e01af92c146109c3578063e6b3356a146109df578063eb91d37e146109fd57610397565b8063c1f1b1b5116100e7578063c1f1b1b51461092f578063c31c9c071461094d578063d523e0921461096b578063d9214b431461097557610397565b8063b94a6dfe146108d5578063beb08ab9146108f3578063bff51ef81461091157610397565b806395d89b4111610185578063a9059cbb11610154578063a9059cbb1461085f578063a96073e61461088f578063ad5c4648146108ad578063b0f67dfd146108cb57610397565b806395d89b41146107e7578063967ab76a14610805578063980fae2d14610823578063a2af116f1461084157610397565b806382d18da6116101c157806382d18da61461076f5780638da5cb5b1461078d57806391422994146107ab5780639358928b146107c957610397565b80637b1648e2146107195780637fff46c3146107375780638187f5161461075357610397565b8063432954c3116102cc57806356a060a21161026a5780636ddd1713116102395780636ddd1713146106a557806370a08231146106c3578063715018a6146106f3578063740bf497146106fd57610397565b806356a060a21461062f57806359d0f7131461064d57806366a0954b1461066b5780636b28e5871461068957610397565b80634c15d259116102a65780634c15d259146105b9578063512937f7146105e957806352b66a9b146105f357806355eda4e81461061157610397565b8063432954c314610561578063494ef9b71461057f57806349bd5a5e1461059b57610397565b806323b872dd11610339578063340ad18711610313578063340ad187146104e95780633d3d937d146105075780633dcc24af146105255780634031d49e1461054357610397565b806323b872dd1461047d5780632f48ab7d146104ad578063313ce567146104cb57610397565b806315f2ed861161037557806315f2ed8614610405578063177ae0441461042357806318160ddd146104415780632300f4101461045f57610397565b806306fdde031461039b57806307ed4ac9146103b9578063095ea7b3146103d5575b5f80fd5b6103a3610aa3565b6040516103b09190614361565b60405180910390f35b6103d360048036038101906103ce91906143e3565b610b2f565b005b6103ef60048036038101906103ea9190614441565b610cb0565b6040516103fc9190614499565b60405180910390f35b61040d610d9d565b60405161041a91906144c1565b60405180910390f35b61042b610da3565b60405161043891906144c1565b60405180910390f35b610449610da9565b60405161045691906144c1565b60405180910390f35b610467610daf565b60405161047491906144c1565b60405180910390f35b610497600480360381019061049291906144da565b610db4565b6040516104a49190614499565b60405180910390f35b6104b5610f12565b6040516104c29190614539565b60405180910390f35b6104d3610f37565b6040516104e0919061456d565b60405180910390f35b6104f1610f49565b6040516104fe91906144c1565b60405180910390f35b61050f610f4f565b60405161051c91906144c1565b60405180910390f35b61052d610f55565b60405161053a91906144c1565b60405180910390f35b61054b610f5b565b60405161055891906144c1565b60405180910390f35b610569610f61565b6040516105769190614539565b60405180910390f35b61059960048036038101906105949190614611565b610f86565b005b6105a3611129565b6040516105b09190614539565b60405180910390f35b6105d360048036038101906105ce919061466e565b61114e565b6040516105e09190614499565b60405180910390f35b6105f16113f5565b005b6105fb611412565b60405161060891906144c1565b60405180910390f35b610619611421565b6040516106269190614539565b60405180910390f35b610637611427565b6040516106449190614499565b60405180910390f35b61065561162e565b6040516106629190614539565b60405180910390f35b610673611653565b6040516106809190614499565b60405180910390f35b6106a3600480360381019061069e9190614699565b611666565b005b6106ad611908565b6040516106ba9190614499565b60405180910390f35b6106dd60048036038101906106d891906143e3565b61191b565b6040516106ea91906144c1565b60405180910390f35b6106fb611930565b005b610717600480360381019061071291906146e9565b611a77565b005b610721611c8a565b60405161072e91906144c1565b60405180910390f35b610751600480360381019061074c91906143e3565b611c91565b005b61076d600480360381019061076891906143e3565b611da4565b005b610777611f5b565b60405161078491906144c1565b60405180910390f35b610795611f60565b6040516107a29190614539565b60405180910390f35b6107b3611f83565b6040516107c091906144c1565b60405180910390f35b6107d1611f89565b6040516107de91906144c1565b60405180910390f35b6107ef612024565b6040516107fc9190614361565b60405180910390f35b61080d6120b0565b60405161081a91906144c1565b60405180910390f35b61082b6120be565b60405161083891906144c1565b60405180910390f35b6108496120cc565b6040516108569190614539565b60405180910390f35b61087960048036038101906108749190614441565b6120f2565b6040516108869190614499565b60405180910390f35b610897612106565b6040516108a49190614499565b60405180910390f35b6108b56121f9565b6040516108c29190614539565b60405180910390f35b6108d361221e565b005b6108dd6123ae565b6040516108ea9190614539565b60405180910390f35b6108fb6123c6565b6040516109089190614539565b60405180910390f35b6109196123eb565b6040516109269190614499565b60405180910390f35b6109376123fd565b6040516109449190614539565b60405180910390f35b6109556125f4565b6040516109629190614782565b60405180910390f35b610973612619565b005b61097d6126c1565b60405161098a9190614539565b60405180910390f35b6109ad60048036038101906109a891906146e9565b6126e6565b6040516109ba91906144c1565b60405180910390f35b6109dd60048036038101906109d8919061479b565b612706565b005b6109e76127b0565b6040516109f491906144c1565b60405180910390f35b610a056127b5565b604051610a1291906144c1565b60405180910390f35b610a236129eb565b604051610a3091906144c1565b60405180910390f35b610a536004803603810190610a4e91906143e3565b6129f1565b604051610a609190614499565b60405180910390f35b610a836004803603810190610a7e91906143e3565b612a0e565b005b610a8d612bc4565b604051610a9a91906144c1565b60405180910390f35b60088054610ab0906147f3565b80601f0160208091040260200160405190810160405280929190818152602001828054610adc906147f3565b8015610b275780601f10610afe57610100808354040283529160200191610b27565b820191905f5260205f20905b815481529060010190602001808311610b0a57829003601f168201915b505050505081565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb39061486d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c21906148d5565b60405180910390fd5b8060155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167ffc36690b6657fd7c36951a3c4e7468a5a2f388f7138b83c412ee768c668adbdb60405160405180910390a250565b5f81600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d8b91906144c1565b60405180910390a36001905092915050565b610bb881565b60125481565b600b5481565b60f081565b5f81600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610e70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e679061493d565b60405180910390fd5b81600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610ef79190614988565b92505081905550610f09848484612bca565b90509392505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5f9054906101000a900460ff1681565b61032081565b60165481565b611b5881565b60115481565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611013576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100a9061486d565b60405180910390fd5b5f5b83839050811015611123578160075f868685818110611037576110366149bb565b5b905060200201602081019061104c91906143e3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508383828181106110ae576110ad6149bb565b5b90506020020160208101906110c391906143e3565b73ffffffffffffffffffffffffffffffffffffffff167fc4144b7dd0e868dd7f7a1611979646c73b59e8f0d15b6d9814dbe9663d81f840836040516111089190614499565b60405180910390a2808061111b906149e8565b915050611015565b50505050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f81600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410158015611214575081600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b611253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124a90614a79565b60405180910390fd5b81600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461129f9190614988565b9250508190555081600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461132d9190614988565b9250508190555081600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546113809190614a97565b925050819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113e491906144c1565b60405180910390a360019050919050565b6113fd613099565b6114065f6133bf565b61141060016133bf565b565b6a0422ca8b0a00a42500000081565b61dead81565b5f806114316123fd565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361146f575f91505061162b565b5f8190505f808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156114be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114e29190614b46565b50915091505f826dffffffffffffffffffffffffffff16148061151457505f816dffffffffffffffffffffffffffff16145b15611525575f94505050505061162b565b5f8373ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561156f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115939190614baa565b90505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461160057826dffffffffffffffffffffffffffff16611612565b836dffffffffffffffffffffffffffff165b905069152d02c7e14af680000081101596505050505050505b90565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601560149054906101000a900460ff1681565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ea9061486d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561175b57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561179357505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6117d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c990614c1f565b60405180910390fd5b8260035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fd3bf5d7059e81dc6c85625daa1b7676571e3d8584aef89f26b2975a4e723618960405160405180910390a4505050565b600360149054906101000a900460ff1681565b600c602052805f5260405f205f915090505481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b49061486d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afb9061486d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611b6c57505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b611bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba290614c87565b60405180910390fd5b81601360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f316af92955f23ddbd4c570a5f8cda8a10b192f24d8f58524deb2fcb03a8bc79460405160405180910390a35050565b6201518081565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d159061486d565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f7a6cb7833493bcd9b5d5f7a0338e05e6d0a6c35c39604b9c153a0656f84224bb60405160405180910390a250565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e289061486d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9690614cef565b60405180910390fd5b80600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f1d288f7aba265e8b154b112bbb631ceca5df5fe93a750b2fe042fd1cc826647f60405160405180910390a260135f9054906101000a900460ff168015611f4a5750601560149054906101000a900460ff16155b15611f5857611f5761374d565b5b50565b60c881565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b5f600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600c5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600b546120159190614988565b61201f9190614988565b905090565b60098054612031906147f3565b80601f016020809104026020016040519081016040528092919081815260200182805461205d906147f3565b80156120a85780601f1061207f576101008083540402835291602001916120a8565b820191905f5260205f20905b81548152906001019060200180831161208b57829003601f168201915b505050505081565b69152d02c7e14af680000081565b693f870857a3e0e380000081565b601360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6120fe338484612bca565b905092915050565b5f806121106123fd565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361214e575f9150506121f6565b5f808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612199573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121bd9190614b46565b50915091505f826dffffffffffffffffffffffffffff161180156121f057505f816dffffffffffffffffffffffffffff16115b93505050505b90565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146122ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a29061486d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361233a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233190614d57565b60405180910390fd5b601560149054906101000a900460ff161561238a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238190614dbf565b60405180910390fd5b600160135f6101000a81548160ff0219169083151502179055506123ac61374d565b565b7310ed43c718714eb63d5aa57b78b54704e256024e81565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135f9054906101000a900460ff1681565b5f8073ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461247b57600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506125f1565b5f73ffffffffffffffffffffffffffffffffffffffff16600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561252557505f73ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156125ed57600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6a439053060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016125a7929190614ddd565b602060405180830381865afa1580156125c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125e69190614baa565b90506125f1565b5f90505b90565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146126a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269d9061486d565b60405180910390fd5b5f60135f6101000a81548160ff021916908315150217905550565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d602052815f5260405f20602052805f5260405f205f91509150505481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278a9061486d565b60405180910390fd5b80600360146101000a81548160ff02191690831515021790555050565b606481565b5f806127bf6123fd565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127fd575f9150506129e8565b5f8190505f808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561284c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128709190614b46565b50915091505f826dffffffffffffffffffffffffffff1614806128a257505f816dffffffffffffffffffffffffffff16145b156128b3575f9450505050506129e8565b5f8373ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128fd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129219190614baa565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036129a157826dffffffffffffffffffffffffffff16670de0b6b3a7640000836dffffffffffffffffffffffffffff1661298b9190614e04565b6129959190614e72565b955050505050506129e8565b816dffffffffffffffffffffffffffff16670de0b6b3a7640000846dffffffffffffffffffffffffffff166129d69190614e04565b6129e09190614e72565b955050505050505b90565b60055481565b6007602052805f5260405f205f915054906101000a900460ff1681565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a929061486d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0090614eec565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045481565b5f81600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015612c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4290614f54565b60405180910390fd5b5f612c546123fd565b9050612c5e611427565b158015612c9757505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015612d0457508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480612d0357508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b5b15612e55578073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612dca5760075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612dc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dbc90614fbc565b60405180910390fd5b612e54565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4a90615024565b60405180910390fd5b5b5b5f80612e6187876137a9565b915091505f8280612e6f5750815b8015612e86575060135f9054906101000a900460ff165b8015612e9f5750601560149054906101000a900460ff16155b8015612ebc57506a0422ca8b0a00a425000000612eba611f89565b115b15612f28575f61271060c888612ed29190614e04565b612edc9190614e72565b90505f83612eea575f612f0b565b612710612ef5613980565b89612f009190614e04565b612f0a9190614e72565b5b9050612f1b8a8987878686613a60565b9250612f2561374d565b50505b5f8187612f359190614988565b905080600c5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612f839190614988565b9250508190555080600c5f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612fd69190614a97565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161303a91906144c1565b60405180910390a383801561305a575060135f9054906101000a900460ff165b80156130735750601560149054906101000a900460ff16155b156130815761308061374d565b5b613089613d3d565b6001955050505050509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603156133bd57620151806016546130ff9190614a97565b42106133bd575f600c5f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050693f870857a3e0e38000008110156131865742601681905550506133bd565b5f61271060f0836131979190614e04565b6131a19190614e72565b90505f81036131b15750506133bd565b80600c5f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461321e9190614988565b9250508190555080600c5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546132739190614a97565b9250508190555042601681905550600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156132e7575f80fd5b505af19250505080156132f8575060015b5061dead73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161337991906144c1565b60405180910390a37f95954142be1f3de223185f4e14866682691e9dd326233b23397b70eb61ca1e8581426040516133b2929190615042565b60405180910390a150505b565b600360159054906101000a900460ff16806133e75750600360149054906101000a900460ff16155b61374a575f600454111561350b575f60045490505f8073ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146134775760015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613498565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b90505f6134a58383613de6565b90505f811115613507575f6004819055508173ffffffffffffffffffffffffffffffffffffffff167f713c4b3f53fb02904414178ee81caa411e2aad22d8a64c1ce8c46aeecef7ab3584836040516134fe929190615042565b60405180910390a25b5050505b5f6006541115613687575f60065490505f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613684575f61357e8383613de6565b90505f811115613682575f6006819055508173ffffffffffffffffffffffffffffffffffffffff1663fa51e155826040518263ffffffff1660e01b81526004016135c891906144c1565b5f604051808303815f87803b1580156135df575f80fd5b505af19250505080156135f0575060015b613630577ff9e10ddceffcb10b96e8833202366240699b814c91f371ddd9befa3aee9bc60f8360405161362391906144c1565b60405180910390a1613681565b8173ffffffffffffffffffffffffffffffffffffffff167f713c4b3f53fb02904414178ee81caa411e2aad22d8a64c1ce8c46aeecef7ab358483604051613678929190615042565b60405180910390a25b5b505b50505b5f6005541115613749575f60055490505f6136c38260145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613de6565b90505f811115613746575f60058190555060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f713c4b3f53fb02904414178ee81caa411e2aad22d8a64c1ce8c46aeecef7ab35838360405161373d929190615042565b60405180910390a25b50505b5b50565b5f620151804261375d9190614e72565b90506012548114801561377257505f60115414155b1561377d57506137a7565b5f6137866127b5565b90505f81036137965750506137a7565b806011819055508160128190555050505b565b5f806137b3612106565b6137c2575f8091509150613979565b5f6137cb6123fd565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361380c575f809250925050613979565b8073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614801561387357508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156138ab57505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156138c05760019250825f9250925050613979565b8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561392757508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561395f57505f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561397157600191505f925050613979565b5f8092509250505b9250929050565b5f60135f9054906101000a900460ff1615806139a85750601560149054906101000a900460ff165b156139b5575f9050613a5d565b6139bd61374d565b5f60115490505f81036139d3575f915050613a5d565b5f6139dc6127b5565b90505f8114806139ec5750818110155b156139fb575f92505050613a5d565b5f826127108385613a0c9190614988565b613a169190614e04565b613a209190614e72565b905060648111613a35575f9350505050613a5d565b5f606482613a439190614988565b9050610320811115613a555761032090505b809450505050505b90565b5f8183613a6d9190614a97565b90505f8103613a7e575f9050613d33565b5f80841115613b6e578515613a9557839050613b6d565b8415613b6c578360065f828254613aac9190614a97565b9250508190555083600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254613aff9190614a97565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051613b6391906144c1565b60405180910390a35b5b5b5f8382613b7b9190614a97565b90505f811115613c755780600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254613bd19190614a97565b925050819055508615613bf7578160045f828254613bef9190614a97565b925050819055505b8360055f828254613c089190614a97565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c6c91906144c1565b60405180910390a35b82600c5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254613cc19190614988565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddb30886d90db45adc1b2edcbabe12227896c25143cd155d3bf62ec8eff678568560c8604051613d28929190615042565b60405180910390a350505b9695505050505050565b601560149054906101000a900460ff16158015613d6c57506a0422ca8b0a00a425000000613d69611f89565b11155b15613de4575f60135f6101000a81548160ff0219169083151502179055506001601560146101000a81548160ff0219169083151502179055507f5048dba8fbd9b8372e207a0bba02242024baa8da8e27516c046d86d9d5f612d1613dce611f89565b604051613ddb91906144c1565b60405180910390a15b565b5f6001600360156101000a81548160ff021916908315150217905550600360149054906101000a900460ff161580613e1d57505f83145b15613e2a575f90506142b7565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401613e859190614539565b602060405180830381865afa158015613ea0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ec4919061507d565b905083600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254613f129190614a97565b9250508190555083600d5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f600267ffffffffffffffff811115613fd357613fd26150a8565b5b6040519080825280602002602001820160405280156140015781602001602082028036833780820191505090505b50905030815f81518110614018576140176149bb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110614088576140876149bb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795865f8488426040518663ffffffff1660e01b81526004016141249594939291906151c5565b5f604051808303815f87803b15801561413b575f80fd5b505af192505050801561414c575060015b6141ad5784600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461419c9190614988565b925050819055505f925050506142b7565b84600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546141f99190614988565b925050819055505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b815260040161425b9190614539565b602060405180830381865afa158015614276573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061429a919061507d565b9050828111156142b35782816142b09190614988565b93505b5050505b5f600360156101000a81548160ff02191690831515021790555092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561430e5780820151818401526020810190506142f3565b5f8484015250505050565b5f601f19601f8301169050919050565b5f614333826142d7565b61433d81856142e1565b935061434d8185602086016142f1565b61435681614319565b840191505092915050565b5f6020820190508181035f8301526143798184614329565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6143b282614389565b9050919050565b6143c2816143a8565b81146143cc575f80fd5b50565b5f813590506143dd816143b9565b92915050565b5f602082840312156143f8576143f7614381565b5b5f614405848285016143cf565b91505092915050565b5f819050919050565b6144208161440e565b811461442a575f80fd5b50565b5f8135905061443b81614417565b92915050565b5f806040838503121561445757614456614381565b5b5f614464858286016143cf565b92505060206144758582860161442d565b9150509250929050565b5f8115159050919050565b6144938161447f565b82525050565b5f6020820190506144ac5f83018461448a565b92915050565b6144bb8161440e565b82525050565b5f6020820190506144d45f8301846144b2565b92915050565b5f805f606084860312156144f1576144f0614381565b5b5f6144fe868287016143cf565b935050602061450f868287016143cf565b92505060406145208682870161442d565b9150509250925092565b614533816143a8565b82525050565b5f60208201905061454c5f83018461452a565b92915050565b5f60ff82169050919050565b61456781614552565b82525050565b5f6020820190506145805f83018461455e565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126145a7576145a6614586565b5b8235905067ffffffffffffffff8111156145c4576145c361458a565b5b6020830191508360208202830111156145e0576145df61458e565b5b9250929050565b6145f08161447f565b81146145fa575f80fd5b50565b5f8135905061460b816145e7565b92915050565b5f805f6040848603121561462857614627614381565b5b5f84013567ffffffffffffffff81111561464557614644614385565b5b61465186828701614592565b93509350506020614664868287016145fd565b9150509250925092565b5f6020828403121561468357614682614381565b5b5f6146908482850161442d565b91505092915050565b5f805f606084860312156146b0576146af614381565b5b5f6146bd868287016143cf565b93505060206146ce868287016143cf565b92505060406146df868287016143cf565b9150509250925092565b5f80604083850312156146ff576146fe614381565b5b5f61470c858286016143cf565b925050602061471d858286016143cf565b9150509250929050565b5f819050919050565b5f61474a61474561474084614389565b614727565b614389565b9050919050565b5f61475b82614730565b9050919050565b5f61476c82614751565b9050919050565b61477c81614762565b82525050565b5f6020820190506147955f830184614773565b92915050565b5f602082840312156147b0576147af614381565b5b5f6147bd848285016145fd565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061480a57607f821691505b60208210810361481d5761481c6147c6565b5b50919050565b7f45300000000000000000000000000000000000000000000000000000000000005f82015250565b5f6148576002836142e1565b915061486282614823565b602082019050919050565b5f6020820190508181035f8301526148848161484b565b9050919050565b7f496e76616c6964206469737472696275746f72000000000000000000000000005f82015250565b5f6148bf6013836142e1565b91506148ca8261488b565b602082019050919050565b5f6020820190508181035f8301526148ec816148b3565b9050919050565b7f496e73756666696369656e7420616c6c6f77616e6365000000000000000000005f82015250565b5f6149276016836142e1565b9150614932826148f3565b602082019050919050565b5f6020820190508181035f8301526149548161491b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6149928261440e565b915061499d8361440e565b92508282039050818111156149b5576149b461495b565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6149f28261440e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614a2457614a2361495b565b5b600182019050919050565b7f4572726f720000000000000000000000000000000000000000000000000000005f82015250565b5f614a636005836142e1565b9150614a6e82614a2f565b602082019050919050565b5f6020820190508181035f830152614a9081614a57565b9050919050565b5f614aa18261440e565b9150614aac8361440e565b9250828201905080821115614ac457614ac361495b565b5b92915050565b5f6dffffffffffffffffffffffffffff82169050919050565b614aec81614aca565b8114614af6575f80fd5b50565b5f81519050614b0781614ae3565b92915050565b5f63ffffffff82169050919050565b614b2581614b0d565b8114614b2f575f80fd5b50565b5f81519050614b4081614b1c565b92915050565b5f805f60608486031215614b5d57614b5c614381565b5b5f614b6a86828701614af9565b9350506020614b7b86828701614af9565b9250506040614b8c86828701614b32565b9150509250925092565b5f81519050614ba4816143b9565b92915050565b5f60208284031215614bbf57614bbe614381565b5b5f614bcc84828501614b96565b91505092915050565b7f496e76616c696420636f6e6669670000000000000000000000000000000000005f82015250565b5f614c09600e836142e1565b9150614c1482614bd5565b602082019050919050565b5f6020820190508181035f830152614c3681614bfd565b9050919050565b7f496e76616c69642077616c6c65740000000000000000000000000000000000005f82015250565b5f614c71600e836142e1565b9150614c7c82614c3d565b602082019050919050565b5f6020820190508181035f830152614c9e81614c65565b9050919050565b7f496e76616c6964207061697220616464726573730000000000000000000000005f82015250565b5f614cd96014836142e1565b9150614ce482614ca5565b602082019050919050565b5f6020820190508181035f830152614d0681614ccd565b9050919050565b7f50616972206e6f742073657400000000000000000000000000000000000000005f82015250565b5f614d41600c836142e1565b9150614d4c82614d0d565b602082019050919050565b5f6020820190508181035f830152614d6e81614d35565b9050919050565b7f5461786573207065726d616e656e746c792064697361626c65640000000000005f82015250565b5f614da9601a836142e1565b9150614db482614d75565b602082019050919050565b5f6020820190508181035f830152614dd681614d9d565b9050919050565b5f604082019050614df05f83018561452a565b614dfd602083018461452a565b9392505050565b5f614e0e8261440e565b9150614e198361440e565b9250828202614e278161440e565b91508282048414831517614e3e57614e3d61495b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614e7c8261440e565b9150614e878361440e565b925082614e9757614e96614e45565b5b828204905092915050565b7f496e76616c6964206f776e6572000000000000000000000000000000000000005f82015250565b5f614ed6600d836142e1565b9150614ee182614ea2565b602082019050919050565b5f6020820190508181035f830152614f0381614eca565b9050919050565b7f45310000000000000000000000000000000000000000000000000000000000005f82015250565b5f614f3e6002836142e1565b9150614f4982614f0a565b602082019050919050565b5f6020820190508181035f830152614f6b81614f32565b9050919050565b7f45325f42555900000000000000000000000000000000000000000000000000005f82015250565b5f614fa66006836142e1565b9150614fb182614f72565b602082019050919050565b5f6020820190508181035f830152614fd381614f9a565b9050919050565b7f45325f53454c4c000000000000000000000000000000000000000000000000005f82015250565b5f61500e6007836142e1565b915061501982614fda565b602082019050919050565b5f6020820190508181035f83015261503b81615002565b9050919050565b5f6040820190506150555f8301856144b2565b61506260208301846144b2565b9392505050565b5f8151905061507781614417565b92915050565b5f6020828403121561509257615091614381565b5b5f61509f84828501615069565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f819050919050565b5f6150f86150f36150ee846150d5565b614727565b61440e565b9050919050565b615108816150de565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b615140816143a8565b82525050565b5f6151518383615137565b60208301905092915050565b5f602082019050919050565b5f6151738261510e565b61517d8185615118565b935061518883615128565b805f5b838110156151b857815161519f8882615146565b97506151aa8361515d565b92505060018101905061518b565b5085935050505092915050565b5f60a0820190506151d85f8301886144b2565b6151e560208301876150ff565b81810360408301526151f78186615169565b9050615206606083018561452a565b61521360808301846144b2565b969550505050505056fea2646970667358221220bbbe2abd4b074456e590e23e303dece349fe7819320981748b566db7b8b33a5764736f6c63430008140033

Deployed Bytecode Sourcemap

1157:17673:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2677:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5945:260;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18188:216;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3361:47;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3453:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2781:46;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3821:43;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17424:284;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1787:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2748:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3201:42;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3936:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3307:47;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3417:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3602:37;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6569:282;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3048:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18412:415;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16363:136;;;:::i;:::-;;3648:68;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2836:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9597:499;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3083:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3723:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6213:348;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1849:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2924:44;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1612:138;;;:::i;:::-;;7312:358;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3768:46;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5803:134;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5500:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3149:43;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1182:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1978:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17716:147;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2714:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2606:64;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3871:58;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3528:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17279:137;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10104:262;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3121:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6966:250;;;:::i;:::-;;3977:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3567:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3495:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7678:341;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1813:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7224:80;;;:::i;:::-;;1758:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2975:64;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6859:99;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3250:50;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8027:579;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1942:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2023:46;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1395:209;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1907:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2677:30;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5945:260::-;1355:5;;;;;;;;;;1341:19;;:10;:19;;;1333:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;6064:1:::1;6040:26;;:12;:26;;::::0;6032:58:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6126:12;6101:22;;:37;;;;;;;;;;;;;;;;;;6184:12;6154:43;;;;;;;;;;;;5945:260:::0;:::o;18188:216::-;18255:12;18314:6;18280:9;:21;18290:10;18280:21;;;;;;;;;;;;;;;:31;18302:8;18280:31;;;;;;;;;;;;;;;:40;;;;18357:8;18336:38;;18345:10;18336:38;;;18367:6;18336:38;;;;;;:::i;:::-;;;;;;;;18392:4;18385:11;;18188:216;;;;:::o;3361:47::-;3404:4;3361:47;:::o;3453:33::-;;;;:::o;2781:46::-;;;;:::o;3821:43::-;3861:3;3821:43;:::o;17424:284::-;17506:12;17571:6;17539:9;:16;17549:5;17539:16;;;;;;;;;;;;;;;:28;17556:10;17539:28;;;;;;;;;;;;;;;;:38;;17531:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;17647:6;17615:9;:16;17625:5;17615:16;;;;;;;;;;;;;;;:28;17632:10;17615:28;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;17671:29;17681:5;17688:3;17693:6;17671:9;:29::i;:::-;17664:36;;17424:284;;;;;:::o;1787:19::-;;;;;;;;;;;;;:::o;2748:26::-;;;;;;;;;;;;;:::o;3201:42::-;3240:3;3201:42;:::o;3936:32::-;;;;:::o;3307:47::-;3350:4;3307:47;:::o;3417:29::-;;;;:::o;3602:37::-;;;;;;;;;;;;;:::o;6569:282::-;1355:5;;;;;;;;;;1341:19;;:10;:19;;;1333:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;6678:9:::1;6673:171;6697:8;;:15;;6693:1;:19;6673:171;;;6764:6;6734:14;:27;6749:8;;6758:1;6749:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;6734:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;6812:8;;6821:1;6812:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;6790:42;;;6825:6;6790:42;;;;;;:::i;:::-;;;;;;;;6714:3;;;;;:::i;:::-;;;;6673:171;;;;6569:282:::0;;;:::o;3048:28::-;;;;;;;;;;;;;:::o;18412:415::-;18472:4;18522:7;18497:9;:21;18507:10;18497:21;;;;;;;;;;;;;;;;:32;;:83;;;;;18573:7;18533:9;:21;18543:10;18533:21;;;;;;;;;;;;;;;:36;18563:4;18533:36;;;;;;;;;;;;;;;;:47;;18497:83;18489:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;18626:7;18601:9;:21;18611:10;18601:21;;;;;;;;;;;;;;;;:32;;;;;;;:::i;:::-;;;;;;;;18684:7;18644:9;:21;18654:10;18644:21;;;;;;;;;;;;;;;:36;18674:4;18644:36;;;;;;;;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;18730:7;18702:9;:24;18720:4;18702:24;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;18782:4;18753:44;;18762:10;18753:44;;;18789:7;18753:44;;;;;;:::i;:::-;;;;;;;;18815:4;18808:11;;18412:415;;;:::o;16363:136::-;16413:11;:9;:11::i;:::-;16435:23;16452:5;16435:16;:23::i;:::-;16469:22;16486:4;16469:16;:22::i;:::-;16363:136::o;3648:68::-;3700:16;3648:68;:::o;2836:79::-;2873:42;2836:79;:::o;9597:499::-;9643:4;9660:12;9675:9;:7;:9::i;:::-;9660:24;;9715:1;9699:18;;:4;:18;;;9695:36;;9726:5;9719:12;;;;;9695:36;9744:27;9789:4;9744:50;;9806:10;9818;9834:12;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9805:55;;;;;9881:1;9875:2;:7;;;:18;;;;9892:1;9886:2;:7;;;9875:18;9871:36;;;9902:5;9895:12;;;;;;;;9871:36;9920:14;9937:12;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9920:38;;9969:19;10001:4;;;;;;;;;;;9991:14;;:6;:14;;;:42;;10030:2;10022:11;;9991:42;;;10016:2;10008:11;;9991:42;9969:64;;2655:15;10051:11;:37;;10044:44;;;;;;;;9597:499;;:::o;3083:31::-;;;;;;;;;;;;;:::o;3723:36::-;;;;;;;;;;;;;:::o;6213:348::-;1355:5;;;;;;;;;;1341:19;;:10;:19;;;1333:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;6340:1:::1;6321:21;;:7;:21;;;;:44;;;;;6363:1;6346:19;;:5;:19;;;;6321:44;:67;;;;;6386:1;6369:19;;:5;:19;;;;6321:67;6313:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;6443:7;6418:10;;:33;;;;;;;;;;;;;;;;;;6469:5;6462:4;;:12;;;;;;;;;;;;;;;;;;6492:5;6485:4;;:12;;;;;;;;;;;;;;;;;;6547:5;6513:40;;6540:5;6513:40;;6531:7;6513:40;;;;;;;;;;;;6213:348:::0;;;:::o;1849:23::-;;;;;;;;;;;;;:::o;2924:44::-;;;;;;;;;;;;;;;;;:::o;1612:138::-;1355:5;;;;;;;;;;1341:19;;:10;:19;;;1333:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;1710:1:::1;1674:39;;1695:5;::::0;::::1;;;;;;;;1674:39;;;;;;;;;;;;1740:1;1724:5:::0;::::1;:18;;;;;;;;;;;;;;;;;;1612:138::o:0;7312:358::-;1355:5;;;;;;;;;;1341:19;;:10;:19;;;1333:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;7453:1:::1;7423:32;;:18;:32;;;;:64;;;;;7485:1;7459:28;;:14;:28;;;;7423:64;7415:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;7537:18;7517:17;;:38;;;;;;;;;;;;;;;;;;7582:14;7566:13;;:30;;;;;;;;;;;;;;;;;;7647:14;7612:50;;7627:18;7612:50;;;;;;;;;;;;7312:358:::0;;:::o;3768:46::-;3808:6;3768:46;:::o;5803:134::-;1355:5;;;;;;;;;;1341:19;;:10;:19;;;1333:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;5881:8:::1;5871:7;;:18;;;;;;;;;;;;;;;;;;5920:8;5905:24;;;;;;;;;;;;5803:134:::0;:::o;5500:295::-;1355:5;;;;;;;;;;1341:19;;:10;:19;;;1333:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;5585:1:::1;5568:19;;:5;:19;;::::0;5560:52:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;5639:5;5623:13;;:21;;;;;;;;;;;;;;;;;;5672:5;5660:18;;;;;;;;;;;;5695:12;;;;;;;;;;;:41;;;;;5712:24;;;;;;;;;;;5711:25;5695:41;5691:97;;;5753:23;:21;:23::i;:::-;5691:97;5500:295:::0;:::o;3149:43::-;3189:3;3149:43;:::o;1182:20::-;;;;;;;;;;;;:::o;1978:36::-;;;;:::o;17716:147::-;17766:7;17831:9;:24;17849:4;17831:24;;;;;;;;;;;;;;;;17807:9;:21;2873:42;17807:21;;;;;;;;;;;;;;;;17793:11;;:35;;;;:::i;:::-;:62;;;;:::i;:::-;17786:69;;17716:147;:::o;2714:27::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2606:64::-;2655:15;2606:64;:::o;3871:58::-;3914:15;3871:58;:::o;3528:32::-;;;;;;;;;;;;;:::o;17279:137::-;17342:12;17374:34;17384:10;17396:3;17401:6;17374:9;:34::i;:::-;17367:41;;17279:137;;;;:::o;10104:262::-;10160:4;10177:12;10192:9;:7;:9::i;:::-;10177:24;;10232:1;10216:18;;:4;:18;;;10212:36;;10243:5;10236:12;;;;;10212:36;10260:10;10272;10303:4;10288:32;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10259:63;;;;;10346:1;10341:2;:6;;;:16;;;;;10356:1;10351:2;:6;;;10341:16;10333:25;;;;;10104:262;;:::o;3121:19::-;;;;;;;;;;;;;:::o;6966:250::-;1355:5;;;;;;;;;;1341:19;;:10;:19;;;1333:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;7050:1:::1;7025:27;;:13;;;;;;;;;;;:27;;::::0;7017:52:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7089:24;;;;;;;;;;;7088:25;7080:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7170:4;7155:12;;:19;;;;;;;;;;;;;;;;;;7185:23;:21;:23::i;:::-;6966:250::o:0;3977:83::-;4018:42;3977:83;:::o;3567:28::-;;;;;;;;;;;;;:::o;3495:24::-;;;;;;;;;;;;;:::o;7678:341::-;7718:7;7767:1;7742:27;;:13;;;;;;;;;;;:27;;;7738:80;;7793:13;;;;;;;;;;;7786:20;;;;7738:80;7860:1;7832:30;;:16;;;;;;;;;;;:30;;;;:52;;;;;7882:1;7866:18;;:4;;;;;;;;;;;:18;;;;7832:52;7828:156;;;7926:16;;;;;;;;;;;7908:43;;;7960:4;7967;;;;;;;;;;;7908:64;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7901:71;;;;7828:156;8009:1;7994:17;;7678:341;;:::o;1813:29::-;;;;;;;;;;;;;:::o;7224:80::-;1355:5;;;;;;;;;;1341:19;;:10;:19;;;1333:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;7291:5:::1;7276:12;;:20;;;;;;;;;;;;;;;;;;7224:80::o:0;1758:22::-;;;;;;;;;;;;;:::o;2975:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6859:99::-;1355:5;;;;;;;;;;1341:19;;:10;:19;;;1333:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;6942:8:::1;6928:11;;:22;;;;;;;;;;;;;;;;;;6859:99:::0;:::o;3250:50::-;3297:3;3250:50;:::o;8027:579::-;8075:7;8095:12;8110:9;:7;:9::i;:::-;8095:24;;8150:1;8134:18;;:4;:18;;;8130:32;;8161:1;8154:8;;;;;8130:32;8175:27;8220:4;8175:50;;8237:16;8255;8277:12;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8236:67;;;;;8330:1;8318:8;:13;;;:30;;;;8347:1;8335:8;:13;;;8318:30;8314:44;;;8357:1;8350:8;;;;;;;;8314:44;8371:14;8388:12;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8371:38;;8442:4;8424:23;;:6;:23;;;8420:179;;8502:8;8473:37;;8494:4;8482:8;8474:17;;:24;;;;:::i;:::-;8473:37;;;;:::i;:::-;8466:44;;;;;;;;;8420:179;8579:8;8550:37;;8571:4;8559:8;8551:17;;:24;;;;:::i;:::-;8550:37;;;;:::i;:::-;8543:44;;;;;;;8027:579;;:::o;1942:29::-;;;;:::o;2023:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;1395:209::-;1355:5;;;;;;;;;;1341:19;;:10;:19;;;1333:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;1496:1:::1;1476:22;;:8;:22;;::::0;1468:48:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1560:8;1532:37;;1553:5;::::0;::::1;;;;;;;;1532:37;;;;;;;;;;;;1588:8;1580:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;1395:209:::0;:::o;1907:28::-;;;;:::o;14999:1356::-;15080:12;15133:6;15113:9;:16;15123:5;15113:16;;;;;;;;;;;;;;;;:26;;15105:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;15159:12;15174:9;:7;:9::i;:::-;15159:24;;15199:15;:13;:15::i;:::-;15198:16;:38;;;;;15234:1;15218:18;;:4;:18;;;;15198:38;:72;;;;;15250:4;15241:13;;:5;:13;;;:28;;;;15265:4;15258:11;;:3;:11;;;15241:28;15198:72;15194:282;;;15300:4;15291:13;;:5;:13;;;15287:178;;15335:14;:19;15350:3;15335:19;;;;;;;;;;;;;;;;;;;;;;;;;15327:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15287:178;;;15416:14;:21;15431:5;15416:21;;;;;;;;;;;;;;;;;;;;;;;;;15408:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;15287:178;15194:282;15489:10;15501:11;15516:22;15527:5;15534:3;15516:10;:22::i;:::-;15488:50;;;;15549:17;15588:5;:15;;;;15597:6;15588:15;15587:33;;;;;15608:12;;;;;;;;;;;15587:33;:62;;;;;15625:24;;;;;;;;;;;15624:25;15587:62;:113;;;;;3700:16;15653:19;:17;:19::i;:::-;:47;15587:113;15583:411;;;15717:15;15762:5;3189:3;15736:6;:22;;;;:::i;:::-;15735:32;;;;:::i;:::-;15717:50;;15782:15;15800:6;:55;;15854:1;15800:55;;;15846:5;15819:23;:21;:23::i;:::-;15810:6;:32;;;;:::i;:::-;15809:42;;;;:::i;:::-;15800:55;15782:73;;15882:62;15897:5;15904:6;15912:5;15919:6;15927:7;15936;15882:14;:62::i;:::-;15870:74;;15959:23;:21;:23::i;:::-;15702:292;;15583:411;16006:22;16040:9;16031:6;:18;;;;:::i;:::-;16006:43;;16080:14;16060:9;:16;16070:5;16060:16;;;;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;16123:14;16105:9;:14;16115:3;16105:14;;;;;;;;;;;;;;;;:32;;;;;;;:::i;:::-;;;;;;;;16169:3;16153:36;;16162:5;16153:36;;;16174:14;16153:36;;;;;;:::i;:::-;;;;;;;;16206:5;:21;;;;;16215:12;;;;;;;;;;;16206:21;:50;;;;;16232:24;;;;;;;;;;;16231:25;16206:50;16202:79;;;16258:23;:21;:23::i;:::-;16202:79;16292:31;:29;:31::i;:::-;16343:4;16336:11;;;;;;;14999:1356;;;;;:::o;16507:764::-;16577:1;16552:27;;:13;;;;;;;;;;;:27;;;16548:40;16581:7;16548:40;3808:6;16620:17;;:33;;;;:::i;:::-;16602:15;:51;16655:7;16598:64;16672:15;16690:9;:24;16700:13;;;;;;;;;;;16690:24;;;;;;;;;;;;;;;;16672:42;;3914:15;16729:7;:26;16725:115;;;16792:15;16772:17;:35;;;;16822:7;;;16725:115;16850:18;16899:5;3861:3;16872:7;:23;;;;:::i;:::-;16871:33;;;;:::i;:::-;16850:54;;16933:1;16919:10;:15;16915:28;;16936:7;;;;16915:28;16983:10;16955:9;:24;16965:13;;;;;;;;;;;16955:24;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;17029:10;17004:9;:21;2873:42;17004:21;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;17070:15;17050:17;:35;;;;17115:13;;;;;;;;;;;17100:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17096:52;2873:42;17163:47;;17172:13;;;;;;;;;;;17163:47;;;17199:10;17163:47;;;;;;:::i;:::-;;;;;;;;17226:37;17235:10;17247:15;17226:37;;;;;;;:::i;:::-;;;;;;;;16537:734;;16507:764;:::o;12515:1405::-;12572:6;;;;;;;;;;;:22;;;;12583:11;;;;;;;;;;;12582:12;12572:22;12596:7;12568:35;12635:1;12619:13;;:17;12615:343;;;12653:13;12669;;12653:29;;12697:14;12733:1;12714:21;;:7;;;;;;;;;;;:21;;;:39;;12746:7;;;;;;;;;;;12714:39;;;12738:5;;;;;;;;;;12714:39;12697:56;;12768:11;12782:28;12796:5;12803:6;12782:13;:28::i;:::-;12768:42;;12835:1;12829:3;:7;12825:122;;;12873:1;12857:13;:17;;;;12912:6;12898:33;;;12920:5;12927:3;12898:33;;;;;;;:::i;:::-;;;;;;;;12825:122;12638:320;;;12615:343;12998:1;12974:21;;:25;12970:634;;;13016:14;13033:21;;13016:38;;13069:12;13084:22;;;;;;;;;;;13069:37;;13141:1;13125:18;;:4;:18;;;13121:472;;13164:15;13182:27;13196:6;13204:4;13182:13;:27::i;:::-;13164:45;;13242:1;13232:7;:11;13228:350;;;13292:1;13268:21;:25;;;;13344:4;13320:54;;;13375:7;13320:63;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13316:243;;13517:18;13528:6;13517:18;;;;;;:::i;:::-;;;;;;;;13316:243;;;13430:4;13416:36;;;13436:6;13444:7;13416:36;;;;;;;:::i;:::-;;;;;;;;13316:243;13228:350;13145:448;13121:472;13001:603;;12970:634;13637:1;13620:14;;:18;13616:297;;;13655:14;13672;;13655:31;;13703:12;13718:36;13732:6;13740:13;;;;;;;;;;;13718;:36::i;:::-;13703:51;;13780:1;13773:4;:8;13769:133;;;13819:1;13802:14;:18;;;;13858:13;;;;;;;;;;;13844:42;;;13873:6;13881:4;13844:42;;;;;;;:::i;:::-;;;;;;;;13769:133;13640:273;;13616:297;12515:1405;;:::o;8614:313::-;8667:13;8701:6;8683:15;:24;;;;:::i;:::-;8667:40;;8731:18;;8722:5;:27;:50;;;;;8771:1;8753:14;;:19;;8722:50;8718:63;;;8774:7;;;8718:63;8793:9;8805:17;:15;:17::i;:::-;8793:29;;8842:1;8837;:6;8833:19;;8845:7;;;;8833:19;8881:1;8864:14;:18;;;;8914:5;8893:18;:26;;;;8656:271;;8614:313;:::o;10374:577::-;10443:10;10455:11;10486:25;:23;:25::i;:::-;10481:53;;10521:5;10528;10513:21;;;;;;10481:53;10547:12;10562:9;:7;:9::i;:::-;10547:24;;10602:1;10586:18;;:4;:18;;;10582:45;;10614:5;10621;10606:21;;;;;;;10582:45;10652:4;10644:12;;:4;:12;;;:26;;;;;10666:4;10660:10;;:2;:10;;;;10644:26;:46;;;;;10688:1;10674:16;;:2;:16;;;;10644:46;10640:127;;;10715:4;10707:12;;10742:5;10749;10734:21;;;;;;;10640:127;10789:4;10783:10;;:2;:10;;;:26;;;;;10805:4;10797:12;;:4;:12;;;;10783:26;:48;;;;;10829:1;10813:18;;:4;:18;;;;10783:48;10779:131;;;10857:4;10848:13;;10884:5;10876:22;;;;;10779:131;10930:5;10937;10922:21;;;;;10374:577;;;;;;:::o;8935:654::-;8986:19;9023:12;;;;;;;;;;;9022:13;:41;;;;9039:24;;;;;;;;;;;9022:41;9018:55;;;9072:1;9065:8;;;;9018:55;9086:23;:21;:23::i;:::-;9120:12;9135:14;;9120:29;;9172:1;9164:4;:9;9160:23;;9182:1;9175:8;;;;;9160:23;9196:20;9219:17;:15;:17::i;:::-;9196:40;;9267:1;9251:12;:17;:41;;;;9288:4;9272:12;:20;;9251:41;9247:55;;;9301:1;9294:8;;;;;;9247:55;9315:15;9367:4;9358:5;9342:12;9335:4;:19;;;;:::i;:::-;9334:29;;;;:::i;:::-;9333:38;;;;:::i;:::-;9315:56;;3297:3;9386:7;:31;9382:45;;9426:1;9419:8;;;;;;;9382:45;9440:16;3297:3;9460:7;:30;;;;:::i;:::-;9440:51;;3240:3;9507:8;:23;9503:52;;;3240:3;9532:23;;9503:52;9573:8;9566:15;;;;;;8935:654;;:::o;13928:1063::-;14115:17;14167:7;14157;:17;;;;:::i;:::-;14145:29;;14202:1;14189:9;:14;14185:28;;14212:1;14205:8;;;;14185:28;14226:15;14272:1;14262:7;:11;14258:310;;;14294:5;14290:267;;;14330:7;14320:17;;14290:267;;;14363:6;14359:198;;;14417:7;14392:21;;:32;;;;;;;:::i;:::-;;;;;;;;14471:7;14443:9;:24;14461:4;14443:24;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;14526:4;14502:39;;14511:5;14502:39;;;14533:7;14502:39;;;;;;:::i;:::-;;;;;;;;14359:198;14290:267;14258:310;14580:18;14611:7;14601;:17;;;;:::i;:::-;14580:38;;14646:1;14633:10;:14;14629:237;;;14692:10;14664:9;:24;14682:4;14664:24;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;14721:5;14717:35;;;14745:7;14728:13;;:24;;;;;;;:::i;:::-;;;;;;;;14717:35;14785:7;14767:14;;:25;;;;;;;:::i;:::-;;;;;;;;14836:4;14812:42;;14821:5;14812:42;;;14843:10;14812:42;;;;;;:::i;:::-;;;;;;;;14629:237;14898:9;14878;:16;14888:5;14878:16;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;14951:4;14923:60;;14936:5;14923:60;;;14958:9;3189:3;14923:60;;;;;;;:::i;:::-;;;;;;;;14134:857;;13928:1063;;;;;;;;;:::o;17871:309::-;17937:24;;;;;;;;;;;17936:25;:77;;;;;3700:16;17965:19;:17;:19::i;:::-;:48;;17936:77;17932:241;;;18045:5;18030:12;;:20;;;;;;;;;;;;;;;;;;18092:4;18065:24;;:31;;;;;;;;;;;;;;;;;;18116:45;18141:19;:17;:19::i;:::-;18116:45;;;;;;:::i;:::-;;;;;;;;17932:241;17871:309::o;10959:869::-;11044:15;2549:4;2540:6;;:13;;;;;;;;;;;;;;;;;;11077:11:::1;;;;;;;;;;;11076:12;:31;;;;11106:1;11092:10;:15;11076:31;11072:45;;;11116:1;11109:8;;;;11072:45;11128:17;11155:4;;;;;;;;;;;11148:22;;;11171:2;11148:26;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11128:46;;11213:10;11185:9;:24;11203:4;11185:24;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;11282:10;11234:9;:24;11252:4;11234:24;;;;;;;;;;;;;;;:45;11267:10;;;;;;;;;;;11234:45;;;;;;;;;;;;;;;:58;;;;11305:21;11343:1;11329:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11305:40;;11374:4;11356;11361:1;11356:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11400:4;;;;;;;;;;;11390;11395:1;11390:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;11421:10;;;;;;;;;;;:64;;;11500:10;11512:1;11515:4;11521:2;11525:15;11421:130;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;11417:232;;11604:10;11576:9;:24;11594:4;11576:24;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;11636:1;11629:8;;;;;;11417:232;11687:10;11659:9;:24;11677:4;11659:24;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;11708:16;11734:4;;;;;;;;;;;11727:22;;;11750:2;11727:26;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11708:45;;11779:9;11768:8;:20;11764:56;;;11811:9;11800:8;:20;;;;:::i;:::-;11790:30;;11764:56;11061:767;;;2564:1;2585:5:::0;2576:6;;:14;;;;;;;;;;;;;;;;;;10959:869;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:329::-;2242:6;2291:2;2279:9;2270:7;2266:23;2262:32;2259:119;;;2297:79;;:::i;:::-;2259:119;2417:1;2442:53;2487:7;2478:6;2467:9;2463:22;2442:53;:::i;:::-;2432:63;;2388:117;2183:329;;;;:::o;2518:77::-;2555:7;2584:5;2573:16;;2518:77;;;:::o;2601:122::-;2674:24;2692:5;2674:24;:::i;:::-;2667:5;2664:35;2654:63;;2713:1;2710;2703:12;2654:63;2601:122;:::o;2729:139::-;2775:5;2813:6;2800:20;2791:29;;2829:33;2856:5;2829:33;:::i;:::-;2729:139;;;;:::o;2874:474::-;2942:6;2950;2999:2;2987:9;2978:7;2974:23;2970:32;2967:119;;;3005:79;;:::i;:::-;2967:119;3125:1;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3096:117;3252:2;3278:53;3323:7;3314:6;3303:9;3299:22;3278:53;:::i;:::-;3268:63;;3223:118;2874:474;;;;;:::o;3354:90::-;3388:7;3431:5;3424:13;3417:21;3406:32;;3354:90;;;:::o;3450:109::-;3531:21;3546:5;3531:21;:::i;:::-;3526:3;3519:34;3450:109;;:::o;3565:210::-;3652:4;3690:2;3679:9;3675:18;3667:26;;3703:65;3765:1;3754:9;3750:17;3741:6;3703:65;:::i;:::-;3565:210;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:118::-;4845:24;4863:5;4845:24;:::i;:::-;4840:3;4833:37;4758:118;;:::o;4882:222::-;4975:4;5013:2;5002:9;4998:18;4990:26;;5026:71;5094:1;5083:9;5079:17;5070:6;5026:71;:::i;:::-;4882:222;;;;:::o;5110:86::-;5145:7;5185:4;5178:5;5174:16;5163:27;;5110:86;;;:::o;5202:112::-;5285:22;5301:5;5285:22;:::i;:::-;5280:3;5273:35;5202:112;;:::o;5320:214::-;5409:4;5447:2;5436:9;5432:18;5424:26;;5460:67;5524:1;5513:9;5509:17;5500:6;5460:67;:::i;:::-;5320:214;;;;:::o;5540:117::-;5649:1;5646;5639:12;5663:117;5772:1;5769;5762:12;5786:117;5895:1;5892;5885:12;5926:568;5999:8;6009:6;6059:3;6052:4;6044:6;6040:17;6036:27;6026:122;;6067:79;;:::i;:::-;6026:122;6180:6;6167:20;6157:30;;6210:18;6202:6;6199:30;6196:117;;;6232:79;;:::i;:::-;6196:117;6346:4;6338:6;6334:17;6322:29;;6400:3;6392:4;6384:6;6380:17;6370:8;6366:32;6363:41;6360:128;;;6407:79;;:::i;:::-;6360:128;5926:568;;;;;:::o;6500:116::-;6570:21;6585:5;6570:21;:::i;:::-;6563:5;6560:32;6550:60;;6606:1;6603;6596:12;6550:60;6500:116;:::o;6622:133::-;6665:5;6703:6;6690:20;6681:29;;6719:30;6743:5;6719:30;:::i;:::-;6622:133;;;;:::o;6761:698::-;6853:6;6861;6869;6918:2;6906:9;6897:7;6893:23;6889:32;6886:119;;;6924:79;;:::i;:::-;6886:119;7072:1;7061:9;7057:17;7044:31;7102:18;7094:6;7091:30;7088:117;;;7124:79;;:::i;:::-;7088:117;7237:80;7309:7;7300:6;7289:9;7285:22;7237:80;:::i;:::-;7219:98;;;;7015:312;7366:2;7392:50;7434:7;7425:6;7414:9;7410:22;7392:50;:::i;:::-;7382:60;;7337:115;6761:698;;;;;:::o;7465:329::-;7524:6;7573:2;7561:9;7552:7;7548:23;7544:32;7541:119;;;7579:79;;:::i;:::-;7541:119;7699:1;7724:53;7769:7;7760:6;7749:9;7745:22;7724:53;:::i;:::-;7714:63;;7670:117;7465:329;;;;:::o;7800:619::-;7877:6;7885;7893;7942:2;7930:9;7921:7;7917:23;7913:32;7910:119;;;7948:79;;:::i;:::-;7910:119;8068:1;8093:53;8138:7;8129:6;8118:9;8114:22;8093:53;:::i;:::-;8083:63;;8039:117;8195:2;8221:53;8266:7;8257:6;8246:9;8242:22;8221:53;:::i;:::-;8211:63;;8166:118;8323:2;8349:53;8394:7;8385:6;8374:9;8370:22;8349:53;:::i;:::-;8339:63;;8294:118;7800:619;;;;;:::o;8425:474::-;8493:6;8501;8550:2;8538:9;8529:7;8525:23;8521:32;8518:119;;;8556:79;;:::i;:::-;8518:119;8676:1;8701:53;8746:7;8737:6;8726:9;8722:22;8701:53;:::i;:::-;8691:63;;8647:117;8803:2;8829:53;8874:7;8865:6;8854:9;8850:22;8829:53;:::i;:::-;8819:63;;8774:118;8425:474;;;;;:::o;8905:60::-;8933:3;8954:5;8947:12;;8905:60;;;:::o;8971:142::-;9021:9;9054:53;9072:34;9081:24;9099:5;9081:24;:::i;:::-;9072:34;:::i;:::-;9054:53;:::i;:::-;9041:66;;8971:142;;;:::o;9119:126::-;9169:9;9202:37;9233:5;9202:37;:::i;:::-;9189:50;;9119:126;;;:::o;9251:144::-;9319:9;9352:37;9383:5;9352:37;:::i;:::-;9339:50;;9251:144;;;:::o;9401:167::-;9506:55;9555:5;9506:55;:::i;:::-;9501:3;9494:68;9401:167;;:::o;9574:258::-;9685:4;9723:2;9712:9;9708:18;9700:26;;9736:89;9822:1;9811:9;9807:17;9798:6;9736:89;:::i;:::-;9574:258;;;;:::o;9838:323::-;9894:6;9943:2;9931:9;9922:7;9918:23;9914:32;9911:119;;;9949:79;;:::i;:::-;9911:119;10069:1;10094:50;10136:7;10127:6;10116:9;10112:22;10094:50;:::i;:::-;10084:60;;10040:114;9838:323;;;;:::o;10167:180::-;10215:77;10212:1;10205:88;10312:4;10309:1;10302:15;10336:4;10333:1;10326:15;10353:320;10397:6;10434:1;10428:4;10424:12;10414:22;;10481:1;10475:4;10471:12;10502:18;10492:81;;10558:4;10550:6;10546:17;10536:27;;10492:81;10620:2;10612:6;10609:14;10589:18;10586:38;10583:84;;10639:18;;:::i;:::-;10583:84;10404:269;10353:320;;;:::o;10679:152::-;10819:4;10815:1;10807:6;10803:14;10796:28;10679:152;:::o;10837:365::-;10979:3;11000:66;11064:1;11059:3;11000:66;:::i;:::-;10993:73;;11075:93;11164:3;11075:93;:::i;:::-;11193:2;11188:3;11184:12;11177:19;;10837:365;;;:::o;11208:419::-;11374:4;11412:2;11401:9;11397:18;11389:26;;11461:9;11455:4;11451:20;11447:1;11436:9;11432:17;11425:47;11489:131;11615:4;11489:131;:::i;:::-;11481:139;;11208:419;;;:::o;11633:169::-;11773:21;11769:1;11761:6;11757:14;11750:45;11633:169;:::o;11808:366::-;11950:3;11971:67;12035:2;12030:3;11971:67;:::i;:::-;11964:74;;12047:93;12136:3;12047:93;:::i;:::-;12165:2;12160:3;12156:12;12149:19;;11808:366;;;:::o;12180:419::-;12346:4;12384:2;12373:9;12369:18;12361:26;;12433:9;12427:4;12423:20;12419:1;12408:9;12404:17;12397:47;12461:131;12587:4;12461:131;:::i;:::-;12453:139;;12180:419;;;:::o;12605:172::-;12745:24;12741:1;12733:6;12729:14;12722:48;12605:172;:::o;12783:366::-;12925:3;12946:67;13010:2;13005:3;12946:67;:::i;:::-;12939:74;;13022:93;13111:3;13022:93;:::i;:::-;13140:2;13135:3;13131:12;13124:19;;12783:366;;;:::o;13155:419::-;13321:4;13359:2;13348:9;13344:18;13336:26;;13408:9;13402:4;13398:20;13394:1;13383:9;13379:17;13372:47;13436:131;13562:4;13436:131;:::i;:::-;13428:139;;13155:419;;;:::o;13580:180::-;13628:77;13625:1;13618:88;13725:4;13722:1;13715:15;13749:4;13746:1;13739:15;13766:194;13806:4;13826:20;13844:1;13826:20;:::i;:::-;13821:25;;13860:20;13878:1;13860:20;:::i;:::-;13855:25;;13904:1;13901;13897:9;13889:17;;13928:1;13922:4;13919:11;13916:37;;;13933:18;;:::i;:::-;13916:37;13766:194;;;;:::o;13966:180::-;14014:77;14011:1;14004:88;14111:4;14108:1;14101:15;14135:4;14132:1;14125:15;14152:233;14191:3;14214:24;14232:5;14214:24;:::i;:::-;14205:33;;14260:66;14253:5;14250:77;14247:103;;14330:18;;:::i;:::-;14247:103;14377:1;14370:5;14366:13;14359:20;;14152:233;;;:::o;14391:155::-;14531:7;14527:1;14519:6;14515:14;14508:31;14391:155;:::o;14552:365::-;14694:3;14715:66;14779:1;14774:3;14715:66;:::i;:::-;14708:73;;14790:93;14879:3;14790:93;:::i;:::-;14908:2;14903:3;14899:12;14892:19;;14552:365;;;:::o;14923:419::-;15089:4;15127:2;15116:9;15112:18;15104:26;;15176:9;15170:4;15166:20;15162:1;15151:9;15147:17;15140:47;15204:131;15330:4;15204:131;:::i;:::-;15196:139;;14923:419;;;:::o;15348:191::-;15388:3;15407:20;15425:1;15407:20;:::i;:::-;15402:25;;15441:20;15459:1;15441:20;:::i;:::-;15436:25;;15484:1;15481;15477:9;15470:16;;15505:3;15502:1;15499:10;15496:36;;;15512:18;;:::i;:::-;15496:36;15348:191;;;;:::o;15545:114::-;15582:7;15622:30;15615:5;15611:42;15600:53;;15545:114;;;:::o;15665:122::-;15738:24;15756:5;15738:24;:::i;:::-;15731:5;15728:35;15718:63;;15777:1;15774;15767:12;15718:63;15665:122;:::o;15793:143::-;15850:5;15881:6;15875:13;15866:22;;15897:33;15924:5;15897:33;:::i;:::-;15793:143;;;;:::o;15942:93::-;15978:7;16018:10;16011:5;16007:22;15996:33;;15942:93;;;:::o;16041:120::-;16113:23;16130:5;16113:23;:::i;:::-;16106:5;16103:34;16093:62;;16151:1;16148;16141:12;16093:62;16041:120;:::o;16167:141::-;16223:5;16254:6;16248:13;16239:22;;16270:32;16296:5;16270:32;:::i;:::-;16167:141;;;;:::o;16314:661::-;16401:6;16409;16417;16466:2;16454:9;16445:7;16441:23;16437:32;16434:119;;;16472:79;;:::i;:::-;16434:119;16592:1;16617:64;16673:7;16664:6;16653:9;16649:22;16617:64;:::i;:::-;16607:74;;16563:128;16730:2;16756:64;16812:7;16803:6;16792:9;16788:22;16756:64;:::i;:::-;16746:74;;16701:129;16869:2;16895:63;16950:7;16941:6;16930:9;16926:22;16895:63;:::i;:::-;16885:73;;16840:128;16314:661;;;;;:::o;16981:143::-;17038:5;17069:6;17063:13;17054:22;;17085:33;17112:5;17085:33;:::i;:::-;16981:143;;;;:::o;17130:351::-;17200:6;17249:2;17237:9;17228:7;17224:23;17220:32;17217:119;;;17255:79;;:::i;:::-;17217:119;17375:1;17400:64;17456:7;17447:6;17436:9;17432:22;17400:64;:::i;:::-;17390:74;;17346:128;17130:351;;;;:::o;17487:164::-;17627:16;17623:1;17615:6;17611:14;17604:40;17487:164;:::o;17657:366::-;17799:3;17820:67;17884:2;17879:3;17820:67;:::i;:::-;17813:74;;17896:93;17985:3;17896:93;:::i;:::-;18014:2;18009:3;18005:12;17998:19;;17657:366;;;:::o;18029:419::-;18195:4;18233:2;18222:9;18218:18;18210:26;;18282:9;18276:4;18272:20;18268:1;18257:9;18253:17;18246:47;18310:131;18436:4;18310:131;:::i;:::-;18302:139;;18029:419;;;:::o;18454:164::-;18594:16;18590:1;18582:6;18578:14;18571:40;18454:164;:::o;18624:366::-;18766:3;18787:67;18851:2;18846:3;18787:67;:::i;:::-;18780:74;;18863:93;18952:3;18863:93;:::i;:::-;18981:2;18976:3;18972:12;18965:19;;18624:366;;;:::o;18996:419::-;19162:4;19200:2;19189:9;19185:18;19177:26;;19249:9;19243:4;19239:20;19235:1;19224:9;19220:17;19213:47;19277:131;19403:4;19277:131;:::i;:::-;19269:139;;18996:419;;;:::o;19421:170::-;19561:22;19557:1;19549:6;19545:14;19538:46;19421:170;:::o;19597:366::-;19739:3;19760:67;19824:2;19819:3;19760:67;:::i;:::-;19753:74;;19836:93;19925:3;19836:93;:::i;:::-;19954:2;19949:3;19945:12;19938:19;;19597:366;;;:::o;19969:419::-;20135:4;20173:2;20162:9;20158:18;20150:26;;20222:9;20216:4;20212:20;20208:1;20197:9;20193:17;20186:47;20250:131;20376:4;20250:131;:::i;:::-;20242:139;;19969:419;;;:::o;20394:162::-;20534:14;20530:1;20522:6;20518:14;20511:38;20394:162;:::o;20562:366::-;20704:3;20725:67;20789:2;20784:3;20725:67;:::i;:::-;20718:74;;20801:93;20890:3;20801:93;:::i;:::-;20919:2;20914:3;20910:12;20903:19;;20562:366;;;:::o;20934:419::-;21100:4;21138:2;21127:9;21123:18;21115:26;;21187:9;21181:4;21177:20;21173:1;21162:9;21158:17;21151:47;21215:131;21341:4;21215:131;:::i;:::-;21207:139;;20934:419;;;:::o;21359:176::-;21499:28;21495:1;21487:6;21483:14;21476:52;21359:176;:::o;21541:366::-;21683:3;21704:67;21768:2;21763:3;21704:67;:::i;:::-;21697:74;;21780:93;21869:3;21780:93;:::i;:::-;21898:2;21893:3;21889:12;21882:19;;21541:366;;;:::o;21913:419::-;22079:4;22117:2;22106:9;22102:18;22094:26;;22166:9;22160:4;22156:20;22152:1;22141:9;22137:17;22130:47;22194:131;22320:4;22194:131;:::i;:::-;22186:139;;21913:419;;;:::o;22338:332::-;22459:4;22497:2;22486:9;22482:18;22474:26;;22510:71;22578:1;22567:9;22563:17;22554:6;22510:71;:::i;:::-;22591:72;22659:2;22648:9;22644:18;22635:6;22591:72;:::i;:::-;22338:332;;;;;:::o;22676:410::-;22716:7;22739:20;22757:1;22739:20;:::i;:::-;22734:25;;22773:20;22791:1;22773:20;:::i;:::-;22768:25;;22828:1;22825;22821:9;22850:30;22868:11;22850:30;:::i;:::-;22839:41;;23029:1;23020:7;23016:15;23013:1;23010:22;22990:1;22983:9;22963:83;22940:139;;23059:18;;:::i;:::-;22940:139;22724:362;22676:410;;;;:::o;23092:180::-;23140:77;23137:1;23130:88;23237:4;23234:1;23227:15;23261:4;23258:1;23251:15;23278:185;23318:1;23335:20;23353:1;23335:20;:::i;:::-;23330:25;;23369:20;23387:1;23369:20;:::i;:::-;23364:25;;23408:1;23398:35;;23413:18;;:::i;:::-;23398:35;23455:1;23452;23448:9;23443:14;;23278:185;;;;:::o;23469:163::-;23609:15;23605:1;23597:6;23593:14;23586:39;23469:163;:::o;23638:366::-;23780:3;23801:67;23865:2;23860:3;23801:67;:::i;:::-;23794:74;;23877:93;23966:3;23877:93;:::i;:::-;23995:2;23990:3;23986:12;23979:19;;23638:366;;;:::o;24010:419::-;24176:4;24214:2;24203:9;24199:18;24191:26;;24263:9;24257:4;24253:20;24249:1;24238:9;24234:17;24227:47;24291:131;24417:4;24291:131;:::i;:::-;24283:139;;24010:419;;;:::o;24435:152::-;24575:4;24571:1;24563:6;24559:14;24552:28;24435:152;:::o;24593:365::-;24735:3;24756:66;24820:1;24815:3;24756:66;:::i;:::-;24749:73;;24831:93;24920:3;24831:93;:::i;:::-;24949:2;24944:3;24940:12;24933:19;;24593:365;;;:::o;24964:419::-;25130:4;25168:2;25157:9;25153:18;25145:26;;25217:9;25211:4;25207:20;25203:1;25192:9;25188:17;25181:47;25245:131;25371:4;25245:131;:::i;:::-;25237:139;;24964:419;;;:::o;25389:156::-;25529:8;25525:1;25517:6;25513:14;25506:32;25389:156;:::o;25551:365::-;25693:3;25714:66;25778:1;25773:3;25714:66;:::i;:::-;25707:73;;25789:93;25878:3;25789:93;:::i;:::-;25907:2;25902:3;25898:12;25891:19;;25551:365;;;:::o;25922:419::-;26088:4;26126:2;26115:9;26111:18;26103:26;;26175:9;26169:4;26165:20;26161:1;26150:9;26146:17;26139:47;26203:131;26329:4;26203:131;:::i;:::-;26195:139;;25922:419;;;:::o;26347:157::-;26487:9;26483:1;26475:6;26471:14;26464:33;26347:157;:::o;26510:365::-;26652:3;26673:66;26737:1;26732:3;26673:66;:::i;:::-;26666:73;;26748:93;26837:3;26748:93;:::i;:::-;26866:2;26861:3;26857:12;26850:19;;26510:365;;;:::o;26881:419::-;27047:4;27085:2;27074:9;27070:18;27062:26;;27134:9;27128:4;27124:20;27120:1;27109:9;27105:17;27098:47;27162:131;27288:4;27162:131;:::i;:::-;27154:139;;26881:419;;;:::o;27306:332::-;27427:4;27465:2;27454:9;27450:18;27442:26;;27478:71;27546:1;27535:9;27531:17;27522:6;27478:71;:::i;:::-;27559:72;27627:2;27616:9;27612:18;27603:6;27559:72;:::i;:::-;27306:332;;;;;:::o;27644:143::-;27701:5;27732:6;27726:13;27717:22;;27748:33;27775:5;27748:33;:::i;:::-;27644:143;;;;:::o;27793:351::-;27863:6;27912:2;27900:9;27891:7;27887:23;27883:32;27880:119;;;27918:79;;:::i;:::-;27880:119;28038:1;28063:64;28119:7;28110:6;28099:9;28095:22;28063:64;:::i;:::-;28053:74;;28009:128;27793:351;;;;:::o;28150:180::-;28198:77;28195:1;28188:88;28295:4;28292:1;28285:15;28319:4;28316:1;28309:15;28336:85;28381:7;28410:5;28399:16;;28336:85;;;:::o;28427:158::-;28485:9;28518:61;28536:42;28545:32;28571:5;28545:32;:::i;:::-;28536:42;:::i;:::-;28518:61;:::i;:::-;28505:74;;28427:158;;;:::o;28591:147::-;28686:45;28725:5;28686:45;:::i;:::-;28681:3;28674:58;28591:147;;:::o;28744:114::-;28811:6;28845:5;28839:12;28829:22;;28744:114;;;:::o;28864:184::-;28963:11;28997:6;28992:3;28985:19;29037:4;29032:3;29028:14;29013:29;;28864:184;;;;:::o;29054:132::-;29121:4;29144:3;29136:11;;29174:4;29169:3;29165:14;29157:22;;29054:132;;;:::o;29192:108::-;29269:24;29287:5;29269:24;:::i;:::-;29264:3;29257:37;29192:108;;:::o;29306:179::-;29375:10;29396:46;29438:3;29430:6;29396:46;:::i;:::-;29474:4;29469:3;29465:14;29451:28;;29306:179;;;;:::o;29491:113::-;29561:4;29593;29588:3;29584:14;29576:22;;29491:113;;;:::o;29640:732::-;29759:3;29788:54;29836:5;29788:54;:::i;:::-;29858:86;29937:6;29932:3;29858:86;:::i;:::-;29851:93;;29968:56;30018:5;29968:56;:::i;:::-;30047:7;30078:1;30063:284;30088:6;30085:1;30082:13;30063:284;;;30164:6;30158:13;30191:63;30250:3;30235:13;30191:63;:::i;:::-;30184:70;;30277:60;30330:6;30277:60;:::i;:::-;30267:70;;30123:224;30110:1;30107;30103:9;30098:14;;30063:284;;;30067:14;30363:3;30356:10;;29764:608;;;29640:732;;;;:::o;30378:831::-;30641:4;30679:3;30668:9;30664:19;30656:27;;30693:71;30761:1;30750:9;30746:17;30737:6;30693:71;:::i;:::-;30774:80;30850:2;30839:9;30835:18;30826:6;30774:80;:::i;:::-;30901:9;30895:4;30891:20;30886:2;30875:9;30871:18;30864:48;30929:108;31032:4;31023:6;30929:108;:::i;:::-;30921:116;;31047:72;31115:2;31104:9;31100:18;31091:6;31047:72;:::i;:::-;31129:73;31197:3;31186:9;31182:19;31173:6;31129:73;:::i;:::-;30378:831;;;;;;;;:::o

Swarm Source

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