ETH Price: $2,389.18 (+2.03%)

Token

BOOLISH (BULL)
 

Overview

Max Total Supply

1,000,000,000 BULL

Holders

80

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
6,880,884.672289664 BULL

Value
$0.00
0x33a45a5c2eb77346fb4185f4dca583b368ac7e35
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
BOOLISH

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-11-11
*/

/* tg : https://t.me/BoolishERC20
 __                            __  __            __       
/  |                          /  |/  |          /  |      
$$ |____    ______    ______  $$ |$$/   _______ $$ |____  
$$      \  /      \  /      \ $$ |/  | /       |$$      \ 
$$$$$$$  |/$$$$$$  |/$$$$$$  |$$ |$$ |/$$$$$$$/ $$$$$$$  |
$$ |  $$ |$$ |  $$ |$$ |  $$ |$$ |$$ |$$      \ $$ |  $$ |
$$ |__$$ |$$ \__$$ |$$ \__$$ |$$ |$$ | $$$$$$  |$$ |  $$ |
$$    $$/ $$    $$/ $$    $$/ $$ |$$ |/     $$/ $$ |  $$ |
$$$$$$$/   $$$$$$/   $$$$$$/  $$/ $$/ $$$$$$$/  $$/   $$/ 
 
*/
// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.7;

