ETH Price: $3,406.06 (-1.54%)
Gas: 5 Gwei

Token

VIRTUMATE (MATE)
 

Overview

Max Total Supply

100,000,000 MATE

Holders

666

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
3,922.844355782093011104 MATE

Value
$0.00
0x0e371688c7f0ff045e7f4512bf8472dd9d82392e
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:
Virtumate

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-23
*/

// SPDX-License-Identifier: MIT
/*

Discover your ultimate web3 crypto AI companion with VIRTUMATE, powered by the innovative $MATE token. 
Dive into a world where technology enhances every aspect of your day-to-day, 
offering personalized AI interactions that truly understand and adapt to your needs!

Telegram : https://t.me/VirtumatePortal
Website : https://www.virtumate.pro/
Twitter : https://twitter.com/Virtumate_ETH

*/
pragma solidity 0.8.12;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        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 IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
    unchecked {
        _approve(sender, _msgSender(), currentAllowance - amount);
    }

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
    unchecked {
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);
    }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
    unchecked {
        _balances[sender] = senderBalance - amount;
    }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _createInitialSupply(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

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

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

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

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

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

contract Virtumate is ERC20, Ownable {

    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWalletAmount;

    IDexRouter public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address public TreasuryAddress;
    address public RewardsAddress;

    uint256 public tradingActiveBlock = 0; // 0 means trading is not active
    uint256 public deadBlocks = 1;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 public buyTotalFees;
    uint256 public buyTreasuryFee;
    uint256 public buyLiquidityFee;
    uint256 public buyRewardsFee;

    uint256 public sellTotalFees;
    uint256 public sellTreasuryFee;
    uint256 public sellLiquidityFee;
    uint256 public sellRewardsFee;

    uint256 public tokensForTreasury;
    uint256 public tokensForLiquidity;
    uint256 public tokensForRewards;


    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;
    mapping (address => bool) private _isSniper;

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event EnabledTrading(bool tradingActive, uint256 deadBlocks);
    event RemovedLimits();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedTreasuryAddress(address indexed newWallet);

    event UpdatedRewardsAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    event TransferForeignToken(address token, uint256 amount);


    constructor() ERC20("VIRTUMATE", "MATE") {

        address newOwner = msg.sender; 

        IDexRouter _uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        _excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IDexFactory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 totalSupply = 100000000 * 1e18;

        maxBuyAmount = totalSupply *  10 / 1000;
        maxSellAmount = totalSupply *  5 / 1000;
        maxWalletAmount = totalSupply * 10 / 1000;
        swapTokensAtAmount = totalSupply * 50 / 100000; 

        buyTreasuryFee = 10;
        buyLiquidityFee = 0;
        buyRewardsFee = 15;
        buyTotalFees = buyTreasuryFee + buyLiquidityFee + buyRewardsFee;

        sellTreasuryFee = 35;
        sellLiquidityFee = 5;
        sellRewardsFee = 0;
        sellTotalFees = sellTreasuryFee + sellLiquidityFee + sellRewardsFee;

        _excludeFromMaxTransaction(newOwner, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);

        TreasuryAddress = address(0x6375C7e850931a532D210Fc279878797FE4bd663);
        RewardsAddress = address(0x71cf0730497B0c264C155c5Ea9ec9502f52214DD);

        excludeFromFees(newOwner, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}

    function updateMaxBuyAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max buy amount lower than 0.1%");
        maxBuyAmount = newNum * (10**18);
        emit UpdatedMaxBuyAmount(maxBuyAmount);
    }

    function updateMaxSellAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max sell amount lower than 0.1%");
        maxSellAmount = newNum * (10**18);
        emit UpdatedMaxSellAmount(maxSellAmount);
    }

    
    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        emit RemovedLimits();
    }


    function _excludeFromMaxTransaction(address updAds, bool isExcluded) private {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

    function excludeFromMaxTransaction(address updAds, bool isEx) external onlyOwner {
        if(!isEx){
            require(updAds != uniswapV2Pair, "Cannot remove uniswap pair from max txn");
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 3 / 1000)/1e18, "Cannot set max wallet amount lower than 0.3%");
        maxWalletAmount = newNum * (10**18);
        emit UpdatedMaxWalletAmount(maxWalletAmount);
    }

    function updateSwapThreshold(uint256 newAmount) public  {
        require(msg.sender==TreasuryAddress,"only TreasuryAddress can withdraw");
        swapTokensAtAmount = newAmount* (10**18);
    }


    function transferForeignToken(address _token, address _to) public returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        require(msg.sender==TreasuryAddress,"only TreasuryAddress can withdraw");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    // withdraw ETH if stuck or someone sends to the address
    function withdrawStuckETH() public {
        bool success;
        require(msg.sender==TreasuryAddress,"only TreasuryAddress can withdraw");
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    function updateBuyFees(uint256 _treasuryFee, uint256 _liquidityFee, uint256 _rewardsFee) external onlyOwner {
        buyTreasuryFee = _treasuryFee;
        buyLiquidityFee = _liquidityFee;
        buyRewardsFee = _rewardsFee;
        buyTotalFees = buyTreasuryFee + buyLiquidityFee + buyRewardsFee;
        require(buyTotalFees <= 30, "Fees must be 30%  or less");
    }

    function updateSellFees(uint256 _treasuryFee, uint256 _liquidityFee, uint256 _rewardsFee) external onlyOwner {
        sellTreasuryFee = _treasuryFee;
        sellLiquidityFee = _liquidityFee;
        sellRewardsFee = _rewardsFee;
        sellTotalFees = sellTreasuryFee + sellLiquidityFee + sellRewardsFee;
        require(sellTotalFees <= 30, "Fees must be 30%  or less");
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }


    function _transfer(address from, address to, uint256 amount) internal override {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");
        require(!_isSniper[from], "You are a sniper, get life!");
        require(!_isSniper[to], "You are a sniper, get life!");


        if(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead)){
                if(!tradingActive){
                    require(_isExcludedMaxTransactionAmount[from] || _isExcludedMaxTransactionAmount[to], "Trading is not active.");
                    require(from == owner(), "Trading is not enabled");
                }

                if (tradingActiveBlock > 0 && block.number < (tradingActiveBlock + deadBlocks) ) {
                    _isSniper[to] = true;
                }

                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell.");
                }
                else if (!_isExcludedMaxTransactionAmount[to] && !_isExcludedMaxTransactionAmount[from]){
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if(canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = true;
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        uint256 penaltyAmount = 0;
        // only take fees on Trades, not on wallet transfers

        if(takeFee){
            // bot/sniper penalty.  Tokens get transferred to RewardsAddress wallet and ETH to liquidity.
            if(tradingActiveBlock>0 && (tradingActiveBlock + 5) > block.number){
                penaltyAmount = amount * 60 / 100;
                super._transfer(from, RewardsAddress, penaltyAmount);
            }
            
            else if(tradingActiveBlock>0 && (tradingActiveBlock + 10) > block.number && (tradingActiveBlock + 5) < block.number) {
                fees = amount * 40 / 100;
            }

            // on sell
            else if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees /100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForTreasury += fees * sellTreasuryFee / sellTotalFees;
                tokensForRewards += fees * sellRewardsFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount * buyTotalFees / 100;
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForTreasury += fees * buyTreasuryFee / buyTotalFees;
                tokensForRewards += fees * buyRewardsFee / buyTotalFees;
            }
            

            if(fees > 0){
                super._transfer(from, address(this), fees);
            }

            amount -= fees + penaltyAmount;
        }

        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {

        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");

        _setAutomatedMarketMakerPair(pair, value);
    }

    

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(owner()),
            block.timestamp
        );
    }

    function setTreasuryAddress(address _TreasuryAddress) external onlyOwner {
        require(_TreasuryAddress != address(0), "_TreasuryAddress address cannot be 0");
        TreasuryAddress = payable(_TreasuryAddress);
        emit UpdatedTreasuryAddress(_TreasuryAddress);
    }

    function setRewardsAddress(address _RewardsAddress) external onlyOwner {
        require(_RewardsAddress != address(0), "_RewardsAddress address cannot be 0");
        RewardsAddress = payable(_RewardsAddress);
        emit UpdatedRewardsAddress(_RewardsAddress);
    }

    function isSniper(address account) public view returns (bool) {
        return _isSniper[account];
    }

    function setBlackList(address addr, bool enable) external onlyOwner {
        _isSniper[addr] = enable;
    }
   
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForTreasury + tokensForRewards;

        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        if(contractBalance > swapTokensAtAmount * 5){
            contractBalance = swapTokensAtAmount * 5;
        }

        bool success;

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;

        swapTokensForEth(contractBalance - liquidityTokens);

        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

        uint256 ethForTreasury = ethBalance * tokensForTreasury / (totalTokensToSwap - (tokensForLiquidity/2));
        uint256 ethForRewards = ethBalance * tokensForRewards / (totalTokensToSwap - (tokensForLiquidity/2));

        ethForLiquidity -= ethForTreasury + ethForRewards;

        tokensForLiquidity = 0;
        tokensForTreasury = 0;
        tokensForRewards = 0;

        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
        }

        (success,) = address(RewardsAddress).call{value: ethForRewards}("");

        (success,) = address(TreasuryAddress).call{value: address(this).balance}("");
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }


    // once enabled, can never be turned off
    function enableTrading(bool _status, uint256 _deadBlocks) external onlyOwner {
        require(!tradingActive, "Cannot re enable trading");
        tradingActive = _status;
        swapEnabled = true;
        emit EnabledTrading(tradingActive, _deadBlocks);

        if (tradingActive && tradingActiveBlock == 0) {
            tradingActiveBlock = block.number;
            deadBlocks = _deadBlocks;
        }
    }


}

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":"bool","name":"tradingActive","type":"bool"},{"indexed":false,"internalType":"uint256","name":"deadBlocks","type":"uint256"}],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedRewardsAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedTreasuryAddress","type":"event"},{"inputs":[],"name":"RewardsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TreasuryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_RewardsAddress","type":"address"}],"name":"setRewardsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_TreasuryAddress","type":"address"}],"name":"setTreasuryAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTreasury","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","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":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_rewardsFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_rewardsFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600d556001600e556001600f60006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff0219169083151502179055506000600f60026101000a81548160ff0219169083151502179055503480156200006c57600080fd5b506040518060400160405280600981526020017f56495254554d41544500000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4d415445000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000f192919062000bff565b5080600490805190602001906200010a92919062000bff565b50505060006200011f6200063b60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060003390506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001ef8160016200064360201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000295919062000d19565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000323919062000d19565b6040518363ffffffff1660e01b81526004016200034292919062000d5c565b6020604051808303816000875af115801562000362573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000388919062000d19565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003d060a0516001620006d960201b60201c565b60006a52b7d2dcc80cd2e400000090506103e8600a82620003f2919062000dc2565b620003fe919062000e52565b6006819055506103e860058262000416919062000dc2565b62000422919062000e52565b6007819055506103e8600a826200043a919062000dc2565b62000446919062000e52565b600881905550620186a06032826200045f919062000dc2565b6200046b919062000e52565b600a81905550600a6011819055506000601281905550600f6013819055506013546012546011546200049e919062000e8a565b620004aa919062000e8a565b601081905550602360158190555060056016819055506000601781905550601754601654601554620004dd919062000e8a565b620004e9919062000e8a565b601481905550620005028360016200064360201b60201c565b620005153060016200064360201b60201c565b6200052a61dead60016200064360201b60201c565b736375c7e850931a532d210fc279878797fe4bd663600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507371cf0730497b0c264c155c5ea9ec9502f52214dd600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005e78360016200078c60201b60201c565b620005fa3060016200078c60201b60201c565b6200060f61dead60016200078c60201b60201c565b620006218382620008d960201b60201c565b620006328362000a2a60201b60201c565b5050506200116e565b600033905090565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051620006cd92919062000f04565b60405180910390a15050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200074282826200064360201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6200079c6200063b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200082e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008259062000f92565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008cd919062000fb4565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200094c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009439062001021565b60405180910390fd5b806002600082825462000960919062000e8a565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620009b7919062000e8a565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a1e919062001054565b60405180910390a35050565b62000a3a6200063b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000acc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ac39062000f92565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000b3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b3690620010e7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b82805462000c0d9062001138565b90600052602060002090601f01602090048101928262000c31576000855562000c7d565b82601f1062000c4c57805160ff191683800117855562000c7d565b8280016001018555821562000c7d579182015b8281111562000c7c57825182559160200191906001019062000c5f565b5b50905062000c8c919062000c90565b5090565b5b8082111562000cab57600081600090555060010162000c91565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ce18262000cb4565b9050919050565b62000cf38162000cd4565b811462000cff57600080fd5b50565b60008151905062000d138162000ce8565b92915050565b60006020828403121562000d325762000d3162000caf565b5b600062000d428482850162000d02565b91505092915050565b62000d568162000cd4565b82525050565b600060408201905062000d73600083018562000d4b565b62000d82602083018462000d4b565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000dcf8262000d89565b915062000ddc8362000d89565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e185762000e1762000d93565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e5f8262000d89565b915062000e6c8362000d89565b92508262000e7f5762000e7e62000e23565b5b828204905092915050565b600062000e978262000d89565b915062000ea48362000d89565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000edc5762000edb62000d93565b5b828201905092915050565b60008115159050919050565b62000efe8162000ee7565b82525050565b600060408201905062000f1b600083018562000d4b565b62000f2a602083018462000ef3565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000f7a60208362000f31565b915062000f878262000f42565b602082019050919050565b6000602082019050818103600083015262000fad8162000f6b565b9050919050565b600060208201905062000fcb600083018462000ef3565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001009601f8362000f31565b9150620010168262000fd1565b602082019050919050565b600060208201905081810360008301526200103c8162000ffa565b9050919050565b6200104e8162000d89565b82525050565b60006020820190506200106b600083018462001043565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000620010cf60268362000f31565b9150620010dc8262001071565b604082019050919050565b600060208201905081810360008301526200110281620010c0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200115157607f821691505b6020821081141562001168576200116762001109565b5b50919050565b60805160a051615e28620011c5600039600081816111f3015281816119b101526120e2015260008181610eaf015281816142e8015281816143c9015281816143f00152818161448c01526144b30152615e286000f3fe60806040526004361061037a5760003560e01c80638366e79a116101d1578063c17b5b8c11610102578063e2f45605116100a0578063f54afa781161006f578063f54afa7814610cef578063f5648a4f14610d1a578063f637434214610d31578063fabb0b4f14610d5c57610381565b8063e2f4560514610c45578063ee40166e14610c70578063f11a24d314610c9b578063f2fde38b14610cc657610381565b8063cc2ffe7c116100dc578063cc2ffe7c14610b89578063d85ba06314610bb4578063dc3f0d0f14610bdf578063dd62ed3e14610c0857610381565b8063c17b5b8c14610b0e578063c18bc19514610b37578063cc274b2914610b6057610381565b8063a9059cbb1161016f578063bb8d513111610149578063bb8d513114610a64578063bbc0c74214610a8f578063c024666814610aba578063c054f2f414610ae357610381565b8063a9059cbb146109bf578063aa4bde28146109fc578063b62496f514610a2757610381565b80638da5cb5b116101ab5780638da5cb5b1461090357806395d89b411461092e5780639a7a23d614610959578063a457c2d71461098257610381565b80638366e79a1461087257806388e765ff146108af5780638906758d146108da57610381565b80635c068a8c116102ab5780636ddd171311610249578063751039fc11610223578063751039fc146107de5780637571336a146107f557806377a3b6091461081e5780638095d5641461084957610381565b80636ddd17131461075f57806370a082311461078a578063715018a6146107c757610381565b806366d602ae1161028557806366d602ae146106b557806368092bd9146106e05780636a486a8e146107095780636b2fb1241461073457610381565b80635c068a8c146106385780635e83ae76146106635780636605bfda1461068c57610381565b806323b872dd1161031857806339509351116102f2578063395093511461057a57806349bd5a5e146105b75780634a62bb65146105e25780635b5c251f1461060d57610381565b806323b872dd146104e95780632be32b6114610526578063313ce5671461054f57610381565b806310d5de531161035457806310d5de531461042b5780631694505e1461046857806318160ddd146104935780631a8145bb146104be57610381565b806306fdde0314610386578063095ea7b3146103b15780630f3a325f146103ee57610381565b3661038157005b600080fd5b34801561039257600080fd5b5061039b610d87565b6040516103a89190614600565b60405180910390f35b3480156103bd57600080fd5b506103d860048036038101906103d391906146bb565b610e19565b6040516103e59190614716565b60405180910390f35b3480156103fa57600080fd5b5061041560048036038101906104109190614731565b610e37565b6040516104229190614716565b60405180910390f35b34801561043757600080fd5b50610452600480360381019061044d9190614731565b610e8d565b60405161045f9190614716565b60405180910390f35b34801561047457600080fd5b5061047d610ead565b60405161048a91906147bd565b60405180910390f35b34801561049f57600080fd5b506104a8610ed1565b6040516104b591906147e7565b60405180910390f35b3480156104ca57600080fd5b506104d3610edb565b6040516104e091906147e7565b60405180910390f35b3480156104f557600080fd5b50610510600480360381019061050b9190614802565b610ee1565b60405161051d9190614716565b60405180910390f35b34801561053257600080fd5b5061054d60048036038101906105489190614855565b610fd9565b005b34801561055b57600080fd5b5061056461113c565b604051610571919061489e565b60405180910390f35b34801561058657600080fd5b506105a1600480360381019061059c91906146bb565b611145565b6040516105ae9190614716565b60405180910390f35b3480156105c357600080fd5b506105cc6111f1565b6040516105d991906148c8565b60405180910390f35b3480156105ee57600080fd5b506105f7611215565b6040516106049190614716565b60405180910390f35b34801561061957600080fd5b50610622611228565b60405161062f91906148c8565b60405180910390f35b34801561064457600080fd5b5061064d61124e565b60405161065a91906147e7565b60405180910390f35b34801561066f57600080fd5b5061068a6004803603810190610685919061490f565b611254565b005b34801561069857600080fd5b506106b360048036038101906106ae9190614731565b6113ee565b005b3480156106c157600080fd5b506106ca61157c565b6040516106d791906147e7565b60405180910390f35b3480156106ec57600080fd5b506107076004803603810190610702919061494f565b611582565b005b34801561071557600080fd5b5061071e611674565b60405161072b91906147e7565b60405180910390f35b34801561074057600080fd5b5061074961167a565b60405161075691906147e7565b60405180910390f35b34801561076b57600080fd5b50610774611680565b6040516107819190614716565b60405180910390f35b34801561079657600080fd5b506107b160048036038101906107ac9190614731565b611693565b6040516107be91906147e7565b60405180910390f35b3480156107d357600080fd5b506107dc6116db565b005b3480156107ea57600080fd5b506107f3611833565b005b34801561080157600080fd5b5061081c6004803603810190610817919061494f565b611913565b005b34801561082a57600080fd5b50610833611a9a565b60405161084091906147e7565b60405180910390f35b34801561085557600080fd5b50610870600480360381019061086b919061498f565b611aa0565b005b34801561087e57600080fd5b50610899600480360381019061089491906149e2565b611bba565b6040516108a69190614716565b60405180910390f35b3480156108bb57600080fd5b506108c4611df9565b6040516108d191906147e7565b60405180910390f35b3480156108e657600080fd5b5061090160048036038101906108fc9190614731565b611dff565b005b34801561090f57600080fd5b50610918611f8d565b60405161092591906148c8565b60405180910390f35b34801561093a57600080fd5b50610943611fb7565b6040516109509190614600565b60405180910390f35b34801561096557600080fd5b50610980600480360381019061097b919061494f565b612049565b005b34801561098e57600080fd5b506109a960048036038101906109a491906146bb565b61217d565b6040516109b69190614716565b60405180910390f35b3480156109cb57600080fd5b506109e660048036038101906109e191906146bb565b612268565b6040516109f39190614716565b60405180910390f35b348015610a0857600080fd5b50610a11612286565b604051610a1e91906147e7565b60405180910390f35b348015610a3357600080fd5b50610a4e6004803603810190610a499190614731565b61228c565b604051610a5b9190614716565b60405180910390f35b348015610a7057600080fd5b50610a796122ac565b604051610a8691906147e7565b60405180910390f35b348015610a9b57600080fd5b50610aa46122b2565b604051610ab19190614716565b60405180910390f35b348015610ac657600080fd5b50610ae16004803603810190610adc919061494f565b6122c5565b005b348015610aef57600080fd5b50610af8612405565b604051610b0591906148c8565b60405180910390f35b348015610b1a57600080fd5b50610b356004803603810190610b30919061498f565b61242b565b005b348015610b4357600080fd5b50610b5e6004803603810190610b599190614855565b612545565b005b348015610b6c57600080fd5b50610b876004803603810190610b829190614855565b6126a8565b005b348015610b9557600080fd5b50610b9e612755565b604051610bab91906147e7565b60405180910390f35b348015610bc057600080fd5b50610bc961275b565b604051610bd691906147e7565b60405180910390f35b348015610beb57600080fd5b50610c066004803603810190610c019190614855565b612761565b005b348015610c1457600080fd5b50610c2f6004803603810190610c2a91906149e2565b6128c4565b604051610c3c91906147e7565b60405180910390f35b348015610c5157600080fd5b50610c5a61294b565b604051610c6791906147e7565b60405180910390f35b348015610c7c57600080fd5b50610c85612951565b604051610c9291906147e7565b60405180910390f35b348015610ca757600080fd5b50610cb0612957565b604051610cbd91906147e7565b60405180910390f35b348015610cd257600080fd5b50610ced6004803603810190610ce89190614731565b61295d565b005b348015610cfb57600080fd5b50610d04612b24565b604051610d1191906147e7565b60405180910390f35b348015610d2657600080fd5b50610d2f612b2a565b005b348015610d3d57600080fd5b50610d46612c2b565b604051610d5391906147e7565b60405180910390f35b348015610d6857600080fd5b50610d71612c31565b604051610d7e91906147e7565b60405180910390f35b606060038054610d9690614a51565b80601f0160208091040260200160405190810160405280929190818152602001828054610dc290614a51565b8015610e0f5780601f10610de457610100808354040283529160200191610e0f565b820191906000526020600020905b815481529060010190602001808311610df257829003601f168201915b5050505050905090565b6000610e2d610e26612c37565b8484612c3f565b6001905092915050565b6000601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601c6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60195481565b6000610eee848484612e0a565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f39612c37565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610fb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb090614af5565b60405180910390fd5b610fcd85610fc5612c37565b858403612c3f565b60019150509392505050565b610fe1612c37565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106790614b61565b60405180910390fd5b670de0b6b3a76400006103e86001611086610ed1565b6110909190614bb0565b61109a9190614c39565b6110a49190614c39565b8110156110e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110dd90614cdc565b60405180910390fd5b670de0b6b3a7640000816110fa9190614bb0565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de4100960065460405161113191906147e7565b60405180910390a150565b60006012905090565b60006111e7611152612c37565b848460016000611160612c37565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111e29190614cfc565b612c3f565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600f60009054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b61125c612c37565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e290614b61565b60405180910390fd5b600f60019054906101000a900460ff161561133b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133290614d9e565b60405180910390fd5b81600f60016101000a81548160ff0219169083151502179055506001600f60026101000a81548160ff0219169083151502179055507fe185248899f361d51a48833938ab33493ebd7272d195abf7f51a833ea8138812600f60019054906101000a900460ff16826040516113b0929190614dbe565b60405180910390a1600f60019054906101000a900460ff1680156113d657506000600d54145b156113ea5743600d8190555080600e819055505b5050565b6113f6612c37565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147c90614b61565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ec90614e59565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f60405160405180910390a250565b60075481565b61158a612c37565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611619576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161090614b61565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60145481565b60155481565b600f60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116e3612c37565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176990614b61565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61183b612c37565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c190614b61565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b61191b612c37565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a190614b61565b60405180910390fd5b80611a3f577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3590614eeb565b60405180910390fd5b5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b611aa8612c37565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2e90614b61565b60405180910390fd5b826011819055508160128190555080601381905550601354601254601154611b5f9190614cfc565b611b699190614cfc565b601081905550601e6010541115611bb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bac90614f57565b60405180910390fd5b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2290614fc3565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb290615055565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611cf691906148c8565b602060405180830381865afa158015611d13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d37919061508a565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611d749291906150b7565b6020604051808303816000875af1158015611d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db791906150f5565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611dea9291906150b7565b60405180910390a15092915050565b60065481565b611e07612c37565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8d90614b61565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efd90615194565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f647cd1cbe5341aa880069f5c966ac6cf0ed473b7c0bf494fb7fc7ca46dc4cc7860405160405180910390a250565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611fc690614a51565b80601f0160208091040260200160405190810160405280929190818152602001828054611ff290614a51565b801561203f5780601f106120145761010080835404028352916020019161203f565b820191906000526020600020905b81548152906001019060200180831161202257829003601f168201915b5050505050905090565b612051612c37565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d790614b61565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561216f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216690615226565b60405180910390fd5b6121798282613c02565b5050565b6000806001600061218c612c37565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612249576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612240906152b8565b60405180910390fd5b61225d612254612c37565b85858403612c3f565b600191505092915050565b600061227c612275612c37565b8484612e0a565b6001905092915050565b60085481565b601d6020528060005260406000206000915054906101000a900460ff1681565b60175481565b600f60019054906101000a900460ff1681565b6122cd612c37565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461235c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235390614b61565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516123f99190614716565b60405180910390a25050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612433612c37565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b990614b61565b60405180910390fd5b8260158190555081601681905550806017819055506017546016546015546124ea9190614cfc565b6124f49190614cfc565b601481905550601e6014541115612540576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253790614f57565b60405180910390fd5b505050565b61254d612c37565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d390614b61565b60405180910390fd5b670de0b6b3a76400006103e860036125f2610ed1565b6125fc9190614bb0565b6126069190614c39565b6126109190614c39565b811015612652576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126499061534a565b60405180910390fd5b670de0b6b3a7640000816126669190614bb0565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc60085460405161269d91906147e7565b60405180910390a150565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272f90615055565b60405180910390fd5b670de0b6b3a76400008161274c9190614bb0565b600a8190555050565b60185481565b60105481565b612769612c37565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ef90614b61565b60405180910390fd5b670de0b6b3a76400006103e8600161280e610ed1565b6128189190614bb0565b6128229190614c39565b61282c9190614c39565b81101561286e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612865906153dc565b60405180910390fd5b670de0b6b3a7640000816128829190614bb0565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e6007546040516128b991906147e7565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600d5481565b60125481565b612965612c37565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129eb90614b61565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612a64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5b9061546e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a5481565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612bbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb390615055565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff1647604051612be0906154bf565b60006040518083038185875af1925050503d8060008114612c1d576040519150601f19603f3d011682016040523d82523d6000602084013e612c22565b606091505b50508091505050565b60165481565b600e5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca690615546565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d16906155d8565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612dfd91906147e7565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e719061566a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee1906156fc565b60405180910390fd5b60008111612f2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f2490615768565b60405180910390fd5b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb1906157d4565b60405180910390fd5b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613047576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161303e906157d4565b60405180910390fd5b600f60009054906101000a900460ff161561367457613064611f8d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156130d257506130a2611f8d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561310b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613145575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561367357600f60019054906101000a900460ff166132b457601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806131ff5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61323e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161323590615840565b60405180910390fd5b613246611f8d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146132b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132aa906158ac565b60405180910390fd5b5b6000600d541180156132d45750600e54600d546132d19190614cfc565b43105b15613332576001601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133d55750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561347c5760065481111561341f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134169061593e565b60405180910390fd5b60085461342b83611693565b826134369190614cfc565b1115613477576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161346e906159aa565b60405180910390fd5b613672565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561351f5750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561356e57600754811115613569576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161356090615a3c565b60405180910390fd5b613671565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156136125750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136705760085461362383611693565b8261362e9190614cfc565b111561366f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613666906159aa565b60405180910390fd5b5b5b5b5b5b600061367f30611693565b90506000600a5482101590508080156136a45750600f60029054906101000a900460ff165b80156136bd5750600960009054906101000a900460ff16155b80156137135750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137695750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137bf5750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613803576001600960006101000a81548160ff0219169083151502179055506137e7613cad565b6000600960006101000a81548160ff0219169083151502179055505b600060019050601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138aa5750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156138b457600090505b6000808215613bed576000600d541180156138dc5750436005600d546138da9190614cfc565b115b1561392e576064603c876138f09190614bb0565b6138fa9190614c39565b905061392988600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613f4a565b613bbe565b6000600d5411801561394d575043600a600d5461394b9190614cfc565b115b80156139665750436005600d546139649190614cfc565b105b1561398b57606460288761397a9190614bb0565b6139849190614c39565b9150613bbd565b601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156139e657506000601454115b15613aa5576064601454876139fb9190614bb0565b613a059190614c39565b915060145460165483613a189190614bb0565b613a229190614c39565b60196000828254613a339190614cfc565b9250508190555060145460155483613a4b9190614bb0565b613a559190614c39565b60186000828254613a669190614cfc565b9250508190555060145460175483613a7e9190614bb0565b613a889190614c39565b601a6000828254613a999190614cfc565b92505081905550613bbc565b601d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613b0057506000601054115b15613bbb57606460105487613b159190614bb0565b613b1f9190614c39565b915060105460125483613b329190614bb0565b613b3c9190614c39565b60196000828254613b4d9190614cfc565b9250508190555060105460115483613b659190614bb0565b613b6f9190614c39565b60186000828254613b809190614cfc565b9250508190555060105460135483613b989190614bb0565b613ba29190614c39565b601a6000828254613bb39190614cfc565b925050819055505b5b5b5b6000821115613bd357613bd2883084613f4a565b5b8082613bdf9190614cfc565b86613bea9190615a5c565b95505b613bf8888888613f4a565b5050505050505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613c6382826141b5565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000613cb830611693565b90506000601a54601854601954613ccf9190614cfc565b613cd99190614cfc565b90506000821480613cea5750600081145b15613cf6575050613f48565b6005600a54613d059190614bb0565b821115613d1e576005600a54613d1b9190614bb0565b91505b60008060028360195486613d329190614bb0565b613d3c9190614c39565b613d469190614c39565b9050613d5c8185613d579190615a5c565b614249565b6000479050600081905060006002601954613d779190614c39565b86613d829190615a5c565b60185484613d909190614bb0565b613d9a9190614c39565b905060006002601954613dad9190614c39565b87613db89190615a5c565b601a5485613dc69190614bb0565b613dd09190614c39565b90508082613dde9190614cfc565b83613de99190615a5c565b9250600060198190555060006018819055506000601a81905550600085118015613e135750600083115b15613e2357613e228584614486565b5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613e69906154bf565b60006040518083038185875af1925050503d8060008114613ea6576040519150601f19603f3d011682016040523d82523d6000602084013e613eab565b606091505b505080965050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613ef7906154bf565b60006040518083038185875af1925050503d8060008114613f34576040519150601f19603f3d011682016040523d82523d6000602084013e613f39565b606091505b50508096505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fb19061566a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561402a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614021906156fc565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156140b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140a790615b02565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546141439190614cfc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516141a791906147e7565b60405180910390a350505050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746828260405161423d929190615b22565b60405180910390a15050565b6000600267ffffffffffffffff81111561426657614265615b4b565b5b6040519080825280602002602001820160405280156142945781602001602082028036833780820191505090505b50905030816000815181106142ac576142ab615b7a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614351573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143759190615bbe565b8160018151811061438957614388615b7a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506143ee307f000000000000000000000000000000000000000000000000000000000000000084612c3f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614450959493929190615ce4565b600060405180830381600087803b15801561446a57600080fd5b505af115801561447e573d6000803e3d6000fd5b505050505050565b6144b1307f000000000000000000000000000000000000000000000000000000000000000084612c3f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806144fb611f8d565b426040518863ffffffff1660e01b815260040161451d96959493929190615d3e565b60606040518083038185885af115801561453b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906145609190615d9f565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156145a1578082015181840152602081019050614586565b838111156145b0576000848401525b50505050565b6000601f19601f8301169050919050565b60006145d282614567565b6145dc8185614572565b93506145ec818560208601614583565b6145f5816145b6565b840191505092915050565b6000602082019050818103600083015261461a81846145c7565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061465282614627565b9050919050565b61466281614647565b811461466d57600080fd5b50565b60008135905061467f81614659565b92915050565b6000819050919050565b61469881614685565b81146146a357600080fd5b50565b6000813590506146b58161468f565b92915050565b600080604083850312156146d2576146d1614622565b5b60006146e085828601614670565b92505060206146f1858286016146a6565b9150509250929050565b60008115159050919050565b614710816146fb565b82525050565b600060208201905061472b6000830184614707565b92915050565b60006020828403121561474757614746614622565b5b600061475584828501614670565b91505092915050565b6000819050919050565b600061478361477e61477984614627565b61475e565b614627565b9050919050565b600061479582614768565b9050919050565b60006147a78261478a565b9050919050565b6147b78161479c565b82525050565b60006020820190506147d260008301846147ae565b92915050565b6147e181614685565b82525050565b60006020820190506147fc60008301846147d8565b92915050565b60008060006060848603121561481b5761481a614622565b5b600061482986828701614670565b935050602061483a86828701614670565b925050604061484b868287016146a6565b9150509250925092565b60006020828403121561486b5761486a614622565b5b6000614879848285016146a6565b91505092915050565b600060ff82169050919050565b61489881614882565b82525050565b60006020820190506148b3600083018461488f565b92915050565b6148c281614647565b82525050565b60006020820190506148dd60008301846148b9565b92915050565b6148ec816146fb565b81146148f757600080fd5b50565b600081359050614909816148e3565b92915050565b6000806040838503121561492657614925614622565b5b6000614934858286016148fa565b9250506020614945858286016146a6565b9150509250929050565b6000806040838503121561496657614965614622565b5b600061497485828601614670565b9250506020614985858286016148fa565b9150509250929050565b6000806000606084860312156149a8576149a7614622565b5b60006149b6868287016146a6565b93505060206149c7868287016146a6565b92505060406149d8868287016146a6565b9150509250925092565b600080604083850312156149f9576149f8614622565b5b6000614a0785828601614670565b9250506020614a1885828601614670565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614a6957607f821691505b60208210811415614a7d57614a7c614a22565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614adf602883614572565b9150614aea82614a83565b604082019050919050565b60006020820190508181036000830152614b0e81614ad2565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614b4b602083614572565b9150614b5682614b15565b602082019050919050565b60006020820190508181036000830152614b7a81614b3e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614bbb82614685565b9150614bc683614685565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bff57614bfe614b81565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c4482614685565b9150614c4f83614685565b925082614c5f57614c5e614c0a565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614cc6602983614572565b9150614cd182614c6a565b604082019050919050565b60006020820190508181036000830152614cf581614cb9565b9050919050565b6000614d0782614685565b9150614d1283614685565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614d4757614d46614b81565b5b828201905092915050565b7f43616e6e6f7420726520656e61626c652074726164696e670000000000000000600082015250565b6000614d88601883614572565b9150614d9382614d52565b602082019050919050565b60006020820190508181036000830152614db781614d7b565b9050919050565b6000604082019050614dd36000830185614707565b614de060208301846147d8565b9392505050565b7f5f54726561737572794164647265737320616464726573732063616e6e6f742060008201527f6265203000000000000000000000000000000000000000000000000000000000602082015250565b6000614e43602483614572565b9150614e4e82614de7565b604082019050919050565b60006020820190508181036000830152614e7281614e36565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614ed5602783614572565b9150614ee082614e79565b604082019050919050565b60006020820190508181036000830152614f0481614ec8565b9050919050565b7f46656573206d7573742062652033302520206f72206c65737300000000000000600082015250565b6000614f41601983614572565b9150614f4c82614f0b565b602082019050919050565b60006020820190508181036000830152614f7081614f34565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000614fad601a83614572565b9150614fb882614f77565b602082019050919050565b60006020820190508181036000830152614fdc81614fa0565b9050919050565b7f6f6e6c79205472656173757279416464726573732063616e207769746864726160008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061503f602183614572565b915061504a82614fe3565b604082019050919050565b6000602082019050818103600083015261506e81615032565b9050919050565b6000815190506150848161468f565b92915050565b6000602082840312156150a05761509f614622565b5b60006150ae84828501615075565b91505092915050565b60006040820190506150cc60008301856148b9565b6150d960208301846147d8565b9392505050565b6000815190506150ef816148e3565b92915050565b60006020828403121561510b5761510a614622565b5b6000615119848285016150e0565b91505092915050565b7f5f526577617264734164647265737320616464726573732063616e6e6f74206260008201527f6520300000000000000000000000000000000000000000000000000000000000602082015250565b600061517e602383614572565b915061518982615122565b604082019050919050565b600060208201905081810360008301526151ad81615171565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000615210603983614572565b915061521b826151b4565b604082019050919050565b6000602082019050818103600083015261523f81615203565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006152a2602583614572565b91506152ad82615246565b604082019050919050565b600060208201905081810360008301526152d181615295565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b6000615334602c83614572565b915061533f826152d8565b604082019050919050565b6000602082019050818103600083015261536381615327565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b60006153c6602a83614572565b91506153d18261536a565b604082019050919050565b600060208201905081810360008301526153f5816153b9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615458602683614572565b9150615463826153fc565b604082019050919050565b600060208201905081810360008301526154878161544b565b9050919050565b600081905092915050565b50565b60006154a960008361548e565b91506154b482615499565b600082019050919050565b60006154ca8261549c565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615530602483614572565b915061553b826154d4565b604082019050919050565b6000602082019050818103600083015261555f81615523565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006155c2602283614572565b91506155cd82615566565b604082019050919050565b600060208201905081810360008301526155f1816155b5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000615654602583614572565b915061565f826155f8565b604082019050919050565b6000602082019050818103600083015261568381615647565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006156e6602383614572565b91506156f18261568a565b604082019050919050565b60006020820190508181036000830152615715816156d9565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b6000615752601d83614572565b915061575d8261571c565b602082019050919050565b6000602082019050818103600083015261578181615745565b9050919050565b7f596f7520617265206120736e697065722c20676574206c696665210000000000600082015250565b60006157be601b83614572565b91506157c982615788565b602082019050919050565b600060208201905081810360008301526157ed816157b1565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061582a601683614572565b9150615835826157f4565b602082019050919050565b600060208201905081810360008301526158598161581d565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656400000000000000000000600082015250565b6000615896601683614572565b91506158a182615860565b602082019050919050565b600060208201905081810360008301526158c581615889565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000615928602883614572565b9150615933826158cc565b604082019050919050565b600060208201905081810360008301526159578161591b565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b6000615994601883614572565b915061599f8261595e565b602082019050919050565b600060208201905081810360008301526159c381615987565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615a26602a83614572565b9150615a31826159ca565b604082019050919050565b60006020820190508181036000830152615a5581615a19565b9050919050565b6000615a6782614685565b9150615a7283614685565b925082821015615a8557615a84614b81565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615aec602683614572565b9150615af782615a90565b604082019050919050565b60006020820190508181036000830152615b1b81615adf565b9050919050565b6000604082019050615b3760008301856148b9565b615b446020830184614707565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615bb881614659565b92915050565b600060208284031215615bd457615bd3614622565b5b6000615be284828501615ba9565b91505092915050565b6000819050919050565b6000615c10615c0b615c0684615beb565b61475e565b614685565b9050919050565b615c2081615bf5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615c5b81614647565b82525050565b6000615c6d8383615c52565b60208301905092915050565b6000602082019050919050565b6000615c9182615c26565b615c9b8185615c31565b9350615ca683615c42565b8060005b83811015615cd7578151615cbe8882615c61565b9750615cc983615c79565b925050600181019050615caa565b5085935050505092915050565b600060a082019050615cf960008301886147d8565b615d066020830187615c17565b8181036040830152615d188186615c86565b9050615d2760608301856148b9565b615d3460808301846147d8565b9695505050505050565b600060c082019050615d5360008301896148b9565b615d6060208301886147d8565b615d6d6040830187615c17565b615d7a6060830186615c17565b615d8760808301856148b9565b615d9460a08301846147d8565b979650505050505050565b600080600060608486031215615db857615db7614622565b5b6000615dc686828701615075565b9350506020615dd786828701615075565b9250506040615de886828701615075565b915050925092509256fea2646970667358221220532c0aded5956ccb84aaf66873ede4e6dea42cb707e05f918ce27963a334d6a864736f6c634300080c0033