library Address {
   
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
abstract contract Context {
    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view returns (bytes memory) {
        this;
        return msg.data;
    }
}

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

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

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

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract BOOLISH is IERC20, Ownable {
    using Address for address;
    
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "BOOLISH";
    string constant _symbol = "BULL";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1_000_000_000 * (10 ** _decimals);
    uint256 _maxBuyTxAmount = (_totalSupply * 1) / 2000;
    uint256 _maxSellTxAmount = (_totalSupply * 1) / 500;
    uint256 _maxWalletSize = (_totalSupply * 2) / 100;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => uint256) public lastSell;
    mapping (address => uint256) public lastBuy;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) liquidityCreator;

    uint256 marketingFee = 600;
    uint256 liquidityFee = 400;
    uint256 totalFee = marketingFee + liquidityFee;
    uint256 sellBias = 0;
    uint256 feeDenominator = 10000;

    address payable public liquidityFeeReceiver = payable(0xfDb747bbd451Db461D51AFCd4B5D7a72bf9AE15B);
    address payable public marketingFeeReceiver = payable(0xfDb747bbd451Db461D51AFCd4B5D7a72bf9AE15B);

    IDEXRouter public router;
    address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    mapping (address => bool) liquidityPools;
    mapping (address => uint256) public protected;
    bool protectionEnabled = true;
    bool protectionDisabled = false;
    uint256 protectionLimit;
    uint256 public protectionCount;
    uint256 protectionTimer;

    address public pair;

    uint256 public launchedAt;
    uint256 public launchedTime;
    uint256 public deadBlocks;
    bool startBullRun = false;
    bool pauseDisabled = false;
    uint256 public rateLimit = 2;

    bool public swapEnabled = false;
    bool processEnabled = true;
    uint256 public swapThreshold = _totalSupply / 1000;
    uint256 public swapMinimum = _totalSupply / 10000;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    mapping (address => bool) teamMember;
    
    modifier onlyTeam() {
        require(teamMember[_msgSender()] || msg.sender == owner(), "Caller is not a team member");
        _;
    }
    
    event ProtectedWallet(address, address, uint256, uint8);

    constructor () {
        router = IDEXRouter(routerAddress);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        liquidityPools[pair] = true;
        _allowances[owner()][routerAddress] = type(uint256).max;
        _allowances[address(this)][routerAddress] = type(uint256).max;

        isFeeExempt[owner()] = true;
        liquidityCreator[owner()] = true;

        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[routerAddress] = true;
        isTxLimitExempt[DEAD] = true;

        _balances[owner()] = _totalSupply;

        emit Transfer(address(0), owner(), _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure returns (uint8) { return _decimals; }
    function symbol() external pure returns (string memory) { return _symbol; }
    function name() external pure returns (string memory) { return _name; }
    function getOwner() external view returns (address) { return owner(); }
    function maxBuyTxTokens() external view returns (uint256) { return _maxBuyTxAmount / (10 ** _decimals); }
    function maxSellTxTokens() external view returns (uint256) { return _maxSellTxAmount / (10 ** _decimals); }
    function maxWalletTokens() external view returns (uint256) { return _maxWalletSize / (10 ** _decimals); }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }
    
    function setTeamMember(address _team, bool _enabled) external onlyOwner {
        teamMember[_team] = _enabled;
    }
    
    function airdrop(address[] calldata addresses, uint256[] calldata amounts) external onlyOwner {
        require(addresses.length > 0 && amounts.length == addresses.length);
        address from = msg.sender;

        for (uint i = 0; i < addresses.length; i++) {
            if(!liquidityPools[addresses[i]] && !liquidityCreator[addresses[i]]) {
                _basicTransfer(from, addresses[i], amounts[i] * (10 ** _decimals));
            }
        }
    }
    
    function clearStuckBalance(uint256 amountPercentage, address adr) external onlyTeam {
        uint256 amountETH = address(this).balance;
        payable(adr).transfer((amountETH * amountPercentage) / 100);
    }
    
    function openTrading(uint256 _deadBlocks, uint256 _protection, uint256 _limit) external onlyTeam {
        require(!startBullRun && _deadBlocks < 10);
        deadBlocks = _deadBlocks;
        startBullRun = true;
        launchedAt = block.number;
        protectionTimer = block.timestamp + _protection;
        protectionLimit = _limit * (10 ** _decimals);
    }
    
    function pauseTrading() external onlyTeam {
        require(!pauseDisabled);
        startBullRun = false;
    }
    
    function disablePause() external onlyTeam {
        pauseDisabled = true;
        startBullRun = true;
    }
    
    function setProtection(bool _protect, uint256 _addTime) external onlyTeam {
        require(!protectionDisabled);
        protectionEnabled = _protect;
        require(_addTime < 1 days);
        protectionTimer += _addTime;
    }
    
    function disableProtection() external onlyTeam {
        protectionDisabled = true;
        protectionEnabled = false;
    }
    
    function protectWallet(address[] calldata _wallets, bool _protect) external onlyTeam {
        if (_protect) {
            require(protectionEnabled);
        }
        
        for (uint i = 0; i < _wallets.length; i++) {
            
            if (_protect) {
                protectionCount++;
                emit ProtectedWallet(tx.origin, _wallets[i], block.number, 2);
            }
            else {
                if (protected[_wallets[i]] != 0)
                    protectionCount--;      
            }
            protected[_wallets[i]] = _protect ? block.number : 0;
        }
    }

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

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

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(sender != address(0), "BEP20: transfer from 0x0");
        require(recipient != address(0), "BEP20: transfer to 0x0");
        require(amount > 0, "Amount must be > zero");
        require(_balances[sender] >= amount, "Insufficient balance");
        if(!launched() && liquidityPools[recipient]){ require(liquidityCreator[sender], "Liquidity not added yet."); launch(); }
        if(!startBullRun){ require(liquidityCreator[sender] || liquidityCreator[recipient], "Trading not open yet."); }

        checkTxLimit(sender, recipient, amount);
        
        if (!liquidityPools[recipient] && recipient != DEAD) {
            if (!isTxLimitExempt[recipient]) {
                checkWalletLimit(recipient, amount);
            }
        }
        
        if(protectionEnabled && protectionTimer > block.timestamp) {
            if(liquidityPools[sender] && tx.origin != recipient && protected[recipient] == 0) {
                protected[recipient] = block.number;
                protectionCount++;
                emit ProtectedWallet(tx.origin, recipient, block.number, 0);
            }
        }
        
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        _balances[sender] = _balances[sender] - amount;

        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(recipient, amount) : amount;
        
        if(shouldSwapBack(recipient)){ if (amount > 0) swapBack(amount); }
        
        _balances[recipient] = _balances[recipient] + amountReceived;

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
        launchedTime = block.timestamp;
        swapEnabled = true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender] - amount;
        _balances[recipient] = _balances[recipient] + amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    function checkWalletLimit(address recipient, uint256 amount) internal view {
        uint256 walletLimit = _maxWalletSize;
        require(_balances[recipient] + amount <= walletLimit, "Transfer amount exceeds the bag size.");
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal {
        require(isTxLimitExempt[sender] || amount <= (liquidityPools[sender] ? _maxBuyTxAmount : _maxSellTxAmount), "TX Limit Exceeded");
        require(isTxLimitExempt[sender] || lastBuy[recipient] + rateLimit <= block.number, "Transfer rate limit exceeded.");
        
        if (protected[sender] != 0){
            require(amount <= protectionLimit * (10 ** _decimals) && lastSell[sender] == 0 && protectionTimer > block.timestamp, "Wallet protected, please contact support.");
            lastSell[sender] = block.number;
        }
        
        if (liquidityPools[recipient]) {
            lastSell[sender] = block.number;
        } else if (shouldTakeFee(sender)) {
            if (protectionEnabled && protectionTimer > block.timestamp && lastBuy[tx.origin] == block.number && protected[recipient] == 0) {
                protected[recipient] = block.number;
                emit ProtectedWallet(tx.origin, recipient, block.number, 1);
            }
            lastBuy[recipient] = block.number;
            if (tx.origin != recipient)
                lastBuy[tx.origin] = block.number;
        }
    }

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

    function getTotalFee(bool selling) public view returns (uint256) {
        if(launchedAt + deadBlocks >= block.number){ return feeDenominator - 1; }
        if (selling) return totalFee + sellBias;
        return totalFee - sellBias;
    }

    function takeFee(address recipient, uint256 amount) internal returns (uint256) {
        bool selling = liquidityPools[recipient];
        uint256 feeAmount = (amount * getTotalFee(selling)) / feeDenominator;
        
        _balances[address(this)] += feeAmount;
    
        return amount - feeAmount;
    }

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

    function swapBack(uint256 amount) internal swapping {
        uint256 amountToSwap = amount < swapThreshold ? amount : swapThreshold;
        if (_balances[address(this)] < amountToSwap) amountToSwap = _balances[address(this)];
        
        uint256 amountToLiquify = (amountToSwap * liquidityFee / 2) / totalFee;
        amountToSwap -= amountToLiquify;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        
        uint256 balanceBefore = address(this).balance;

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

        uint256 amountBNB = address(this).balance - balanceBefore;
        uint256 totalBNBFee = totalFee - (liquidityFee / 2);

        uint256 amountBNBLiquidity = (amountBNB * liquidityFee / 2) / totalBNBFee;
        uint256 amountBNBMarketing = amountBNB - amountBNBLiquidity;
        
        if (amountBNBMarketing > 0)
            marketingFeeReceiver.transfer(amountBNBMarketing);
        
        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                liquidityFeeReceiver,
                block.timestamp
            );
        }

        emit FundsDistributed(amountBNBMarketing, amountBNBLiquidity, amountToLiquify);
    }
    
    function addLiquidityPool(address lp, bool isPool) external onlyOwner {
        require(lp != pair, "Can't alter current liquidity pair");
        liquidityPools[lp] = isPool;
    }

    function setRateLimit(uint256 rate) external onlyOwner {
        require(rate <= 60 seconds);
        rateLimit = rate;
    }

    function setTxLimit(uint256 buyNumerator, uint256 sellNumerator, uint256 divisor) external onlyOwner {
        require(buyNumerator > 0 && sellNumerator > 0 && divisor > 0 && divisor <= 10000);
        _maxBuyTxAmount = (_totalSupply * buyNumerator) / divisor;
        _maxSellTxAmount = (_totalSupply * sellNumerator) / divisor;
    }
    
    function setMaxWallet(uint256 numerator, uint256 divisor) external onlyOwner() {
        require(numerator > 0 && divisor > 0 && divisor <= 10000);
        _maxWalletSize = (_totalSupply * numerator) / divisor;
    }

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

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

    function setFees(uint256 _liquidityFee, uint256 _marketingFee, uint256 _sellBias, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        totalFee = _marketingFee + _liquidityFee;
        sellBias = _sellBias;
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator / 2);
    }

    function setFeeReceivers(address _liquidityFeeReceiver, address _marketingFeeReceiver) external onlyOwner {
        liquidityFeeReceiver = payable(_liquidityFeeReceiver);
        marketingFeeReceiver = payable(_marketingFeeReceiver);
    }

    function setSwapBackSettings(bool _enabled, bool _processEnabled, uint256 _denominator, uint256 _swapMinimum) external onlyOwner {
        require(_denominator > 0);
        swapEnabled = _enabled;
        processEnabled = _processEnabled;
        swapThreshold = _totalSupply / _denominator;
        swapMinimum = _swapMinimum * (10 ** _decimals);
    }

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

    event FundsDistributed(uint256 marketingBNB, uint256 liquidityBNB, uint256 liquidityTokens);
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketingBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityTokens","type":"uint256"}],"name":"FundsDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"","type":"uint8"}],"name":"ProtectedWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"lp","type":"address"},{"internalType":"bool","name":"isPool","type":"bool"}],"name":"addLiquidityPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"},{"internalType":"address","name":"adr","type":"address"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"disablePause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadBlocks","type":"uint256"},{"internalType":"uint256","name":"_protection","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pauseTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_wallets","type":"address[]"},{"internalType":"bool","name":"_protect","type":"bool"}],"name":"protectWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"protected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protectionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rateLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_liquidityFeeReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_sellBias","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_protect","type":"bool"},{"internalType":"uint256","name":"_addTime","type":"uint256"}],"name":"setProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setRateLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"bool","name":"_processEnabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"},{"internalType":"uint256","name":"_swapMinimum","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_team","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setTeamMember","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyNumerator","type":"uint256"},{"internalType":"uint256","name":"sellNumerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMinimum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000099919062000d85565b633b9aca00620000aa919062000ec2565b6003556107d06001600354620000c1919062000ec2565b620000cd919062000cf2565b6004556101f46001600354620000e4919062000ec2565b620000f0919062000cf2565b6005556064600260035462000106919062000ec2565b62000112919062000cf2565b600655610258600e55610190600f55600f54600e5462000133919062000c95565b601055600060115561271060125573fdb747bbd451db461d51afcd4b5d7a72bf9ae15b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073fdb747bbd451db461d51afcd4b5d7a72bf9ae15b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601960006101000a81548160ff0219169083151502179055506000601960016101000a81548160ff0219169083151502179055506000602160006101000a81548160ff0219169083151502179055506000602160016101000a81548160ff02191690831515021790555060026022556000602360006101000a81548160ff0219169083151502179055506001602360016101000a81548160ff0219169083151502179055506103e8600354620002f9919062000cf2565b6024556127106003546200030e919062000cf2565b6025553480156200031e57600080fd5b5060006200033162000baf60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200049b57600080fd5b505afa158015620004b0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d6919062000bf7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200055a57600080fd5b505afa1580156200056f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000595919062000bf7565b306040518363ffffffff1660e01b8152600401620005b592919062000c4b565b602060405180830381600087803b158015620005d057600080fd5b505af1158015620005e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200060b919062000bf7565b601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160176000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60086000620006fa62000bb760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600b60006200087062000bb760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000620008d762000bb760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60006200099662000bb760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506003546007600062000af262000bb760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000b4062000bb760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035460405162000ba1919062000c78565b60405180910390a362000ff8565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008151905062000bf18162000fde565b92915050565b60006020828403121562000c105762000c0f62000fcc565b5b600062000c208482850162000be0565b91505092915050565b62000c348162000f23565b82525050565b62000c458162000f57565b82525050565b600060408201905062000c62600083018562000c29565b62000c71602083018462000c29565b9392505050565b600060208201905062000c8f600083018462000c3a565b92915050565b600062000ca28262000f57565b915062000caf8362000f57565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000ce75762000ce662000f6e565b5b828201905092915050565b600062000cff8262000f57565b915062000d0c8362000f57565b92508262000d1f5762000d1e62000f9d565b5b828204905092915050565b6000808291508390505b600185111562000d7c5780860481111562000d545762000d5362000f6e565b5b600185161562000d645780820291505b808102905062000d748562000fd1565b945062000d34565b94509492505050565b600062000d928262000f57565b915062000d9f8362000f61565b925062000dce7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000dd6565b905092915050565b60008262000de8576001905062000ebb565b8162000df8576000905062000ebb565b816001811462000e11576002811462000e1c5762000e52565b600191505062000ebb565b60ff84111562000e315762000e3062000f6e565b5b8360020a91508482111562000e4b5762000e4a62000f6e565b5b5062000ebb565b5060208310610133831016604e8410600b841016171562000e8c5782820a90508381111562000e865762000e8562000f6e565b5b62000ebb565b62000e9b848484600162000d2a565b9250905081840481111562000eb55762000eb462000f6e565b5b81810290505b9392505050565b600062000ecf8262000f57565b915062000edc8362000f57565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000f185762000f1762000f6e565b5b828202905092915050565b600062000f308262000f37565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b60008160011c9050919050565b62000fe98162000f23565b811462000ff557600080fd5b50565b6159f480620010086000396000f3fe6080604052600436106103035760003560e01c80636f4ce42811610190578063bf56b371116100dc578063e96fada211610095578063f84ba65d1161006f578063f84ba65d14610b65578063f8821a6214610b8e578063f887ea4014610bb9578063fabb0b4f14610be45761030a565b8063e96fada214610ad4578063f1f3bca314610aff578063f2fde38b14610b3c5761030a565b8063bf56b371146109b2578063bfa21d6a146109dd578063c1adf7bc14610a08578063c287184e14610a45578063d686014214610a6e578063dd62ed3e14610a975761030a565b806395d89b4111610149578063a8aa1b3111610123578063a8aa1b31146108f6578063a9059cbb14610921578063abe57e701461095e578063bafe446b146109875761030a565b806395d89b41146108775780639b02c402146108a2578063a4b45c00146108cd5761030a565b80636f4ce428146107675780636fcba377146107a457806370a08231146107cd578063715018a61461080a578063893d20e8146108215780638da5cb5b1461084c5761030a565b8063492a937b1161024f578063584f969a1161020857806363a803e1116101e257806363a803e1146106bf578063658d4b7f146106ea57806367243482146107135780636ddd17131461073c5761030a565b8063584f969a1461065457806360bba03d1461066b57806361e08e72146106945761030a565b8063492a937b14610548578063507139351461057157806354a1dfc91461059a57806356a227f2146105c3578063571ac8b0146105ec5780635804f1e4146106295761030a565b8063234e9494116102bc578063313ce56711610296578063313ce567146104a057806334848b9a146104cb578063421dd7c7146104f457806346d7edaa1461050b5761030a565b8063234e94941461040d57806323b872dd146104385780632b112e49146104755761030a565b80630445b6671461030f57806306fdde031461033a578063095db78f14610365578063095ea7b31461038e5780631031e36e146103cb57806318160ddd146103e25761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c0f565b6040516103319190615071565b60405180910390f35b34801561034657600080fd5b5061034f610c15565b60405161035c9190614e8f565b60405180910390f35b34801561037157600080fd5b5061038c600480360381019061038791906146b8565b610c52565b005b34801561039a57600080fd5b506103b560048036038101906103b091906145f7565b610ef1565b6040516103c29190614e59565b60405180910390f35b3480156103d757600080fd5b506103e0610fe3565b005b3480156103ee57600080fd5b506103f76110ea565b6040516104049190615071565b60405180910390f35b34801561041957600080fd5b506104226110f4565b60405161042f9190615071565b60405180910390f35b34801561044457600080fd5b5061045f600480360381019061045a9190614564565b611116565b60405161046c9190614e59565b60405180910390f35b34801561048157600080fd5b5061048a6112d8565b6040516104979190615071565b60405180910390f35b3480156104ac57600080fd5b506104b561134c565b6040516104c2919061511d565b60405180910390f35b3480156104d757600080fd5b506104f260048036038101906104ed9190614899565b611355565b005b34801561050057600080fd5b506105096114aa565b005b34801561051757600080fd5b50610532600480360381019061052d91906144ca565b6115b2565b60405161053f9190615071565b60405180910390f35b34801561055457600080fd5b5061056f600480360381019061056a91906145b7565b6115ca565b005b34801561057d57600080fd5b5061059860048036038101906105939190614899565b61174b565b005b3480156105a657600080fd5b506105c160048036038101906105bc9190614745565b611856565b005b3480156105cf57600080fd5b506105ea60048036038101906105e59190614819565b611965565b005b3480156105f857600080fd5b50610613600480360381019061060e91906144ca565b611a9d565b6040516106209190614e59565b60405180910390f35b34801561063557600080fd5b5061063e611ad0565b60405161064b9190615071565b60405180910390f35b34801561066057600080fd5b50610669611ad6565b005b34801561067757600080fd5b50610692600480360381019061068d91906145b7565b611bde565b005b3480156106a057600080fd5b506106a9611cce565b6040516106b69190615071565b60405180910390f35b3480156106cb57600080fd5b506106d4611cd4565b6040516106e19190615071565b60405180910390f35b3480156106f657600080fd5b50610711600480360381019061070c91906145b7565b611cf6565b005b34801561071f57600080fd5b5061073a60048036038101906107359190614637565b611de6565b005b34801561074857600080fd5b50610751612026565b60405161075e9190614e59565b60405180910390f35b34801561077357600080fd5b5061078e600480360381019061078991906144ca565b612039565b60405161079b9190615071565b60405180910390f35b3480156107b057600080fd5b506107cb60048036038101906107c6919061493f565b612051565b005b3480156107d957600080fd5b506107f460048036038101906107ef91906144ca565b612136565b6040516108019190615071565b60405180910390f35b34801561081657600080fd5b5061081f61217f565b005b34801561082d57600080fd5b506108366122d2565b6040516108439190614cf3565b60405180910390f35b34801561085857600080fd5b506108616122e1565b60405161086e9190614cf3565b60405180910390f35b34801561088357600080fd5b5061088c61230a565b6040516108999190614e8f565b60405180910390f35b3480156108ae57600080fd5b506108b7612347565b6040516108c49190615071565b60405180910390f35b3480156108d957600080fd5b506108f460048036038101906108ef9190614524565b61234d565b005b34801561090257600080fd5b5061090b612468565b6040516109189190614cf3565b60405180910390f35b34801561092d57600080fd5b50610948600480360381019061094391906145f7565b61248e565b6040516109559190614e59565b60405180910390f35b34801561096a57600080fd5b5061098560048036038101906109809190614859565b6124a3565b005b34801561099357600080fd5b5061099c612582565b6040516109a99190615071565b60405180910390f35b3480156109be57600080fd5b506109c76125a4565b6040516109d49190615071565b60405180910390f35b3480156109e957600080fd5b506109f26125aa565b6040516109ff9190614d0e565b60405180910390f35b348015610a1457600080fd5b50610a2f6004803603810190610a2a91906144ca565b6125d0565b604051610a3c9190615071565b60405180910390f35b348015610a5157600080fd5b50610a6c6004803603810190610a6791906147ec565b6125e8565b005b348015610a7a57600080fd5b50610a956004803603810190610a9091906147ac565b612695565b005b348015610aa357600080fd5b50610abe6004803603810190610ab99190614524565b6127c5565b604051610acb9190615071565b60405180910390f35b348015610ae057600080fd5b50610ae961284c565b604051610af69190614d0e565b60405180910390f35b348015610b0b57600080fd5b50610b266004803603810190610b219190614718565b612872565b604051610b339190615071565b60405180910390f35b348015610b4857600080fd5b50610b636004803603810190610b5e91906144ca565b6128d5565b005b348015610b7157600080fd5b50610b8c6004803603810190610b8791906145b7565b612a97565b005b348015610b9a57600080fd5b50610ba3612b87565b604051610bb09190615071565b60405180910390f35b348015610bc557600080fd5b50610bce612b8d565b604051610bdb9190614e74565b60405180910390f35b348015610bf057600080fd5b50610bf9612bb3565b604051610c069190615071565b60405180910390f35b60245481565b60606040518060400160405280600781526020017f424f4f4c49534800000000000000000000000000000000000000000000000000815250905090565b60276000610c5e612bb9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610ce35750610cb46122e1565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1990614f91565b60405180910390fd5b8015610d4257601960009054906101000a900460ff16610d4157600080fd5b5b60005b83839050811015610eeb578115610dd857601b6000815480929190610d6990615567565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea32858584818110610da357610da261560e565b5b9050602002016020810190610db891906144ca565b436002604051610dcb9493929190614db3565b60405180910390a1610e60565b600060186000868685818110610df157610df061560e565b5b9050602002016020810190610e0691906144ca565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e5f57601b6000815480929190610e599061553d565b91905055505b5b81610e6c576000610e6e565b435b60186000868685818110610e8557610e8461560e565b5b9050602002016020810190610e9a91906144ca565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080610ee390615567565b915050610d45565b50505050565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610fd19190615071565b60405180910390a36001905092915050565b60276000610fef612bb9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061107457506110456122e1565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6110b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110aa90614f91565b60405180910390fd5b602160019054906101000a900460ff16156110cd57600080fd5b6000602160006101000a81548160ff021916908315150217905550565b6000600354905090565b60006009600a6111049190615267565b60055461111191906151e3565b905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146112c45781600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461124391906153df565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6112cf848484612bc1565b90509392505050565b6000611305600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612136565b611330600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612136565b61133a919061518d565b60035461134791906153df565b905090565b60006009905090565b60276000611361612bb9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806113e657506113b76122e1565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141c90614f91565b60405180910390fd5b602160009054906101000a900460ff161580156114425750600a83105b61144b57600080fd5b826020819055506001602160006101000a81548160ff02191690831515021790555043601e819055508142611480919061518d565b601c819055506009600a6114949190615267565b8161149f9190615385565b601a81905550505050565b602760006114b6612bb9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061153b575061150c6122e1565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61157a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157190614f91565b60405180910390fd5b6001601960016101000a81548160ff0219169083151502179055506000601960006101000a81548160ff021916908315150217905550565b60186020528060005260406000206000915090505481565b6115d2612bb9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461165f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165690615011565b60405180910390fd5b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e790615051565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611753612bb9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d790615011565b60405180910390fd5b6000831180156117f05750600082115b80156117fc5750600081115b801561180a57506127108111155b61181357600080fd5b80836003546118229190615385565b61182c91906151e3565b60048190555080826003546118419190615385565b61184b91906151e3565b600581905550505050565b61185e612bb9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e290615011565b60405180910390fd5b600082116118f857600080fd5b83602360006101000a81548160ff02191690831515021790555082602360016101000a81548160ff0219169083151502179055508160035461193a91906151e3565b6024819055506009600a61194e9190615267565b816119599190615385565b60258190555050505050565b60276000611971612bb9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119f657506119c76122e1565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2c90614f91565b60405180910390fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc60648584611a629190615385565b611a6c91906151e3565b9081150290604051600060405180830381858888f19350505050158015611a97573d6000803e3d6000fd5b50505050565b6000611ac9827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610ef1565b9050919050565b601f5481565b60276000611ae2612bb9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b675750611b386122e1565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611ba6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9d90614f91565b60405180910390fd5b6001602160016101000a81548160ff0219169083151502179055506001602160006101000a81548160ff021916908315150217905550565b611be6612bb9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6a90615011565b60405180910390fd5b80602760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60225481565b60006009600a611ce49190615267565b600654611cf191906151e3565b905090565b611cfe612bb9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8290615011565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611dee612bb9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7290615011565b60405180910390fd5b600084849050118015611e9357508383905082829050145b611e9c57600080fd5b600033905060005b8585905081101561201e5760176000878784818110611ec657611ec561560e565b5b9050602002016020810190611edb91906144ca565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611fa15750600d6000878784818110611f4257611f4161560e565b5b9050602002016020810190611f5791906144ca565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561200b5761200982878784818110611fbd57611fbc61560e565b5b9050602002016020810190611fd291906144ca565b6009600a611fe09190615267565b878786818110611ff357611ff261560e565b5b905060200201356120049190615385565b6133f5565b505b808061201690615567565b915050611ea4565b505050505050565b602360009054906101000a900460ff1681565b60096020528060005260406000206000915090505481565b612059612bb9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120dd90615011565b60405180910390fd5b83600f8190555082600e819055508383612100919061518d565b6010819055508160118190555080601281905550600260125461212391906151e3565b6010541061213057600080fd5b50505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b612187612bb9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220b90615011565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006122dc6122e1565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f42554c4c00000000000000000000000000000000000000000000000000000000815250905090565b601b5481565b612355612bb9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d990615011565b60405180910390fd5b81601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061249b338484612bc1565b905092915050565b6124ab612bb9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252f90615011565b60405180910390fd5b6000821180156125485750600081115b801561255657506127108111155b61255f57600080fd5b808260035461256e9190615385565b61257891906151e3565b6006819055505050565b60006009600a6125929190615267565b60045461259f91906151e3565b905090565b601e5481565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915090505481565b6125f0612bb9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461267d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267490615011565b60405180910390fd5b603c81111561268b57600080fd5b8060228190555050565b602760006126a1612bb9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061272657506126f76122e1565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b612765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275c90614f91565b60405180910390fd5b601960019054906101000a900460ff161561277f57600080fd5b81601960006101000a81548160ff0219169083151502179055506201518081106127a857600080fd5b80601c60008282546127ba919061518d565b925050819055505050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600043602054601e54612885919061518d565b106128a057600160125461289991906153df565b90506128d0565b81156128bd576011546010546128b6919061518d565b90506128d0565b6011546010546128cd91906153df565b90505b919050565b6128dd612bb9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461296a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296190615011565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156129da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d190614f31565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612a9f612bb9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2390615011565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60255481565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60205481565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2990614f11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9990614f51565b60405180910390fd5b60008211612ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cdc90614eb1565b60405180910390fd5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612d67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5e90614f71565b60405180910390fd5b612d6f613583565b158015612dc55750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e5f57600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4d90614fd1565b60405180910390fd5b612e5e613590565b5b602160009054906101000a900460ff16612f5457600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f145750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4a90615031565b60405180910390fd5b5b612f5f8484846135bb565b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156130075750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561306957600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613068576130678383613b78565b5b5b601960009054906101000a900460ff168015613086575042601c54115b156131fc57601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561311057508273ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614155b801561315b57506000601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b156131fb5743601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601b60008154809291906131b790615567565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea32844360006040516131f29493929190614d29565b60405180910390a15b5b602660009054906101000a900460ff16156132235761321c8484846133f5565b90506133ee565b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461326e91906153df565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006132bc85613c11565b6132c657826132d1565b6132d08484613c68565b5b90506132dc84613d4b565b156132f55760008311156132f4576132f383613e75565b5b5b80600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613340919061518d565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516133e09190615071565b60405180910390a360019150505b9392505050565b600081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461344291906153df565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134d0919061518d565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516135709190615071565b60405180910390a3600190509392505050565b600080601e541415905090565b43601e8190555042601f819055506001602360006101000a81548160ff021916908315150217905550565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061366f5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166136675760055461366b565b6004545b8111155b6136ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136a590614ef1565b60405180910390fd5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613752575043602254600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461374f919061518d565b11155b613791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161378890614fb1565b60405180910390fd5b6000601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146138d2576009600a6137e69190615267565b601a546137f39190615385565b811115801561384157506000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b801561384e575042601c54115b61388d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161388490614ff1565b60405180910390fd5b43600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561396d5743600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b73565b61397683613c11565b15613b7257601960009054906101000a900460ff168015613998575042601c54115b80156139e2575043600a60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b8015613a2d57506000601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15613ab55743601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea3283436001604051613aac9493929190614d6e565b60405180910390a15b43600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614613b715743600a60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b505050565b600060065490508082600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bcb919061518d565b1115613c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c0390614ed1565b60405180910390fd5b505050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690506000601254613cc883612872565b85613cd39190615385565b613cdd91906151e3565b905080600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613d2e919061518d565b925050819055508084613d4191906153df565b9250505092915050565b6000601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613db45750602660009054906101000a900460ff16155b8015613dcc5750602360009054906101000a900460ff165b8015613e215750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8015613e6e5750602554600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b9050919050565b6001602660006101000a81548160ff02191690831515021790555060006024548210613ea357602454613ea5565b815b905080600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613f3157600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b60006010546002600f5484613f469190615385565b613f5091906151e3565b613f5a91906151e3565b90508082613f6891906153df565b91506000600267ffffffffffffffff811115613f8757613f8661563d565b5b604051908082528060200260200182016040528015613fb55781602001602082028036833780820191505090505b5090503081600081518110613fcd57613fcc61560e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561406f57600080fd5b505afa158015614083573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140a791906144f7565b816001815181106140bb576140ba61560e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008530426040518663ffffffff1660e01b815260040161415e95949392919061508c565b600060405180830381600087803b15801561417857600080fd5b505af115801561418c573d6000803e3d6000fd5b505050506000814761419e91906153df565b905060006002600f546141b191906151e3565b6010546141be91906153df565b90506000816002600f54856141d39190615385565b6141dd91906151e3565b6141e791906151e3565b9050600081846141f791906153df565b9050600081111561426c57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561426a573d6000803e3d6000fd5b505b600087111561435457601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308a600080601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016142fe96959493929190614df8565b6060604051808303818588803b15801561431757600080fd5b505af115801561432b573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061435091906148ec565b5050505b7fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df9818389604051614387939291906150e6565b60405180910390a150505050505050506000602660006101000a81548160ff02191690831515021790555050565b6000813590506143c481615979565b92915050565b6000815190506143d981615979565b92915050565b60008083601f8401126143f5576143f4615671565b5b8235905067ffffffffffffffff8111156144125761441161566c565b5b60208301915083602082028301111561442e5761442d615676565b5b9250929050565b60008083601f84011261444b5761444a615671565b5b8235905067ffffffffffffffff8111156144685761446761566c565b5b60208301915083602082028301111561448457614483615676565b5b9250929050565b60008135905061449a81615990565b92915050565b6000813590506144af816159a7565b92915050565b6000815190506144c4816159a7565b92915050565b6000602082840312156144e0576144df615680565b5b60006144ee848285016143b5565b91505092915050565b60006020828403121561450d5761450c615680565b5b600061451b848285016143ca565b91505092915050565b6000806040838503121561453b5761453a615680565b5b6000614549858286016143b5565b925050602061455a858286016143b5565b9150509250929050565b60008060006060848603121561457d5761457c615680565b5b600061458b868287016143b5565b935050602061459c868287016143b5565b92505060406145ad868287016144a0565b9150509250925092565b600080604083850312156145ce576145cd615680565b5b60006145dc858286016143b5565b92505060206145ed8582860161448b565b9150509250929050565b6000806040838503121561460e5761460d615680565b5b600061461c858286016143b5565b925050602061462d858286016144a0565b9150509250929050565b6000806000806040858703121561465157614650615680565b5b600085013567ffffffffffffffff81111561466f5761466e61567b565b5b61467b878288016143df565b9450945050602085013567ffffffffffffffff81111561469e5761469d61567b565b5b6146aa87828801614435565b925092505092959194509250565b6000806000604084860312156146d1576146d0615680565b5b600084013567ffffffffffffffff8111156146ef576146ee61567b565b5b6146fb868287016143df565b9350935050602061470e8682870161448b565b9150509250925092565b60006020828403121561472e5761472d615680565b5b600061473c8482850161448b565b91505092915050565b6000806000806080858703121561475f5761475e615680565b5b600061476d8782880161448b565b945050602061477e8782880161448b565b935050604061478f878288016144a0565b92505060606147a0878288016144a0565b91505092959194509250565b600080604083850312156147c3576147c2615680565b5b60006147d18582860161448b565b92505060206147e2858286016144a0565b9150509250929050565b60006020828403121561480257614801615680565b5b6000614810848285016144a0565b91505092915050565b600080604083850312156148305761482f615680565b5b600061483e858286016144a0565b925050602061484f858286016143b5565b9150509250929050565b600080604083850312156148705761486f615680565b5b600061487e858286016144a0565b925050602061488f858286016144a0565b9150509250929050565b6000806000606084860312156148b2576148b1615680565b5b60006148c0868287016144a0565b93505060206148d1868287016144a0565b92505060406148e2868287016144a0565b9150509250925092565b60008060006060848603121561490557614904615680565b5b6000614913868287016144b5565b9350506020614924868287016144b5565b9250506040614935868287016144b5565b9150509250925092565b6000806000806080858703121561495957614958615680565b5b6000614967878288016144a0565b9450506020614978878288016144a0565b9350506040614989878288016144a0565b925050606061499a878288016144a0565b91505092959194509250565b60006149b283836149dc565b60208301905092915050565b6149c78161547a565b82525050565b6149d681615425565b82525050565b6149e581615413565b82525050565b6149f481615413565b82525050565b6000614a0582615148565b614a0f818561516b565b9350614a1a83615138565b8060005b83811015614a4b578151614a3288826149a6565b9750614a3d8361515e565b925050600181019050614a1e565b5085935050505092915050565b614a6181615437565b82525050565b614a708161548c565b82525050565b614a7f8161549e565b82525050565b614a8e816154b0565b82525050565b614a9d816154c2565b82525050565b614aac816154d4565b82525050565b6000614abd82615153565b614ac7818561517c565b9350614ad781856020860161550a565b614ae081615685565b840191505092915050565b6000614af860158361517c565b9150614b03826156a3565b602082019050919050565b6000614b1b60258361517c565b9150614b26826156cc565b604082019050919050565b6000614b3e60118361517c565b9150614b498261571b565b602082019050919050565b6000614b6160188361517c565b9150614b6c82615744565b602082019050919050565b6000614b8460268361517c565b9150614b8f8261576d565b604082019050919050565b6000614ba760168361517c565b9150614bb2826157bc565b602082019050919050565b6000614bca60148361517c565b9150614bd5826157e5565b602082019050919050565b6000614bed601b8361517c565b9150614bf88261580e565b602082019050919050565b6000614c10601d8361517c565b9150614c1b82615837565b602082019050919050565b6000614c3360188361517c565b9150614c3e82615860565b602082019050919050565b6000614c5660298361517c565b9150614c6182615889565b604082019050919050565b6000614c7960208361517c565b9150614c84826158d8565b602082019050919050565b6000614c9c60158361517c565b9150614ca782615901565b602082019050919050565b6000614cbf60228361517c565b9150614cca8261592a565b604082019050919050565b614cde81615463565b82525050565b614ced8161546d565b82525050565b6000602082019050614d0860008301846149eb565b92915050565b6000602082019050614d2360008301846149cd565b92915050565b6000608082019050614d3e60008301876149eb565b614d4b60208301866149eb565b614d586040830185614cd5565b614d656060830184614a85565b95945050505050565b6000608082019050614d8360008301876149eb565b614d9060208301866149eb565b614d9d6040830185614cd5565b614daa6060830184614a94565b95945050505050565b6000608082019050614dc860008301876149eb565b614dd560208301866149eb565b614de26040830185614cd5565b614def6060830184614aa3565b95945050505050565b600060c082019050614e0d60008301896149eb565b614e1a6020830188614cd5565b614e276040830187614a76565b614e346060830186614a76565b614e4160808301856149be565b614e4e60a0830184614cd5565b979650505050505050565b6000602082019050614e6e6000830184614a58565b92915050565b6000602082019050614e896000830184614a67565b92915050565b60006020820190508181036000830152614ea98184614ab2565b905092915050565b60006020820190508181036000830152614eca81614aeb565b9050919050565b60006020820190508181036000830152614eea81614b0e565b9050919050565b60006020820190508181036000830152614f0a81614b31565b9050919050565b60006020820190508181036000830152614f2a81614b54565b9050919050565b60006020820190508181036000830152614f4a81614b77565b9050919050565b60006020820190508181036000830152614f6a81614b9a565b9050919050565b60006020820190508181036000830152614f8a81614bbd565b9050919050565b60006020820190508181036000830152614faa81614be0565b9050919050565b60006020820190508181036000830152614fca81614c03565b9050919050565b60006020820190508181036000830152614fea81614c26565b9050919050565b6000602082019050818103600083015261500a81614c49565b9050919050565b6000602082019050818103600083015261502a81614c6c565b9050919050565b6000602082019050818103600083015261504a81614c8f565b9050919050565b6000602082019050818103600083015261506a81614cb2565b9050919050565b60006020820190506150866000830184614cd5565b92915050565b600060a0820190506150a16000830188614cd5565b6150ae6020830187614a76565b81810360408301526150c081866149fa565b90506150cf60608301856149eb565b6150dc6080830184614cd5565b9695505050505050565b60006060820190506150fb6000830186614cd5565b6151086020830185614cd5565b6151156040830184614cd5565b949350505050565b60006020820190506151326000830184614ce4565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061519882615463565b91506151a383615463565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156151d8576151d76155b0565b5b828201905092915050565b60006151ee82615463565b91506151f983615463565b925082615209576152086155df565b5b828204905092915050565b6000808291508390505b600185111561525e5780860481111561523a576152396155b0565b5b60018516156152495780820291505b808102905061525785615696565b945061521e565b94509492505050565b600061527282615463565b915061527d8361546d565b92506152aa7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846152b2565b905092915050565b6000826152c2576001905061537e565b816152d0576000905061537e565b81600181146152e657600281146152f05761531f565b600191505061537e565b60ff841115615302576153016155b0565b5b8360020a915084821115615319576153186155b0565b5b5061537e565b5060208310610133831016604e8410600b84101617156153545782820a90508381111561534f5761534e6155b0565b5b61537e565b6153618484846001615214565b92509050818404811115615378576153776155b0565b5b81810290505b9392505050565b600061539082615463565b915061539b83615463565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156153d4576153d36155b0565b5b828202905092915050565b60006153ea82615463565b91506153f583615463565b925082821015615408576154076155b0565b5b828203905092915050565b600061541e82615443565b9050919050565b600061543082615443565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000615485826154e6565b9050919050565b6000615497826154e6565b9050919050565b60006154a982615463565b9050919050565b60006154bb8261546d565b9050919050565b60006154cd8261546d565b9050919050565b60006154df8261546d565b9050919050565b60006154f1826154f8565b9050919050565b600061550382615443565b9050919050565b60005b8381101561552857808201518184015260208101905061550d565b83811115615537576000848401525b50505050565b600061554882615463565b9150600082141561555c5761555b6155b0565b5b600182039050919050565b600061557282615463565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156155a5576155a46155b0565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f416d6f756e74206d757374206265203e207a65726f0000000000000000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f42455032303a207472616e736665722066726f6d203078300000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f42455032303a207472616e7366657220746f2030783000000000000000000000600082015250565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b7f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000600082015250565b7f5472616e736665722072617465206c696d69742065786365656465642e000000600082015250565b7f4c6971756964697479206e6f74206164646564207965742e0000000000000000600082015250565b7f57616c6c65742070726f7465637465642c20706c6561736520636f6e7461637460008201527f20737570706f72742e0000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f54726164696e67206e6f74206f70656e207965742e0000000000000000000000600082015250565b7f43616e277420616c7465722063757272656e74206c697175696469747920706160008201527f6972000000000000000000000000000000000000000000000000000000000000602082015250565b61598281615413565b811461598d57600080fd5b50565b61599981615437565b81146159a457600080fd5b50565b6159b081615463565b81146159bb57600080fd5b5056fea264697066735822122087fa0f57eeff8108ca9541c13a10a62bbd4fbe87830f1eddaaf26bb556cd863d64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106103035760003560e01c80636f4ce42811610190578063bf56b371116100dc578063e96fada211610095578063f84ba65d1161006f578063f84ba65d14610b65578063f8821a6214610b8e578063f887ea4014610bb9578063fabb0b4f14610be45761030a565b8063e96fada214610ad4578063f1f3bca314610aff578063f2fde38b14610b3c5761030a565b8063bf56b371146109b2578063bfa21d6a146109dd578063c1adf7bc14610a08578063c287184e14610a45578063d686014214610a6e578063dd62ed3e14610a975761030a565b806395d89b4111610149578063a8aa1b3111610123578063a8aa1b31146108f6578063a9059cbb14610921578063abe57e701461095e578063bafe446b146109875761030a565b806395d89b41146108775780639b02c402146108a2578063a4b45c00146108cd5761030a565b80636f4ce428146107675780636fcba377146107a457806370a08231146107cd578063715018a61461080a578063893d20e8146108215780638da5cb5b1461084c5761030a565b8063492a937b1161024f578063584f969a1161020857806363a803e1116101e257806363a803e1146106bf578063658d4b7f146106ea57806367243482146107135780636ddd17131461073c5761030a565b8063584f969a1461065457806360bba03d1461066b57806361e08e72146106945761030a565b8063492a937b14610548578063507139351461057157806354a1dfc91461059a57806356a227f2146105c3578063571ac8b0146105ec5780635804f1e4146106295761030a565b8063234e9494116102bc578063313ce56711610296578063313ce567146104a057806334848b9a146104cb578063421dd7c7146104f457806346d7edaa1461050b5761030a565b8063234e94941461040d57806323b872dd146104385780632b112e49146104755761030a565b80630445b6671461030f57806306fdde031461033a578063095db78f14610365578063095ea7b31461038e5780631031e36e146103cb57806318160ddd146103e25761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c0f565b6040516103319190615071565b60405180910390f35b34801561034657600080fd5b5061034f610c15565b60405161035c9190614e8f565b60405180910390f35b34801561037157600080fd5b5061038c600480360381019061038791906146b8565b610c52565b005b34801561039a57600080fd5b506103b560048036038101906103b091906145f7565b610ef1565b6040516103c29190614e59565b60405180910390f35b3480156103d757600080fd5b506103e0610fe3565b005b3480156103ee57600080fd5b506103f76110ea565b6040516104049190615071565b60405180910390f35b34801561041957600080fd5b506104226110f4565b60405161042f9190615071565b60405180910390f35b34801561044457600080fd5b5061045f600480360381019061045a9190614564565b611116565b60405161046c9190614e59565b60405180910390f35b34801561048157600080fd5b5061048a6112d8565b6040516104979190615071565b60405180910390f35b3480156104ac57600080fd5b506104b561134c565b6040516104c2919061511d565b60405180910390f35b3480156104d757600080fd5b506104f260048036038101906104ed9190614899565b611355565b005b34801561050057600080fd5b506105096114aa565b005b34801561051757600080fd5b50610532600480360381019061052d91906144ca565b6115b2565b60405161053f9190615071565b60405180910390f35b34801561055457600080fd5b5061056f600480360381019061056a91906145b7565b6115ca565b005b34801561057d57600080fd5b5061059860048036038101906105939190614899565b61174b565b005b3480156105a657600080fd5b506105c160048036038101906105bc9190614745565b611856565b005b3480156105cf57600080fd5b506105ea60048036038101906105e59190614819565b611965565b005b3480156105f857600080fd5b50610613600480360381019061060e91906144ca565b611a9d565b6040516106209190614e59565b60405180910390f35b34801561063557600080fd5b5061063e611ad0565b60405161064b9190615071565b60405180910390f35b34801561066057600080fd5b50610669611ad6565b005b34801561067757600080fd5b50610692600480360381019061068d91906145b7565b611bde565b005b3480156106a057600080fd5b506106a9611cce565b6040516106b69190615071565b60405180910390f35b3480156106cb57600080fd5b506106d4611cd4565b6040516106e19190615071565b60405180910390f35b3480156106f657600080fd5b50610711600480360381019061070c91906145b7565b611cf6565b005b34801561071f57600080fd5b5061073a60048036038101906107359190614637565b611de6565b005b34801561074857600080fd5b50610751612026565b60405161075e9190614e59565b60405180910390f35b34801561077357600080fd5b5061078e600480360381019061078991906144ca565b612039565b60405161079b9190615071565b60405180910390f35b3480156107b057600080fd5b506107cb60048036038101906107c6919061493f565b612051565b005b3480156107d957600080fd5b506107f460048036038101906107ef91906144ca565b612136565b6040516108019190615071565b60405180910390f35b34801561081657600080fd5b5061081f61217f565b005b34801561082d57600080fd5b506108366122d2565b6040516108439190614cf3565b60405180910390f35b34801561085857600080fd5b506108616122e1565b60405161086e9190614cf3565b60405180910390f35b34801561088357600080fd5b5061088c61230a565b6040516108999190614e8f565b60405180910390f35b3480156108ae57600080fd5b506108b7612347565b6040516108c49190615071565b60405180910390f35b3480156108d957600080fd5b506108f460048036038101906108ef9190614524565b61234d565b005b34801561090257600080fd5b5061090b612468565b6040516109189190614cf3565b60405180910390f35b34801561092d57600080fd5b50610948600480360381019061094391906145f7565b61248e565b6040516109559190614e59565b60405180910390f35b34801561096a57600080fd5b5061098560048036038101906109809190614859565b6124a3565b005b34801561099357600080fd5b5061099c612582565b6040516109a99190615071565b60405180910390f35b3480156109be57600080fd5b506109c76125a4565b6040516109d49190615071565b60405180910390f35b3480156109e957600080fd5b506109f26125aa565b6040516109ff9190614d0e565b60405180910390f35b348015610a1457600080fd5b50610a2f6004803603810190610a2a91906144ca565b6125d0565b604051610a3c9190615071565b60405180910390f35b348015610a5157600080fd5b50610a6c6004803603810190610a6791906147ec565b6125e8565b005b348015610a7a57600080fd5b50610a956004803603810190610a9091906147ac565b612695565b005b348015610aa357600080fd5b50610abe6004803603810190610ab99190614524565b6127c5565b604051610acb9190615071565b60405180910390f35b348015610ae057600080fd5b50610ae961284c565b604051610af69190614d0e565b60405180910390f35b348015610b0b57600080fd5b50610b266004803603810190610b219190614718565b612872565b604051610b339190615071565b60405180910390f35b348015610b4857600080fd5b50610b636004803603810190610b5e91906144ca565b6128d5565b005b348015610b7157600080fd5b50610b8c6004803603810190610b8791906145b7565b612a97565b005b348015610b9a57600080fd5b50610ba3612b87565b604051610bb09190615071565b60405180910390f35b348015610bc557600080fd5b50610bce612b8d565b604051610bdb9190614e74565b60405180910390f35b348015610bf057600080fd5b50610bf9612bb3565b604051610c069190615071565b60405180910390f35b60245481565b60606040518060400160405280600781526020017f424f4f4c49534800000000000000000000000000000000000000000000000000815250905090565b60276000610c5e612bb9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610ce35750610cb46122e1565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1990614f91565b60405180910390fd5b8015610d4257601960009054906101000a900460ff16610d4157600080fd5b5b60005b83839050811015610eeb578115610dd857601b6000815480929190610d6990615567565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea32858584818110610da357610da261560e565b5b9050602002016020810190610db891906144ca565b436002604051610dcb9493929190614db3565b60405180910390a1610e60565b600060186000868685818110610df157610df061560e565b5b9050602002016020810190610e0691906144ca565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e5f57601b6000815480929190610e599061553d565b91905055505b5b81610e6c576000610e6e565b435b60186000868685818110610e8557610e8461560e565b5b9050602002016020810190610e9a91906144ca565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080610ee390615567565b915050610d45565b50505050565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610fd19190615071565b60405180910390a36001905092915050565b60276000610fef612bb9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061107457506110456122e1565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6110b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110aa90614f91565b60405180910390fd5b602160019054906101000a900460ff16156110cd57600080fd5b6000602160006101000a81548160ff021916908315150217905550565b6000600354905090565b60006009600a6111049190615267565b60055461111191906151e3565b905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146112c45781600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461124391906153df565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6112cf848484612bc1565b90509392505050565b6000611305600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612136565b611330600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612136565b61133a919061518d565b60035461134791906153df565b905090565b60006009905090565b60276000611361612bb9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806113e657506113b76122e1565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141c90614f91565b60405180910390fd5b602160009054906101000a900460ff161580156114425750600a83105b61144b57600080fd5b826020819055506001602160006101000a81548160ff02191690831515021790555043601e819055508142611480919061518d565b601c819055506009600a6114949190615267565b8161149f9190615385565b601a81905550505050565b602760006114b6612bb9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061153b575061150c6122e1565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61157a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157190614f91565b60405180910390fd5b6001601960016101000a81548160ff0219169083151502179055506000601960006101000a81548160ff021916908315150217905550565b60186020528060005260406000206000915090505481565b6115d2612bb9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461165f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165690615011565b60405180910390fd5b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e790615051565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611753612bb9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d790615011565b60405180910390fd5b6000831180156117f05750600082115b80156117fc5750600081115b801561180a57506127108111155b61181357600080fd5b80836003546118229190615385565b61182c91906151e3565b60048190555080826003546118419190615385565b61184b91906151e3565b600581905550505050565b61185e612bb9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e290615011565b60405180910390fd5b600082116118f857600080fd5b83602360006101000a81548160ff02191690831515021790555082602360016101000a81548160ff0219169083151502179055508160035461193a91906151e3565b6024819055506009600a61194e9190615267565b816119599190615385565b60258190555050505050565b60276000611971612bb9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119f657506119c76122e1565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2c90614f91565b60405180910390fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc60648584611a629190615385565b611a6c91906151e3565b9081150290604051600060405180830381858888f19350505050158015611a97573d6000803e3d6000fd5b50505050565b6000611ac9827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610ef1565b9050919050565b601f5481565b60276000611ae2612bb9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b675750611b386122e1565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611ba6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9d90614f91565b60405180910390fd5b6001602160016101000a81548160ff0219169083151502179055506001602160006101000a81548160ff021916908315150217905550565b611be6612bb9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6a90615011565b60405180910390fd5b80602760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60225481565b60006009600a611ce49190615267565b600654611cf191906151e3565b905090565b611cfe612bb9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8290615011565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611dee612bb9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7290615011565b60405180910390fd5b600084849050118015611e9357508383905082829050145b611e9c57600080fd5b600033905060005b8585905081101561201e5760176000878784818110611ec657611ec561560e565b5b9050602002016020810190611edb91906144ca565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611fa15750600d6000878784818110611f4257611f4161560e565b5b9050602002016020810190611f5791906144ca565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561200b5761200982878784818110611fbd57611fbc61560e565b5b9050602002016020810190611fd291906144ca565b6009600a611fe09190615267565b878786818110611ff357611ff261560e565b5b905060200201356120049190615385565b6133f5565b505b808061201690615567565b915050611ea4565b505050505050565b602360009054906101000a900460ff1681565b60096020528060005260406000206000915090505481565b612059612bb9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120dd90615011565b60405180910390fd5b83600f8190555082600e819055508383612100919061518d565b6010819055508160118190555080601281905550600260125461212391906151e3565b6010541061213057600080fd5b50505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b612187612bb9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220b90615011565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006122dc6122e1565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f42554c4c00000000000000000000000000000000000000000000000000000000815250905090565b601b5481565b612355612bb9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d990615011565b60405180910390fd5b81601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061249b338484612bc1565b905092915050565b6124ab612bb9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252f90615011565b60405180910390fd5b6000821180156125485750600081115b801561255657506127108111155b61255f57600080fd5b808260035461256e9190615385565b61257891906151e3565b6006819055505050565b60006009600a6125929190615267565b60045461259f91906151e3565b905090565b601e5481565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915090505481565b6125f0612bb9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461267d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267490615011565b60405180910390fd5b603c81111561268b57600080fd5b8060228190555050565b602760006126a1612bb9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061272657506126f76122e1565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b612765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275c90614f91565b60405180910390fd5b601960019054906101000a900460ff161561277f57600080fd5b81601960006101000a81548160ff0219169083151502179055506201518081106127a857600080fd5b80601c60008282546127ba919061518d565b925050819055505050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600043602054601e54612885919061518d565b106128a057600160125461289991906153df565b90506128d0565b81156128bd576011546010546128b6919061518d565b90506128d0565b6011546010546128cd91906153df565b90505b919050565b6128dd612bb9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461296a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296190615011565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156129da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d190614f31565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612a9f612bb9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2390615011565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60255481565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60205481565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2990614f11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9990614f51565b60405180910390fd5b60008211612ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cdc90614eb1565b60405180910390fd5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612d67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5e90614f71565b60405180910390fd5b612d6f613583565b158015612dc55750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e5f57600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4d90614fd1565b60405180910390fd5b612e5e613590565b5b602160009054906101000a900460ff16612f5457600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f145750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4a90615031565b60405180910390fd5b5b612f5f8484846135bb565b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156130075750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561306957600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613068576130678383613b78565b5b5b601960009054906101000a900460ff168015613086575042601c54115b156131fc57601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561311057508273ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614155b801561315b57506000601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b156131fb5743601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601b60008154809291906131b790615567565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea32844360006040516131f29493929190614d29565b60405180910390a15b5b602660009054906101000a900460ff16156132235761321c8484846133f5565b90506133ee565b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461326e91906153df565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006132bc85613c11565b6132c657826132d1565b6132d08484613c68565b5b90506132dc84613d4b565b156132f55760008311156132f4576132f383613e75565b5b5b80600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613340919061518d565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516133e09190615071565b60405180910390a360019150505b9392505050565b600081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461344291906153df565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134d0919061518d565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516135709190615071565b60405180910390a3600190509392505050565b600080601e541415905090565b43601e8190555042601f819055506001602360006101000a81548160ff021916908315150217905550565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061366f5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166136675760055461366b565b6004545b8111155b6136ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136a590614ef1565b60405180910390fd5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613752575043602254600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461374f919061518d565b11155b613791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161378890614fb1565b60405180910390fd5b6000601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146138d2576009600a6137e69190615267565b601a546137f39190615385565b811115801561384157506000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b801561384e575042601c54115b61388d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161388490614ff1565b60405180910390fd5b43600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561396d5743600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b73565b61397683613c11565b15613b7257601960009054906101000a900460ff168015613998575042601c54115b80156139e2575043600a60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b8015613a2d57506000601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15613ab55743601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea3283436001604051613aac9493929190614d6e565b60405180910390a15b43600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614613b715743600a60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b505050565b600060065490508082600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bcb919061518d565b1115613c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c0390614ed1565b60405180910390fd5b505050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690506000601254613cc883612872565b85613cd39190615385565b613cdd91906151e3565b905080600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613d2e919061518d565b925050819055508084613d4191906153df565b9250505092915050565b6000601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613db45750602660009054906101000a900460ff16155b8015613dcc5750602360009054906101000a900460ff165b8015613e215750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8015613e6e5750602554600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b9050919050565b6001602660006101000a81548160ff02191690831515021790555060006024548210613ea357602454613ea5565b815b905080600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613f3157600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b60006010546002600f5484613f469190615385565b613f5091906151e3565b613f5a91906151e3565b90508082613f6891906153df565b91506000600267ffffffffffffffff811115613f8757613f8661563d565b5b604051908082528060200260200182016040528015613fb55781602001602082028036833780820191505090505b5090503081600081518110613fcd57613fcc61560e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561406f57600080fd5b505afa158015614083573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140a791906144f7565b816001815181106140bb576140ba61560e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008530426040518663ffffffff1660e01b815260040161415e95949392919061508c565b600060405180830381600087803b15801561417857600080fd5b505af115801561418c573d6000803e3d6000fd5b505050506000814761419e91906153df565b905060006002600f546141b191906151e3565b6010546141be91906153df565b90506000816002600f54856141d39190615385565b6141dd91906151e3565b6141e791906151e3565b9050600081846141f791906153df565b9050600081111561426c57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561426a573d6000803e3d6000fd5b505b600087111561435457601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308a600080601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016142fe96959493929190614df8565b6060604051808303818588803b15801561431757600080fd5b505af115801561432b573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061435091906148ec565b5050505b7fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df9818389604051614387939291906150e6565b60405180910390a150505050505050506000602660006101000a81548160ff02191690831515021790555050565b6000813590506143c481615979565b92915050565b6000815190506143d981615979565b92915050565b60008083601f8401126143f5576143f4615671565b5b8235905067ffffffffffffffff8111156144125761441161566c565b5b60208301915083602082028301111561442e5761442d615676565b5b9250929050565b60008083601f84011261444b5761444a615671565b5b8235905067ffffffffffffffff8111156144685761446761566c565b5b60208301915083602082028301111561448457614483615676565b5b9250929050565b60008135905061449a81615990565b92915050565b6000813590506144af816159a7565b92915050565b6000815190506144c4816159a7565b92915050565b6000602082840312156144e0576144df615680565b5b60006144ee848285016143b5565b91505092915050565b60006020828403121561450d5761450c615680565b5b600061451b848285016143ca565b91505092915050565b6000806040838503121561453b5761453a615680565b5b6000614549858286016143b5565b925050602061455a858286016143b5565b9150509250929050565b60008060006060848603121561457d5761457c615680565b5b600061458b868287016143b5565b935050602061459c868287016143b5565b92505060406145ad868287016144a0565b9150509250925092565b600080604083850312156145ce576145cd615680565b5b60006145dc858286016143b5565b92505060206145ed8582860161448b565b9150509250929050565b6000806040838503121561460e5761460d615680565b5b600061461c858286016143b5565b925050602061462d858286016144a0565b9150509250929050565b6000806000806040858703121561465157614650615680565b5b600085013567ffffffffffffffff81111561466f5761466e61567b565b5b61467b878288016143df565b9450945050602085013567ffffffffffffffff81111561469e5761469d61567b565b5b6146aa87828801614435565b925092505092959194509250565b6000806000604084860312156146d1576146d0615680565b5b600084013567ffffffffffffffff8111156146ef576146ee61567b565b5b6146fb868287016143df565b9350935050602061470e8682870161448b565b9150509250925092565b60006020828403121561472e5761472d615680565b5b600061473c8482850161448b565b91505092915050565b6000806000806080858703121561475f5761475e615680565b5b600061476d8782880161448b565b945050602061477e8782880161448b565b935050604061478f878288016144a0565b92505060606147a0878288016144a0565b91505092959194509250565b600080604083850312156147c3576147c2615680565b5b60006147d18582860161448b565b92505060206147e2858286016144a0565b9150509250929050565b60006020828403121561480257614801615680565b5b6000614810848285016144a0565b91505092915050565b600080604083850312156148305761482f615680565b5b600061483e858286016144a0565b925050602061484f858286016143b5565b9150509250929050565b600080604083850312156148705761486f615680565b5b600061487e858286016144a0565b925050602061488f858286016144a0565b9150509250929050565b6000806000606084860312156148b2576148b1615680565b5b60006148c0868287016144a0565b93505060206148d1868287016144a0565b92505060406148e2868287016144a0565b9150509250925092565b60008060006060848603121561490557614904615680565b5b6000614913868287016144b5565b9350506020614924868287016144b5565b9250506040614935868287016144b5565b9150509250925092565b6000806000806080858703121561495957614958615680565b5b6000614967878288016144a0565b9450506020614978878288016144a0565b9350506040614989878288016144a0565b925050606061499a878288016144a0565b91505092959194509250565b60006149b283836149dc565b60208301905092915050565b6149c78161547a565b82525050565b6149d681615425565b82525050565b6149e581615413565b82525050565b6149f481615413565b82525050565b6000614a0582615148565b614a0f818561516b565b9350614a1a83615138565b8060005b83811015614a4b578151614a3288826149a6565b9750614a3d8361515e565b925050600181019050614a1e565b5085935050505092915050565b614a6181615437565b82525050565b614a708161548c565b82525050565b614a7f8161549e565b82525050565b614a8e816154b0565b82525050565b614a9d816154c2565b82525050565b614aac816154d4565b82525050565b6000614abd82615153565b614ac7818561517c565b9350614ad781856020860161550a565b614ae081615685565b840191505092915050565b6000614af860158361517c565b9150614b03826156a3565b602082019050919050565b6000614b1b60258361517c565b9150614b26826156cc565b604082019050919050565b6000614b3e60118361517c565b9150614b498261571b565b602082019050919050565b6000614b6160188361517c565b9150614b6c82615744565b602082019050919050565b6000614b8460268361517c565b9150614b8f8261576d565b604082019050919050565b6000614ba760168361517c565b9150614bb2826157bc565b602082019050919050565b6000614bca60148361517c565b9150614bd5826157e5565b602082019050919050565b6000614bed601b8361517c565b9150614bf88261580e565b602082019050919050565b6000614c10601d8361517c565b9150614c1b82615837565b602082019050919050565b6000614c3360188361517c565b9150614c3e82615860565b602082019050919050565b6000614c5660298361517c565b9150614c6182615889565b604082019050919050565b6000614c7960208361517c565b9150614c84826158d8565b602082019050919050565b6000614c9c60158361517c565b9150614ca782615901565b602082019050919050565b6000614cbf60228361517c565b9150614cca8261592a565b604082019050919050565b614cde81615463565b82525050565b614ced8161546d565b82525050565b6000602082019050614d0860008301846149eb565b92915050565b6000602082019050614d2360008301846149cd565b92915050565b6000608082019050614d3e60008301876149eb565b614d4b60208301866149eb565b614d586040830185614cd5565b614d656060830184614a85565b95945050505050565b6000608082019050614d8360008301876149eb565b614d9060208301866149eb565b614d9d6040830185614cd5565b614daa6060830184614a94565b95945050505050565b6000608082019050614dc860008301876149eb565b614dd560208301866149eb565b614de26040830185614cd5565b614def6060830184614aa3565b95945050505050565b600060c082019050614e0d60008301896149eb565b614e1a6020830188614cd5565b614e276040830187614a76565b614e346060830186614a76565b614e4160808301856149be565b614e4e60a0830184614cd5565b979650505050505050565b6000602082019050614e6e6000830184614a58565b92915050565b6000602082019050614e896000830184614a67565b92915050565b60006020820190508181036000830152614ea98184614ab2565b905092915050565b60006020820190508181036000830152614eca81614aeb565b9050919050565b60006020820190508181036000830152614eea81614b0e565b9050919050565b60006020820190508181036000830152614f0a81614b31565b9050919050565b60006020820190508181036000830152614f2a81614b54565b9050919050565b60006020820190508181036000830152614f4a81614b77565b9050919050565b60006020820190508181036000830152614f6a81614b9a565b9050919050565b60006020820190508181036000830152614f8a81614bbd565b9050919050565b60006020820190508181036000830152614faa81614be0565b9050919050565b60006020820190508181036000830152614fca81614c03565b9050919050565b60006020820190508181036000830152614fea81614c26565b9050919050565b6000602082019050818103600083015261500a81614c49565b9050919050565b6000602082019050818103600083015261502a81614c6c565b9050919050565b6000602082019050818103600083015261504a81614c8f565b9050919050565b6000602082019050818103600083015261506a81614cb2565b9050919050565b60006020820190506150866000830184614cd5565b92915050565b600060a0820190506150a16000830188614cd5565b6150ae6020830187614a76565b81810360408301526150c081866149fa565b90506150cf60608301856149eb565b6150dc6080830184614cd5565b9695505050505050565b60006060820190506150fb6000830186614cd5565b6151086020830185614cd5565b6151156040830184614cd5565b949350505050565b60006020820190506151326000830184614ce4565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061519882615463565b91506151a383615463565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156151d8576151d76155b0565b5b828201905092915050565b60006151ee82615463565b91506151f983615463565b925082615209576152086155df565b5b828204905092915050565b6000808291508390505b600185111561525e5780860481111561523a576152396155b0565b5b60018516156152495780820291505b808102905061525785615696565b945061521e565b94509492505050565b600061527282615463565b915061527d8361546d565b92506152aa7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846152b2565b905092915050565b6000826152c2576001905061537e565b816152d0576000905061537e565b81600181146152e657600281146152f05761531f565b600191505061537e565b60ff841115615302576153016155b0565b5b8360020a915084821115615319576153186155b0565b5b5061537e565b5060208310610133831016604e8410600b84101617156153545782820a90508381111561534f5761534e6155b0565b5b61537e565b6153618484846001615214565b92509050818404811115615378576153776155b0565b5b81810290505b9392505050565b600061539082615463565b915061539b83615463565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156153d4576153d36155b0565b5b828202905092915050565b60006153ea82615463565b91506153f583615463565b925082821015615408576154076155b0565b5b828203905092915050565b600061541e82615443565b9050919050565b600061543082615443565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000615485826154e6565b9050919050565b6000615497826154e6565b9050919050565b60006154a982615463565b9050919050565b60006154bb8261546d565b9050919050565b60006154cd8261546d565b9050919050565b60006154df8261546d565b9050919050565b60006154f1826154f8565b9050919050565b600061550382615443565b9050919050565b60005b8381101561552857808201518184015260208101905061550d565b83811115615537576000848401525b50505050565b600061554882615463565b9150600082141561555c5761555b6155b0565b5b600182039050919050565b600061557282615463565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156155a5576155a46155b0565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f416d6f756e74206d757374206265203e207a65726f0000000000000000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f42455032303a207472616e736665722066726f6d203078300000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f42455032303a207472616e7366657220746f2030783000000000000000000000600082015250565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b7f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000600082015250565b7f5472616e736665722072617465206c696d69742065786365656465642e000000600082015250565b7f4c6971756964697479206e6f74206164646564207965742e0000000000000000600082015250565b7f57616c6c65742070726f7465637465642c20706c6561736520636f6e7461637460008201527f20737570706f72742e0000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f54726164696e67206e6f74206f70656e207965742e0000000000000000000000600082015250565b7f43616e277420616c7465722063757272656e74206c697175696469747920706160008201527f6972000000000000000000000000000000000000000000000000000000000000602082015250565b61598281615413565b811461598d57600080fd5b50565b61599981615437565b81146159a457600080fd5b50565b6159b081615463565b81146159bb57600080fd5b5056fea264697066735822122087fa0f57eeff8108ca9541c13a10a62bbd4fbe87830f1eddaaf26bb556cd863d64736f6c63430008070033