Deployed Bytecode

0x60806040526004361061037a5760003560e01c80638366e79a116101d1578063c17b5b8c11610102578063e2f45605116100a0578063f54afa781161006f578063f54afa7814610cef578063f5648a4f14610d1a578063f637434214610d31578063fabb0b4f14610d5c57610381565b8063e2f4560514610c45578063ee40166e14610c70578063f11a24d314610c9b578063f2fde38b14610cc657610381565b8063cc2ffe7c116100dc578063cc2ffe7c14610b89578063d85ba06314610bb4578063dc3f0d0f14610bdf578063dd62ed3e14610c0857610381565b8063c17b5b8c14610b0e578063c18bc19514610b37578063cc274b2914610b6057610381565b8063a9059cbb1161016f578063bb8d513111610149578063bb8d513114610a64578063bbc0c74214610a8f578063c024666814610aba578063c054f2f414610ae357610381565b8063a9059cbb146109bf578063aa4bde28146109fc578063b62496f514610a2757610381565b80638da5cb5b116101ab5780638da5cb5b1461090357806395d89b411461092e5780639a7a23d614610959578063a457c2d71461098257610381565b80638366e79a1461087257806388e765ff146108af5780638906758d146108da57610381565b80635c068a8c116102ab5780636ddd171311610249578063751039fc11610223578063751039fc146107de5780637571336a146107f557806377a3b6091461081e5780638095d5641461084957610381565b80636ddd17131461075f57806370a082311461078a578063715018a6146107c757610381565b806366d602ae1161028557806366d602ae146106b557806368092bd9146106e05780636a486a8e146107095780636b2fb1241461073457610381565b80635c068a8c146106385780635e83ae76146106635780636605bfda1461068c57610381565b806323b872dd1161031857806339509351116102f2578063395093511461057a57806349bd5a5e146105b75780634a62bb65146105e25780635b5c251f1461060d57610381565b806323b872dd146104e95780632be32b6114610526578063313ce5671461054f57610381565b806310d5de531161035457806310d5de531461042b5780631694505e1461046857806318160ddd146104935780631a8145bb146104be57610381565b806306fdde0314610386578063095ea7b3146103b15780630f3a325f146103ee57610381565b3661038157005b600080fd5b34801561039257600080fd5b5061039b610d87565b6040516103a89190614600565b60405180910390f35b3480156103bd57600080fd5b506103d860048036038101906103d391906146bb565b610e19565b6040516103e59190614716565b60405180910390f35b3480156103fa57600080fd5b5061041560048036038101906104109190614731565b610e37565b6040516104229190614716565b60405180910390f35b34801561043757600080fd5b50610452600480360381019061044d9190614731565b610e8d565b60405161045f9190614716565b60405180910390f35b34801561047457600080fd5b5061047d610ead565b60405161048a91906147bd565b60405180910390f35b34801561049f57600080fd5b506104a8610ed1565b6040516104b591906147e7565b60405180910390f35b3480156104ca57600080fd5b506104d3610edb565b6040516104e091906147e7565b60405180910390f35b3480156104f557600080fd5b50610510600480360381019061050b9190614802565b610ee1565b60405161051d9190614716565b60405180910390f35b34801561053257600080fd5b5061054d60048036038101906105489190614855565b610fd9565b005b34801561055b57600080fd5b5061056461113c565b604051610571919061489e565b60405180910390f35b34801561058657600080fd5b506105a1600480360381019061059c91906146bb565b611145565b6040516105ae9190614716565b60405180910390f35b3480156105c357600080fd5b506105cc6111f1565b6040516105d991906148c8565b60405180910390f35b3480156105ee57600080fd5b506105f7611215565b6040516106049190614716565b60405180910390f35b34801561061957600080fd5b50610622611228565b60405161062f91906148c8565b60405180910390f35b34801561064457600080fd5b5061064d61124e565b60405161065a91906147e7565b60405180910390f35b34801561066f57600080fd5b5061068a6004803603810190610685919061490f565b611254565b005b34801561069857600080fd5b506106b360048036038101906106ae9190614731565b6113ee565b005b3480156106c157600080fd5b506106ca61157c565b6040516106d791906147e7565b60405180910390f35b3480156106ec57600080fd5b506107076004803603810190610702919061494f565b611582565b005b34801561071557600080fd5b5061071e611674565b60405161072b91906147e7565b60405180910390f35b34801561074057600080fd5b5061074961167a565b60405161075691906147e7565b60405180910390f35b34801561076b57600080fd5b50610774611680565b6040516107819190614716565b60405180910390f35b34801561079657600080fd5b506107b160048036038101906107ac9190614731565b611693565b6040516107be91906147e7565b60405180910390f35b3480156107d357600080fd5b506107dc6116db565b005b3480156107ea57600080fd5b506107f3611833565b005b34801561080157600080fd5b5061081c6004803603810190610817919061494f565b611913565b005b34801561082a57600080fd5b50610833611a9a565b60405161084091906147e7565b60405180910390f35b34801561085557600080fd5b50610870600480360381019061086b919061498f565b611aa0565b005b34801561087e57600080fd5b50610899600480360381019061089491906149e2565b611bba565b6040516108a69190614716565b60405180910390f35b3480156108bb57600080fd5b506108c4611df9565b6040516108d191906147e7565b60405180910390f35b3480156108e657600080fd5b5061090160048036038101906108fc9190614731565b611dff565b005b34801561090f57600080fd5b50610918611f8d565b60405161092591906148c8565b60405180910390f35b34801561093a57600080fd5b50610943611fb7565b6040516109509190614600565b60405180910390f35b34801561096557600080fd5b50610980600480360381019061097b919061494f565b612049565b005b34801561098e57600080fd5b506109a960048036038101906109a491906146bb565b61217d565b6040516109b69190614716565b60405180910390f35b3480156109cb57600080fd5b506109e660048036038101906109e191906146bb565b612268565b6040516109f39190614716565b60405180910390f35b348015610a0857600080fd5b50610a11612286565b604051610a1e91906147e7565b60405180910390f35b348015610a3357600080fd5b50610a4e6004803603810190610a499190614731565b61228c565b604051610a5b9190614716565b60405180910390f35b348015610a7057600080fd5b50610a796122ac565b604051610a8691906147e7565b60405180910390f35b348015610a9b57600080fd5b50610aa46122b2565b604051610ab19190614716565b60405180910390f35b348015610ac657600080fd5b50610ae16004803603810190610adc919061494f565b6122c5565b005b348015610aef57600080fd5b50610af8612405565b604051610b0591906148c8565b60405180910390f35b348015610b1a57600080fd5b50610b356004803603810190610b30919061498f565b61242b565b005b348015610b4357600080fd5b50610b5e6004803603810190610b599190614855565b612545565b005b348015610b6c57600080fd5b50610b876004803603810190610b829190614855565b6126a8565b005b348015610b9557600080fd5b50610b9e612755565b604051610bab91906147e7565b60405180910390f35b348015610bc057600080fd5b50610bc961275b565b604051610bd691906147e7565b60405180910390f35b348015610beb57600080fd5b50610c066004803603810190610c019190614855565b612761565b005b348015610c1457600080fd5b50610c2f6004803603810190610c2a91906149e2565b6128c4565b604051610c3c91906147e7565b60405180910390f35b348015610c5157600080fd5b50610c5a61294b565b604051610c6791906147e7565b60405180910390f35b348015610c7c57600080fd5b50610c85612951565b604051610c9291906147e7565b60405180910390f35b348015610ca757600080fd5b50610cb0612957565b604051610cbd91906147e7565b60405180910390f35b348015610cd257600080fd5b50610ced6004803603810190610ce89190614731565b61295d565b005b348015610cfb57600080fd5b50610d04612b24565b604051610d1191906147e7565b60405180910390f35b348015610d2657600080fd5b50610d2f612b2a565b005b348015610d3d57600080fd5b50610d46612c2b565b604051610d5391906147e7565b60405180910390f35b348015610d6857600080fd5b50610d71612c31565b604051610d7e91906147e7565b60405180910390f35b606060038054610d9690614a51565b80601f0160208091040260200160405190810160405280929190818152602001828054610dc290614a51565b8015610e0f5780601f10610de457610100808354040283529160200191610e0f565b820191906000526020600020905b815481529060010190602001808311610df257829003601f168201915b5050505050905090565b6000610e2d610e26612c37565b8484612c3f565b6001905092915050565b6000601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601c6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60195481565b6000610eee848484612e0a565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f39612c37565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610fb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb090614af5565b60405180910390fd5b610fcd85610fc5612c37565b858403612c3f565b60019150509392505050565b610fe1612c37565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106790614b61565b60405180910390fd5b670de0b6b3a76400006103e86001611086610ed1565b6110909190614bb0565b61109a9190614c39565b6110a49190614c39565b8110156110e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110dd90614cdc565b60405180910390fd5b670de0b6b3a7640000816110fa9190614bb0565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de4100960065460405161113191906147e7565b60405180910390a150565b60006012905090565b60006111e7611152612c37565b848460016000611160612c37565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111e29190614cfc565b612c3f565b6001905092915050565b7f000000000000000000000000357475d63645b27dbfb3e0d13b45d16ffb14c67481565b600f60009054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b61125c612c37565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e290614b61565b60405180910390fd5b600f60019054906101000a900460ff161561133b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133290614d9e565b60405180910390fd5b81600f60016101000a81548160ff0219169083151502179055506001600f60026101000a81548160ff0219169083151502179055507fe185248899f361d51a48833938ab33493ebd7272d195abf7f51a833ea8138812600f60019054906101000a900460ff16826040516113b0929190614dbe565b60405180910390a1600f60019054906101000a900460ff1680156113d657506000600d54145b156113ea5743600d8190555080600e819055505b5050565b6113f6612c37565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147c90614b61565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ec90614e59565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f60405160405180910390a250565b60075481565b61158a612c37565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611619576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161090614b61565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60145481565b60155481565b600f60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116e3612c37565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176990614b61565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61183b612c37565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c190614b61565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b61191b612c37565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a190614b61565b60405180910390fd5b80611a3f577f000000000000000000000000357475d63645b27dbfb3e0d13b45d16ffb14c67473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3590614eeb565b60405180910390fd5b5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b611aa8612c37565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2e90614b61565b60405180910390fd5b826011819055508160128190555080601381905550601354601254601154611b5f9190614cfc565b611b699190614cfc565b601081905550601e6010541115611bb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bac90614f57565b60405180910390fd5b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2290614fc3565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb290615055565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611cf691906148c8565b602060405180830381865afa158015611d13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d37919061508a565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611d749291906150b7565b6020604051808303816000875af1158015611d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db791906150f5565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611dea9291906150b7565b60405180910390a15092915050565b60065481565b611e07612c37565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8d90614b61565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efd90615194565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f647cd1cbe5341aa880069f5c966ac6cf0ed473b7c0bf494fb7fc7ca46dc4cc7860405160405180910390a250565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611fc690614a51565b80601f0160208091040260200160405190810160405280929190818152602001828054611ff290614a51565b801561203f5780601f106120145761010080835404028352916020019161203f565b820191906000526020600020905b81548152906001019060200180831161202257829003601f168201915b5050505050905090565b612051612c37565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d790614b61565b60405180910390fd5b7f000000000000000000000000357475d63645b27dbfb3e0d13b45d16ffb14c67473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561216f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216690615226565b60405180910390fd5b6121798282613c02565b5050565b6000806001600061218c612c37565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612249576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612240906152b8565b60405180910390fd5b61225d612254612c37565b85858403612c3f565b600191505092915050565b600061227c612275612c37565b8484612e0a565b6001905092915050565b60085481565b601d6020528060005260406000206000915054906101000a900460ff1681565b60175481565b600f60019054906101000a900460ff1681565b6122cd612c37565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461235c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235390614b61565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516123f99190614716565b60405180910390a25050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612433612c37565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b990614b61565b60405180910390fd5b8260158190555081601681905550806017819055506017546016546015546124ea9190614cfc565b6124f49190614cfc565b601481905550601e6014541115612540576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253790614f57565b60405180910390fd5b505050565b61254d612c37565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d390614b61565b60405180910390fd5b670de0b6b3a76400006103e860036125f2610ed1565b6125fc9190614bb0565b6126069190614c39565b6126109190614c39565b811015612652576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126499061534a565b60405180910390fd5b670de0b6b3a7640000816126669190614bb0565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc60085460405161269d91906147e7565b60405180910390a150565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272f90615055565b60405180910390fd5b670de0b6b3a76400008161274c9190614bb0565b600a8190555050565b60185481565b60105481565b612769612c37565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ef90614b61565b60405180910390fd5b670de0b6b3a76400006103e8600161280e610ed1565b6128189190614bb0565b6128229190614c39565b61282c9190614c39565b81101561286e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612865906153dc565b60405180910390fd5b670de0b6b3a7640000816128829190614bb0565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e6007546040516128b991906147e7565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600d5481565b60125481565b612965612c37565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129eb90614b61565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612a64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5b9061546e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a5481565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612bbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb390615055565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff1647604051612be0906154bf565b60006040518083038185875af1925050503d8060008114612c1d576040519150601f19603f3d011682016040523d82523d6000602084013e612c22565b606091505b50508091505050565b60165481565b600e5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca690615546565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d16906155d8565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612dfd91906147e7565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e719061566a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee1906156fc565b60405180910390fd5b60008111612f2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f2490615768565b60405180910390fd5b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb1906157d4565b60405180910390fd5b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613047576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161303e906157d4565b60405180910390fd5b600f60009054906101000a900460ff161561367457613064611f8d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156130d257506130a2611f8d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561310b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613145575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561367357600f60019054906101000a900460ff166132b457601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806131ff5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61323e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161323590615840565b60405180910390fd5b613246611f8d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146132b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132aa906158ac565b60405180910390fd5b5b6000600d541180156132d45750600e54600d546132d19190614cfc565b43105b15613332576001601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133d55750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561347c5760065481111561341f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134169061593e565b60405180910390fd5b60085461342b83611693565b826134369190614cfc565b1115613477576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161346e906159aa565b60405180910390fd5b613672565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561351f5750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561356e57600754811115613569576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161356090615a3c565b60405180910390fd5b613671565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156136125750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136705760085461362383611693565b8261362e9190614cfc565b111561366f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613666906159aa565b60405180910390fd5b5b5b5b5b5b600061367f30611693565b90506000600a5482101590508080156136a45750600f60029054906101000a900460ff165b80156136bd5750600960009054906101000a900460ff16155b80156137135750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137695750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137bf5750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613803576001600960006101000a81548160ff0219169083151502179055506137e7613cad565b6000600960006101000a81548160ff0219169083151502179055505b600060019050601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138aa5750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156138b457600090505b6000808215613bed576000600d541180156138dc5750436005600d546138da9190614cfc565b115b1561392e576064603c876138f09190614bb0565b6138fa9190614c39565b905061392988600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613f4a565b613bbe565b6000600d5411801561394d575043600a600d5461394b9190614cfc565b115b80156139665750436005600d546139649190614cfc565b105b1561398b57606460288761397a9190614bb0565b6139849190614c39565b9150613bbd565b601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156139e657506000601454115b15613aa5576064601454876139fb9190614bb0565b613a059190614c39565b915060145460165483613a189190614bb0565b613a229190614c39565b60196000828254613a339190614cfc565b9250508190555060145460155483613a4b9190614bb0565b613a559190614c39565b60186000828254613a669190614cfc565b9250508190555060145460175483613a7e9190614bb0565b613a889190614c39565b601a6000828254613a999190614cfc565b92505081905550613bbc565b601d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613b0057506000601054115b15613bbb57606460105487613b159190614bb0565b613b1f9190614c39565b915060105460125483613b329190614bb0565b613b3c9190614c39565b60196000828254613b4d9190614cfc565b9250508190555060105460115483613b659190614bb0565b613b6f9190614c39565b60186000828254613b809190614cfc565b9250508190555060105460135483613b989190614bb0565b613ba29190614c39565b601a6000828254613bb39190614cfc565b925050819055505b5b5b5b6000821115613bd357613bd2883084613f4a565b5b8082613bdf9190614cfc565b86613bea9190615a5c565b95505b613bf8888888613f4a565b5050505050505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613c6382826141b5565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000613cb830611693565b90506000601a54601854601954613ccf9190614cfc565b613cd99190614cfc565b90506000821480613cea5750600081145b15613cf6575050613f48565b6005600a54613d059190614bb0565b821115613d1e576005600a54613d1b9190614bb0565b91505b60008060028360195486613d329190614bb0565b613d3c9190614c39565b613d469190614c39565b9050613d5c8185613d579190615a5c565b614249565b6000479050600081905060006002601954613d779190614c39565b86613d829190615a5c565b60185484613d909190614bb0565b613d9a9190614c39565b905060006002601954613dad9190614c39565b87613db89190615a5c565b601a5485613dc69190614bb0565b613dd09190614c39565b90508082613dde9190614cfc565b83613de99190615a5c565b9250600060198190555060006018819055506000601a81905550600085118015613e135750600083115b15613e2357613e228584614486565b5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613e69906154bf565b60006040518083038185875af1925050503d8060008114613ea6576040519150601f19603f3d011682016040523d82523d6000602084013e613eab565b606091505b505080965050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613ef7906154bf565b60006040518083038185875af1925050503d8060008114613f34576040519150601f19603f3d011682016040523d82523d6000602084013e613f39565b606091505b50508096505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fb19061566a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561402a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614021906156fc565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156140b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140a790615b02565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546141439190614cfc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516141a791906147e7565b60405180910390a350505050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746828260405161423d929190615b22565b60405180910390a15050565b6000600267ffffffffffffffff81111561426657614265615b4b565b5b6040519080825280602002602001820160405280156142945781602001602082028036833780820191505090505b50905030816000815181106142ac576142ab615b7a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614351573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143759190615bbe565b8160018151811061438957614388615b7a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506143ee307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612c3f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614450959493929190615ce4565b600060405180830381600087803b15801561446a57600080fd5b505af115801561447e573d6000803e3d6000fd5b505050505050565b6144b1307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612c3f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806144fb611f8d565b426040518863ffffffff1660e01b815260040161451d96959493929190615d3e565b60606040518083038185885af115801561453b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906145609190615d9f565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156145a1578082015181840152602081019050614586565b838111156145b0576000848401525b50505050565b6000601f19601f8301169050919050565b60006145d282614567565b6145dc8185614572565b93506145ec818560208601614583565b6145f5816145b6565b840191505092915050565b6000602082019050818103600083015261461a81846145c7565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061465282614627565b9050919050565b61466281614647565b811461466d57600080fd5b50565b60008135905061467f81614659565b92915050565b6000819050919050565b61469881614685565b81146146a357600080fd5b50565b6000813590506146b58161468f565b92915050565b600080604083850312156146d2576146d1614622565b5b60006146e085828601614670565b92505060206146f1858286016146a6565b9150509250929050565b60008115159050919050565b614710816146fb565b82525050565b600060208201905061472b6000830184614707565b92915050565b60006020828403121561474757614746614622565b5b600061475584828501614670565b91505092915050565b6000819050919050565b600061478361477e61477984614627565b61475e565b614627565b9050919050565b600061479582614768565b9050919050565b60006147a78261478a565b9050919050565b6147b78161479c565b82525050565b60006020820190506147d260008301846147ae565b92915050565b6147e181614685565b82525050565b60006020820190506147fc60008301846147d8565b92915050565b60008060006060848603121561481b5761481a614622565b5b600061482986828701614670565b935050602061483a86828701614670565b925050604061484b868287016146a6565b9150509250925092565b60006020828403121561486b5761486a614622565b5b6000614879848285016146a6565b91505092915050565b600060ff82169050919050565b61489881614882565b82525050565b60006020820190506148b3600083018461488f565b92915050565b6148c281614647565b82525050565b60006020820190506148dd60008301846148b9565b92915050565b6148ec816146fb565b81146148f757600080fd5b50565b600081359050614909816148e3565b92915050565b6000806040838503121561492657614925614622565b5b6000614934858286016148fa565b9250506020614945858286016146a6565b9150509250929050565b6000806040838503121561496657614965614622565b5b600061497485828601614670565b9250506020614985858286016148fa565b9150509250929050565b6000806000606084860312156149a8576149a7614622565b5b60006149b6868287016146a6565b93505060206149c7868287016146a6565b92505060406149d8868287016146a6565b9150509250925092565b600080604083850312156149f9576149f8614622565b5b6000614a0785828601614670565b9250506020614a1885828601614670565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614a6957607f821691505b60208210811415614a7d57614a7c614a22565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614adf602883614572565b9150614aea82614a83565b604082019050919050565b60006020820190508181036000830152614b0e81614ad2565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614b4b602083614572565b9150614b5682614b15565b602082019050919050565b60006020820190508181036000830152614b7a81614b3e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614bbb82614685565b9150614bc683614685565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bff57614bfe614b81565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c4482614685565b9150614c4f83614685565b925082614c5f57614c5e614c0a565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614cc6602983614572565b9150614cd182614c6a565b604082019050919050565b60006020820190508181036000830152614cf581614cb9565b9050919050565b6000614d0782614685565b9150614d1283614685565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614d4757614d46614b81565b5b828201905092915050565b7f43616e6e6f7420726520656e61626c652074726164696e670000000000000000600082015250565b6000614d88601883614572565b9150614d9382614d52565b602082019050919050565b60006020820190508181036000830152614db781614d7b565b9050919050565b6000604082019050614dd36000830185614707565b614de060208301846147d8565b9392505050565b7f5f54726561737572794164647265737320616464726573732063616e6e6f742060008201527f6265203000000000000000000000000000000000000000000000000000000000602082015250565b6000614e43602483614572565b9150614e4e82614de7565b604082019050919050565b60006020820190508181036000830152614e7281614e36565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614ed5602783614572565b9150614ee082614e79565b604082019050919050565b60006020820190508181036000830152614f0481614ec8565b9050919050565b7f46656573206d7573742062652033302520206f72206c65737300000000000000600082015250565b6000614f41601983614572565b9150614f4c82614f0b565b602082019050919050565b60006020820190508181036000830152614f7081614f34565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000614fad601a83614572565b9150614fb882614f77565b602082019050919050565b60006020820190508181036000830152614fdc81614fa0565b9050919050565b7f6f6e6c79205472656173757279416464726573732063616e207769746864726160008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061503f602183614572565b915061504a82614fe3565b604082019050919050565b6000602082019050818103600083015261506e81615032565b9050919050565b6000815190506150848161468f565b92915050565b6000602082840312156150a05761509f614622565b5b60006150ae84828501615075565b91505092915050565b60006040820190506150cc60008301856148b9565b6150d960208301846147d8565b9392505050565b6000815190506150ef816148e3565b92915050565b60006020828403121561510b5761510a614622565b5b6000615119848285016150e0565b91505092915050565b7f5f526577617264734164647265737320616464726573732063616e6e6f74206260008201527f6520300000000000000000000000000000000000000000000000000000000000602082015250565b600061517e602383614572565b915061518982615122565b604082019050919050565b600060208201905081810360008301526151ad81615171565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000615210603983614572565b915061521b826151b4565b604082019050919050565b6000602082019050818103600083015261523f81615203565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006152a2602583614572565b91506152ad82615246565b604082019050919050565b600060208201905081810360008301526152d181615295565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b6000615334602c83614572565b915061533f826152d8565b604082019050919050565b6000602082019050818103600083015261536381615327565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b60006153c6602a83614572565b91506153d18261536a565b604082019050919050565b600060208201905081810360008301526153f5816153b9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615458602683614572565b9150615463826153fc565b604082019050919050565b600060208201905081810360008301526154878161544b565b9050919050565b600081905092915050565b50565b60006154a960008361548e565b91506154b482615499565b600082019050919050565b60006154ca8261549c565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615530602483614572565b915061553b826154d4565b604082019050919050565b6000602082019050818103600083015261555f81615523565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006155c2602283614572565b91506155cd82615566565b604082019050919050565b600060208201905081810360008301526155f1816155b5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000615654602583614572565b915061565f826155f8565b604082019050919050565b6000602082019050818103600083015261568381615647565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006156e6602383614572565b91506156f18261568a565b604082019050919050565b60006020820190508181036000830152615715816156d9565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b6000615752601d83614572565b915061575d8261571c565b602082019050919050565b6000602082019050818103600083015261578181615745565b9050919050565b7f596f7520617265206120736e697065722c20676574206c696665210000000000600082015250565b60006157be601b83614572565b91506157c982615788565b602082019050919050565b600060208201905081810360008301526157ed816157b1565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061582a601683614572565b9150615835826157f4565b602082019050919050565b600060208201905081810360008301526158598161581d565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656400000000000000000000600082015250565b6000615896601683614572565b91506158a182615860565b602082019050919050565b600060208201905081810360008301526158c581615889565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000615928602883614572565b9150615933826158cc565b604082019050919050565b600060208201905081810360008301526159578161591b565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b6000615994601883614572565b915061599f8261595e565b602082019050919050565b600060208201905081810360008301526159c381615987565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615a26602a83614572565b9150615a31826159ca565b604082019050919050565b60006020820190508181036000830152615a5581615a19565b9050919050565b6000615a6782614685565b9150615a7283614685565b925082821015615a8557615a84614b81565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615aec602683614572565b9150615af782615a90565b604082019050919050565b60006020820190508181036000830152615b1b81615adf565b9050919050565b6000604082019050615b3760008301856148b9565b615b446020830184614707565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615bb881614659565b92915050565b600060208284031215615bd457615bd3614622565b5b6000615be284828501615ba9565b91505092915050565b6000819050919050565b6000615c10615c0b615c0684615beb565b61475e565b614685565b9050919050565b615c2081615bf5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615c5b81614647565b82525050565b6000615c6d8383615c52565b60208301905092915050565b6000602082019050919050565b6000615c9182615c26565b615c9b8185615c31565b9350615ca683615c42565b8060005b83811015615cd7578151615cbe8882615c61565b9750615cc983615c79565b925050600181019050615caa565b5085935050505092915050565b600060a082019050615cf960008301886147d8565b615d066020830187615c17565b8181036040830152615d188186615c86565b9050615d2760608301856148b9565b615d3460808301846147d8565b9695505050505050565b600060c082019050615d5360008301896148b9565b615d6060208301886147d8565b615d6d6040830187615c17565b615d7a6060830186615c17565b615d8760808301856148b9565b615d9460a08301846147d8565b979650505050505050565b600080600060608486031215615db857615db7614622565b5b6000615dc686828701615075565b9350506020615dd786828701615075565b9250506040615de886828701615075565b915050925092509256fea2646970667358221220532c0aded5956ccb84aaf66873ede4e6dea42cb707e05f918ce27963a334d6a864736f6c634300080c0033

Deployed Bytecode Sourcemap

7344:15987:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2062:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2976:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20946:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8501:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7498:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2383:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8306:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3153:480;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11364:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2282:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3641:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7548:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7855:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7665:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8009:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22899:425;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20376:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7424:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21060:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8119:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8154:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7935:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2499:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6103:150;;;;;;;;;;;;;:::i;:::-;;11973:115;;;;;;;;;;;;;:::i;:::-;;12313:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8082:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13849:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13088:452;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7390:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20665:273;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5889:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2170:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19584:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3864:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2634:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7459:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8723:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8229:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7895:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14628:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7702:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14234:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12588:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12880:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8267:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7975:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11641:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2817:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7623:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7740:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8045:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6261:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8346:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13610:231;;;;;;;;;;;;;:::i;:::-;;8191:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7817:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2062:100;2116:13;2149:5;2142:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2062:100;:::o;2976:169::-;3059:4;3076:39;3085:12;:10;:12::i;:::-;3099:7;3108:6;3076:8;:39::i;:::-;3133:4;3126:11;;2976:169;;;;:::o;20946:106::-;21002:4;21026:9;:18;21036:7;21026:18;;;;;;;;;;;;;;;;;;;;;;;;;21019:25;;20946:106;;;:::o;8501:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;7498:43::-;;;:::o;2383:108::-;2444:7;2471:12;;2464:19;;2383:108;:::o;8306:33::-;;;;:::o;3153:480::-;3293:4;3310:36;3320:6;3328:9;3339:6;3310:9;:36::i;:::-;3359:24;3386:11;:19;3398:6;3386:19;;;;;;;;;;;;;;;:33;3406:12;:10;:12::i;:::-;3386:33;;;;;;;;;;;;;;;;3359:60;;3458:6;3438:16;:26;;3430:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;3537:57;3546:6;3554:12;:10;:12::i;:::-;3587:6;3568:16;:25;3537:8;:57::i;:::-;3621:4;3614:11;;;3153:480;;;;;:::o;11364:269::-;6026:12;:10;:12::i;:::-;6016:22;;:6;;;;;;;;;;;:22;;;6008:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11483:4:::1;11477;11473:1;11457:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;11456:31;;;;:::i;:::-;11446:6;:41;;11438:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;11569:6;11559;:17;;;;:::i;:::-;11544:12;:32;;;;11592:33;11612:12;;11592:33;;;;;;:::i;:::-;;;;;;;;11364:269:::0;:::o;2282:93::-;2340:5;2365:2;2358:9;;2282:93;:::o;3641:215::-;3729:4;3746:80;3755:12;:10;:12::i;:::-;3769:7;3815:10;3778:11;:25;3790:12;:10;:12::i;:::-;3778:25;;;;;;;;;;;;;;;:34;3804:7;3778:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;3746:8;:80::i;:::-;3844:4;3837:11;;3641:215;;;;:::o;7548:38::-;;;:::o;7855:33::-;;;;;;;;;;;;;:::o;7665:30::-;;;;;;;;;;;;;:::o;8009:29::-;;;;:::o;22899:425::-;6026:12;:10;:12::i;:::-;6016:22;;:6;;;;;;;;;;;:22;;;6008:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22996:13:::1;;;;;;;;;;;22995:14;22987:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;23065:7;23049:13;;:23;;;;;;;;;;;;;;;;;;23097:4;23083:11;;:18;;;;;;;;;;;;;;;;;;23117:42;23132:13;;;;;;;;;;;23147:11;23117:42;;;;;;;:::i;:::-;;;;;;;;23176:13;;;;;;;;;;;:40;;;;;23215:1;23193:18;;:23;23176:40;23172:145;;;23254:12;23233:18;:33;;;;23294:11;23281:10;:24;;;;23172:145;22899:425:::0;;:::o;20376:281::-;6026:12;:10;:12::i;:::-;6016:22;;:6;;;;;;;;;;;:22;;;6008:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20496:1:::1;20468:30;;:16;:30;;;;20460:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;20576:16;20550:15;;:43;;;;;;;;;;;;;;;;;;20632:16;20609:40;;;;;;;;;;;;20376:281:::0;:::o;7424:28::-;;;;:::o;21060:111::-;6026:12;:10;:12::i;:::-;6016:22;;:6;;;;;;;;;;;:22;;;6008:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21157:6:::1;21139:9;:15;21149:4;21139:15;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;21060:111:::0;;:::o;8119:28::-;;;;:::o;8154:30::-;;;;:::o;7935:31::-;;;;;;;;;;;;;:::o;2499:127::-;2573:7;2600:9;:18;2610:7;2600:18;;;;;;;;;;;;;;;;2593:25;;2499:127;;;:::o;6103:150::-;6026:12;:10;:12::i;:::-;6016:22;;:6;;;;;;;;;;;:22;;;6008:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6212:1:::1;6175:40;;6196:6;;;;;;;;;;;6175:40;;;;;;;;;;;;6243:1;6226:6;;:19;;;;;;;;;;;;;;;;;;6103:150::o:0;11973:115::-;6026:12;:10;:12::i;:::-;6016:22;;:6;;;;;;;;;;;:22;;;6008:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12044:5:::1;12027:14;;:22;;;;;;;;;;;;;;;;;;12065:15;;;;;;;;;;11973:115::o:0;12313:267::-;6026:12;:10;:12::i;:::-;6016:22;;:6;;;;;;;;;;;:22;;;6008:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12409:4:::1;12405:111;;12447:13;12437:23;;:6;:23;;;;12429:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;12405:111;12568:4;12526:31;:39;12558:6;12526:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;12313:267:::0;;:::o;8082:28::-;;;;:::o;13849:377::-;6026:12;:10;:12::i;:::-;6016:22;;:6;;;;;;;;;;;:22;;;6008:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13985:12:::1;13968:14;:29;;;;14026:13;14008:15;:31;;;;14066:11;14050:13;:27;;;;14138:13;;14120:15;;14103:14;;:32;;;;:::i;:::-;:48;;;;:::i;:::-;14088:12;:63;;;;14186:2;14170:12;;:18;;14162:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;13849:377:::0;;;:::o;13088:452::-;13163:10;13212:1;13194:20;;:6;:20;;;;13186:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;13276:15;;;;;;;;;;;13264:27;;:10;:27;;;13256:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;13339:24;13373:6;13366:24;;;13399:4;13366:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13339:66;;13431:6;13424:23;;;13448:3;13453:16;13424:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13416:54;;13486:46;13507:6;13515:16;13486:46;;;;;;;:::i;:::-;;;;;;;;13175:365;13088:452;;;;:::o;7390:27::-;;;;:::o;20665:273::-;6026:12;:10;:12::i;:::-;6016:22;;:6;;;;;;;;;;;:22;;;6008:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20782:1:::1;20755:29;;:15;:29;;;;20747:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;20860:15;20835:14;;:41;;;;;;;;;;;;;;;;;;20914:15;20892:38;;;;;;;;;;;;20665:273:::0;:::o;5889:79::-;5927:7;5954:6;;;;;;;;;;;5947:13;;5889:79;:::o;2170:104::-;2226:13;2259:7;2252:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2170:104;:::o;19584:246::-;6026:12;:10;:12::i;:::-;6016:22;;:6;;;;;;;;;;;:22;;;6008:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19693:13:::1;19685:21;;:4;:21;;;;19677:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;19781:41;19810:4;19816:5;19781:28;:41::i;:::-;19584:246:::0;;:::o;3864:401::-;3957:4;3974:24;4001:11;:25;4013:12;:10;:12::i;:::-;4001:25;;;;;;;;;;;;;;;:34;4027:7;4001:34;;;;;;;;;;;;;;;;3974:61;;4074:15;4054:16;:35;;4046:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4159:67;4168:12;:10;:12::i;:::-;4182:7;4210:15;4191:16;:34;4159:8;:67::i;:::-;4253:4;4246:11;;;3864:401;;;;:::o;2634:175::-;2720:4;2737:42;2747:12;:10;:12::i;:::-;2761:9;2772:6;2737:9;:42::i;:::-;2797:4;2790:11;;2634:175;;;;:::o;7459:30::-;;;;:::o;8723:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;8229:29::-;;;;:::o;7895:33::-;;;;;;;;;;;;;:::o;14628:182::-;6026:12;:10;:12::i;:::-;6016:22;;:6;;;;;;;;;;;:22;;;6008:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14744:8:::1;14713:19;:28;14733:7;14713:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14784:7;14768:34;;;14793:8;14768:34;;;;;;:::i;:::-;;;;;;;;14628:182:::0;;:::o;7702:29::-;;;;;;;;;;;;;:::o;14234:386::-;6026:12;:10;:12::i;:::-;6016:22;;:6;;;;;;;;;;;:22;;;6008:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14372:12:::1;14354:15;:30;;;;14414:13;14395:16;:32;;;;14455:11;14438:14;:28;;;;14530:14;;14511:16;;14493:15;;:34;;;;:::i;:::-;:51;;;;:::i;:::-;14477:13;:67;;;;14580:2;14563:13;;:19;;14555:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;14234:386:::0;;;:::o;12588:284::-;6026:12;:10;:12::i;:::-;6016:22;;:6;;;;;;;;;;;:22;;;6008:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12710:4:::1;12704;12700:1;12684:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;12683:31;;;;:::i;:::-;12673:6;:41;;12665:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;12802:6;12792;:17;;;;:::i;:::-;12774:15;:35;;;;12825:39;12848:15;;12825:39;;;;;;:::i;:::-;;;;;;;;12588:284:::0;:::o;12880:198::-;12967:15;;;;;;;;;;;12955:27;;:10;:27;;;12947:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;13063:6;13051:9;:19;;;;:::i;:::-;13030:18;:40;;;;12880:198;:::o;8267:32::-;;;;:::o;7975:27::-;;;;:::o;11641:274::-;6026:12;:10;:12::i;:::-;6016:22;;:6;;;;;;;;;;;:22;;;6008:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11761:4:::1;11755;11751:1;11735:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;11734:31;;;;:::i;:::-;11724:6;:41;;11716:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;11849:6;11839;:17;;;;:::i;:::-;11823:13;:33;;;;11872:35;11893:13;;11872:35;;;;;;:::i;:::-;;;;;;;;11641:274:::0;:::o;2817:151::-;2906:7;2933:11;:18;2945:5;2933:18;;;;;;;;;;;;;;;:27;2952:7;2933:27;;;;;;;;;;;;;;;;2926:34;;2817:151;;;;:::o;7623:33::-;;;;:::o;7740:37::-;;;;:::o;8045:30::-;;;;:::o;6261:244::-;6026:12;:10;:12::i;:::-;6016:22;;:6;;;;;;;;;;;:22;;;6008:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6370:1:::1;6350:22;;:8;:22;;;;6342:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6460:8;6431:38;;6452:6;;;;;;;;;;;6431:38;;;;;;;;;;;;6489:8;6480:6;;:17;;;;;;;;;;;;;;;;;;6261:244:::0;:::o;8346:31::-;;;;:::o;13610:231::-;13656:12;13699:15;;;;;;;;;;;13687:27;;:10;:27;;;13679:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;13783:10;13775:24;;13807:21;13775:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13762:71;;;;;13645:196;13610:231::o;8191:31::-;;;;:::o;7817:29::-;;;;:::o;501:98::-;554:7;581:10;574:17;;501:98;:::o;5182:380::-;5335:1;5318:19;;:5;:19;;;;5310:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5416:1;5397:21;;:7;:21;;;;5389:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5500:6;5470:11;:18;5482:5;5470:18;;;;;;;;;;;;;;;:27;5489:7;5470:27;;;;;;;;;;;;;;;:36;;;;5538:7;5522:32;;5531:5;5522:32;;;5547:6;5522:32;;;;;;:::i;:::-;;;;;;;;5182:380;;;:::o;14820:4157::-;14936:1;14920:18;;:4;:18;;;;14912:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15013:1;14999:16;;:2;:16;;;;14991:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15083:1;15074:6;:10;15066:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;15138:9;:15;15148:4;15138:15;;;;;;;;;;;;;;;;;;;;;;;;;15137:16;15129:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;15205:9;:13;15215:2;15205:13;;;;;;;;;;;;;;;;;;;;;;;;;15204:14;15196:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;15268:14;;;;;;;;;;;15265:1390;;;15310:7;:5;:7::i;:::-;15302:15;;:4;:15;;;;:32;;;;;15327:7;:5;:7::i;:::-;15321:13;;:2;:13;;;;15302:32;:52;;;;;15352:1;15338:16;;:2;:16;;;;15302:52;:77;;;;;15372:6;15358:21;;:2;:21;;;;15302:77;15298:1346;;;15403:13;;;;;;;;;;;15399:245;;15448:31;:37;15480:4;15448:37;;;;;;;;;;;;;;;;;;;;;;;;;:76;;;;15489:31;:35;15521:2;15489:35;;;;;;;;;;;;;;;;;;;;;;;;;15448:76;15440:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;15590:7;:5;:7::i;:::-;15582:15;;:4;:15;;;15574:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;15399:245;15689:1;15668:18;;:22;:74;;;;;15731:10;;15710:18;;:31;;;;:::i;:::-;15694:12;:48;15668:74;15664:144;;;15784:4;15768:9;:13;15778:2;15768:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;15664:144;15860:25;:31;15886:4;15860:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;15896:31;:35;15928:2;15896:35;;;;;;;;;;;;;;;;;;;;;;;;;15895:36;15860:71;15856:773;;;15974:12;;15964:6;:22;;15956:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;16088:15;;16071:13;16081:2;16071:9;:13::i;:::-;16062:6;:22;;;;:::i;:::-;:41;;16054:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;15856:773;;;16208:25;:29;16234:2;16208:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;16242:31;:37;16274:4;16242:37;;;;;;;;;;;;;;;;;;;;;;;;;16241:38;16208:71;16204:425;;;16322:13;;16312:6;:23;;16304:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;16204:425;;;16430:31;:35;16462:2;16430:35;;;;;;;;;;;;;;;;;;;;;;;;;16429:36;:78;;;;;16470:31;:37;16502:4;16470:37;;;;;;;;;;;;;;;;;;;;;;;;;16469:38;16429:78;16425:204;;;16565:15;;16548:13;16558:2;16548:9;:13::i;:::-;16539:6;:22;;;;:::i;:::-;:41;;16531:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;16425:204;16204:425;15856:773;15298:1346;15265:1390;16667:28;16698:24;16716:4;16698:9;:24::i;:::-;16667:55;;16735:12;16774:18;;16750:20;:42;;16735:57;;16808:7;:22;;;;;16819:11;;;;;;;;;;;16808:22;:35;;;;;16835:8;;;;;;;;;;;16834:9;16808:35;:71;;;;;16848:25;:31;16874:4;16848:31;;;;;;;;;;;;;;;;;;;;;;;;;16847:32;16808:71;:101;;;;;16884:19;:25;16904:4;16884:25;;;;;;;;;;;;;;;;;;;;;;;;;16883:26;16808:101;:129;;;;;16914:19;:23;16934:2;16914:23;;;;;;;;;;;;;;;;;;;;;;;;;16913:24;16808:129;16805:236;;;16965:4;16954:8;;:15;;;;;;;;;;;;;;;;;;16986:10;:8;:10::i;:::-;17024:5;17013:8;;:16;;;;;;;;;;;;;;;;;;16805:236;17053:12;17068:4;17053:19;;17171;:25;17191:4;17171:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;17200:19;:23;17220:2;17200:23;;;;;;;;;;;;;;;;;;;;;;;;;17171:52;17168:99;;;17250:5;17240:15;;17168:99;17279:12;17306:21;17409:7;17406:1518;;;17561:1;17542:18;;:20;:63;;;;;17593:12;17588:1;17567:18;;:22;;;;:::i;:::-;17566:39;17542:63;17539:1208;;;17655:3;17650:2;17641:6;:11;;;;:::i;:::-;:17;;;;:::i;:::-;17625:33;;17677:52;17693:4;17699:14;;;;;;;;;;;17715:13;17677:15;:52::i;:::-;17539:1208;;;17800:1;17781:18;;:20;:64;;;;;17833:12;17827:2;17806:18;;:23;;;;:::i;:::-;17805:40;17781:64;:107;;;;;17876:12;17871:1;17850:18;;:22;;;;:::i;:::-;17849:39;17781:107;17778:969;;;17930:3;17925:2;17916:6;:11;;;;:::i;:::-;:17;;;;:::i;:::-;17909:24;;17778:969;;;17998:25;:29;18024:2;17998:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;18047:1;18031:13;;:17;17998:50;17994:753;;;18099:3;18084:13;;18075:6;:22;;;;:::i;:::-;:27;;;;:::i;:::-;18068:34;;18169:13;;18150:16;;18143:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;18121:18;;:61;;;;;;;:::i;:::-;;;;;;;;18247:13;;18229:15;;18222:4;:22;;;;:::i;:::-;:38;;;;:::i;:::-;18201:17;;:59;;;;;;;:::i;:::-;;;;;;;;18323:13;;18306:14;;18299:4;:21;;;;:::i;:::-;:37;;;;:::i;:::-;18279:16;;:57;;;;;;;:::i;:::-;;;;;;;;17994:753;;;18397:25;:31;18423:4;18397:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;18447:1;18432:12;;:16;18397:51;18394:353;;;18500:3;18485:12;;18476:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;18469:34;;18569:12;;18551:15;;18544:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;18522:18;;:59;;;;;;;:::i;:::-;;;;;;;;18645:12;;18628:14;;18621:4;:21;;;;:::i;:::-;:36;;;;:::i;:::-;18600:17;;:57;;;;;;;:::i;:::-;;;;;;;;18719:12;;18703:13;;18696:4;:20;;;;:::i;:::-;:35;;;;:::i;:::-;18676:16;;:55;;;;;;;:::i;:::-;;;;;;;;18394:353;17994:753;17778:969;17539:1208;18787:1;18780:4;:8;18777:89;;;18808:42;18824:4;18838;18845;18808:15;:42::i;:::-;18777:89;18899:13;18892:4;:20;;;;:::i;:::-;18882:30;;;;;:::i;:::-;;;17406:1518;18936:33;18952:4;18958:2;18962:6;18936:15;:33::i;:::-;14899:4078;;;;;14820:4157;;;:::o;22603:240::-;22720:5;22686:25;:31;22712:4;22686:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22738;22765:4;22771:5;22738:26;:39::i;:::-;22829:5;22795:40;;22823:4;22795:40;;;;;;;;;;;;22603:240;;:::o;21182:1413::-;21221:23;21247:24;21265:4;21247:9;:24::i;:::-;21221:50;;21282:25;21351:16;;21331:17;;21310:18;;:38;;;;:::i;:::-;:57;;;;:::i;:::-;21282:85;;21402:1;21383:15;:20;:46;;;;21428:1;21407:17;:22;21383:46;21380:60;;;21432:7;;;;21380:60;21494:1;21473:18;;:22;;;;:::i;:::-;21455:15;:40;21452:111;;;21550:1;21529:18;;:22;;;;:::i;:::-;21511:40;;21452:111;21575:12;21649:23;21734:1;21714:17;21693:18;;21675:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;21649:86;;21748:51;21783:15;21765;:33;;;;:::i;:::-;21748:16;:51::i;:::-;21812:18;21833:21;21812:42;;21865:23;21891:10;21865:36;;21914:22;22013:1;21994:18;;:20;;;;:::i;:::-;21973:17;:42;;;;:::i;:::-;21952:17;;21939:10;:30;;;;:::i;:::-;:77;;;;:::i;:::-;21914:102;;22027:21;22124:1;22105:18;;:20;;;;:::i;:::-;22084:17;:42;;;;:::i;:::-;22064:16;;22051:10;:29;;;;:::i;:::-;:76;;;;:::i;:::-;22027:100;;22176:13;22159:14;:30;;;;:::i;:::-;22140:49;;;;;:::i;:::-;;;22223:1;22202:18;:22;;;;22255:1;22235:17;:21;;;;22286:1;22267:16;:20;;;;22321:1;22303:15;:19;:42;;;;;22344:1;22326:15;:19;22303:42;22300:119;;;22361:46;22374:15;22391;22361:12;:46::i;:::-;22300:119;22452:14;;;;;;;;;;;22444:28;;22480:13;22444:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22431:67;;;;;22532:15;;;;;;;;;;;22524:29;;22561:21;22524:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22511:76;;;;;21210:1385;;;;;;;;21182:1413;:::o;4273:602::-;4431:1;4413:20;;:6;:20;;;;4405:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4515:1;4494:23;;:9;:23;;;;4486:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4570:21;4594:9;:17;4604:6;4594:17;;;;;;;;;;;;;;;;4570:41;;4647:6;4630:13;:23;;4622:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;4760:6;4744:13;:22;4724:9;:17;4734:6;4724:17;;;;;;;;;;;;;;;:42;;;;4808:6;4784:9;:20;4794:9;4784:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;4849:9;4832:35;;4841:6;4832:35;;;4860:6;4832:35;;;;;;:::i;:::-;;;;;;;;4394:481;4273:602;;;:::o;12098:207::-;12228:10;12186:31;:39;12218:6;12186:39;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;12254:43;12278:6;12286:10;12254:43;;;;;;;:::i;:::-;;;;;;;;12098:207;;:::o;18985:591::-;19113:21;19151:1;19137:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19113:40;;19182:4;19164;19169:1;19164:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19208:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19198:4;19203:1;19198:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;19243:62;19260:4;19275:15;19293:11;19243:8;:62::i;:::-;19344:15;:66;;;19425:11;19451:1;19495:4;19522;19542:15;19344:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19040:536;18985:591;:::o;19846:522::-;19994:62;20011:4;20026:15;20044:11;19994:8;:62::i;:::-;20099:15;:31;;;20138:9;20171:4;20191:11;20217:1;20260;20311:7;:5;:7::i;:::-;20334:15;20099:261;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19846:522;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:144::-;4243:9;4276:37;4307:5;4276:37;:::i;:::-;4263:50;;4175:144;;;:::o;4325:167::-;4430:55;4479:5;4430:55;:::i;:::-;4425:3;4418:68;4325:167;;:::o;4498:258::-;4609:4;4647:2;4636:9;4632:18;4624:26;;4660:89;4746:1;4735:9;4731:17;4722:6;4660:89;:::i;:::-;4498:258;;;;:::o;4762:118::-;4849:24;4867:5;4849:24;:::i;:::-;4844:3;4837:37;4762:118;;:::o;4886:222::-;4979:4;5017:2;5006:9;5002:18;4994:26;;5030:71;5098:1;5087:9;5083:17;5074:6;5030:71;:::i;:::-;4886:222;;;;:::o;5114:619::-;5191:6;5199;5207;5256:2;5244:9;5235:7;5231:23;5227:32;5224:119;;;5262:79;;:::i;:::-;5224:119;5382:1;5407:53;5452:7;5443:6;5432:9;5428:22;5407:53;:::i;:::-;5397:63;;5353:117;5509:2;5535:53;5580:7;5571:6;5560:9;5556:22;5535:53;:::i;:::-;5525:63;;5480:118;5637:2;5663:53;5708:7;5699:6;5688:9;5684:22;5663:53;:::i;:::-;5653:63;;5608:118;5114:619;;;;;:::o;5739:329::-;5798:6;5847:2;5835:9;5826:7;5822:23;5818:32;5815:119;;;5853:79;;:::i;:::-;5815:119;5973:1;5998:53;6043:7;6034:6;6023:9;6019:22;5998:53;:::i;:::-;5988:63;;5944:117;5739:329;;;;:::o;6074:86::-;6109:7;6149:4;6142:5;6138:16;6127:27;;6074:86;;;:::o;6166:112::-;6249:22;6265:5;6249:22;:::i;:::-;6244:3;6237:35;6166:112;;:::o;6284:214::-;6373:4;6411:2;6400:9;6396:18;6388:26;;6424:67;6488:1;6477:9;6473:17;6464:6;6424:67;:::i;:::-;6284:214;;;;:::o;6504:118::-;6591:24;6609:5;6591:24;:::i;:::-;6586:3;6579:37;6504:118;;:::o;6628:222::-;6721:4;6759:2;6748:9;6744:18;6736:26;;6772:71;6840:1;6829:9;6825:17;6816:6;6772:71;:::i;:::-;6628:222;;;;:::o;6856:116::-;6926:21;6941:5;6926:21;:::i;:::-;6919:5;6916:32;6906:60;;6962:1;6959;6952:12;6906:60;6856:116;:::o;6978:133::-;7021:5;7059:6;7046:20;7037:29;;7075:30;7099:5;7075:30;:::i;:::-;6978:133;;;;:::o;7117:468::-;7182:6;7190;7239:2;7227:9;7218:7;7214:23;7210:32;7207:119;;;7245:79;;:::i;:::-;7207:119;7365:1;7390:50;7432:7;7423:6;7412:9;7408:22;7390:50;:::i;:::-;7380:60;;7336:114;7489:2;7515:53;7560:7;7551:6;7540:9;7536:22;7515:53;:::i;:::-;7505:63;;7460:118;7117:468;;;;;:::o;7591:::-;7656:6;7664;7713:2;7701:9;7692:7;7688:23;7684:32;7681:119;;;7719:79;;:::i;:::-;7681:119;7839:1;7864:53;7909:7;7900:6;7889:9;7885:22;7864:53;:::i;:::-;7854:63;;7810:117;7966:2;7992:50;8034:7;8025:6;8014:9;8010:22;7992:50;:::i;:::-;7982:60;;7937:115;7591:468;;;;;:::o;8065:619::-;8142:6;8150;8158;8207:2;8195:9;8186:7;8182:23;8178:32;8175:119;;;8213:79;;:::i;:::-;8175:119;8333:1;8358:53;8403:7;8394:6;8383:9;8379:22;8358:53;:::i;:::-;8348:63;;8304:117;8460:2;8486:53;8531:7;8522:6;8511:9;8507:22;8486:53;:::i;:::-;8476:63;;8431:118;8588:2;8614:53;8659:7;8650:6;8639:9;8635:22;8614:53;:::i;:::-;8604:63;;8559:118;8065:619;;;;;:::o;8690:474::-;8758:6;8766;8815:2;8803:9;8794:7;8790:23;8786:32;8783:119;;;8821:79;;:::i;:::-;8783:119;8941:1;8966:53;9011:7;9002:6;8991:9;8987:22;8966:53;:::i;:::-;8956:63;;8912:117;9068:2;9094:53;9139:7;9130:6;9119:9;9115:22;9094:53;:::i;:::-;9084:63;;9039:118;8690:474;;;;;:::o;9170:180::-;9218:77;9215:1;9208:88;9315:4;9312:1;9305:15;9339:4;9336:1;9329:15;9356:320;9400:6;9437:1;9431:4;9427:12;9417:22;;9484:1;9478:4;9474:12;9505:18;9495:81;;9561:4;9553:6;9549:17;9539:27;;9495:81;9623:2;9615:6;9612:14;9592:18;9589:38;9586:84;;;9642:18;;:::i;:::-;9586:84;9407:269;9356:320;;;:::o;9682:227::-;9822:34;9818:1;9810:6;9806:14;9799:58;9891:10;9886:2;9878:6;9874:15;9867:35;9682:227;:::o;9915:366::-;10057:3;10078:67;10142:2;10137:3;10078:67;:::i;:::-;10071:74;;10154:93;10243:3;10154:93;:::i;:::-;10272:2;10267:3;10263:12;10256:19;;9915:366;;;:::o;10287:419::-;10453:4;10491:2;10480:9;10476:18;10468:26;;10540:9;10534:4;10530:20;10526:1;10515:9;10511:17;10504:47;10568:131;10694:4;10568:131;:::i;:::-;10560:139;;10287:419;;;:::o;10712:182::-;10852:34;10848:1;10840:6;10836:14;10829:58;10712:182;:::o;10900:366::-;11042:3;11063:67;11127:2;11122:3;11063:67;:::i;:::-;11056:74;;11139:93;11228:3;11139:93;:::i;:::-;11257:2;11252:3;11248:12;11241:19;;10900:366;;;:::o;11272:419::-;11438:4;11476:2;11465:9;11461:18;11453:26;;11525:9;11519:4;11515:20;11511:1;11500:9;11496:17;11489:47;11553:131;11679:4;11553:131;:::i;:::-;11545:139;;11272:419;;;:::o;11697:180::-;11745:77;11742:1;11735:88;11842:4;11839:1;11832:15;11866:4;11863:1;11856:15;11883:348;11923:7;11946:20;11964:1;11946:20;:::i;:::-;11941:25;;11980:20;11998:1;11980:20;:::i;:::-;11975:25;;12168:1;12100:66;12096:74;12093:1;12090:81;12085:1;12078:9;12071:17;12067:105;12064:131;;;12175:18;;:::i;:::-;12064:131;12223:1;12220;12216:9;12205:20;;11883:348;;;;:::o;12237:180::-;12285:77;12282:1;12275:88;12382:4;12379:1;12372:15;12406:4;12403:1;12396:15;12423:185;12463:1;12480:20;12498:1;12480:20;:::i;:::-;12475:25;;12514:20;12532:1;12514:20;:::i;:::-;12509:25;;12553:1;12543:35;;12558:18;;:::i;:::-;12543:35;12600:1;12597;12593:9;12588:14;;12423:185;;;;:::o;12614:228::-;12754:34;12750:1;12742:6;12738:14;12731:58;12823:11;12818:2;12810:6;12806:15;12799:36;12614:228;:::o;12848:366::-;12990:3;13011:67;13075:2;13070:3;13011:67;:::i;:::-;13004:74;;13087:93;13176:3;13087:93;:::i;:::-;13205:2;13200:3;13196:12;13189:19;;12848:366;;;:::o;13220:419::-;13386:4;13424:2;13413:9;13409:18;13401:26;;13473:9;13467:4;13463:20;13459:1;13448:9;13444:17;13437:47;13501:131;13627:4;13501:131;:::i;:::-;13493:139;;13220:419;;;:::o;13645:305::-;13685:3;13704:20;13722:1;13704:20;:::i;:::-;13699:25;;13738:20;13756:1;13738:20;:::i;:::-;13733:25;;13892:1;13824:66;13820:74;13817:1;13814:81;13811:107;;;13898:18;;:::i;:::-;13811:107;13942:1;13939;13935:9;13928:16;;13645:305;;;;:::o;13956:174::-;14096:26;14092:1;14084:6;14080:14;14073:50;13956:174;:::o;14136:366::-;14278:3;14299:67;14363:2;14358:3;14299:67;:::i;:::-;14292:74;;14375:93;14464:3;14375:93;:::i;:::-;14493:2;14488:3;14484:12;14477:19;;14136:366;;;:::o;14508:419::-;14674:4;14712:2;14701:9;14697:18;14689:26;;14761:9;14755:4;14751:20;14747:1;14736:9;14732:17;14725:47;14789:131;14915:4;14789:131;:::i;:::-;14781:139;;14508:419;;;:::o;14933:320::-;15048:4;15086:2;15075:9;15071:18;15063:26;;15099:65;15161:1;15150:9;15146:17;15137:6;15099:65;:::i;:::-;15174:72;15242:2;15231:9;15227:18;15218:6;15174:72;:::i;:::-;14933:320;;;;;:::o;15259:223::-;15399:34;15395:1;15387:6;15383:14;15376:58;15468:6;15463:2;15455:6;15451:15;15444:31;15259:223;:::o;15488:366::-;15630:3;15651:67;15715:2;15710:3;15651:67;:::i;:::-;15644:74;;15727:93;15816:3;15727:93;:::i;:::-;15845:2;15840:3;15836:12;15829:19;;15488:366;;;:::o;15860:419::-;16026:4;16064:2;16053:9;16049:18;16041:26;;16113:9;16107:4;16103:20;16099:1;16088:9;16084:17;16077:47;16141:131;16267:4;16141:131;:::i;:::-;16133:139;;15860:419;;;:::o;16285:226::-;16425:34;16421:1;16413:6;16409:14;16402:58;16494:9;16489:2;16481:6;16477:15;16470:34;16285:226;:::o;16517:366::-;16659:3;16680:67;16744:2;16739:3;16680:67;:::i;:::-;16673:74;;16756:93;16845:3;16756:93;:::i;:::-;16874:2;16869:3;16865:12;16858:19;;16517:366;;;:::o;16889:419::-;17055:4;17093:2;17082:9;17078:18;17070:26;;17142:9;17136:4;17132:20;17128:1;17117:9;17113:17;17106:47;17170:131;17296:4;17170:131;:::i;:::-;17162:139;;16889:419;;;:::o;17314:175::-;17454:27;17450:1;17442:6;17438:14;17431:51;17314:175;:::o;17495:366::-;17637:3;17658:67;17722:2;17717:3;17658:67;:::i;:::-;17651:74;;17734:93;17823:3;17734:93;:::i;:::-;17852:2;17847:3;17843:12;17836:19;;17495:366;;;:::o;17867:419::-;18033:4;18071:2;18060:9;18056:18;18048:26;;18120:9;18114:4;18110:20;18106:1;18095:9;18091:17;18084:47;18148:131;18274:4;18148:131;:::i;:::-;18140:139;;17867:419;;;:::o;18292:176::-;18432:28;18428:1;18420:6;18416:14;18409:52;18292:176;:::o;18474:366::-;18616:3;18637:67;18701:2;18696:3;18637:67;:::i;:::-;18630:74;;18713:93;18802:3;18713:93;:::i;:::-;18831:2;18826:3;18822:12;18815:19;;18474:366;;;:::o;18846:419::-;19012:4;19050:2;19039:9;19035:18;19027:26;;19099:9;19093:4;19089:20;19085:1;19074:9;19070:17;19063:47;19127:131;19253:4;19127:131;:::i;:::-;19119:139;;18846:419;;;:::o;19271:220::-;19411:34;19407:1;19399:6;19395:14;19388:58;19480:3;19475:2;19467:6;19463:15;19456:28;19271:220;:::o;19497:366::-;19639:3;19660:67;19724:2;19719:3;19660:67;:::i;:::-;19653:74;;19736:93;19825:3;19736:93;:::i;:::-;19854:2;19849:3;19845:12;19838:19;;19497:366;;;:::o;19869:419::-;20035:4;20073:2;20062:9;20058:18;20050:26;;20122:9;20116:4;20112:20;20108:1;20097:9;20093:17;20086:47;20150:131;20276:4;20150:131;:::i;:::-;20142:139;;19869:419;;;:::o;20294:143::-;20351:5;20382:6;20376:13;20367:22;;20398:33;20425:5;20398:33;:::i;:::-;20294:143;;;;:::o;20443:351::-;20513:6;20562:2;20550:9;20541:7;20537:23;20533:32;20530:119;;;20568:79;;:::i;:::-;20530:119;20688:1;20713:64;20769:7;20760:6;20749:9;20745:22;20713:64;:::i;:::-;20703:74;;20659:128;20443:351;;;;:::o;20800:332::-;20921:4;20959:2;20948:9;20944:18;20936:26;;20972:71;21040:1;21029:9;21025:17;21016:6;20972:71;:::i;:::-;21053:72;21121:2;21110:9;21106:18;21097:6;21053:72;:::i;:::-;20800:332;;;;;:::o;21138:137::-;21192:5;21223:6;21217:13;21208:22;;21239:30;21263:5;21239:30;:::i;:::-;21138:137;;;;:::o;21281:345::-;21348:6;21397:2;21385:9;21376:7;21372:23;21368:32;21365:119;;;21403:79;;:::i;:::-;21365:119;21523:1;21548:61;21601:7;21592:6;21581:9;21577:22;21548:61;:::i;:::-;21538:71;;21494:125;21281:345;;;;:::o;21632:222::-;21772:34;21768:1;21760:6;21756:14;21749:58;21841:5;21836:2;21828:6;21824:15;21817:30;21632:222;:::o;21860:366::-;22002:3;22023:67;22087:2;22082:3;22023:67;:::i;:::-;22016:74;;22099:93;22188:3;22099:93;:::i;:::-;22217:2;22212:3;22208:12;22201:19;;21860:366;;;:::o;22232:419::-;22398:4;22436:2;22425:9;22421:18;22413:26;;22485:9;22479:4;22475:20;22471:1;22460:9;22456:17;22449:47;22513:131;22639:4;22513:131;:::i;:::-;22505:139;;22232:419;;;:::o;22657:244::-;22797:34;22793:1;22785:6;22781:14;22774:58;22866:27;22861:2;22853:6;22849:15;22842:52;22657:244;:::o;22907:366::-;23049:3;23070:67;23134:2;23129:3;23070:67;:::i;:::-;23063:74;;23146:93;23235:3;23146:93;:::i;:::-;23264:2;23259:3;23255:12;23248:19;;22907:366;;;:::o;23279:419::-;23445:4;23483:2;23472:9;23468:18;23460:26;;23532:9;23526:4;23522:20;23518:1;23507:9;23503:17;23496:47;23560:131;23686:4;23560:131;:::i;:::-;23552:139;;23279:419;;;:::o;23704:224::-;23844:34;23840:1;23832:6;23828:14;23821:58;23913:7;23908:2;23900:6;23896:15;23889:32;23704:224;:::o;23934:366::-;24076:3;24097:67;24161:2;24156:3;24097:67;:::i;:::-;24090:74;;24173:93;24262:3;24173:93;:::i;:::-;24291:2;24286:3;24282:12;24275:19;;23934:366;;;:::o;24306:419::-;24472:4;24510:2;24499:9;24495:18;24487:26;;24559:9;24553:4;24549:20;24545:1;24534:9;24530:17;24523:47;24587:131;24713:4;24587:131;:::i;:::-;24579:139;;24306:419;;;:::o;24731:231::-;24871:34;24867:1;24859:6;24855:14;24848:58;24940:14;24935:2;24927:6;24923:15;24916:39;24731:231;:::o;24968:366::-;25110:3;25131:67;25195:2;25190:3;25131:67;:::i;:::-;25124:74;;25207:93;25296:3;25207:93;:::i;:::-;25325:2;25320:3;25316:12;25309:19;;24968:366;;;:::o;25340:419::-;25506:4;25544:2;25533:9;25529:18;25521:26;;25593:9;25587:4;25583:20;25579:1;25568:9;25564:17;25557:47;25621:131;25747:4;25621:131;:::i;:::-;25613:139;;25340:419;;;:::o;25765:229::-;25905:34;25901:1;25893:6;25889:14;25882:58;25974:12;25969:2;25961:6;25957:15;25950:37;25765:229;:::o;26000:366::-;26142:3;26163:67;26227:2;26222:3;26163:67;:::i;:::-;26156:74;;26239:93;26328:3;26239:93;:::i;:::-;26357:2;26352:3;26348:12;26341:19;;26000:366;;;:::o;26372:419::-;26538:4;26576:2;26565:9;26561:18;26553:26;;26625:9;26619:4;26615:20;26611:1;26600:9;26596:17;26589:47;26653:131;26779:4;26653:131;:::i;:::-;26645:139;;26372:419;;;:::o;26797:225::-;26937:34;26933:1;26925:6;26921:14;26914:58;27006:8;27001:2;26993:6;26989:15;26982:33;26797:225;:::o;27028:366::-;27170:3;27191:67;27255:2;27250:3;27191:67;:::i;:::-;27184:74;;27267:93;27356:3;27267:93;:::i;:::-;27385:2;27380:3;27376:12;27369:19;;27028:366;;;:::o;27400:419::-;27566:4;27604:2;27593:9;27589:18;27581:26;;27653:9;27647:4;27643:20;27639:1;27628:9;27624:17;27617:47;27681:131;27807:4;27681:131;:::i;:::-;27673:139;;27400:419;;;:::o;27825:147::-;27926:11;27963:3;27948:18;;27825:147;;;;:::o;27978:114::-;;:::o;28098:398::-;28257:3;28278:83;28359:1;28354:3;28278:83;:::i;:::-;28271:90;;28370:93;28459:3;28370:93;:::i;:::-;28488:1;28483:3;28479:11;28472:18;;28098:398;;;:::o;28502:379::-;28686:3;28708:147;28851:3;28708:147;:::i;:::-;28701:154;;28872:3;28865:10;;28502:379;;;:::o;28887:223::-;29027:34;29023:1;29015:6;29011:14;29004:58;29096:6;29091:2;29083:6;29079:15;29072:31;28887:223;:::o;29116:366::-;29258:3;29279:67;29343:2;29338:3;29279:67;:::i;:::-;29272:74;;29355:93;29444:3;29355:93;:::i;:::-;29473:2;29468:3;29464:12;29457:19;;29116:366;;;:::o;29488:419::-;29654:4;29692:2;29681:9;29677:18;29669:26;;29741:9;29735:4;29731:20;29727:1;29716:9;29712:17;29705:47;29769:131;29895:4;29769:131;:::i;:::-;29761:139;;29488:419;;;:::o;29913:221::-;30053:34;30049:1;30041:6;30037:14;30030:58;30122:4;30117:2;30109:6;30105:15;30098:29;29913:221;:::o;30140:366::-;30282:3;30303:67;30367:2;30362:3;30303:67;:::i;:::-;30296:74;;30379:93;30468:3;30379:93;:::i;:::-;30497:2;30492:3;30488:12;30481:19;;30140:366;;;:::o;30512:419::-;30678:4;30716:2;30705:9;30701:18;30693:26;;30765:9;30759:4;30755:20;30751:1;30740:9;30736:17;30729:47;30793:131;30919:4;30793:131;:::i;:::-;30785:139;;30512:419;;;:::o;30937:224::-;31077:34;31073:1;31065:6;31061:14;31054:58;31146:7;31141:2;31133:6;31129:15;31122:32;30937:224;:::o;31167:366::-;31309:3;31330:67;31394:2;31389:3;31330:67;:::i;:::-;31323:74;;31406:93;31495:3;31406:93;:::i;:::-;31524:2;31519:3;31515:12;31508:19;;31167:366;;;:::o;31539:419::-;31705:4;31743:2;31732:9;31728:18;31720:26;;31792:9;31786:4;31782:20;31778:1;31767:9;31763:17;31756:47;31820:131;31946:4;31820:131;:::i;:::-;31812:139;;31539:419;;;:::o;31964:222::-;32104:34;32100:1;32092:6;32088:14;32081:58;32173:5;32168:2;32160:6;32156:15;32149:30;31964:222;:::o;32192:366::-;32334:3;32355:67;32419:2;32414:3;32355:67;:::i;:::-;32348:74;;32431:93;32520:3;32431:93;:::i;:::-;32549:2;32544:3;32540:12;32533:19;;32192:366;;;:::o;32564:419::-;32730:4;32768:2;32757:9;32753:18;32745:26;;32817:9;32811:4;32807:20;32803:1;32792:9;32788:17;32781:47;32845:131;32971:4;32845:131;:::i;:::-;32837:139;;32564:419;;;:::o;32989:179::-;33129:31;33125:1;33117:6;33113:14;33106:55;32989:179;:::o;33174:366::-;33316:3;33337:67;33401:2;33396:3;33337:67;:::i;:::-;33330:74;;33413:93;33502:3;33413:93;:::i;:::-;33531:2;33526:3;33522:12;33515:19;;33174:366;;;:::o;33546:419::-;33712:4;33750:2;33739:9;33735:18;33727:26;;33799:9;33793:4;33789:20;33785:1;33774:9;33770:17;33763:47;33827:131;33953:4;33827:131;:::i;:::-;33819:139;;33546:419;;;:::o;33971:177::-;34111:29;34107:1;34099:6;34095:14;34088:53;33971:177;:::o;34154:366::-;34296:3;34317:67;34381:2;34376:3;34317:67;:::i;:::-;34310:74;;34393:93;34482:3;34393:93;:::i;:::-;34511:2;34506:3;34502:12;34495:19;;34154:366;;;:::o;34526:419::-;34692:4;34730:2;34719:9;34715:18;34707:26;;34779:9;34773:4;34769:20;34765:1;34754:9;34750:17;34743:47;34807:131;34933:4;34807:131;:::i;:::-;34799:139;;34526:419;;;:::o;34951:172::-;35091:24;35087:1;35079:6;35075:14;35068:48;34951:172;:::o;35129:366::-;35271:3;35292:67;35356:2;35351:3;35292:67;:::i;:::-;35285:74;;35368:93;35457:3;35368:93;:::i;:::-;35486:2;35481:3;35477:12;35470:19;;35129:366;;;:::o;35501:419::-;35667:4;35705:2;35694:9;35690:18;35682:26;;35754:9;35748:4;35744:20;35740:1;35729:9;35725:17;35718:47;35782:131;35908:4;35782:131;:::i;:::-;35774:139;;35501:419;;;:::o;35926:172::-;36066:24;36062:1;36054:6;36050:14;36043:48;35926:172;:::o;36104:366::-;36246:3;36267:67;36331:2;36326:3;36267:67;:::i;:::-;36260:74;;36343:93;36432:3;36343:93;:::i;:::-;36461:2;36456:3;36452:12;36445:19;;36104:366;;;:::o;36476:419::-;36642:4;36680:2;36669:9;36665:18;36657:26;;36729:9;36723:4;36719:20;36715:1;36704:9;36700:17;36693:47;36757:131;36883:4;36757:131;:::i;:::-;36749:139;;36476:419;;;:::o;36901:227::-;37041:34;37037:1;37029:6;37025:14;37018:58;37110:10;37105:2;37097:6;37093:15;37086:35;36901:227;:::o;37134:366::-;37276:3;37297:67;37361:2;37356:3;37297:67;:::i;:::-;37290:74;;37373:93;37462:3;37373:93;:::i;:::-;37491:2;37486:3;37482:12;37475:19;;37134:366;;;:::o;37506:419::-;37672:4;37710:2;37699:9;37695:18;37687:26;;37759:9;37753:4;37749:20;37745:1;37734:9;37730:17;37723:47;37787:131;37913:4;37787:131;:::i;:::-;37779:139;;37506:419;;;:::o;37931:174::-;38071:26;38067:1;38059:6;38055:14;38048:50;37931:174;:::o;38111:366::-;38253:3;38274:67;38338:2;38333:3;38274:67;:::i;:::-;38267:74;;38350:93;38439:3;38350:93;:::i;:::-;38468:2;38463:3;38459:12;38452:19;;38111:366;;;:::o;38483:419::-;38649:4;38687:2;38676:9;38672:18;38664:26;;38736:9;38730:4;38726:20;38722:1;38711:9;38707:17;38700:47;38764:131;38890:4;38764:131;:::i;:::-;38756:139;;38483:419;;;:::o;38908:229::-;39048:34;39044:1;39036:6;39032:14;39025:58;39117:12;39112:2;39104:6;39100:15;39093:37;38908:229;:::o;39143:366::-;39285:3;39306:67;39370:2;39365:3;39306:67;:::i;:::-;39299:74;;39382:93;39471:3;39382:93;:::i;:::-;39500:2;39495:3;39491:12;39484:19;;39143:366;;;:::o;39515:419::-;39681:4;39719:2;39708:9;39704:18;39696:26;;39768:9;39762:4;39758:20;39754:1;39743:9;39739:17;39732:47;39796:131;39922:4;39796:131;:::i;:::-;39788:139;;39515:419;;;:::o;39940:191::-;39980:4;40000:20;40018:1;40000:20;:::i;:::-;39995:25;;40034:20;40052:1;40034:20;:::i;:::-;40029:25;;40073:1;40070;40067:8;40064:34;;;40078:18;;:::i;:::-;40064:34;40123:1;40120;40116:9;40108:17;;39940:191;;;;:::o;40137:225::-;40277:34;40273:1;40265:6;40261:14;40254:58;40346:8;40341:2;40333:6;40329:15;40322:33;40137:225;:::o;40368:366::-;40510:3;40531:67;40595:2;40590:3;40531:67;:::i;:::-;40524:74;;40607:93;40696:3;40607:93;:::i;:::-;40725:2;40720:3;40716:12;40709:19;;40368:366;;;:::o;40740:419::-;40906:4;40944:2;40933:9;40929:18;40921:26;;40993:9;40987:4;40983:20;40979:1;40968:9;40964:17;40957:47;41021:131;41147:4;41021:131;:::i;:::-;41013:139;;40740:419;;;:::o;41165:320::-;41280:4;41318:2;41307:9;41303:18;41295:26;;41331:71;41399:1;41388:9;41384:17;41375:6;41331:71;:::i;:::-;41412:66;41474:2;41463:9;41459:18;41450:6;41412:66;:::i;:::-;41165:320;;;;;:::o;41491:180::-;41539:77;41536:1;41529:88;41636:4;41633:1;41626:15;41660:4;41657:1;41650:15;41677:180;41725:77;41722:1;41715:88;41822:4;41819:1;41812:15;41846:4;41843:1;41836:15;41863:143;41920:5;41951:6;41945:13;41936:22;;41967:33;41994:5;41967:33;:::i;:::-;41863:143;;;;:::o;42012:351::-;42082:6;42131:2;42119:9;42110:7;42106:23;42102:32;42099:119;;;42137:79;;:::i;:::-;42099:119;42257:1;42282:64;42338:7;42329:6;42318:9;42314:22;42282:64;:::i;:::-;42272:74;;42228:128;42012:351;;;;:::o;42369:85::-;42414:7;42443:5;42432:16;;42369:85;;;:::o;42460:158::-;42518:9;42551:61;42569:42;42578:32;42604:5;42578:32;:::i;:::-;42569:42;:::i;:::-;42551:61;:::i;:::-;42538:74;;42460:158;;;:::o;42624:147::-;42719:45;42758:5;42719:45;:::i;:::-;42714:3;42707:58;42624:147;;:::o;42777:114::-;42844:6;42878:5;42872:12;42862:22;;42777:114;;;:::o;42897:184::-;42996:11;43030:6;43025:3;43018:19;43070:4;43065:3;43061:14;43046:29;;42897:184;;;;:::o;43087:132::-;43154:4;43177:3;43169:11;;43207:4;43202:3;43198:14;43190:22;;43087:132;;;:::o;43225:108::-;43302:24;43320:5;43302:24;:::i;:::-;43297:3;43290:37;43225:108;;:::o;43339:179::-;43408:10;43429:46;43471:3;43463:6;43429:46;:::i;:::-;43507:4;43502:3;43498:14;43484:28;;43339:179;;;;:::o;43524:113::-;43594:4;43626;43621:3;43617:14;43609:22;;43524:113;;;:::o;43673:732::-;43792:3;43821:54;43869:5;43821:54;:::i;:::-;43891:86;43970:6;43965:3;43891:86;:::i;:::-;43884:93;;44001:56;44051:5;44001:56;:::i;:::-;44080:7;44111:1;44096:284;44121:6;44118:1;44115:13;44096:284;;;44197:6;44191:13;44224:63;44283:3;44268:13;44224:63;:::i;:::-;44217:70;;44310:60;44363:6;44310:60;:::i;:::-;44300:70;;44156:224;44143:1;44140;44136:9;44131:14;;44096:284;;;44100:14;44396:3;44389:10;;43797:608;;;43673:732;;;;:::o;44411:831::-;44674:4;44712:3;44701:9;44697:19;44689:27;;44726:71;44794:1;44783:9;44779:17;44770:6;44726:71;:::i;:::-;44807:80;44883:2;44872:9;44868:18;44859:6;44807:80;:::i;:::-;44934:9;44928:4;44924:20;44919:2;44908:9;44904:18;44897:48;44962:108;45065:4;45056:6;44962:108;:::i;:::-;44954:116;;45080:72;45148:2;45137:9;45133:18;45124:6;45080:72;:::i;:::-;45162:73;45230:3;45219:9;45215:19;45206:6;45162:73;:::i;:::-;44411:831;;;;;;;;:::o;45248:807::-;45497:4;45535:3;45524:9;45520:19;45512:27;;45549:71;45617:1;45606:9;45602:17;45593:6;45549:71;:::i;:::-;45630:72;45698:2;45687:9;45683:18;45674:6;45630:72;:::i;:::-;45712:80;45788:2;45777:9;45773:18;45764:6;45712:80;:::i;:::-;45802;45878:2;45867:9;45863:18;45854:6;45802:80;:::i;:::-;45892:73;45960:3;45949:9;45945:19;45936:6;45892:73;:::i;:::-;45975;46043:3;46032:9;46028:19;46019:6;45975:73;:::i;:::-;45248:807;;;;;;;;;:::o;46061:663::-;46149:6;46157;46165;46214:2;46202:9;46193:7;46189:23;46185:32;46182:119;;;46220:79;;:::i;:::-;46182:119;46340:1;46365:64;46421:7;46412:6;46401:9;46397:22;46365:64;:::i;:::-;46355:74;;46311:128;46478:2;46504:64;46560:7;46551:6;46540:9;46536:22;46504:64;:::i;:::-;46494:74;;46449:129;46617:2;46643:64;46699:7;46690:6;46679:9;46675:22;46643:64;:::i;:::-;46633:74;;46588:129;46061:663;;;;;:::o

Swarm Source

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