Deployed Bytecode Sourcemap

5580:16291:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7573:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9037:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11993:617;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9778:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11357:115;;;;;;;;;;;;;:::i;:::-;;8785:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9302:107;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12782:341;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21624:138;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8879:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10973:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11854:127;;;;;;;;;;;;;:::i;:::-;;7049:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19444:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19772:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21256:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10747:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10002:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7334:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11484:111;;;;;;;;;;;;;:::i;:::-;;10136:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7465:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9415:105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20350:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10267:468;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7502:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6257:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20612:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9526:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5175:148;;;;;;;;;;;;;:::i;:::-;;9114:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4965:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8956:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7205:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21006:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7274:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12618:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20123:219;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9191:105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7302:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6688:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6308:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19636:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11607:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9637:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6792:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17029:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5329:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20477:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7630:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6898:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7368:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7573:50;;;;:::o;9037:71::-;9076:13;9100:5;;;;;;;;;;;;;;;;;9093:12;;9037:71;:::o;11993:617::-;7861:10;:24;7872:12;:10;:12::i;:::-;7861:24;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;7903:7;:5;:7::i;:::-;7889:21;;:10;:21;;;7861:49;7853:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;12093:8:::1;12089:67;;;12126:17;;;;;;;;;;;12118:26;;;::::0;::::1;;12089:67;12181:6;12176:427;12197:8;;:15;;12193:1;:19;12176:427;;;12252:8;12248:277;;;12281:15;;:17;;;;;;;;;:::i;:::-;;;;;;12322:56;12338:9;12349:8;;12358:1;12349:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12362:12;12376:1;12322:56;;;;;;;;;:::i;:::-;;;;;;;;12248:277;;;12462:1;12436:9;:22;12446:8;;12455:1;12446:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12436:22;;;;;;;;;;;;;;;;:27;12432:71;;12486:15;;:17;;;;;;;;;:::i;:::-;;;;;;12432:71;12248:277;12564:8;:27;;12590:1;12564:27;;;12575:12;12564:27;12539:9;:22;12549:8;;12558:1;12549:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12539:22;;;;;;;;;;;;;;;:52;;;;12214:3;;;;;:::i;:::-;;;;12176:427;;;;11993:617:::0;;;:::o;9778:216::-;9853:4;9905:6;9870:11;:23;9882:10;9870:23;;;;;;;;;;;;;;;:32;9894:7;9870:32;;;;;;;;;;;;;;;:41;;;;9948:7;9927:37;;9936:10;9927:37;;;9957:6;9927:37;;;;;;:::i;:::-;;;;;;;;9982:4;9975:11;;9778:216;;;;:::o;11357:115::-;7861:10;:24;7872:12;:10;:12::i;:::-;7861:24;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;7903:7;:5;:7::i;:::-;7889:21;;:10;:21;;;7861:49;7853:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;11419:13:::1;;;;;;;;;;;11418:14;11410:23;;;::::0;::::1;;11459:5;11444:12;;:20;;;;;;;;;;;;;;;;;;11357:115::o:0;8785:88::-;8840:7;8858:12;;8851:19;;8785:88;:::o;9302:107::-;9352:7;5897:1;9390:2;:15;;;;:::i;:::-;9370:16;;:36;;;;:::i;:::-;9363:43;;9302:107;:::o;12782:341::-;12882:4;12937:17;12902:11;:19;12914:6;12902:19;;;;;;;;;;;;;;;:31;12922:10;12902:31;;;;;;;;;;;;;;;;:52;12899:157;;13038:6;13004:11;:19;13016:6;13004:19;;;;;;;;;;;;;;;:31;13024:10;13004:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;12970:11;:19;12982:6;12970:19;;;;;;;;;;;;;;;:31;12990:10;12970:31;;;;;;;;;;;;;;;:74;;;;12899:157;13075:40;13089:6;13097:9;13108:6;13075:13;:40::i;:::-;13068:47;;12782:341;;;;;:::o;21624:138::-;21677:7;21738:15;21748:4;;;;;;;;;;;21738:9;:15::i;:::-;21720;21730:4;;;;;;;;;;;21720:9;:15::i;:::-;:33;;;;:::i;:::-;21704:12;;:50;;;;:::i;:::-;21697:57;;21624:138;:::o;8879:71::-;8922:5;5897:1;8931:16;;8879:71;:::o;10973:372::-;7861:10;:24;7872:12;:10;:12::i;:::-;7861:24;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;7903:7;:5;:7::i;:::-;7889:21;;:10;:21;;;7861:49;7853:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;11090:12:::1;;;;;;;;;;;11089:13;:33;;;;;11120:2;11106:11;:16;11089:33;11081:42;;;::::0;::::1;;11147:11;11134:10;:24;;;;11184:4;11169:12;;:19;;;;;;;;;;;;;;;;;;11212:12;11199:10;:25;;;;11271:11;11253:15;:29;;;;:::i;:::-;11235:15;:47;;;;5897:1;11321:2;:15;;;;:::i;:::-;11311:6;:26;;;;:::i;:::-;11293:15;:44;;;;10973:372:::0;;;:::o;11854:127::-;7861:10;:24;7872:12;:10;:12::i;:::-;7861:24;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;7903:7;:5;:7::i;:::-;7889:21;;:10;:21;;;7861:49;7853:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;11933:4:::1;11912:18;;:25;;;;;;;;;;;;;;;;;;11968:5;11948:17;;:25;;;;;;;;;;;;;;;;;;11854:127::o:0;7049:45::-;;;;;;;;;;;;;;;;;:::o;19444:184::-;5100:12;:10;:12::i;:::-;5090:22;;:6;;;;;;;;;;:22;;;5082:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19539:4:::1;;;;;;;;;;;19533:10;;:2;:10;;;;19525:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;19614:6;19593:14;:18;19608:2;19593:18;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;19444:184:::0;;:::o;19772:339::-;5100:12;:10;:12::i;:::-;5090:22;;:6;;;;;;;;;;:22;;;5082:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19907:1:::1;19892:12;:16;:37;;;;;19928:1;19912:13;:17;19892:37;:52;;;;;19943:1;19933:7;:11;19892:52;:72;;;;;19959:5;19948:7;:16;;19892:72;19884:81;;;::::0;::::1;;20026:7;20010:12;19995;;:27;;;;:::i;:::-;19994:39;;;;:::i;:::-;19976:15;:57;;;;20096:7;20079:13;20064:12;;:28;;;;:::i;:::-;20063:40;;;;:::i;:::-;20044:16;:59;;;;19772:339:::0;;;:::o;21256:360::-;5100:12;:10;:12::i;:::-;5090:22;;:6;;;;;;;;;;:22;;;5082:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21419:1:::1;21404:12;:16;21396:25;;;::::0;::::1;;21446:8;21432:11;;:22;;;;;;;;;;;;;;;;;;21482:15;21465:14;;:32;;;;;;;;;;;;;;;;;;21539:12;21524;;:27;;;;:::i;:::-;21508:13;:43;;;;5897:1;21592:2;:15;;;;:::i;:::-;21576:12;:32;;;;:::i;:::-;21562:11;:46;;;;21256:360:::0;;;;:::o;10747:214::-;7861:10;:24;7872:12;:10;:12::i;:::-;7861:24;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;7903:7;:5;:7::i;:::-;7889:21;;:10;:21;;;7861:49;7853:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;10842:17:::1;10862:21;10842:41;;10902:3;10894:21;;:59;10949:3;10929:16;10917:9;:28;;;;:::i;:::-;10916:36;;;;:::i;:::-;10894:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;10831:130;10747:214:::0;;:::o;10002:122::-;10057:4;10081:35;10089:7;10098:17;10081:7;:35::i;:::-;10074:42;;10002:122;;;:::o;7334:27::-;;;;:::o;11484:111::-;7861:10;:24;7872:12;:10;:12::i;:::-;7861:24;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;7903:7;:5;:7::i;:::-;7889:21;;:10;:21;;;7861:49;7853:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;11553:4:::1;11537:13;;:20;;;;;;;;;;;;;;;;;;11583:4;11568:12;;:19;;;;;;;;;;;;;;;;;;11484:111::o:0;10136:119::-;5100:12;:10;:12::i;:::-;5090:22;;:6;;;;;;;;;;:22;;;5082:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10239:8:::1;10219:10;:17;10230:5;10219:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;10136:119:::0;;:::o;7465:28::-;;;;:::o;9415:105::-;9465:7;5897:1;9501:2;:15;;;;:::i;:::-;9483:14;;:34;;;;:::i;:::-;9476:41;;9415:105;:::o;20350:119::-;5100:12;:10;:12::i;:::-;5090:22;;:6;;;;;;;;;;:22;;;5082:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20455:6:::1;20433:11;:19;20445:6;20433:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;20350:119:::0;;:::o;10267:468::-;5100:12;:10;:12::i;:::-;5090:22;;:6;;;;;;;;;;:22;;;5082:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10399:1:::1;10380:9;;:16;;:20;:58;;;;;10422:9;;:16;;10404:7;;:14;;:34;10380:58;10372:67;;;::::0;::::1;;10450:12;10465:10;10450:25;;10493:6;10488:240;10509:9;;:16;;10505:1;:20;10488:240;;;10551:14;:28;10566:9;;10576:1;10566:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10551:28;;;;;;;;;;;;;;;;;;;;;;;;;10550:29;:64;;;;;10584:16;:30;10601:9;;10611:1;10601:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10584:30;;;;;;;;;;;;;;;;;;;;;;;;;10583:31;10550:64;10547:170;;;10635:66;10650:4;10656:9;;10666:1;10656:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;5897:1;10684:2;:15;;;;:::i;:::-;10670:7;;10678:1;10670:10;;;;;;;:::i;:::-;;;;;;;;:30;;;;:::i;:::-;10635:14;:66::i;:::-;;10547:170;10527:3;;;;;:::i;:::-;;;;10488:240;;;;10361:374;10267:468:::0;;;;:::o;7502:31::-;;;;;;;;;;;;;:::o;6257:44::-;;;;;;;;;;;;;;;;;:::o;20612:386::-;5100:12;:10;:12::i;:::-;5090:22;;:6;;;;;;;;;;:22;;;5082:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20764:13:::1;20749:12;:28;;;;20803:13;20788:12;:28;;;;20854:13;20838;:29;;;;:::i;:::-;20827:8;:40;;;;20889:9;20878:8;:20;;;;20926:15;20909:14;:32;;;;20988:1;20971:14;;:18;;;;:::i;:::-;20960:8;;:29;20952:38;;;::::0;::::1;;20612:386:::0;;;;:::o;9526:105::-;9592:7;9610:9;:18;9620:7;9610:18;;;;;;;;;;;;;;;;9603:25;;9526:105;;;:::o;5175:148::-;5100:12;:10;:12::i;:::-;5090:22;;:6;;;;;;;;;;:22;;;5082:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5282:1:::1;5245:40;;5266:6;::::0;::::1;;;;;;;;5245:40;;;;;;;;;;;;5313:1;5296:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;5175:148::o:0;9114:71::-;9157:7;9175;:5;:7::i;:::-;9168:14;;9114:71;:::o;4965:79::-;5003:7;5030:6;;;;;;;;;;;5023:13;;4965:79;:::o;8956:75::-;8997:13;9021:7;;;;;;;;;;;;;;;;;9014:14;;8956:75;:::o;7205:30::-;;;;:::o;21006:242::-;5100:12;:10;:12::i;:::-;5090:22;;:6;;;;;;;;;;:22;;;5082:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21154:21:::1;21123:20;;:53;;;;;;;;;;;;;;;;;;21218:21;21187:20;;:53;;;;;;;;;;;;;;;;;;21006:242:::0;;:::o;7274:19::-;;;;;;;;;;;;;:::o;12618:156::-;12698:4;12722:44;12736:10;12748:9;12759:6;12722:13;:44::i;:::-;12715:51;;12618:156;;;;:::o;20123:219::-;5100:12;:10;:12::i;:::-;5090:22;;:6;;;;;;;;;;:22;;;5082:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20233:1:::1;20221:9;:13;:28;;;;;20248:1;20238:7;:11;20221:28;:48;;;;;20264:5;20253:7;:16;;20221:48;20213:57;;;::::0;::::1;;20327:7;20314:9;20299:12;;:24;;;;:::i;:::-;20298:36;;;;:::i;:::-;20281:14;:53;;;;20123:219:::0;;:::o;9191:105::-;9240:7;5897:1;9277:2;:15;;;;:::i;:::-;9258;;:35;;;;:::i;:::-;9251:42;;9191:105;:::o;7302:25::-;;;;:::o;6688:97::-;;;;;;;;;;;;;:::o;6308:43::-;;;;;;;;;;;;;;;;;:::o;19636:128::-;5100:12;:10;:12::i;:::-;5090:22;;:6;;;;;;;;;;:22;;;5082:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19718:10:::1;19710:4;:18;;19702:27;;;::::0;::::1;;19752:4;19740:9;:16;;;;19636:128:::0;:::o;11607:235::-;7861:10;:24;7872:12;:10;:12::i;:::-;7861:24;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;7903:7;:5;:7::i;:::-;7889:21;;:10;:21;;;7861:49;7853:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;11701:18:::1;;;;;;;;;;;11700:19;11692:28;;;::::0;::::1;;11751:8;11731:17;;:28;;;;;;;;;;;;;;;;;;11789:6;11778:8;:17;11770:26;;;::::0;::::1;;11826:8;11807:15;;:27;;;;;;;:::i;:::-;;;;;;;;11607:235:::0;;:::o;9637:133::-;9721:7;9739:11;:19;9751:6;9739:19;;;;;;;;;;;;;;;:28;9759:7;9739:28;;;;;;;;;;;;;;;;9732:35;;9637:133;;;;:::o;6792:97::-;;;;;;;;;;;;;:::o;17029:243::-;17085:7;17135:12;17121:10;;17108;;:23;;;;:::i;:::-;:39;17105:73;;17174:1;17157:14;;:18;;;;:::i;:::-;17150:25;;;;17105:73;17192:7;17188:39;;;17219:8;;17208;;:19;;;;:::i;:::-;17201:26;;;;17188:39;17256:8;;17245;;:19;;;;:::i;:::-;17238:26;;17029:243;;;;:::o;5329:244::-;5100:12;:10;:12::i;:::-;5090:22;;:6;;;;;;;;;;:22;;;5082:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5438:1:::1;5418:22;;:8;:22;;;;5410:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5528:8;5499:38;;5520:6;::::0;::::1;;;;;;;;5499:38;;;;;;;;;;;;5557:8;5548:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;5329:244:::0;:::o;20477:127::-;5100:12;:10;:12::i;:::-;5090:22;;:6;;;;;;;;;;:22;;;5082:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20590:6:::1;20564:15;:23;20580:6;20564:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20477:127:::0;;:::o;7630:49::-;;;;:::o;6898:24::-;;;;;;;;;;;;;:::o;7368:25::-;;;;:::o;2992:107::-;3037:15;3080:10;3065:26;;2992:107;:::o;13131:1734::-;13223:4;13266:1;13248:20;;:6;:20;;;;13240:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;13337:1;13316:23;;:9;:23;;;;13308:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;13394:1;13385:6;:10;13377:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;13461:6;13440:9;:17;13450:6;13440:17;;;;;;;;;;;;;;;;:27;;13432:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;13507:10;:8;:10::i;:::-;13506:11;:40;;;;;13521:14;:25;13536:9;13521:25;;;;;;;;;;;;;;;;;;;;;;;;;13506:40;13503:120;;;13557:16;:24;13574:6;13557:24;;;;;;;;;;;;;;;;;;;;;;;;;13549:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;13612:8;:6;:8::i;:::-;13503:120;13637:12;;;;;;;;;;;13633:111;;13660:16;:24;13677:6;13660:24;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;13688:16;:27;13705:9;13688:27;;;;;;;;;;;;;;;;;;;;;;;;;13660:55;13652:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;13633:111;13756:39;13769:6;13777:9;13788:6;13756:12;:39::i;:::-;13821:14;:25;13836:9;13821:25;;;;;;;;;;;;;;;;;;;;;;;;;13820:26;:47;;;;;13863:4;;;;;;;;;;;13850:17;;:9;:17;;;;13820:47;13816:182;;;13889:15;:26;13905:9;13889:26;;;;;;;;;;;;;;;;;;;;;;;;;13884:103;;13936:35;13953:9;13964:6;13936:16;:35::i;:::-;13884:103;13816:182;14021:17;;;;;;;;;;;:54;;;;;14060:15;14042;;:33;14021:54;14018:351;;;14095:14;:22;14110:6;14095:22;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;;14134:9;14121:22;;:9;:22;;;;14095:48;:77;;;;;14171:1;14147:9;:20;14157:9;14147:20;;;;;;;;;;;;;;;;:25;14095:77;14092:266;;;14216:12;14193:9;:20;14203:9;14193:20;;;;;;;;;;;;;;;:35;;;;14247:15;;:17;;;;;;;;;:::i;:::-;;;;;;14288:54;14304:9;14315;14326:12;14340:1;14288:54;;;;;;;;;:::i;:::-;;;;;;;;14092:266;14018:351;14392:6;;;;;;;;;;;14389:63;;;14408:41;14423:6;14431:9;14442:6;14408:14;:41::i;:::-;14401:48;;;;14389:63;14504:6;14484:9;:17;14494:6;14484:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;14464:9;:17;14474:6;14464:17;;;;;;;;;;;;;;;:46;;;;14523:22;14548:21;14562:6;14548:13;:21::i;:::-;:59;;14601:6;14548:59;;;14572:26;14580:9;14591:6;14572:7;:26::i;:::-;14548:59;14523:84;;14631:25;14646:9;14631:14;:25::i;:::-;14628:66;;;14672:1;14663:6;:10;14659:32;;;14675:16;14684:6;14675:8;:16::i;:::-;14659:32;14628:66;14760:14;14737:9;:20;14747:9;14737:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;14714:9;:20;14724:9;14714:20;;;;;;;;;;;;;;;:60;;;;14809:9;14792:43;;14801:6;14792:43;;;14820:14;14792:43;;;;;;:::i;:::-;;;;;;;;14853:4;14846:11;;;13131:1734;;;;;;:::o;15124:300::-;15217:4;15274:6;15254:9;:17;15264:6;15254:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;15234:9;:17;15244:6;15234:17;;;;;;;;;;;;;;;:46;;;;15337:6;15314:9;:20;15324:9;15314:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;15291:9;:20;15301:9;15291:20;;;;;;;;;;;;;;;:52;;;;15376:9;15359:35;;15368:6;15359:35;;;15387:6;15359:35;;;;;;:::i;:::-;;;;;;;;15412:4;15405:11;;15124:300;;;;;:::o;14877:90::-;14920:4;14958:1;14944:10;;:15;;14937:22;;14877:90;:::o;14975:141::-;15026:12;15013:10;:25;;;;15064:15;15049:12;:30;;;;15104:4;15090:11;;:18;;;;;;;;;;;;;;;;;;14975:141::o;15679:1220::-;15780:15;:23;15796:6;15780:23;;;;;;;;;;;;;;;;;;;;;;;;;:98;;;;15818:14;:22;15833:6;15818:22;;;;;;;;;;;;;;;;;;;;;;;;;:59;;15861:16;;15818:59;;;15843:15;;15818:59;15807:6;:71;;15780:98;15772:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;15919:15;:23;15935:6;15919:23;;;;;;;;;;;;;;;;;;;;;;;;;:73;;;;15980:12;15967:9;;15946:7;:18;15954:9;15946:18;;;;;;;;;;;;;;;;:30;;;;:::i;:::-;:46;;15919:73;15911:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;16072:1;16051:9;:17;16061:6;16051:17;;;;;;;;;;;;;;;;:22;16047:261;;5897:1;16126:2;:15;;;;:::i;:::-;16107;;:35;;;;:::i;:::-;16097:6;:45;;:70;;;;;16166:1;16146:8;:16;16155:6;16146:16;;;;;;;;;;;;;;;;:21;16097:70;:107;;;;;16189:15;16171;;:33;16097:107;16089:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;16284:12;16265:8;:16;16274:6;16265:16;;;;;;;;;;;;;;;:31;;;;16047:261;16332:14;:25;16347:9;16332:25;;;;;;;;;;;;;;;;;;;;;;;;;16328:564;;;16393:12;16374:8;:16;16383:6;16374:16;;;;;;;;;;;;;;;:31;;;;16328:564;;;16427:21;16441:6;16427:13;:21::i;:::-;16423:469;;;16469:17;;;;;;;;;;;:54;;;;;16508:15;16490;;:33;16469:54;:92;;;;;16549:12;16527:7;:18;16535:9;16527:18;;;;;;;;;;;;;;;;:34;16469:92;:121;;;;;16589:1;16565:9;:20;16575:9;16565:20;;;;;;;;;;;;;;;;:25;16469:121;16465:275;;;16634:12;16611:9;:20;16621:9;16611:20;;;;;;;;;;;;;;;:35;;;;16670:54;16686:9;16697;16708:12;16722:1;16670:54;;;;;;;;;:::i;:::-;;;;;;;;16465:275;16775:12;16754:7;:18;16762:9;16754:18;;;;;;;;;;;;;;;:33;;;;16819:9;16806:22;;:9;:22;;;16802:78;;16868:12;16847:7;:18;16855:9;16847:18;;;;;;;;;;;;;;;:33;;;;16802:78;16423:469;16328:564;15679:1220;;;:::o;15436:235::-;15522:19;15544:14;;15522:36;;15610:11;15600:6;15577:9;:20;15587:9;15577:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;:44;;15569:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;15511:160;15436:235;;:::o;16907:114::-;16969:4;16994:11;:19;17006:6;16994:19;;;;;;;;;;;;;;;;;;;;;;;;;16993:20;16986:27;;16907:114;;;:::o;17280:317::-;17350:7;17370:12;17385:14;:25;17400:9;17385:25;;;;;;;;;;;;;;;;;;;;;;;;;17370:40;;17421:17;17475:14;;17451:20;17463:7;17451:11;:20::i;:::-;17442:6;:29;;;;:::i;:::-;17441:48;;;;:::i;:::-;17421:68;;17538:9;17510;:24;17528:4;17510:24;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;17580:9;17571:6;:18;;;;:::i;:::-;17564:25;;;;17280:317;;;;:::o;17605:259::-;17671:4;17696:14;:26;17711:10;17696:26;;;;;;;;;;;;;;;;;;;;;;;;;17695:27;:47;;;;;17736:6;;;;;;;;;;;17735:7;17695:47;:71;;;;;17755:11;;;;;;;;;;;17695:71;:109;;;;;17779:14;:25;17794:9;17779:25;;;;;;;;;;;;;;;;;;;;;;;;;17695:109;:161;;;;;17845:11;;17817:9;:24;17835:4;17817:24;;;;;;;;;;;;;;;;:39;;17695:161;17688:168;;17605:259;;;:::o;17872:1560::-;7735:4;7726:6;;:13;;;;;;;;;;;;;;;;;;17935:20:::1;17967:13;;17958:6;:22;:47;;17992:13;;17958:47;;;17983:6;17958:47;17935:70;;18047:12;18020:9;:24;18038:4;18020:24;;;;;;;;;;;;;;;;:39;18016:84;;;18076:9;:24;18094:4;18076:24;;;;;;;;;;;;;;;;18061:39;;18016:84;18121:23;18183:8;;18178:1;18163:12;;18148;:27;;;;:::i;:::-;:31;;;;:::i;:::-;18147:44;;;;:::i;:::-;18121:70;;18218:15;18202:31;;;;;:::i;:::-;;;18246:21;18284:1;18270:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18246:40;;18315:4;18297;18302:1;18297:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;18341:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18331:4;18336:1;18331:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;18375:21;18399;18375:45;;18433:6;;;;;;;;;;;:57;;;18505:12;18532:1;18548:4;18575;18595:15;18433:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18634:17;18678:13;18654:21;:37;;;;:::i;:::-;18634:57;;18702:19;18751:1;18736:12;;:16;;;;:::i;:::-;18724:8;;:29;;;;:::i;:::-;18702:51;;18766:26;18828:11;18823:1;18808:12;;18796:9;:24;;;;:::i;:::-;:28;;;;:::i;:::-;18795:44;;;;:::i;:::-;18766:73;;18850:26;18891:18;18879:9;:30;;;;:::i;:::-;18850:59;;18955:1;18934:18;:22;18930:90;;;18971:20;;;;;;;;;;;:29;;:49;19001:18;18971:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;18930:90;19062:1;19044:15;:19;19041:293;;;19079:6;;;;;;;;;;;:22;;;19109:18;19155:4;19179:15;19213:1;19233::::0;19253:20:::1;;;;;;;;;;;19292:15;19079:243;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19041:293;19351:73;19368:18;19388;19408:15;19351:73;;;;;;;;:::i;:::-;;;;;;;;17924:1508;;;;;;;;7753:5:::0;7744:6;;:14;;;;;;;;;;;;;;;;;;17872:1560;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;318:568::-;391:8;401:6;451:3;444:4;436:6;432:17;428:27;418:122;;459:79;;:::i;:::-;418:122;572:6;559:20;549:30;;602:18;594:6;591:30;588:117;;;624:79;;:::i;:::-;588:117;738:4;730:6;726:17;714:29;;792:3;784:4;776:6;772:17;762:8;758:32;755:41;752:128;;;799:79;;:::i;:::-;752:128;318:568;;;;;:::o;909:::-;982:8;992:6;1042:3;1035:4;1027:6;1023:17;1019:27;1009:122;;1050:79;;:::i;:::-;1009:122;1163:6;1150:20;1140:30;;1193:18;1185:6;1182:30;1179:117;;;1215:79;;:::i;:::-;1179:117;1329:4;1321:6;1317:17;1305:29;;1383:3;1375:4;1367:6;1363:17;1353:8;1349:32;1346:41;1343:128;;;1390:79;;:::i;:::-;1343:128;909:568;;;;;:::o;1483:133::-;1526:5;1564:6;1551:20;1542:29;;1580:30;1604:5;1580:30;:::i;:::-;1483:133;;;;:::o;1622:139::-;1668:5;1706:6;1693:20;1684:29;;1722:33;1749:5;1722:33;:::i;:::-;1622:139;;;;:::o;1767:143::-;1824:5;1855:6;1849:13;1840:22;;1871:33;1898:5;1871:33;:::i;:::-;1767:143;;;;:::o;1916:329::-;1975:6;2024:2;2012:9;2003:7;1999:23;1995:32;1992:119;;;2030:79;;:::i;:::-;1992:119;2150:1;2175:53;2220:7;2211:6;2200:9;2196:22;2175:53;:::i;:::-;2165:63;;2121:117;1916:329;;;;:::o;2251:351::-;2321:6;2370:2;2358:9;2349:7;2345:23;2341:32;2338:119;;;2376:79;;:::i;:::-;2338:119;2496:1;2521:64;2577:7;2568:6;2557:9;2553:22;2521:64;:::i;:::-;2511:74;;2467:128;2251:351;;;;:::o;2608:474::-;2676:6;2684;2733:2;2721:9;2712:7;2708:23;2704:32;2701:119;;;2739:79;;:::i;:::-;2701:119;2859:1;2884:53;2929:7;2920:6;2909:9;2905:22;2884:53;:::i;:::-;2874:63;;2830:117;2986:2;3012:53;3057:7;3048:6;3037:9;3033:22;3012:53;:::i;:::-;3002:63;;2957:118;2608:474;;;;;:::o;3088:619::-;3165:6;3173;3181;3230:2;3218:9;3209:7;3205:23;3201:32;3198:119;;;3236:79;;:::i;:::-;3198:119;3356:1;3381:53;3426:7;3417:6;3406:9;3402:22;3381:53;:::i;:::-;3371:63;;3327:117;3483:2;3509:53;3554:7;3545:6;3534:9;3530:22;3509:53;:::i;:::-;3499:63;;3454:118;3611:2;3637:53;3682:7;3673:6;3662:9;3658:22;3637:53;:::i;:::-;3627:63;;3582:118;3088:619;;;;;:::o;3713:468::-;3778:6;3786;3835:2;3823:9;3814:7;3810:23;3806:32;3803:119;;;3841:79;;:::i;:::-;3803:119;3961:1;3986:53;4031:7;4022:6;4011:9;4007:22;3986:53;:::i;:::-;3976:63;;3932:117;4088:2;4114:50;4156:7;4147:6;4136:9;4132:22;4114:50;:::i;:::-;4104:60;;4059:115;3713:468;;;;;:::o;4187:474::-;4255:6;4263;4312:2;4300:9;4291:7;4287:23;4283:32;4280:119;;;4318:79;;:::i;:::-;4280:119;4438:1;4463:53;4508:7;4499:6;4488:9;4484:22;4463:53;:::i;:::-;4453:63;;4409:117;4565:2;4591:53;4636:7;4627:6;4616:9;4612:22;4591:53;:::i;:::-;4581:63;;4536:118;4187:474;;;;;:::o;4667:934::-;4789:6;4797;4805;4813;4862:2;4850:9;4841:7;4837:23;4833:32;4830:119;;;4868:79;;:::i;:::-;4830:119;5016:1;5005:9;5001:17;4988:31;5046:18;5038:6;5035:30;5032:117;;;5068:79;;:::i;:::-;5032:117;5181:80;5253:7;5244:6;5233:9;5229:22;5181:80;:::i;:::-;5163:98;;;;4959:312;5338:2;5327:9;5323:18;5310:32;5369:18;5361:6;5358:30;5355:117;;;5391:79;;:::i;:::-;5355:117;5504:80;5576:7;5567:6;5556:9;5552:22;5504:80;:::i;:::-;5486:98;;;;5281:313;4667:934;;;;;;;:::o;5607:698::-;5699:6;5707;5715;5764:2;5752:9;5743:7;5739:23;5735:32;5732:119;;;5770:79;;:::i;:::-;5732:119;5918:1;5907:9;5903:17;5890:31;5948:18;5940:6;5937:30;5934:117;;;5970:79;;:::i;:::-;5934:117;6083:80;6155:7;6146:6;6135:9;6131:22;6083:80;:::i;:::-;6065:98;;;;5861:312;6212:2;6238:50;6280:7;6271:6;6260:9;6256:22;6238:50;:::i;:::-;6228:60;;6183:115;5607:698;;;;;:::o;6311:323::-;6367:6;6416:2;6404:9;6395:7;6391:23;6387:32;6384:119;;;6422:79;;:::i;:::-;6384:119;6542:1;6567:50;6609:7;6600:6;6589:9;6585:22;6567:50;:::i;:::-;6557:60;;6513:114;6311:323;;;;:::o;6640:753::-;6720:6;6728;6736;6744;6793:3;6781:9;6772:7;6768:23;6764:33;6761:120;;;6800:79;;:::i;:::-;6761:120;6920:1;6945:50;6987:7;6978:6;6967:9;6963:22;6945:50;:::i;:::-;6935:60;;6891:114;7044:2;7070:50;7112:7;7103:6;7092:9;7088:22;7070:50;:::i;:::-;7060:60;;7015:115;7169:2;7195:53;7240:7;7231:6;7220:9;7216:22;7195:53;:::i;:::-;7185:63;;7140:118;7297:2;7323:53;7368:7;7359:6;7348:9;7344:22;7323:53;:::i;:::-;7313:63;;7268:118;6640:753;;;;;;;:::o;7399:468::-;7464:6;7472;7521:2;7509:9;7500:7;7496:23;7492:32;7489:119;;;7527:79;;:::i;:::-;7489:119;7647:1;7672:50;7714:7;7705:6;7694:9;7690:22;7672:50;:::i;:::-;7662:60;;7618:114;7771:2;7797:53;7842:7;7833:6;7822:9;7818:22;7797:53;:::i;:::-;7787:63;;7742:118;7399:468;;;;;:::o;7873:329::-;7932:6;7981:2;7969:9;7960:7;7956:23;7952:32;7949:119;;;7987:79;;:::i;:::-;7949:119;8107:1;8132:53;8177:7;8168:6;8157:9;8153:22;8132:53;:::i;:::-;8122:63;;8078:117;7873:329;;;;:::o;8208:474::-;8276:6;8284;8333:2;8321:9;8312:7;8308:23;8304:32;8301:119;;;8339:79;;:::i;:::-;8301:119;8459:1;8484:53;8529:7;8520:6;8509:9;8505:22;8484:53;:::i;:::-;8474:63;;8430:117;8586:2;8612:53;8657:7;8648:6;8637:9;8633:22;8612:53;:::i;:::-;8602:63;;8557:118;8208:474;;;;;:::o;8688:::-;8756:6;8764;8813:2;8801:9;8792:7;8788:23;8784:32;8781:119;;;8819:79;;:::i;:::-;8781:119;8939:1;8964:53;9009:7;9000:6;8989:9;8985:22;8964:53;:::i;:::-;8954:63;;8910:117;9066:2;9092:53;9137:7;9128:6;9117:9;9113:22;9092:53;:::i;:::-;9082:63;;9037:118;8688:474;;;;;:::o;9168:619::-;9245:6;9253;9261;9310:2;9298:9;9289:7;9285:23;9281:32;9278:119;;;9316:79;;:::i;:::-;9278:119;9436:1;9461:53;9506:7;9497:6;9486:9;9482:22;9461:53;:::i;:::-;9451:63;;9407:117;9563:2;9589:53;9634:7;9625:6;9614:9;9610:22;9589:53;:::i;:::-;9579:63;;9534:118;9691:2;9717:53;9762:7;9753:6;9742:9;9738:22;9717:53;:::i;:::-;9707:63;;9662:118;9168:619;;;;;:::o;9793:663::-;9881:6;9889;9897;9946:2;9934:9;9925:7;9921:23;9917:32;9914:119;;;9952:79;;:::i;:::-;9914:119;10072:1;10097:64;10153:7;10144:6;10133:9;10129:22;10097:64;:::i;:::-;10087:74;;10043:128;10210:2;10236:64;10292:7;10283:6;10272:9;10268:22;10236:64;:::i;:::-;10226:74;;10181:129;10349:2;10375:64;10431:7;10422:6;10411:9;10407:22;10375:64;:::i;:::-;10365:74;;10320:129;9793:663;;;;;:::o;10462:765::-;10548:6;10556;10564;10572;10621:3;10609:9;10600:7;10596:23;10592:33;10589:120;;;10628:79;;:::i;:::-;10589:120;10748:1;10773:53;10818:7;10809:6;10798:9;10794:22;10773:53;:::i;:::-;10763:63;;10719:117;10875:2;10901:53;10946:7;10937:6;10926:9;10922:22;10901:53;:::i;:::-;10891:63;;10846:118;11003:2;11029:53;11074:7;11065:6;11054:9;11050:22;11029:53;:::i;:::-;11019:63;;10974:118;11131:2;11157:53;11202:7;11193:6;11182:9;11178:22;11157:53;:::i;:::-;11147:63;;11102:118;10462:765;;;;;;;:::o;11233:179::-;11302:10;11323:46;11365:3;11357:6;11323:46;:::i;:::-;11401:4;11396:3;11392:14;11378:28;;11233:179;;;;:::o;11418:147::-;11513:45;11552:5;11513:45;:::i;:::-;11508:3;11501:58;11418:147;;:::o;11571:142::-;11674:32;11700:5;11674:32;:::i;:::-;11669:3;11662:45;11571:142;;:::o;11719:108::-;11796:24;11814:5;11796:24;:::i;:::-;11791:3;11784:37;11719:108;;:::o;11833:118::-;11920:24;11938:5;11920:24;:::i;:::-;11915:3;11908:37;11833:118;;:::o;11987:732::-;12106:3;12135:54;12183:5;12135:54;:::i;:::-;12205:86;12284:6;12279:3;12205:86;:::i;:::-;12198:93;;12315:56;12365:5;12315:56;:::i;:::-;12394:7;12425:1;12410:284;12435:6;12432:1;12429:13;12410:284;;;12511:6;12505:13;12538:63;12597:3;12582:13;12538:63;:::i;:::-;12531:70;;12624:60;12677:6;12624:60;:::i;:::-;12614:70;;12470:224;12457:1;12454;12450:9;12445:14;;12410:284;;;12414:14;12710:3;12703:10;;12111:608;;;11987:732;;;;:::o;12725:109::-;12806:21;12821:5;12806:21;:::i;:::-;12801:3;12794:34;12725:109;;:::o;12840:167::-;12945:55;12994:5;12945:55;:::i;:::-;12940:3;12933:68;12840:167;;:::o;13013:147::-;13108:45;13147:5;13108:45;:::i;:::-;13103:3;13096:58;13013:147;;:::o;13166:143::-;13259:43;13296:5;13259:43;:::i;:::-;13254:3;13247:56;13166:143;;:::o;13315:::-;13408:43;13445:5;13408:43;:::i;:::-;13403:3;13396:56;13315:143;;:::o;13464:::-;13557:43;13594:5;13557:43;:::i;:::-;13552:3;13545:56;13464:143;;:::o;13613:364::-;13701:3;13729:39;13762:5;13729:39;:::i;:::-;13784:71;13848:6;13843:3;13784:71;:::i;:::-;13777:78;;13864:52;13909:6;13904:3;13897:4;13890:5;13886:16;13864:52;:::i;:::-;13941:29;13963:6;13941:29;:::i;:::-;13936:3;13932:39;13925:46;;13705:272;13613:364;;;;:::o;13983:366::-;14125:3;14146:67;14210:2;14205:3;14146:67;:::i;:::-;14139:74;;14222:93;14311:3;14222:93;:::i;:::-;14340:2;14335:3;14331:12;14324:19;;13983:366;;;:::o;14355:::-;14497:3;14518:67;14582:2;14577:3;14518:67;:::i;:::-;14511:74;;14594:93;14683:3;14594:93;:::i;:::-;14712:2;14707:3;14703:12;14696:19;;14355:366;;;:::o;14727:::-;14869:3;14890:67;14954:2;14949:3;14890:67;:::i;:::-;14883:74;;14966:93;15055:3;14966:93;:::i;:::-;15084:2;15079:3;15075:12;15068:19;;14727:366;;;:::o;15099:::-;15241:3;15262:67;15326:2;15321:3;15262:67;:::i;:::-;15255:74;;15338:93;15427:3;15338:93;:::i;:::-;15456:2;15451:3;15447:12;15440:19;;15099:366;;;:::o;15471:::-;15613:3;15634:67;15698:2;15693:3;15634:67;:::i;:::-;15627:74;;15710:93;15799:3;15710:93;:::i;:::-;15828:2;15823:3;15819:12;15812:19;;15471:366;;;:::o;15843:::-;15985:3;16006:67;16070:2;16065:3;16006:67;:::i;:::-;15999:74;;16082:93;16171:3;16082:93;:::i;:::-;16200:2;16195:3;16191:12;16184:19;;15843:366;;;:::o;16215:::-;16357:3;16378:67;16442:2;16437:3;16378:67;:::i;:::-;16371:74;;16454:93;16543:3;16454:93;:::i;:::-;16572:2;16567:3;16563:12;16556:19;;16215:366;;;:::o;16587:::-;16729:3;16750:67;16814:2;16809:3;16750:67;:::i;:::-;16743:74;;16826:93;16915:3;16826:93;:::i;:::-;16944:2;16939:3;16935:12;16928:19;;16587:366;;;:::o;16959:::-;17101:3;17122:67;17186:2;17181:3;17122:67;:::i;:::-;17115:74;;17198:93;17287:3;17198:93;:::i;:::-;17316:2;17311:3;17307:12;17300:19;;16959:366;;;:::o;17331:::-;17473:3;17494:67;17558:2;17553:3;17494:67;:::i;:::-;17487:74;;17570:93;17659:3;17570:93;:::i;:::-;17688:2;17683:3;17679:12;17672:19;;17331:366;;;:::o;17703:::-;17845:3;17866:67;17930:2;17925:3;17866:67;:::i;:::-;17859:74;;17942:93;18031:3;17942:93;:::i;:::-;18060:2;18055:3;18051:12;18044:19;;17703:366;;;:::o;18075:::-;18217:3;18238:67;18302:2;18297:3;18238:67;:::i;:::-;18231:74;;18314:93;18403:3;18314:93;:::i;:::-;18432:2;18427:3;18423:12;18416:19;;18075:366;;;:::o;18447:::-;18589:3;18610:67;18674:2;18669:3;18610:67;:::i;:::-;18603:74;;18686:93;18775:3;18686:93;:::i;:::-;18804:2;18799:3;18795:12;18788:19;;18447:366;;;:::o;18819:::-;18961:3;18982:67;19046:2;19041:3;18982:67;:::i;:::-;18975:74;;19058:93;19147:3;19058:93;:::i;:::-;19176:2;19171:3;19167:12;19160:19;;18819:366;;;:::o;19191:118::-;19278:24;19296:5;19278:24;:::i;:::-;19273:3;19266:37;19191:118;;:::o;19315:112::-;19398:22;19414:5;19398:22;:::i;:::-;19393:3;19386:35;19315:112;;:::o;19433:222::-;19526:4;19564:2;19553:9;19549:18;19541:26;;19577:71;19645:1;19634:9;19630:17;19621:6;19577:71;:::i;:::-;19433:222;;;;:::o;19661:254::-;19770:4;19808:2;19797:9;19793:18;19785:26;;19821:87;19905:1;19894:9;19890:17;19881:6;19821:87;:::i;:::-;19661:254;;;;:::o;19921:565::-;20104:4;20142:3;20131:9;20127:19;20119:27;;20156:71;20224:1;20213:9;20209:17;20200:6;20156:71;:::i;:::-;20237:72;20305:2;20294:9;20290:18;20281:6;20237:72;:::i;:::-;20319;20387:2;20376:9;20372:18;20363:6;20319:72;:::i;:::-;20401:78;20475:2;20464:9;20460:18;20451:6;20401:78;:::i;:::-;19921:565;;;;;;;:::o;20492:::-;20675:4;20713:3;20702:9;20698:19;20690:27;;20727:71;20795:1;20784:9;20780:17;20771:6;20727:71;:::i;:::-;20808:72;20876:2;20865:9;20861:18;20852:6;20808:72;:::i;:::-;20890;20958:2;20947:9;20943:18;20934:6;20890:72;:::i;:::-;20972:78;21046:2;21035:9;21031:18;21022:6;20972:78;:::i;:::-;20492:565;;;;;;;:::o;21063:::-;21246:4;21284:3;21273:9;21269:19;21261:27;;21298:71;21366:1;21355:9;21351:17;21342:6;21298:71;:::i;:::-;21379:72;21447:2;21436:9;21432:18;21423:6;21379:72;:::i;:::-;21461;21529:2;21518:9;21514:18;21505:6;21461:72;:::i;:::-;21543:78;21617:2;21606:9;21602:18;21593:6;21543:78;:::i;:::-;21063:565;;;;;;;:::o;21634:823::-;21891:4;21929:3;21918:9;21914:19;21906:27;;21943:71;22011:1;22000:9;21996:17;21987:6;21943:71;:::i;:::-;22024:72;22092:2;22081:9;22077:18;22068:6;22024:72;:::i;:::-;22106:80;22182:2;22171:9;22167:18;22158:6;22106:80;:::i;:::-;22196;22272:2;22261:9;22257:18;22248:6;22196:80;:::i;:::-;22286:81;22362:3;22351:9;22347:19;22338:6;22286:81;:::i;:::-;22377:73;22445:3;22434:9;22430:19;22421:6;22377:73;:::i;:::-;21634:823;;;;;;;;;:::o;22463:210::-;22550:4;22588:2;22577:9;22573:18;22565:26;;22601:65;22663:1;22652:9;22648:17;22639:6;22601:65;:::i;:::-;22463:210;;;;:::o;22679:258::-;22790:4;22828:2;22817:9;22813:18;22805:26;;22841:89;22927:1;22916:9;22912:17;22903:6;22841:89;:::i;:::-;22679:258;;;;:::o;22943:313::-;23056:4;23094:2;23083:9;23079:18;23071:26;;23143:9;23137:4;23133:20;23129:1;23118:9;23114:17;23107:47;23171:78;23244:4;23235:6;23171:78;:::i;:::-;23163:86;;22943:313;;;;:::o;23262:419::-;23428:4;23466:2;23455:9;23451:18;23443:26;;23515:9;23509:4;23505:20;23501:1;23490:9;23486:17;23479:47;23543:131;23669:4;23543:131;:::i;:::-;23535:139;;23262:419;;;:::o;23687:::-;23853:4;23891:2;23880:9;23876:18;23868:26;;23940:9;23934:4;23930:20;23926:1;23915:9;23911:17;23904:47;23968:131;24094:4;23968:131;:::i;:::-;23960:139;;23687:419;;;:::o;24112:::-;24278:4;24316:2;24305:9;24301:18;24293:26;;24365:9;24359:4;24355:20;24351:1;24340:9;24336:17;24329:47;24393:131;24519:4;24393:131;:::i;:::-;24385:139;;24112:419;;;:::o;24537:::-;24703:4;24741:2;24730:9;24726:18;24718:26;;24790:9;24784:4;24780:20;24776:1;24765:9;24761:17;24754:47;24818:131;24944:4;24818:131;:::i;:::-;24810:139;;24537:419;;;:::o;24962:::-;25128:4;25166:2;25155:9;25151:18;25143:26;;25215:9;25209:4;25205:20;25201:1;25190:9;25186:17;25179:47;25243:131;25369:4;25243:131;:::i;:::-;25235:139;;24962:419;;;:::o;25387:::-;25553:4;25591:2;25580:9;25576:18;25568:26;;25640:9;25634:4;25630:20;25626:1;25615:9;25611:17;25604:47;25668:131;25794:4;25668:131;:::i;:::-;25660:139;;25387:419;;;:::o;25812:::-;25978:4;26016:2;26005:9;26001:18;25993:26;;26065:9;26059:4;26055:20;26051:1;26040:9;26036:17;26029:47;26093:131;26219:4;26093:131;:::i;:::-;26085:139;;25812:419;;;:::o;26237:::-;26403:4;26441:2;26430:9;26426:18;26418:26;;26490:9;26484:4;26480:20;26476:1;26465:9;26461:17;26454:47;26518:131;26644:4;26518:131;:::i;:::-;26510:139;;26237:419;;;:::o;26662:::-;26828:4;26866:2;26855:9;26851:18;26843:26;;26915:9;26909:4;26905:20;26901:1;26890:9;26886:17;26879:47;26943:131;27069:4;26943:131;:::i;:::-;26935:139;;26662:419;;;:::o;27087:::-;27253:4;27291:2;27280:9;27276:18;27268:26;;27340:9;27334:4;27330:20;27326:1;27315:9;27311:17;27304:47;27368:131;27494:4;27368:131;:::i;:::-;27360:139;;27087:419;;;:::o;27512:::-;27678:4;27716:2;27705:9;27701:18;27693:26;;27765:9;27759:4;27755:20;27751:1;27740:9;27736:17;27729:47;27793:131;27919:4;27793:131;:::i;:::-;27785:139;;27512:419;;;:::o;27937:::-;28103:4;28141:2;28130:9;28126:18;28118:26;;28190:9;28184:4;28180:20;28176:1;28165:9;28161:17;28154:47;28218:131;28344:4;28218:131;:::i;:::-;28210:139;;27937:419;;;:::o;28362:::-;28528:4;28566:2;28555:9;28551:18;28543:26;;28615:9;28609:4;28605:20;28601:1;28590:9;28586:17;28579:47;28643:131;28769:4;28643:131;:::i;:::-;28635:139;;28362:419;;;:::o;28787:::-;28953:4;28991:2;28980:9;28976:18;28968:26;;29040:9;29034:4;29030:20;29026:1;29015:9;29011:17;29004:47;29068:131;29194:4;29068:131;:::i;:::-;29060:139;;28787:419;;;:::o;29212:222::-;29305:4;29343:2;29332:9;29328:18;29320:26;;29356:71;29424:1;29413:9;29409:17;29400:6;29356:71;:::i;:::-;29212:222;;;;:::o;29440:831::-;29703:4;29741:3;29730:9;29726:19;29718:27;;29755:71;29823:1;29812:9;29808:17;29799:6;29755:71;:::i;:::-;29836:80;29912:2;29901:9;29897:18;29888:6;29836:80;:::i;:::-;29963:9;29957:4;29953:20;29948:2;29937:9;29933:18;29926:48;29991:108;30094:4;30085:6;29991:108;:::i;:::-;29983:116;;30109:72;30177:2;30166:9;30162:18;30153:6;30109:72;:::i;:::-;30191:73;30259:3;30248:9;30244:19;30235:6;30191:73;:::i;:::-;29440:831;;;;;;;;:::o;30277:442::-;30426:4;30464:2;30453:9;30449:18;30441:26;;30477:71;30545:1;30534:9;30530:17;30521:6;30477:71;:::i;:::-;30558:72;30626:2;30615:9;30611:18;30602:6;30558:72;:::i;:::-;30640;30708:2;30697:9;30693:18;30684:6;30640:72;:::i;:::-;30277:442;;;;;;:::o;30725:214::-;30814:4;30852:2;30841:9;30837:18;30829:26;;30865:67;30929:1;30918:9;30914:17;30905:6;30865:67;:::i;:::-;30725:214;;;;:::o;31026:132::-;31093:4;31116:3;31108:11;;31146:4;31141:3;31137:14;31129:22;;31026:132;;;:::o;31164:114::-;31231:6;31265:5;31259:12;31249:22;;31164:114;;;:::o;31284:99::-;31336:6;31370:5;31364:12;31354:22;;31284:99;;;:::o;31389:113::-;31459:4;31491;31486:3;31482:14;31474:22;;31389:113;;;:::o;31508:184::-;31607:11;31641:6;31636:3;31629:19;31681:4;31676:3;31672:14;31657:29;;31508:184;;;;:::o;31698:169::-;31782:11;31816:6;31811:3;31804:19;31856:4;31851:3;31847:14;31832:29;;31698:169;;;;:::o;31873:305::-;31913:3;31932:20;31950:1;31932:20;:::i;:::-;31927:25;;31966:20;31984:1;31966:20;:::i;:::-;31961:25;;32120:1;32052:66;32048:74;32045:1;32042:81;32039:107;;;32126:18;;:::i;:::-;32039:107;32170:1;32167;32163:9;32156:16;;31873:305;;;;:::o;32184:185::-;32224:1;32241:20;32259:1;32241:20;:::i;:::-;32236:25;;32275:20;32293:1;32275:20;:::i;:::-;32270:25;;32314:1;32304:35;;32319:18;;:::i;:::-;32304:35;32361:1;32358;32354:9;32349:14;;32184:185;;;;:::o;32375:848::-;32436:5;32443:4;32467:6;32458:15;;32491:5;32482:14;;32505:712;32526:1;32516:8;32513:15;32505:712;;;32621:4;32616:3;32612:14;32606:4;32603:24;32600:50;;;32630:18;;:::i;:::-;32600:50;32680:1;32670:8;32666:16;32663:451;;;33095:4;33088:5;33084:16;33075:25;;32663:451;33145:4;33139;33135:15;33127:23;;33175:32;33198:8;33175:32;:::i;:::-;33163:44;;32505:712;;;32375:848;;;;;;;:::o;33229:281::-;33287:5;33311:23;33329:4;33311:23;:::i;:::-;33303:31;;33355:25;33371:8;33355:25;:::i;:::-;33343:37;;33399:104;33436:66;33426:8;33420:4;33399:104;:::i;:::-;33390:113;;33229:281;;;;:::o;33516:1073::-;33570:5;33761:8;33751:40;;33782:1;33773:10;;33784:5;;33751:40;33810:4;33800:36;;33827:1;33818:10;;33829:5;;33800:36;33896:4;33944:1;33939:27;;;;33980:1;33975:191;;;;33889:277;;33939:27;33957:1;33948:10;;33959:5;;;33975:191;34020:3;34010:8;34007:17;34004:43;;;34027:18;;:::i;:::-;34004:43;34076:8;34073:1;34069:16;34060:25;;34111:3;34104:5;34101:14;34098:40;;;34118:18;;:::i;:::-;34098:40;34151:5;;;33889:277;;34275:2;34265:8;34262:16;34256:3;34250:4;34247:13;34243:36;34225:2;34215:8;34212:16;34207:2;34201:4;34198:12;34194:35;34178:111;34175:246;;;34331:8;34325:4;34321:19;34312:28;;34366:3;34359:5;34356:14;34353:40;;;34373:18;;:::i;:::-;34353:40;34406:5;;34175:246;34446:42;34484:3;34474:8;34468:4;34465:1;34446:42;:::i;:::-;34431:57;;;;34520:4;34515:3;34511:14;34504:5;34501:25;34498:51;;;34529:18;;:::i;:::-;34498:51;34578:4;34571:5;34567:16;34558:25;;33516:1073;;;;;;:::o;34595:348::-;34635:7;34658:20;34676:1;34658:20;:::i;:::-;34653:25;;34692:20;34710:1;34692:20;:::i;:::-;34687:25;;34880:1;34812:66;34808:74;34805:1;34802:81;34797:1;34790:9;34783:17;34779:105;34776:131;;;34887:18;;:::i;:::-;34776:131;34935:1;34932;34928:9;34917:20;;34595:348;;;;:::o;34949:191::-;34989:4;35009:20;35027:1;35009:20;:::i;:::-;35004:25;;35043:20;35061:1;35043:20;:::i;:::-;35038:25;;35082:1;35079;35076:8;35073:34;;;35087:18;;:::i;:::-;35073:34;35132:1;35129;35125:9;35117:17;;34949:191;;;;:::o;35146:96::-;35183:7;35212:24;35230:5;35212:24;:::i;:::-;35201:35;;35146:96;;;:::o;35248:104::-;35293:7;35322:24;35340:5;35322:24;:::i;:::-;35311:35;;35248:104;;;:::o;35358:90::-;35392:7;35435:5;35428:13;35421:21;35410:32;;35358:90;;;:::o;35454:126::-;35491:7;35531:42;35524:5;35520:54;35509:65;;35454:126;;;:::o;35586:77::-;35623:7;35652:5;35641:16;;35586:77;;;:::o;35669:86::-;35704:7;35744:4;35737:5;35733:16;35722:27;;35669:86;;;:::o;35761:134::-;35819:9;35852:37;35883:5;35852:37;:::i;:::-;35839:50;;35761:134;;;:::o;35901:144::-;35969:9;36002:37;36033:5;36002:37;:::i;:::-;35989:50;;35901:144;;;:::o;36051:121::-;36109:9;36142:24;36160:5;36142:24;:::i;:::-;36129:37;;36051:121;;;:::o;36178:117::-;36234:9;36267:22;36283:5;36267:22;:::i;:::-;36254:35;;36178:117;;;:::o;36301:::-;36357:9;36390:22;36406:5;36390:22;:::i;:::-;36377:35;;36301:117;;;:::o;36424:::-;36480:9;36513:22;36529:5;36513:22;:::i;:::-;36500:35;;36424:117;;;:::o;36547:126::-;36597:9;36630:37;36661:5;36630:37;:::i;:::-;36617:50;;36547:126;;;:::o;36679:113::-;36729:9;36762:24;36780:5;36762:24;:::i;:::-;36749:37;;36679:113;;;:::o;36798:307::-;36866:1;36876:113;36890:6;36887:1;36884:13;36876:113;;;36975:1;36970:3;36966:11;36960:18;36956:1;36951:3;36947:11;36940:39;36912:2;36909:1;36905:10;36900:15;;36876:113;;;37007:6;37004:1;37001:13;36998:101;;;37087:1;37078:6;37073:3;37069:16;37062:27;36998:101;36847:258;36798:307;;;:::o;37111:171::-;37150:3;37173:24;37191:5;37173:24;:::i;:::-;37164:33;;37219:4;37212:5;37209:15;37206:41;;;37227:18;;:::i;:::-;37206:41;37274:1;37267:5;37263:13;37256:20;;37111:171;;;:::o;37288:233::-;37327:3;37350:24;37368:5;37350:24;:::i;:::-;37341:33;;37396:66;37389:5;37386:77;37383:103;;;37466:18;;:::i;:::-;37383:103;37513:1;37506:5;37502:13;37495:20;;37288:233;;;:::o;37527:180::-;37575:77;37572:1;37565:88;37672:4;37669:1;37662:15;37696:4;37693:1;37686:15;37713:180;37761:77;37758:1;37751:88;37858:4;37855:1;37848:15;37882:4;37879:1;37872:15;37899:180;37947:77;37944:1;37937:88;38044:4;38041:1;38034:15;38068:4;38065:1;38058:15;38085:180;38133:77;38130:1;38123:88;38230:4;38227:1;38220:15;38254:4;38251:1;38244:15;38271:117;38380:1;38377;38370:12;38394:117;38503:1;38500;38493:12;38517:117;38626:1;38623;38616:12;38640:117;38749:1;38746;38739:12;38763:117;38872:1;38869;38862:12;38886:102;38927:6;38978:2;38974:7;38969:2;38962:5;38958:14;38954:28;38944:38;;38886:102;;;:::o;38994:::-;39036:8;39083:5;39080:1;39076:13;39055:34;;38994:102;;;:::o;39102:171::-;39242:23;39238:1;39230:6;39226:14;39219:47;39102:171;:::o;39279:224::-;39419:34;39415:1;39407:6;39403:14;39396:58;39488:7;39483:2;39475:6;39471:15;39464:32;39279:224;:::o;39509:167::-;39649:19;39645:1;39637:6;39633:14;39626:43;39509:167;:::o;39682:174::-;39822:26;39818:1;39810:6;39806:14;39799:50;39682:174;:::o;39862:225::-;40002:34;39998:1;39990:6;39986:14;39979:58;40071:8;40066:2;40058:6;40054:15;40047:33;39862:225;:::o;40093:172::-;40233:24;40229:1;40221:6;40217:14;40210:48;40093:172;:::o;40271:170::-;40411:22;40407:1;40399:6;40395:14;40388:46;40271:170;:::o;40447:177::-;40587:29;40583:1;40575:6;40571:14;40564:53;40447:177;:::o;40630:179::-;40770:31;40766:1;40758:6;40754:14;40747:55;40630:179;:::o;40815:174::-;40955:26;40951:1;40943:6;40939:14;40932:50;40815:174;:::o;40995:228::-;41135:34;41131:1;41123:6;41119:14;41112:58;41204:11;41199:2;41191:6;41187:15;41180:36;40995:228;:::o;41229:182::-;41369:34;41365:1;41357:6;41353:14;41346:58;41229:182;:::o;41417:171::-;41557:23;41553:1;41545:6;41541:14;41534:47;41417:171;:::o;41594:221::-;41734:34;41730:1;41722:6;41718:14;41711:58;41803:4;41798:2;41790:6;41786:15;41779:29;41594:221;:::o;41821:122::-;41894:24;41912:5;41894:24;:::i;:::-;41887:5;41884:35;41874:63;;41933:1;41930;41923:12;41874:63;41821:122;:::o;41949:116::-;42019:21;42034:5;42019:21;:::i;:::-;42012:5;42009:32;41999:60;;42055:1;42052;42045:12;41999:60;41949:116;:::o;42071:122::-;42144:24;42162:5;42144:24;:::i;:::-;42137:5;42134:35;42124:63;;42183:1;42180;42173:12;42124:63;42071:122;:::o

Swarm Source

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