ETH Price: $2,285.86 (+0.40%)

Token

HarryPotterObamaMojo666inu (Pepe)
 

Overview

Max Total Supply

1,000,000,000 Pepe

Holders

42

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
10,000,000 Pepe

Value
$0.00
0x1c22ec64efc07996c95317a101515e87621cd910
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:
HarryPotterObamaMojo666inu

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-13
*/

// $PEPE 🐸🐸🐸🐸🐸🐸| HarryPotterObamaMojo666Inu

// Twitter :https://twitter.com/HPOM666I 

// Website :https://www.hpom666i.com/ 

// Telegram  :https://t.me/HPOM666I

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.16;

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

    function decimals() external view returns (uint8);

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

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

    function getOwner() external view returns (address);

    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 DexFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

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

    function WETH() external pure returns (address);

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

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

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

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

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {return 0;}
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

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

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

contract Ownable is Context {
    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        authorizations[_owner] = true;
        emit OwnershipTransferred(address(0), msgSender);
    }
    mapping (address => bool) internal authorizations;

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }


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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract HarryPotterObamaMojo666inu is Ownable, IERC20 {
    using SafeMath for uint256;

    uint8 constant private _decimals = 18;

    uint256 private _totalSupply = 1000000000 * (10 ** _decimals);
    uint256 public _maxTxAmount = _totalSupply * 10 / 1000;
    uint256 public _walletMax = _totalSupply * 10 / 1000;

    address private constant DEAD_WALLET = 0x000000000000000000000000000000000000dEaD;
    address private constant ZERO_WALLET = 0x0000000000000000000000000000000000000000;

    address private routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    string constant private _name = "HarryPotterObamaMojo666inu";
    string constant private _symbol = "Pepe";

    bool public restrictWhales = true;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

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

    uint256 public liquidityFee = 0;
    uint256 public marketingFee = 0;
    uint256 public buybackFee = 1;
    uint256 private blaFee = 1;
    uint256 public nativeFee = 0;

    uint256 public totalFee = 0;
    uint256 public totalFeeIfSelling = 0;

    bool public takeBuyFee = true;
    bool public takeSellFee = true;
    bool public takeTransferFee = true;

    address private autoLiquidityReceiver;
    address public marketingWallet;
    address private buybackWallet;
    address private blaWallet;
    address private nativeWallet;

    DexRouter public router;
    address public pair;
    mapping(address => bool) public isPair;


    uint256 public launchedAt;
    bool public tradingOpen = false;
    bool public blacklistMode = true;
    bool public canUseBlacklist = true;
    mapping(address => bool) public isBlacklisted;

    bool private inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

    uint256 public swapThreshold = _totalSupply * 4 / 2000;

    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);

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


    constructor() {
        router = DexRouter(routerAddress);
        pair = DexFactory(router.factory()).createPair(router.WETH(), address(this));
        isPair[pair] = true;
        _allowances[address(this)][address(router)] = type(uint256).max;
        _allowances[address(this)][address(pair)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;
        isFeeExempt[DEAD_WALLET] = true;
        isFeeExempt[nativeWallet] = true;

        isTxLimitExempt[nativeWallet] = true;
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[DEAD_WALLET] = true;

        autoLiquidityReceiver = msg.sender;
        marketingWallet = 0x117FE25BFe7799120c5f6B9F21bF61f18FcF83A4;
        buybackWallet = 0x117FE25BFe7799120c5f6B9F21bF61f18FcF83A4;
        blaWallet = 0x49acFE47695061EF2bBd81DFEC335505042B9Ba5;
        nativeWallet = 0x117FE25BFe7799120c5f6B9F21bF61f18FcF83A4;

        isFeeExempt[marketingWallet] = true;
        totalFee = liquidityFee.add(marketingFee).add(blaFee).add(nativeFee).add(buybackFee);
        totalFeeIfSelling = totalFee;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

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

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

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

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

    function getOwner() external view override returns (address) {return owner();}

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

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

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD_WALLET)).sub(balanceOf(ZERO_WALLET));
    }

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

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

    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

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

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }
        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if (inSwapAndLiquify) {return _basicTransfer(sender, recipient, amount);}
        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen, "Trading not open yet");
        }

        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
        if (isPair[recipient] && !inSwapAndLiquify && swapAndLiquifyEnabled && _balances[address(this)] >= swapThreshold) {marketingAndLiquidity();}
        if (!launched() && isPair[recipient]) {
            require(_balances[sender] > 0, "Zero balance violated!");
            launch();
        }    

        // Blacklist
        if (blacklistMode) {
            require(!isBlacklisted[sender],"Blacklisted");
        }

        //Exchange tokens
         _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        if (!isTxLimitExempt[recipient] && restrictWhales) {
            require(_balances[recipient].add(amount) <= _walletMax, "Max wallet violated!");
        }

        uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient] ? extractFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(finalAmount);

        emit Transfer(sender, recipient, finalAmount);
        return true;
    }

    function extractFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        uint feeApplicable = 0;
        uint nativeAmount = 0;
        if (isPair[recipient] && takeSellFee) {
            feeApplicable = totalFeeIfSelling.sub(nativeFee);        
        }
        if (isPair[sender] && takeBuyFee) {
            feeApplicable = totalFee.sub(nativeFee);        
        }
        if (!isPair[sender] && !isPair[recipient]){
            if (takeTransferFee){
                feeApplicable = totalFeeIfSelling.sub(nativeFee); 
            }
            else{
                feeApplicable = 0;
            }
        }
        if(feeApplicable > 0 && nativeFee >0){
            nativeAmount = amount.mul(nativeFee).div(100);
            _balances[nativeWallet] = _balances[nativeWallet].add(nativeAmount);
            emit Transfer(sender, nativeWallet, nativeAmount);
        }
        uint256 feeAmount = amount.mul(feeApplicable).div(100);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount).sub(nativeAmount);
    }

    function marketingAndLiquidity() internal lockTheSwap {
        uint256 tokensToLiquify = _balances[address(this)];
        uint256 amountToLiquify = tokensToLiquify.mul(liquidityFee).div(totalFee.sub(nativeFee)).div(2);
        uint256 amountToSwap = tokensToLiquify.sub(amountToLiquify);

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

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

        uint256 amountBNB = address(this).balance;

        uint256 totalBNBFee = totalFee.sub(nativeFee).sub(liquidityFee.div(2));

        uint256 amountBNBLiquidity = amountBNB.mul(liquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee);
        uint256 amountBNBbla = amountBNB.mul(blaFee).div(totalBNBFee);
        uint256 amountBNBbuyback = amountBNB.mul(buybackFee).div(totalBNBFee);
        
        (bool tmpSuccess1,) = payable(marketingWallet).call{value : amountBNBMarketing, gas : 30000}("");
        tmpSuccess1 = false;

        (tmpSuccess1,) = payable(blaWallet).call{value : amountBNBbla, gas : 30000}("");
        tmpSuccess1 = false;

        (tmpSuccess1,) = payable(buybackWallet).call{value : amountBNBbuyback, gas : 30000}("");
        tmpSuccess1 = false;

        if (amountToLiquify > 0) {
            router.addLiquidityETH{value : amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountBNBLiquidity, amountToLiquify);
        }
    }

    function setWalletLimit(uint256 newLimit) external onlyOwner {
        require(newLimit >= 5, "Wallet Limit needs to be at least 0.5%");
        _walletMax = _totalSupply * newLimit / 1000;
    }

    function setTxLimit(uint256 newLimit) external onlyOwner {
        require(newLimit >= 5, "Wallet Limit needs to be at least 0.5%");
        _maxTxAmount = _totalSupply * newLimit / 1000;
    }

    function tradingStatus(bool newStatus) public onlyOwner {
        require(canUseBlacklist, "Can no longer pause trading");
        tradingOpen = newStatus;
    }

    function openTrading() public onlyOwner {
        tradingOpen = true;
    }

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

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

    function fullWhitelist(address target) public onlyOwner{
        authorizations[target] = true;
        isFeeExempt[target] = true;
        isTxLimitExempt[target] = true;
    }

    function setFees(uint256 newLiqFee, uint256 newMarketingFee, uint256 newbuybackFee, uint256 newblaFee, uint256 newNativeFee, uint256 extraSellFee) external onlyOwner {
        liquidityFee = newLiqFee;
        marketingFee = newMarketingFee;
        buybackFee = newbuybackFee;
        blaFee = newblaFee;
        nativeFee = newNativeFee;

        totalFee = liquidityFee.add(marketingFee).add(buybackFee).add(blaFee).add(nativeFee);
        totalFeeIfSelling = totalFee + extraSellFee;
        require (totalFeeIfSelling + totalFee < 35);
    }

    function enable_blacklist(bool _status) public onlyOwner {
        require(canUseBlacklist, "Can no longer add blacklists");
        blacklistMode = _status;
    }

    function manage_blacklist(address[] calldata addresses, bool status) public onlyOwner {
        require(canUseBlacklist, "Can no longer add blacklists");
        for (uint256 i; i < addresses.length; ++i) {
            isBlacklisted[addresses[i]] = status;
        }
    }

    function isAuth(address _address, bool status) public onlyOwner{
        authorizations[_address] = status;
    }

    function setPair(address _address, bool status) public onlyOwner{
        isPair[_address] = status;
    }

    function renounceBlacklist() public onlyOwner{
        canUseBlacklist = false;
    }

    function disableBlacklistDONTUSETHIS() public onlyOwner{
        blacklistMode = false;
    }

    function setTakeBuyfee(bool status) public onlyOwner{
        takeBuyFee = status;
    }

    function setTakeSellfee(bool status) public onlyOwner{
        takeSellFee = status;
    }

    function setTakeTransferfee(bool status) public onlyOwner{
        takeTransferFee = status;
    }

    function setSwapbackSettings(bool status, uint256 newAmount) public onlyOwner{
        swapAndLiquifyEnabled = status;
        swapThreshold = newAmount;
    }

    function setFeeReceivers(address newMktWallet, address newblaWallet, address newbuybackWallet, address newLpWallet, address newNativeWallet) public onlyOwner{
        autoLiquidityReceiver = newLpWallet;
        marketingWallet = newMktWallet;
        buybackWallet = newbuybackWallet;
        blaWallet = newblaWallet;
        nativeWallet = newNativeWallet;
    }

    function rescueToken(address tokenAddress, uint256 tokens) public onlyOwner returns (bool success) {
        require(tokenAddress != address(this), "Cant remove the native token");
        return IERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer(amountETH * amountPercentage / 100);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"canUseBlacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"disableBlacklistDONTUSETHIS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"fullWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"isAuth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"nativeFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"rescueToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"restrictWhales","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract DexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newMktWallet","type":"address"},{"internalType":"address","name":"newblaWallet","type":"address"},{"internalType":"address","name":"newbuybackWallet","type":"address"},{"internalType":"address","name":"newLpWallet","type":"address"},{"internalType":"address","name":"newNativeWallet","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiqFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"},{"internalType":"uint256","name":"newbuybackFee","type":"uint256"},{"internalType":"uint256","name":"newblaFee","type":"uint256"},{"internalType":"uint256","name":"newNativeFee","type":"uint256"},{"internalType":"uint256","name":"extraSellFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"},{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapbackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setTakeBuyfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setTakeSellfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setTakeTransferfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"takeBuyFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"takeSellFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"takeTransferFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeIfSelling","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":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526012600a62000014919062000ff0565b633b9aca0062000025919062001041565b6002556103e8600a6002546200003c919062001041565b620000489190620010d1565b6003556103e8600a6002546200005f919062001041565b6200006b9190620010d1565b600455737a250d5630b4cf539739df2c5dacb4c659f2488d600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560146101000a81548160ff0219169083151502179055506000600a556000600b556001600c556001600d556000600e556000600f5560006010556001601160006101000a81548160ff0219169083151502179055506001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff0219169083151502179055506000601a60006101000a81548160ff0219169083151502179055506001601a60016101000a81548160ff0219169083151502179055506001601a60026101000a81548160ff0219169083151502179055506001601c60016101000a81548160ff0219169083151502179055506000601c60026101000a81548160ff0219169083151502179055506107d06004600254620001ed919062001041565b620001f99190620010d1565b601d553480156200020957600080fd5b5060006200021c62000deb60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000403573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000429919062001173565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d8919062001173565b306040518363ffffffff1660e01b8152600401620004f8929190620011b6565b6020604051808303816000875af115801562000518573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200053e919062001173565b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160186000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016009600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601160036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073117fe25bfe7799120c5f6b9f21bf61f18fcf83a4601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073117fe25bfe7799120c5f6b9f21bf61f18fcf83a4601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507349acfe47695061ef2bbd81dfec335505042b9ba5601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073117fe25bfe7799120c5f6b9f21bf61f18fcf83a4601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000d26600c5462000d12600e5462000cfe600d5462000cea600b54600a5462000df360201b62002def1790919060201c565b62000df360201b62002def1790919060201c565b62000df360201b62002def1790919060201c565b62000df360201b62002def1790919060201c565b600f81905550600f54601081905550600254600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60025460405162000ddd9190620011f4565b60405180910390a3620012cf565b600033905090565b600080828462000e04919062001211565b90508381101562000e4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e4390620012ad565b60405180910390fd5b8091505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000ee45780860481111562000ebc5762000ebb62000e56565b5b600185161562000ecc5780820291505b808102905062000edc8562000e85565b945062000e9c565b94509492505050565b60008262000eff576001905062000fd2565b8162000f0f576000905062000fd2565b816001811462000f28576002811462000f335762000f69565b600191505062000fd2565b60ff84111562000f485762000f4762000e56565b5b8360020a91508482111562000f625762000f6162000e56565b5b5062000fd2565b5060208310610133831016604e8410600b841016171562000fa35782820a90508381111562000f9d5762000f9c62000e56565b5b62000fd2565b62000fb2848484600162000e92565b9250905081840481111562000fcc5762000fcb62000e56565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000ffd8262000fd9565b91506200100a8362000fe3565b9250620010397fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000eed565b905092915050565b60006200104e8262000fd9565b91506200105b8362000fd9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001097576200109662000e56565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010de8262000fd9565b9150620010eb8362000fd9565b925082620010fe57620010fd620010a2565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200113b826200110e565b9050919050565b6200114d816200112e565b81146200115957600080fd5b50565b6000815190506200116d8162001142565b92915050565b6000602082840312156200118c576200118b62001109565b5b60006200119c848285016200115c565b91505092915050565b620011b0816200112e565b82525050565b6000604082019050620011cd6000830185620011a5565b620011dc6020830184620011a5565b9392505050565b620011ee8162000fd9565b82525050565b60006020820190506200120b6000830184620011e3565b92915050565b60006200121e8262000fd9565b91506200122b8362000fd9565b925082820190508082111562001246576200124562000e56565b5b92915050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001295601b836200124c565b9150620012a2826200125d565b602082019050919050565b60006020820190508181036000830152620012c88162001286565b9050919050565b61574780620012df6000396000f3fe6080604052600436106103b15760003560e01c8063807c2d9c116101e7578063aba1193d1161010d578063f1d5f517116100a0578063fb32b5c21161006f578063fb32b5c214610dbd578063fbdec15314610de8578063fe575a8714610e11578063ffb54a9914610e4e576103b8565b8063f1d5f51714610d17578063f2fde38b14610d40578063f84ba65d14610d69578063f887ea4014610d92576103b8565b8063da00097d116100dc578063da00097d14610c47578063dd62ed3e14610c72578063e5e31b1314610caf578063f0ef821f14610cec576103b8565b8063aba1193d14610bb1578063bf56b37114610bda578063c9567bf914610c05578063ca987b0e14610c1c576103b8565b80638e2eee8411610185578063996f79c011610154578063996f79c014610af3578063a535598914610b1e578063a8aa1b3114610b49578063a9059cbb14610b74576103b8565b80638e2eee8414610a4b5780639153eb6c14610a7457806395d89b4114610a9d57806398118cb414610ac8576103b8565b8063893d20e8116101c1578063893d20e81461098d578063896648c1146109b85780638b42507f146109e35780638da5cb5b14610a20576103b8565b8063807c2d9c1461091057806386a22eff1461093b57806386f6c3c114610964576103b8565b806344de2e4c116102d7578063705409331161026a5780637cc5d7eb116102395780637cc5d7eb1461087c5780637d1db4a5146108a55780637df4d744146108d05780637fa442ff146108e7576103b8565b806370540933146107d257806370a08231146107fd578063715018a61461083a57806375f0a87414610851576103b8565b80635e562f3b116102a65780635e562f3b1461073e5780635f18936114610767578063658d4b7f1461077e5780636b67c4df146107a7576103b8565b806344de2e4c146106825780634a74bb02146106ad578063571ac8b0146106d85780635c85974f14610715576103b8565b80631df4ccfc1161034f578063313ce5671161031e578063313ce567146105b257806333f3d628146105dd5780633b2d081c1461061a5780633f4218e014610645576103b8565b80631df4ccfc146104f657806323b872dd14610521578063299774911461055e5780632b112e4914610587576103b8565b80630d2959801161038b5780630d2959801461045057806318160ddd1461047957806318abb635146104a45780631da1db5e146104cd576103b8565b80630445b667146103bd57806306fdde03146103e8578063095ea7b314610413576103b8565b366103b857005b600080fd5b3480156103c957600080fd5b506103d2610e79565b6040516103df91906145af565b60405180910390f35b3480156103f457600080fd5b506103fd610e7f565b60405161040a919061465a565b60405180910390f35b34801561041f57600080fd5b5061043a60048036038101906104359190614710565b610ebc565b604051610447919061476b565b60405180910390f35b34801561045c57600080fd5b50610477600480360381019061047291906147b2565b610fae565b005b34801561048557600080fd5b5061048e6110af565b60405161049b91906145af565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c691906147df565b6110b9565b005b3480156104d957600080fd5b506104f460048036038101906104ef919061485a565b61129a565b005b34801561050257600080fd5b5061050b611396565b60405161051891906145af565b60405180910390f35b34801561052d57600080fd5b5061054860048036038101906105439190614887565b61139c565b604051610555919061476b565b60405180910390f35b34801561056a57600080fd5b50610585600480360381019061058091906147b2565b61159c565b005b34801561059357600080fd5b5061059c61164e565b6040516105a991906145af565b60405180910390f35b3480156105be57600080fd5b506105c761168f565b6040516105d491906148f6565b60405180910390f35b3480156105e957600080fd5b5061060460048036038101906105ff9190614710565b611698565b604051610611919061476b565b60405180910390f35b34801561062657600080fd5b5061062f611823565b60405161063c91906145af565b60405180910390f35b34801561065157600080fd5b5061066c60048036038101906106679190614911565b611829565b604051610679919061476b565b60405180910390f35b34801561068e57600080fd5b50610697611849565b6040516106a4919061476b565b60405180910390f35b3480156106b957600080fd5b506106c261185c565b6040516106cf919061476b565b60405180910390f35b3480156106e457600080fd5b506106ff60048036038101906106fa9190614911565b61186f565b60405161070c919061476b565b60405180910390f35b34801561072157600080fd5b5061073c6004803603810190610737919061485a565b6118a2565b005b34801561074a57600080fd5b50610765600480360381019061076091906147b2565b61199f565b005b34801561077357600080fd5b5061077c611aa0565b005b34801561078a57600080fd5b506107a560048036038101906107a0919061493e565b611b52565b005b3480156107b357600080fd5b506107bc611c42565b6040516107c991906145af565b60405180910390f35b3480156107de57600080fd5b506107e7611c48565b6040516107f4919061476b565b60405180910390f35b34801561080957600080fd5b50610824600480360381019061081f9190614911565b611c5b565b60405161083191906145af565b60405180910390f35b34801561084657600080fd5b5061084f611ca4565b005b34801561085d57600080fd5b50610866611df7565b604051610873919061498d565b60405180910390f35b34801561088857600080fd5b506108a3600480360381019061089e919061493e565b611e1d565b005b3480156108b157600080fd5b506108ba611f0d565b6040516108c791906145af565b60405180910390f35b3480156108dc57600080fd5b506108e5611f13565b005b3480156108f357600080fd5b5061090e600480360381019061090991906147b2565b611fc5565b005b34801561091c57600080fd5b50610925612077565b60405161093291906145af565b60405180910390f35b34801561094757600080fd5b50610962600480360381019061095d919061493e565b61207d565b005b34801561097057600080fd5b5061098b600480360381019061098691906149a8565b61216d565b005b34801561099957600080fd5b506109a26122b6565b6040516109af919061498d565b60405180910390f35b3480156109c457600080fd5b506109cd6122c5565b6040516109da919061476b565b60405180910390f35b3480156109ef57600080fd5b50610a0a6004803603810190610a059190614911565b6122d8565b604051610a17919061476b565b60405180910390f35b348015610a2c57600080fd5b50610a356122f8565b604051610a42919061498d565b60405180910390f35b348015610a5757600080fd5b50610a726004803603810190610a6d9190614a9a565b612321565b005b348015610a8057600080fd5b50610a9b6004803603810190610a969190614911565b6124a8565b005b348015610aa957600080fd5b50610ab2612647565b604051610abf919061465a565b60405180910390f35b348015610ad457600080fd5b50610add612684565b604051610aea91906145af565b60405180910390f35b348015610aff57600080fd5b50610b0861268a565b604051610b1591906145af565b60405180910390f35b348015610b2a57600080fd5b50610b33612690565b604051610b40919061476b565b60405180910390f35b348015610b5557600080fd5b50610b5e6126a3565b604051610b6b919061498d565b60405180910390f35b348015610b8057600080fd5b50610b9b6004803603810190610b969190614710565b6126c9565b604051610ba8919061476b565b60405180910390f35b348015610bbd57600080fd5b50610bd86004803603810190610bd39190614afa565b6126de565b005b348015610be657600080fd5b50610bef612798565b604051610bfc91906145af565b60405180910390f35b348015610c1157600080fd5b50610c1a61279e565b005b348015610c2857600080fd5b50610c31612850565b604051610c3e91906145af565b60405180910390f35b348015610c5357600080fd5b50610c5c612856565b604051610c69919061476b565b60405180910390f35b348015610c7e57600080fd5b50610c996004803603810190610c949190614b3a565b612869565b604051610ca691906145af565b60405180910390f35b348015610cbb57600080fd5b50610cd66004803603810190610cd19190614911565b6128f0565b604051610ce3919061476b565b60405180910390f35b348015610cf857600080fd5b50610d01612910565b604051610d0e919061476b565b60405180910390f35b348015610d2357600080fd5b50610d3e6004803603810190610d39919061485a565b612923565b005b348015610d4c57600080fd5b50610d676004803603810190610d629190614911565b612a20565b005b348015610d7557600080fd5b50610d906004803603810190610d8b919061493e565b612be1565b005b348015610d9e57600080fd5b50610da7612cd1565b604051610db49190614bd9565b60405180910390f35b348015610dc957600080fd5b50610dd2612cf7565b604051610ddf919061476b565b60405180910390f35b348015610df457600080fd5b50610e0f6004803603810190610e0a91906147b2565b612d0a565b005b348015610e1d57600080fd5b50610e386004803603810190610e339190614911565b612dbc565b604051610e45919061476b565b60405180910390f35b348015610e5a57600080fd5b50610e63612ddc565b604051610e70919061476b565b60405180910390f35b601d5481565b60606040518060400160405280601a81526020017f4861727279506f747465724f62616d614d6f6a6f363636696e75000000000000815250905090565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610f9c91906145af565b60405180910390a36001905092915050565b610fb6612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103a90614c40565b60405180910390fd5b601a60029054906101000a900460ff16611092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108990614cac565b60405180910390fd5b80601a60006101000a81548160ff02191690831515021790555050565b6000600254905090565b6110c1612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461114e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114590614c40565b60405180910390fd5b81601160036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b6112a2612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461132f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132690614c40565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc6064848461135c9190614cfb565b6113669190614d84565b9081150290604051600060405180830381858888f19350505050158015611391573d6000803e3d6000fd5b505050565b600f5481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461158857611507826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e559092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611593848484612eb9565b90509392505050565b6115a4612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162890614c40565b60405180910390fd5b80601160016101000a81548160ff02191690831515021790555050565b600061168a61165d6000611c5b565b61167c61166b61dead611c5b565b60025461367190919063ffffffff16565b61367190919063ffffffff16565b905090565b60006012905090565b60006116a2612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461172f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172690614c40565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361179d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179490614e01565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016117d8929190614e21565b6020604051808303816000875af11580156117f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181b9190614e5f565b905092915050565b600c5481565b60086020528060005260406000206000915054906101000a900460ff1681565b600560149054906101000a900460ff1681565b601c60019054906101000a900460ff1681565b600061189b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610ebc565b9050919050565b6118aa612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192e90614c40565b60405180910390fd5b600581101561197b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197290614efe565b60405180910390fd5b6103e88160025461198c9190614cfb565b6119969190614d84565b60038190555050565b6119a7612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2b90614c40565b60405180910390fd5b601a60029054906101000a900460ff16611a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7a90614f6a565b60405180910390fd5b80601a60016101000a81548160ff02191690831515021790555050565b611aa8612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2c90614c40565b60405180910390fd5b6000601a60026101000a81548160ff021916908315150217905550565b611b5a612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bde90614c40565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b5481565b601160019054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611cac612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3090614c40565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e25612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea990614c40565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60035481565b611f1b612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9f90614c40565b60405180910390fd5b6000601a60016101000a81548160ff021916908315150217905550565b611fcd612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461205a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205190614c40565b60405180910390fd5b80601160026101000a81548160ff02191690831515021790555050565b60045481565b612085612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612112576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210990614c40565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612175612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612202576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f990614c40565b60405180910390fd5b85600a8190555084600b8190555083600c8190555082600d8190555081600e81905550612278600e5461226a600d5461225c600c5461224e600b54600a54612def90919063ffffffff16565b612def90919063ffffffff16565b612def90919063ffffffff16565b612def90919063ffffffff16565b600f8190555080600f5461228c9190614f8a565b6010819055506023600f546010546122a49190614f8a565b106122ae57600080fd5b505050505050565b60006122c06122f8565b905090565b601a60019054906101000a900460ff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612329612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ad90614c40565b60405180910390fd5b601a60029054906101000a900460ff16612405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fc90614f6a565b60405180910390fd5b60005b838390508110156124a25781601b600086868581811061242b5761242a614fbe565b5b90506020020160208101906124409190614911565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508061249b90614fed565b9050612408565b50505050565b6124b0612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461253d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253490614c40565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60606040518060400160405280600481526020017f5065706500000000000000000000000000000000000000000000000000000000815250905090565b600a5481565b600e5481565b601160029054906101000a900460ff1681565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006126d6338484612eb9565b905092915050565b6126e6612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276a90614c40565b60405180910390fd5b81601c60016101000a81548160ff02191690831515021790555080601d819055505050565b60195481565b6127a6612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282a90614c40565b60405180910390fd5b6001601a60006101000a81548160ff021916908315150217905550565b60105481565b601c60029054906101000a900460ff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60186020528060005260406000206000915054906101000a900460ff1681565b601160009054906101000a900460ff1681565b61292b612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129af90614c40565b60405180910390fd5b60058110156129fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f390614efe565b60405180910390fd5b6103e881600254612a0d9190614cfb565b612a179190614d84565b60048190555050565b612a28612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aac90614c40565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1b906150a7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612be9612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6d90614c40565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a60029054906101000a900460ff1681565b612d12612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9690614c40565b60405180910390fd5b80601160006101000a81548160ff02191690831515021790555050565b601b6020528060005260406000206000915054906101000a900460ff1681565b601a60009054906101000a900460ff1681565b6000808284612dfe9190614f8a565b905083811015612e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3a90615113565b60405180910390fd5b8091505092915050565b600033905090565b6000838311158290612e9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e94919061465a565b60405180910390fd5b5060008385612eac9190615133565b9050809150509392505050565b6000601c60009054906101000a900460ff1615612ee257612edb8484846136bb565b905061366a565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612f865750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612fdb57601a60009054906101000a900460ff16612fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fd1906151b3565b60405180910390fd5b5b600354821115806130355750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161306b9061521f565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130da5750601c60009054906101000a900460ff16155b80156130f25750601c60019054906101000a900460ff165b801561313f5750601d54600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b1561314d5761314c61388e565b5b613155613f6f565b1580156131ab5750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561323b576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411613232576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132299061528b565b60405180910390fd5b61323a613f7c565b5b601a60019054906101000a900460ff16156132de57601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156132dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132d4906152f7565b60405180910390fd5b5b613367826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e559092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134105750600560149054906101000a900460ff165b156134ac5760045461346a83600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612def90919063ffffffff16565b11156134ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134a290615363565b60405180910390fd5b5b6000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135525750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61355c5782613568565b613567858585613f85565b5b90506135bc81600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612def90919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161365c91906145af565b60405180910390a360019150505b9392505050565b60006136b383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612e55565b905092915050565b6000613746826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e559092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137db82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612def90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161387b91906145af565b60405180910390a3600190509392505050565b6001601c60006101000a81548160ff0219169083151502179055506000600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600061393f600261393161390e600e54600f5461367190919063ffffffff16565b613923600a548761446f90919063ffffffff16565b6144e990919063ffffffff16565b6144e990919063ffffffff16565b90506000613956828461367190919063ffffffff16565b90506000600267ffffffffffffffff81111561397557613974615383565b5b6040519080825280602002602001820160405280156139a35781602001602082028036833780820191505090505b50905030816000815181106139bb576139ba614fbe565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a8691906153c7565b81600181518110613a9a57613a99614fbe565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613b389594939291906154ed565b600060405180830381600087803b158015613b5257600080fd5b505af1158015613b66573d6000803e3d6000fd5b5050505060004790506000613baf613b8a6002600a546144e990919063ffffffff16565b613ba1600e54600f5461367190919063ffffffff16565b61367190919063ffffffff16565b90506000613bed6002613bdf84613bd1600a548861446f90919063ffffffff16565b6144e990919063ffffffff16565b6144e990919063ffffffff16565b90506000613c1883613c0a600b548761446f90919063ffffffff16565b6144e990919063ffffffff16565b90506000613c4384613c35600d548861446f90919063ffffffff16565b6144e990919063ffffffff16565b90506000613c6e85613c60600c548961446f90919063ffffffff16565b6144e990919063ffffffff16565b90506000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168461753090604051613cbc90615578565b600060405180830381858888f193505050503d8060008114613cfa576040519150601f19603f3d011682016040523d82523d6000602084013e613cff565b606091505b5050905060009050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051613d5190615578565b600060405180830381858888f193505050503d8060008114613d8f576040519150601f19603f3d011682016040523d82523d6000602084013e613d94565b606091505b50508091505060009050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051613de890615578565b600060405180830381858888f193505050503d8060008114613e26576040519150601f19603f3d011682016040523d82523d6000602084013e613e2b565b606091505b5050809150506000905060008a1115613f4757601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308d600080601160039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613ec79695949392919061558d565b60606040518083038185885af1158015613ee5573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613f0a9190615603565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858b604051613f3e929190615656565b60405180910390a15b50505050505050505050506000601c60006101000a81548160ff021916908315150217905550565b6000806019541415905090565b43601981905550565b600080600090506000601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613ff35750601160019054906101000a900460ff165b156140125761400f600e5460105461367190919063ffffffff16565b91505b601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156140775750601160009054906101000a900460ff165b1561409657614093600e54600f5461367190919063ffffffff16565b91505b601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561413a5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561417857601160029054906101000a900460ff16156141725761416b600e5460105461367190919063ffffffff16565b9150614177565b600091505b5b60008211801561418a57506000600e54115b1561431a576141b760646141a9600e548761446f90919063ffffffff16565b6144e990919063ffffffff16565b905061422d8160066000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612def90919063ffffffff16565b60066000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161431191906145af565b60405180910390a35b60006143426064614334858861446f90919063ffffffff16565b6144e990919063ffffffff16565b905061439681600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612def90919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161443691906145af565b60405180910390a361446382614455838861367190919063ffffffff16565b61367190919063ffffffff16565b93505050509392505050565b600080830361448157600090506144e3565b6000828461448f9190614cfb565b905082848261449e9190614d84565b146144de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016144d5906156f1565b60405180910390fd5b809150505b92915050565b600061452b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614533565b905092915050565b6000808311829061457a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614571919061465a565b60405180910390fd5b50600083856145899190614d84565b9050809150509392505050565b6000819050919050565b6145a981614596565b82525050565b60006020820190506145c460008301846145a0565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156146045780820151818401526020810190506145e9565b60008484015250505050565b6000601f19601f8301169050919050565b600061462c826145ca565b61463681856145d5565b93506146468185602086016145e6565b61464f81614610565b840191505092915050565b600060208201905081810360008301526146748184614621565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006146b182614686565b9050919050565b6146c1816146a6565b81146146cc57600080fd5b50565b6000813590506146de816146b8565b92915050565b6146ed81614596565b81146146f857600080fd5b50565b60008135905061470a816146e4565b92915050565b600080604083850312156147275761472661467c565b5b6000614735858286016146cf565b9250506020614746858286016146fb565b9150509250929050565b60008115159050919050565b61476581614750565b82525050565b6000602082019050614780600083018461475c565b92915050565b61478f81614750565b811461479a57600080fd5b50565b6000813590506147ac81614786565b92915050565b6000602082840312156147c8576147c761467c565b5b60006147d68482850161479d565b91505092915050565b600080600080600060a086880312156147fb576147fa61467c565b5b6000614809888289016146cf565b955050602061481a888289016146cf565b945050604061482b888289016146cf565b935050606061483c888289016146cf565b925050608061484d888289016146cf565b9150509295509295909350565b6000602082840312156148705761486f61467c565b5b600061487e848285016146fb565b91505092915050565b6000806000606084860312156148a05761489f61467c565b5b60006148ae868287016146cf565b93505060206148bf868287016146cf565b92505060406148d0868287016146fb565b9150509250925092565b600060ff82169050919050565b6148f0816148da565b82525050565b600060208201905061490b60008301846148e7565b92915050565b6000602082840312156149275761492661467c565b5b6000614935848285016146cf565b91505092915050565b600080604083850312156149555761495461467c565b5b6000614963858286016146cf565b92505060206149748582860161479d565b9150509250929050565b614987816146a6565b82525050565b60006020820190506149a2600083018461497e565b92915050565b60008060008060008060c087890312156149c5576149c461467c565b5b60006149d389828a016146fb565b96505060206149e489828a016146fb565b95505060406149f589828a016146fb565b9450506060614a0689828a016146fb565b9350506080614a1789828a016146fb565b92505060a0614a2889828a016146fb565b9150509295509295509295565b600080fd5b600080fd5b600080fd5b60008083601f840112614a5a57614a59614a35565b5b8235905067ffffffffffffffff811115614a7757614a76614a3a565b5b602083019150836020820283011115614a9357614a92614a3f565b5b9250929050565b600080600060408486031215614ab357614ab261467c565b5b600084013567ffffffffffffffff811115614ad157614ad0614681565b5b614add86828701614a44565b93509350506020614af08682870161479d565b9150509250925092565b60008060408385031215614b1157614b1061467c565b5b6000614b1f8582860161479d565b9250506020614b30858286016146fb565b9150509250929050565b60008060408385031215614b5157614b5061467c565b5b6000614b5f858286016146cf565b9250506020614b70858286016146cf565b9150509250929050565b6000819050919050565b6000614b9f614b9a614b9584614686565b614b7a565b614686565b9050919050565b6000614bb182614b84565b9050919050565b6000614bc382614ba6565b9050919050565b614bd381614bb8565b82525050565b6000602082019050614bee6000830184614bca565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614c2a6020836145d5565b9150614c3582614bf4565b602082019050919050565b60006020820190508181036000830152614c5981614c1d565b9050919050565b7f43616e206e6f206c6f6e6765722070617573652074726164696e670000000000600082015250565b6000614c96601b836145d5565b9150614ca182614c60565b602082019050919050565b60006020820190508181036000830152614cc581614c89565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614d0682614596565b9150614d1183614596565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614d4a57614d49614ccc565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614d8f82614596565b9150614d9a83614596565b925082614daa57614da9614d55565b5b828204905092915050565b7f43616e742072656d6f766520746865206e617469766520746f6b656e00000000600082015250565b6000614deb601c836145d5565b9150614df682614db5565b602082019050919050565b60006020820190508181036000830152614e1a81614dde565b9050919050565b6000604082019050614e36600083018561497e565b614e4360208301846145a0565b9392505050565b600081519050614e5981614786565b92915050565b600060208284031215614e7557614e7461467c565b5b6000614e8384828501614e4a565b91505092915050565b7f57616c6c6574204c696d6974206e6565647320746f206265206174206c65617360008201527f7420302e35250000000000000000000000000000000000000000000000000000602082015250565b6000614ee86026836145d5565b9150614ef382614e8c565b604082019050919050565b60006020820190508181036000830152614f1781614edb565b9050919050565b7f43616e206e6f206c6f6e6765722061646420626c61636b6c6973747300000000600082015250565b6000614f54601c836145d5565b9150614f5f82614f1e565b602082019050919050565b60006020820190508181036000830152614f8381614f47565b9050919050565b6000614f9582614596565b9150614fa083614596565b9250828201905080821115614fb857614fb7614ccc565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614ff882614596565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361502a57615029614ccc565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006150916026836145d5565b915061509c82615035565b604082019050919050565b600060208201905081810360008301526150c081615084565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006150fd601b836145d5565b9150615108826150c7565b602082019050919050565b6000602082019050818103600083015261512c816150f0565b9050919050565b600061513e82614596565b915061514983614596565b925082820390508181111561516157615160614ccc565b5b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b600061519d6014836145d5565b91506151a882615167565b602082019050919050565b600060208201905081810360008301526151cc81615190565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006152096011836145d5565b9150615214826151d3565b602082019050919050565b60006020820190508181036000830152615238816151fc565b9050919050565b7f5a65726f2062616c616e63652076696f6c617465642100000000000000000000600082015250565b60006152756016836145d5565b91506152808261523f565b602082019050919050565b600060208201905081810360008301526152a481615268565b9050919050565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b60006152e1600b836145d5565b91506152ec826152ab565b602082019050919050565b60006020820190508181036000830152615310816152d4565b9050919050565b7f4d61782077616c6c65742076696f6c6174656421000000000000000000000000600082015250565b600061534d6014836145d5565b915061535882615317565b602082019050919050565b6000602082019050818103600083015261537c81615340565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506153c1816146b8565b92915050565b6000602082840312156153dd576153dc61467c565b5b60006153eb848285016153b2565b91505092915050565b6000819050919050565b600061541961541461540f846153f4565b614b7a565b614596565b9050919050565b615429816153fe565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615464816146a6565b82525050565b6000615476838361545b565b60208301905092915050565b6000602082019050919050565b600061549a8261542f565b6154a4818561543a565b93506154af8361544b565b8060005b838110156154e05781516154c7888261546a565b97506154d283615482565b9250506001810190506154b3565b5085935050505092915050565b600060a08201905061550260008301886145a0565b61550f6020830187615420565b8181036040830152615521818661548f565b9050615530606083018561497e565b61553d60808301846145a0565b9695505050505050565b600081905092915050565b50565b6000615562600083615547565b915061556d82615552565b600082019050919050565b600061558382615555565b9150819050919050565b600060c0820190506155a2600083018961497e565b6155af60208301886145a0565b6155bc6040830187615420565b6155c96060830186615420565b6155d6608083018561497e565b6155e360a08301846145a0565b979650505050505050565b6000815190506155fd816146e4565b92915050565b60008060006060848603121561561c5761561b61467c565b5b600061562a868287016155ee565b935050602061563b868287016155ee565b925050604061564c868287016155ee565b9150509250925092565b600060408201905061566b60008301856145a0565b61567860208301846145a0565b9392505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006156db6021836145d5565b91506156e68261567f565b604082019050919050565b6000602082019050818103600083015261570a816156ce565b905091905056fea2646970667358221220812e2c19a482ec3d35ac561a966c3b6d76914ebb9b01ef4caa205f8dc97e22bc64736f6c63430008100033

Deployed Bytecode

0x6080604052600436106103b15760003560e01c8063807c2d9c116101e7578063aba1193d1161010d578063f1d5f517116100a0578063fb32b5c21161006f578063fb32b5c214610dbd578063fbdec15314610de8578063fe575a8714610e11578063ffb54a9914610e4e576103b8565b8063f1d5f51714610d17578063f2fde38b14610d40578063f84ba65d14610d69578063f887ea4014610d92576103b8565b8063da00097d116100dc578063da00097d14610c47578063dd62ed3e14610c72578063e5e31b1314610caf578063f0ef821f14610cec576103b8565b8063aba1193d14610bb1578063bf56b37114610bda578063c9567bf914610c05578063ca987b0e14610c1c576103b8565b80638e2eee8411610185578063996f79c011610154578063996f79c014610af3578063a535598914610b1e578063a8aa1b3114610b49578063a9059cbb14610b74576103b8565b80638e2eee8414610a4b5780639153eb6c14610a7457806395d89b4114610a9d57806398118cb414610ac8576103b8565b8063893d20e8116101c1578063893d20e81461098d578063896648c1146109b85780638b42507f146109e35780638da5cb5b14610a20576103b8565b8063807c2d9c1461091057806386a22eff1461093b57806386f6c3c114610964576103b8565b806344de2e4c116102d7578063705409331161026a5780637cc5d7eb116102395780637cc5d7eb1461087c5780637d1db4a5146108a55780637df4d744146108d05780637fa442ff146108e7576103b8565b806370540933146107d257806370a08231146107fd578063715018a61461083a57806375f0a87414610851576103b8565b80635e562f3b116102a65780635e562f3b1461073e5780635f18936114610767578063658d4b7f1461077e5780636b67c4df146107a7576103b8565b806344de2e4c146106825780634a74bb02146106ad578063571ac8b0146106d85780635c85974f14610715576103b8565b80631df4ccfc1161034f578063313ce5671161031e578063313ce567146105b257806333f3d628146105dd5780633b2d081c1461061a5780633f4218e014610645576103b8565b80631df4ccfc146104f657806323b872dd14610521578063299774911461055e5780632b112e4914610587576103b8565b80630d2959801161038b5780630d2959801461045057806318160ddd1461047957806318abb635146104a45780631da1db5e146104cd576103b8565b80630445b667146103bd57806306fdde03146103e8578063095ea7b314610413576103b8565b366103b857005b600080fd5b3480156103c957600080fd5b506103d2610e79565b6040516103df91906145af565b60405180910390f35b3480156103f457600080fd5b506103fd610e7f565b60405161040a919061465a565b60405180910390f35b34801561041f57600080fd5b5061043a60048036038101906104359190614710565b610ebc565b604051610447919061476b565b60405180910390f35b34801561045c57600080fd5b50610477600480360381019061047291906147b2565b610fae565b005b34801561048557600080fd5b5061048e6110af565b60405161049b91906145af565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c691906147df565b6110b9565b005b3480156104d957600080fd5b506104f460048036038101906104ef919061485a565b61129a565b005b34801561050257600080fd5b5061050b611396565b60405161051891906145af565b60405180910390f35b34801561052d57600080fd5b5061054860048036038101906105439190614887565b61139c565b604051610555919061476b565b60405180910390f35b34801561056a57600080fd5b50610585600480360381019061058091906147b2565b61159c565b005b34801561059357600080fd5b5061059c61164e565b6040516105a991906145af565b60405180910390f35b3480156105be57600080fd5b506105c761168f565b6040516105d491906148f6565b60405180910390f35b3480156105e957600080fd5b5061060460048036038101906105ff9190614710565b611698565b604051610611919061476b565b60405180910390f35b34801561062657600080fd5b5061062f611823565b60405161063c91906145af565b60405180910390f35b34801561065157600080fd5b5061066c60048036038101906106679190614911565b611829565b604051610679919061476b565b60405180910390f35b34801561068e57600080fd5b50610697611849565b6040516106a4919061476b565b60405180910390f35b3480156106b957600080fd5b506106c261185c565b6040516106cf919061476b565b60405180910390f35b3480156106e457600080fd5b506106ff60048036038101906106fa9190614911565b61186f565b60405161070c919061476b565b60405180910390f35b34801561072157600080fd5b5061073c6004803603810190610737919061485a565b6118a2565b005b34801561074a57600080fd5b50610765600480360381019061076091906147b2565b61199f565b005b34801561077357600080fd5b5061077c611aa0565b005b34801561078a57600080fd5b506107a560048036038101906107a0919061493e565b611b52565b005b3480156107b357600080fd5b506107bc611c42565b6040516107c991906145af565b60405180910390f35b3480156107de57600080fd5b506107e7611c48565b6040516107f4919061476b565b60405180910390f35b34801561080957600080fd5b50610824600480360381019061081f9190614911565b611c5b565b60405161083191906145af565b60405180910390f35b34801561084657600080fd5b5061084f611ca4565b005b34801561085d57600080fd5b50610866611df7565b604051610873919061498d565b60405180910390f35b34801561088857600080fd5b506108a3600480360381019061089e919061493e565b611e1d565b005b3480156108b157600080fd5b506108ba611f0d565b6040516108c791906145af565b60405180910390f35b3480156108dc57600080fd5b506108e5611f13565b005b3480156108f357600080fd5b5061090e600480360381019061090991906147b2565b611fc5565b005b34801561091c57600080fd5b50610925612077565b60405161093291906145af565b60405180910390f35b34801561094757600080fd5b50610962600480360381019061095d919061493e565b61207d565b005b34801561097057600080fd5b5061098b600480360381019061098691906149a8565b61216d565b005b34801561099957600080fd5b506109a26122b6565b6040516109af919061498d565b60405180910390f35b3480156109c457600080fd5b506109cd6122c5565b6040516109da919061476b565b60405180910390f35b3480156109ef57600080fd5b50610a0a6004803603810190610a059190614911565b6122d8565b604051610a17919061476b565b60405180910390f35b348015610a2c57600080fd5b50610a356122f8565b604051610a42919061498d565b60405180910390f35b348015610a5757600080fd5b50610a726004803603810190610a6d9190614a9a565b612321565b005b348015610a8057600080fd5b50610a9b6004803603810190610a969190614911565b6124a8565b005b348015610aa957600080fd5b50610ab2612647565b604051610abf919061465a565b60405180910390f35b348015610ad457600080fd5b50610add612684565b604051610aea91906145af565b60405180910390f35b348015610aff57600080fd5b50610b0861268a565b604051610b1591906145af565b60405180910390f35b348015610b2a57600080fd5b50610b33612690565b604051610b40919061476b565b60405180910390f35b348015610b5557600080fd5b50610b5e6126a3565b604051610b6b919061498d565b60405180910390f35b348015610b8057600080fd5b50610b9b6004803603810190610b969190614710565b6126c9565b604051610ba8919061476b565b60405180910390f35b348015610bbd57600080fd5b50610bd86004803603810190610bd39190614afa565b6126de565b005b348015610be657600080fd5b50610bef612798565b604051610bfc91906145af565b60405180910390f35b348015610c1157600080fd5b50610c1a61279e565b005b348015610c2857600080fd5b50610c31612850565b604051610c3e91906145af565b60405180910390f35b348015610c5357600080fd5b50610c5c612856565b604051610c69919061476b565b60405180910390f35b348015610c7e57600080fd5b50610c996004803603810190610c949190614b3a565b612869565b604051610ca691906145af565b60405180910390f35b348015610cbb57600080fd5b50610cd66004803603810190610cd19190614911565b6128f0565b604051610ce3919061476b565b60405180910390f35b348015610cf857600080fd5b50610d01612910565b604051610d0e919061476b565b60405180910390f35b348015610d2357600080fd5b50610d3e6004803603810190610d39919061485a565b612923565b005b348015610d4c57600080fd5b50610d676004803603810190610d629190614911565b612a20565b005b348015610d7557600080fd5b50610d906004803603810190610d8b919061493e565b612be1565b005b348015610d9e57600080fd5b50610da7612cd1565b604051610db49190614bd9565b60405180910390f35b348015610dc957600080fd5b50610dd2612cf7565b604051610ddf919061476b565b60405180910390f35b348015610df457600080fd5b50610e0f6004803603810190610e0a91906147b2565b612d0a565b005b348015610e1d57600080fd5b50610e386004803603810190610e339190614911565b612dbc565b604051610e45919061476b565b60405180910390f35b348015610e5a57600080fd5b50610e63612ddc565b604051610e70919061476b565b60405180910390f35b601d5481565b60606040518060400160405280601a81526020017f4861727279506f747465724f62616d614d6f6a6f363636696e75000000000000815250905090565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610f9c91906145af565b60405180910390a36001905092915050565b610fb6612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103a90614c40565b60405180910390fd5b601a60029054906101000a900460ff16611092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108990614cac565b60405180910390fd5b80601a60006101000a81548160ff02191690831515021790555050565b6000600254905090565b6110c1612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461114e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114590614c40565b60405180910390fd5b81601160036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b6112a2612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461132f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132690614c40565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc6064848461135c9190614cfb565b6113669190614d84565b9081150290604051600060405180830381858888f19350505050158015611391573d6000803e3d6000fd5b505050565b600f5481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461158857611507826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e559092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611593848484612eb9565b90509392505050565b6115a4612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162890614c40565b60405180910390fd5b80601160016101000a81548160ff02191690831515021790555050565b600061168a61165d6000611c5b565b61167c61166b61dead611c5b565b60025461367190919063ffffffff16565b61367190919063ffffffff16565b905090565b60006012905090565b60006116a2612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461172f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172690614c40565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361179d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179490614e01565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016117d8929190614e21565b6020604051808303816000875af11580156117f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181b9190614e5f565b905092915050565b600c5481565b60086020528060005260406000206000915054906101000a900460ff1681565b600560149054906101000a900460ff1681565b601c60019054906101000a900460ff1681565b600061189b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610ebc565b9050919050565b6118aa612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192e90614c40565b60405180910390fd5b600581101561197b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197290614efe565b60405180910390fd5b6103e88160025461198c9190614cfb565b6119969190614d84565b60038190555050565b6119a7612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2b90614c40565b60405180910390fd5b601a60029054906101000a900460ff16611a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7a90614f6a565b60405180910390fd5b80601a60016101000a81548160ff02191690831515021790555050565b611aa8612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2c90614c40565b60405180910390fd5b6000601a60026101000a81548160ff021916908315150217905550565b611b5a612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bde90614c40565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b5481565b601160019054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611cac612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3090614c40565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e25612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea990614c40565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60035481565b611f1b612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9f90614c40565b60405180910390fd5b6000601a60016101000a81548160ff021916908315150217905550565b611fcd612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461205a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205190614c40565b60405180910390fd5b80601160026101000a81548160ff02191690831515021790555050565b60045481565b612085612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612112576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210990614c40565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612175612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612202576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f990614c40565b60405180910390fd5b85600a8190555084600b8190555083600c8190555082600d8190555081600e81905550612278600e5461226a600d5461225c600c5461224e600b54600a54612def90919063ffffffff16565b612def90919063ffffffff16565b612def90919063ffffffff16565b612def90919063ffffffff16565b600f8190555080600f5461228c9190614f8a565b6010819055506023600f546010546122a49190614f8a565b106122ae57600080fd5b505050505050565b60006122c06122f8565b905090565b601a60019054906101000a900460ff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612329612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ad90614c40565b60405180910390fd5b601a60029054906101000a900460ff16612405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fc90614f6a565b60405180910390fd5b60005b838390508110156124a25781601b600086868581811061242b5761242a614fbe565b5b90506020020160208101906124409190614911565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508061249b90614fed565b9050612408565b50505050565b6124b0612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461253d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253490614c40565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60606040518060400160405280600481526020017f5065706500000000000000000000000000000000000000000000000000000000815250905090565b600a5481565b600e5481565b601160029054906101000a900460ff1681565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006126d6338484612eb9565b905092915050565b6126e6612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276a90614c40565b60405180910390fd5b81601c60016101000a81548160ff02191690831515021790555080601d819055505050565b60195481565b6127a6612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282a90614c40565b60405180910390fd5b6001601a60006101000a81548160ff021916908315150217905550565b60105481565b601c60029054906101000a900460ff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60186020528060005260406000206000915054906101000a900460ff1681565b601160009054906101000a900460ff1681565b61292b612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129af90614c40565b60405180910390fd5b60058110156129fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f390614efe565b60405180910390fd5b6103e881600254612a0d9190614cfb565b612a179190614d84565b60048190555050565b612a28612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aac90614c40565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1b906150a7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612be9612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6d90614c40565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a60029054906101000a900460ff1681565b612d12612e4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9690614c40565b60405180910390fd5b80601160006101000a81548160ff02191690831515021790555050565b601b6020528060005260406000206000915054906101000a900460ff1681565b601a60009054906101000a900460ff1681565b6000808284612dfe9190614f8a565b905083811015612e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3a90615113565b60405180910390fd5b8091505092915050565b600033905090565b6000838311158290612e9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e94919061465a565b60405180910390fd5b5060008385612eac9190615133565b9050809150509392505050565b6000601c60009054906101000a900460ff1615612ee257612edb8484846136bb565b905061366a565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612f865750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612fdb57601a60009054906101000a900460ff16612fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fd1906151b3565b60405180910390fd5b5b600354821115806130355750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161306b9061521f565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130da5750601c60009054906101000a900460ff16155b80156130f25750601c60019054906101000a900460ff165b801561313f5750601d54600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b1561314d5761314c61388e565b5b613155613f6f565b1580156131ab5750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561323b576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411613232576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132299061528b565b60405180910390fd5b61323a613f7c565b5b601a60019054906101000a900460ff16156132de57601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156132dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132d4906152f7565b60405180910390fd5b5b613367826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e559092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134105750600560149054906101000a900460ff165b156134ac5760045461346a83600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612def90919063ffffffff16565b11156134ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134a290615363565b60405180910390fd5b5b6000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135525750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61355c5782613568565b613567858585613f85565b5b90506135bc81600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612def90919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161365c91906145af565b60405180910390a360019150505b9392505050565b60006136b383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612e55565b905092915050565b6000613746826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e559092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137db82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612def90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161387b91906145af565b60405180910390a3600190509392505050565b6001601c60006101000a81548160ff0219169083151502179055506000600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600061393f600261393161390e600e54600f5461367190919063ffffffff16565b613923600a548761446f90919063ffffffff16565b6144e990919063ffffffff16565b6144e990919063ffffffff16565b90506000613956828461367190919063ffffffff16565b90506000600267ffffffffffffffff81111561397557613974615383565b5b6040519080825280602002602001820160405280156139a35781602001602082028036833780820191505090505b50905030816000815181106139bb576139ba614fbe565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a8691906153c7565b81600181518110613a9a57613a99614fbe565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613b389594939291906154ed565b600060405180830381600087803b158015613b5257600080fd5b505af1158015613b66573d6000803e3d6000fd5b5050505060004790506000613baf613b8a6002600a546144e990919063ffffffff16565b613ba1600e54600f5461367190919063ffffffff16565b61367190919063ffffffff16565b90506000613bed6002613bdf84613bd1600a548861446f90919063ffffffff16565b6144e990919063ffffffff16565b6144e990919063ffffffff16565b90506000613c1883613c0a600b548761446f90919063ffffffff16565b6144e990919063ffffffff16565b90506000613c4384613c35600d548861446f90919063ffffffff16565b6144e990919063ffffffff16565b90506000613c6e85613c60600c548961446f90919063ffffffff16565b6144e990919063ffffffff16565b90506000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168461753090604051613cbc90615578565b600060405180830381858888f193505050503d8060008114613cfa576040519150601f19603f3d011682016040523d82523d6000602084013e613cff565b606091505b5050905060009050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051613d5190615578565b600060405180830381858888f193505050503d8060008114613d8f576040519150601f19603f3d011682016040523d82523d6000602084013e613d94565b606091505b50508091505060009050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051613de890615578565b600060405180830381858888f193505050503d8060008114613e26576040519150601f19603f3d011682016040523d82523d6000602084013e613e2b565b606091505b5050809150506000905060008a1115613f4757601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308d600080601160039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613ec79695949392919061558d565b60606040518083038185885af1158015613ee5573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613f0a9190615603565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858b604051613f3e929190615656565b60405180910390a15b50505050505050505050506000601c60006101000a81548160ff021916908315150217905550565b6000806019541415905090565b43601981905550565b600080600090506000601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613ff35750601160019054906101000a900460ff165b156140125761400f600e5460105461367190919063ffffffff16565b91505b601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156140775750601160009054906101000a900460ff165b1561409657614093600e54600f5461367190919063ffffffff16565b91505b601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561413a5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561417857601160029054906101000a900460ff16156141725761416b600e5460105461367190919063ffffffff16565b9150614177565b600091505b5b60008211801561418a57506000600e54115b1561431a576141b760646141a9600e548761446f90919063ffffffff16565b6144e990919063ffffffff16565b905061422d8160066000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612def90919063ffffffff16565b60066000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161431191906145af565b60405180910390a35b60006143426064614334858861446f90919063ffffffff16565b6144e990919063ffffffff16565b905061439681600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612def90919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161443691906145af565b60405180910390a361446382614455838861367190919063ffffffff16565b61367190919063ffffffff16565b93505050509392505050565b600080830361448157600090506144e3565b6000828461448f9190614cfb565b905082848261449e9190614d84565b146144de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016144d5906156f1565b60405180910390fd5b809150505b92915050565b600061452b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614533565b905092915050565b6000808311829061457a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614571919061465a565b60405180910390fd5b50600083856145899190614d84565b9050809150509392505050565b6000819050919050565b6145a981614596565b82525050565b60006020820190506145c460008301846145a0565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156146045780820151818401526020810190506145e9565b60008484015250505050565b6000601f19601f8301169050919050565b600061462c826145ca565b61463681856145d5565b93506146468185602086016145e6565b61464f81614610565b840191505092915050565b600060208201905081810360008301526146748184614621565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006146b182614686565b9050919050565b6146c1816146a6565b81146146cc57600080fd5b50565b6000813590506146de816146b8565b92915050565b6146ed81614596565b81146146f857600080fd5b50565b60008135905061470a816146e4565b92915050565b600080604083850312156147275761472661467c565b5b6000614735858286016146cf565b9250506020614746858286016146fb565b9150509250929050565b60008115159050919050565b61476581614750565b82525050565b6000602082019050614780600083018461475c565b92915050565b61478f81614750565b811461479a57600080fd5b50565b6000813590506147ac81614786565b92915050565b6000602082840312156147c8576147c761467c565b5b60006147d68482850161479d565b91505092915050565b600080600080600060a086880312156147fb576147fa61467c565b5b6000614809888289016146cf565b955050602061481a888289016146cf565b945050604061482b888289016146cf565b935050606061483c888289016146cf565b925050608061484d888289016146cf565b9150509295509295909350565b6000602082840312156148705761486f61467c565b5b600061487e848285016146fb565b91505092915050565b6000806000606084860312156148a05761489f61467c565b5b60006148ae868287016146cf565b93505060206148bf868287016146cf565b92505060406148d0868287016146fb565b9150509250925092565b600060ff82169050919050565b6148f0816148da565b82525050565b600060208201905061490b60008301846148e7565b92915050565b6000602082840312156149275761492661467c565b5b6000614935848285016146cf565b91505092915050565b600080604083850312156149555761495461467c565b5b6000614963858286016146cf565b92505060206149748582860161479d565b9150509250929050565b614987816146a6565b82525050565b60006020820190506149a2600083018461497e565b92915050565b60008060008060008060c087890312156149c5576149c461467c565b5b60006149d389828a016146fb565b96505060206149e489828a016146fb565b95505060406149f589828a016146fb565b9450506060614a0689828a016146fb565b9350506080614a1789828a016146fb565b92505060a0614a2889828a016146fb565b9150509295509295509295565b600080fd5b600080fd5b600080fd5b60008083601f840112614a5a57614a59614a35565b5b8235905067ffffffffffffffff811115614a7757614a76614a3a565b5b602083019150836020820283011115614a9357614a92614a3f565b5b9250929050565b600080600060408486031215614ab357614ab261467c565b5b600084013567ffffffffffffffff811115614ad157614ad0614681565b5b614add86828701614a44565b93509350506020614af08682870161479d565b9150509250925092565b60008060408385031215614b1157614b1061467c565b5b6000614b1f8582860161479d565b9250506020614b30858286016146fb565b9150509250929050565b60008060408385031215614b5157614b5061467c565b5b6000614b5f858286016146cf565b9250506020614b70858286016146cf565b9150509250929050565b6000819050919050565b6000614b9f614b9a614b9584614686565b614b7a565b614686565b9050919050565b6000614bb182614b84565b9050919050565b6000614bc382614ba6565b9050919050565b614bd381614bb8565b82525050565b6000602082019050614bee6000830184614bca565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614c2a6020836145d5565b9150614c3582614bf4565b602082019050919050565b60006020820190508181036000830152614c5981614c1d565b9050919050565b7f43616e206e6f206c6f6e6765722070617573652074726164696e670000000000600082015250565b6000614c96601b836145d5565b9150614ca182614c60565b602082019050919050565b60006020820190508181036000830152614cc581614c89565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614d0682614596565b9150614d1183614596565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614d4a57614d49614ccc565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614d8f82614596565b9150614d9a83614596565b925082614daa57614da9614d55565b5b828204905092915050565b7f43616e742072656d6f766520746865206e617469766520746f6b656e00000000600082015250565b6000614deb601c836145d5565b9150614df682614db5565b602082019050919050565b60006020820190508181036000830152614e1a81614dde565b9050919050565b6000604082019050614e36600083018561497e565b614e4360208301846145a0565b9392505050565b600081519050614e5981614786565b92915050565b600060208284031215614e7557614e7461467c565b5b6000614e8384828501614e4a565b91505092915050565b7f57616c6c6574204c696d6974206e6565647320746f206265206174206c65617360008201527f7420302e35250000000000000000000000000000000000000000000000000000602082015250565b6000614ee86026836145d5565b9150614ef382614e8c565b604082019050919050565b60006020820190508181036000830152614f1781614edb565b9050919050565b7f43616e206e6f206c6f6e6765722061646420626c61636b6c6973747300000000600082015250565b6000614f54601c836145d5565b9150614f5f82614f1e565b602082019050919050565b60006020820190508181036000830152614f8381614f47565b9050919050565b6000614f9582614596565b9150614fa083614596565b9250828201905080821115614fb857614fb7614ccc565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614ff882614596565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361502a57615029614ccc565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006150916026836145d5565b915061509c82615035565b604082019050919050565b600060208201905081810360008301526150c081615084565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006150fd601b836145d5565b9150615108826150c7565b602082019050919050565b6000602082019050818103600083015261512c816150f0565b9050919050565b600061513e82614596565b915061514983614596565b925082820390508181111561516157615160614ccc565b5b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b600061519d6014836145d5565b91506151a882615167565b602082019050919050565b600060208201905081810360008301526151cc81615190565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006152096011836145d5565b9150615214826151d3565b602082019050919050565b60006020820190508181036000830152615238816151fc565b9050919050565b7f5a65726f2062616c616e63652076696f6c617465642100000000000000000000600082015250565b60006152756016836145d5565b91506152808261523f565b602082019050919050565b600060208201905081810360008301526152a481615268565b9050919050565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b60006152e1600b836145d5565b91506152ec826152ab565b602082019050919050565b60006020820190508181036000830152615310816152d4565b9050919050565b7f4d61782077616c6c65742076696f6c6174656421000000000000000000000000600082015250565b600061534d6014836145d5565b915061535882615317565b602082019050919050565b6000602082019050818103600083015261537c81615340565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506153c1816146b8565b92915050565b6000602082840312156153dd576153dc61467c565b5b60006153eb848285016153b2565b91505092915050565b6000819050919050565b600061541961541461540f846153f4565b614b7a565b614596565b9050919050565b615429816153fe565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615464816146a6565b82525050565b6000615476838361545b565b60208301905092915050565b6000602082019050919050565b600061549a8261542f565b6154a4818561543a565b93506154af8361544b565b8060005b838110156154e05781516154c7888261546a565b97506154d283615482565b9250506001810190506154b3565b5085935050505092915050565b600060a08201905061550260008301886145a0565b61550f6020830187615420565b8181036040830152615521818661548f565b9050615530606083018561497e565b61553d60808301846145a0565b9695505050505050565b600081905092915050565b50565b6000615562600083615547565b915061556d82615552565b600082019050919050565b600061558382615555565b9150819050919050565b600060c0820190506155a2600083018961497e565b6155af60208301886145a0565b6155bc6040830187615420565b6155c96060830186615420565b6155d6608083018561497e565b6155e360a08301846145a0565b979650505050505050565b6000815190506155fd816146e4565b92915050565b60008060006060848603121561561c5761561b61467c565b5b600061562a868287016155ee565b935050602061563b868287016155ee565b925050604061564c868287016155ee565b9150509250925092565b600060408201905061566b60008301856145a0565b61567860208301846145a0565b9392505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006156db6021836145d5565b91506156e68261567f565b604082019050919050565b6000602082019050818103600083015261570a816156ce565b905091905056fea2646970667358221220812e2c19a482ec3d35ac561a966c3b6d76914ebb9b01ef4caa205f8dc97e22bc64736f6c63430008100033

Deployed Bytecode Sourcemap

5105:14431:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7100:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8685:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9541:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16038:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8947:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18682:371;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19324:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6273:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10748:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18304:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9377:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8861:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19061:255;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6167:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5985:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5815:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6999:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9765:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15834:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17310:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18008:87;;;;;;;;;;;;;:::i;:::-;;16295:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6129:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6388:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9127:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4698:148;;;;;;;;;;;;;:::i;:::-;;6512:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17769:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5316:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18103:95;;;;;;;;;;;;;:::i;:::-;;18404:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5377:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17892:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16746:556;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9041:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6829:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6035:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4482:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17484:277;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16557:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8771:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6091:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6236:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6425:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6684:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10246:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18512:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6759:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16210:77;;;;;;;;;;;;;:::i;:::-;;6307:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7046:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9238:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6710:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6352:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15628:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4854:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16422:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6654:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6868:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18206:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6909:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6791:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7100:54;;;;:::o;8685:78::-;8733:13;8756:5;;;;;;;;;;;;;;;;;8749:12;;8685:78;:::o;9541:216::-;9616:4;9668:6;9633:11;:23;9645:10;9633:23;;;;;;;;;;;;;;;:32;9657:7;9633:32;;;;;;;;;;;;;;;:41;;;;9711:7;9690:37;;9699:10;9690:37;;;9720:6;9690:37;;;;;;:::i;:::-;;;;;;;;9745:4;9738:11;;9541:216;;;;:::o;16038:164::-;4619:12;:10;:12::i;:::-;4609:22;;:6;;;;;;;;;;:22;;;4601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16113:15:::1;;;;;;;;;;;16105:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;16185:9;16171:11;;:23;;;;;;;;;;;;;;;;;;16038:164:::0;:::o;8947:86::-;9002:7;9019:12;;9012:19;;8947:86;:::o;18682:371::-;4619:12;:10;:12::i;:::-;4609:22;;:6;;;;;;;;;;:22;;;4601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18874:11:::1;18850:21;;:35;;;;;;;;;;;;;;;;;;18914:12;18896:15;;:30;;;;;;;;;;;;;;;;;;18953:16;18937:13;;:32;;;;;;;;;;;;;;;;;;18992:12;18980:9;;:24;;;;;;;;;;;;;;;;;;19030:15;19015:12;;:30;;;;;;;;;;;;;;;;;;18682:371:::0;;;;;:::o;19324:207::-;4619:12;:10;:12::i;:::-;4609:22;;:6;;;;;;;;;;:22;;;4601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19407:17:::1;19427:21;19407:41;;19467:10;19459:28;;:64;19519:3;19500:16;19488:9;:28;;;;:::i;:::-;:34;;;;:::i;:::-;19459:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;19396:135;19324:207:::0;:::o;6273:27::-;;;;:::o;10748:370::-;10848:4;10904:17;10869:11;:19;10881:6;10869:19;;;;;;;;;;;;;;;:31;10889:10;10869:31;;;;;;;;;;;;;;;;:52;10865:188;;10972:69;11008:6;10972:69;;;;;;;;;;;;;;;;;:11;:19;10984:6;10972:19;;;;;;;;;;;;;;;:31;10992:10;10972:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;10938:11;:19;10950:6;10938:19;;;;;;;;;;;;;;;:31;10958:10;10938:31;;;;;;;;;;;;;;;:103;;;;10865:188;11070:40;11084:6;11092:9;11103:6;11070:13;:40::i;:::-;11063:47;;10748:370;;;;;:::o;18304:92::-;4619:12;:10;:12::i;:::-;4609:22;;:6;;;;;;;;;;:22;;;4601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18382:6:::1;18368:11;;:20;;;;;;;;;;;;;;;;;;18304:92:::0;:::o;9377:156::-;9430:7;9457:68;9502:22;5565:42;9502:9;:22::i;:::-;9457:40;9474:22;5477:42;9474:9;:22::i;:::-;9457:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;9450:75;;9377:156;:::o;8861:78::-;8913:5;5237:2;8921:16;;8861:78;:::o;19061:255::-;19146:12;4619;:10;:12::i;:::-;4609:22;;:6;;;;;;;;;;:22;;;4601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19203:4:::1;19179:29;;:12;:29;;::::0;19171:70:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19266:12;19259:29;;;19289:10;19301:6;19259:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19252:56;;19061:255:::0;;;;:::o;6167:29::-;;;;:::o;5985:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;5815:33::-;;;;;;;;;;;;;:::o;6999:40::-;;;;;;;;;;;;;:::o;9765:122::-;9820:4;9844:35;9852:7;9861:17;9844:7;:35::i;:::-;9837:42;;9765:122;;;:::o;15834:196::-;4619:12;:10;:12::i;:::-;4609:22;;:6;;;;;;;;;;:22;;;4601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15922:1:::1;15910:8;:13;;15902:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16018:4;16007:8;15992:12;;:23;;;;:::i;:::-;:30;;;;:::i;:::-;15977:12;:45;;;;15834:196:::0;:::o;17310:166::-;4619:12;:10;:12::i;:::-;4609:22;;:6;;;;;;;;;;:22;;;4601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17386:15:::1;;;;;;;;;;;17378:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;17461:7;17445:13;;:23;;;;;;;;;;;;;;;;;;17310:166:::0;:::o;18008:87::-;4619:12;:10;:12::i;:::-;4609:22;;:6;;;;;;;;;;:22;;;4601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18082:5:::1;18064:15;;:23;;;;;;;;;;;;;;;;;;18008:87::o:0;16295:119::-;4619:12;:10;:12::i;:::-;4609:22;;:6;;;;;;;;;;:22;;;4601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16400:6:::1;16378:11;:19;16390:6;16378:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;16295:119:::0;;:::o;6129:31::-;;;;:::o;6388:30::-;;;;;;;;;;;;;:::o;9127:103::-;9193:7;9210:9;:18;9220:7;9210:18;;;;;;;;;;;;;;;;9203:25;;9127:103;;;:::o;4698:148::-;4619:12;:10;:12::i;:::-;4609:22;;:6;;;;;;;;;;:22;;;4601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4805:1:::1;4768:40;;4789:6;::::0;::::1;;;;;;;;4768:40;;;;;;;;;;;;4836:1;4819:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;4698:148::o:0;6512:30::-;;;;;;;;;;;;;:::o;17769:115::-;4619:12;:10;:12::i;:::-;4609:22;;:6;;;;;;;;;;:22;;;4601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17870:6:::1;17843:14;:24;17858:8;17843:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;17769:115:::0;;:::o;5316:54::-;;;;:::o;18103:95::-;4619:12;:10;:12::i;:::-;4609:22;;:6;;;;;;;;;;:22;;;4601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18185:5:::1;18169:13;;:21;;;;;;;;;;;;;;;;;;18103:95::o:0;18404:100::-;4619:12;:10;:12::i;:::-;4609:22;;:6;;;;;;;;;;:22;;;4601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18490:6:::1;18472:15;;:24;;;;;;;;;;;;;;;;;;18404:100:::0;:::o;5377:52::-;;;;:::o;17892:108::-;4619:12;:10;:12::i;:::-;4609:22;;:6;;;;;;;;;;:22;;;4601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17986:6:::1;17967;:16;17974:8;17967:16;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;17892:108:::0;;:::o;16746:556::-;4619:12;:10;:12::i;:::-;4609:22;;:6;;;;;;;;;;:22;;;4601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16938:9:::1;16923:12;:24;;;;16973:15;16958:12;:30;;;;17012:13;16999:10;:26;;;;17045:9;17036:6;:18;;;;17077:12;17065:9;:24;;;;17113:73;17176:9;;17113:58;17164:6;;17113:46;17148:10;;17113:30;17130:12;;17113;;:16;;:30;;;;:::i;:::-;:34;;:46;;;;:::i;:::-;:50;;:58;;;;:::i;:::-;:62;;:73;;;;:::i;:::-;17102:8;:84;;;;17228:12;17217:8;;:23;;;;:::i;:::-;17197:17;:43;;;;17291:2;17280:8;;17260:17;;:28;;;;:::i;:::-;:33;17251:43;;;::::0;::::1;;16746:556:::0;;;;;;:::o;9041:78::-;9093:7;9110;:5;:7::i;:::-;9103:14;;9041:78;:::o;6829:32::-;;;;;;;;;;;;;:::o;6035:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;4482:79::-;4520:7;4547:6;;;;;;;;;;;4540:13;;4482:79;:::o;17484:277::-;4619:12;:10;:12::i;:::-;4609:22;;:6;;;;;;;;;;:22;;;4601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17589:15:::1;;;;;;;;;;;17581:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;17653:9;17648:106;17668:9;;:16;;17664:1;:20;17648:106;;;17736:6;17706:13;:27;17720:9;;17730:1;17720:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17706:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;17686:3;;;;:::i;:::-;;;17648:106;;;;17484:277:::0;;;:::o;16557:181::-;4619:12;:10;:12::i;:::-;4609:22;;:6;;;;;;;;;;:22;;;4601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16648:4:::1;16623:14:::0;:22:::1;16638:6;16623:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;16685:4;16663:11;:19;16675:6;16663:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;16726:4;16700:15;:23;16716:6;16700:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;16557:181:::0;:::o;8771:82::-;8821:13;8844:7;;;;;;;;;;;;;;;;;8837:14;;8771:82;:::o;6091:31::-;;;;:::o;6236:28::-;;;;:::o;6425:34::-;;;;;;;;;;;;;:::o;6684:19::-;;;;;;;;;;;;;:::o;10246:156::-;10326:4;10350:44;10364:10;10376:9;10387:6;10350:13;:44::i;:::-;10343:51;;10246:156;;;;:::o;18512:162::-;4619:12;:10;:12::i;:::-;4609:22;;:6;;;;;;;;;;:22;;;4601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18624:6:::1;18600:21;;:30;;;;;;;;;;;;;;;;;;18657:9;18641:13;:25;;;;18512:162:::0;;:::o;6759:25::-;;;;:::o;16210:77::-;4619:12;:10;:12::i;:::-;4609:22;;:6;;;;;;;;;;:22;;;4601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16275:4:::1;16261:11;;:18;;;;;;;;;;;;;;;;;;16210:77::o:0;6307:36::-;;;;:::o;7046:45::-;;;;;;;;;;;;;:::o;9238:131::-;9322:7;9339:11;:19;9351:6;9339:19;;;;;;;;;;;;;;;:28;9359:7;9339:28;;;;;;;;;;;;;;;;9332:35;;9238:131;;;;:::o;6710:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;6352:29::-;;;;;;;;;;;;;:::o;15628:198::-;4619:12;:10;:12::i;:::-;4609:22;;:6;;;;;;;;;;:22;;;4601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15720:1:::1;15708:8;:13;;15700:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15814:4;15803:8;15788:12;;:23;;;;:::i;:::-;:30;;;;:::i;:::-;15775:10;:43;;;;15628:198:::0;:::o;4854:244::-;4619:12;:10;:12::i;:::-;4609:22;;:6;;;;;;;;;;:22;;;4601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4963:1:::1;4943:22;;:8;:22;;::::0;4935:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;5053:8;5024:38;;5045:6;::::0;::::1;;;;;;;;5024:38;;;;;;;;;;;;5082:8;5073:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;4854:244:::0;:::o;16422:127::-;4619:12;:10;:12::i;:::-;4609:22;;:6;;;;;;;;;;:22;;;4601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16535:6:::1;16509:15;:23;16525:6;16509:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;16422:127:::0;;:::o;6654:23::-;;;;;;;;;;;;;:::o;6868:34::-;;;;;;;;;;;;;:::o;18206:90::-;4619:12;:10;:12::i;:::-;4609:22;;:6;;;;;;;;;;:22;;;4601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18282:6:::1;18269:10;;:19;;;;;;;;;;;;;;;;;;18206:90:::0;:::o;6909:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;6791:31::-;;;;;;;;;;;;;:::o;2694:179::-;2752:7;2772:9;2788:1;2784;:5;;;;:::i;:::-;2772:17;;2813:1;2808;:6;;2800:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2864:1;2857:8;;;2694:179;;;;:::o;3822:115::-;3875:15;3918:10;3903:26;;3822:115;:::o;3025:190::-;3111:7;3144:1;3139;:6;;3147:12;3131:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3171:9;3187:1;3183;:5;;;;:::i;:::-;3171:17;;3206:1;3199:8;;;3025:190;;;;;:::o;11126:1417::-;11218:4;11239:16;;;;;;;;;;;11235:73;;;11265:41;11280:6;11288:9;11299:6;11265:14;:41::i;:::-;11258:48;;;;11235:73;11322:14;:22;11337:6;11322:22;;;;;;;;;;;;;;;;;;;;;;;;;11321:23;:53;;;;;11349:14;:25;11364:9;11349:25;;;;;;;;;;;;;;;;;;;;;;;;;11348:26;11321:53;11318:128;;;11398:11;;;;;;;;;;;11390:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;11318:128;11476:12;;11466:6;:22;;:49;;;;11492:15;:23;11508:6;11492:23;;;;;;;;;;;;;;;;;;;;;;;;;11466:49;11458:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;11552:6;:17;11559:9;11552:17;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;;11574:16;;;;;;;;;;;11573:17;11552:38;:63;;;;;11594:21;;;;;;;;;;;11552:63;:108;;;;;11647:13;;11619:9;:24;11637:4;11619:24;;;;;;;;;;;;;;;;:41;;11552:108;11548:140;;;11663:23;:21;:23::i;:::-;11548:140;11703:10;:8;:10::i;:::-;11702:11;:32;;;;;11717:6;:17;11724:9;11717:17;;;;;;;;;;;;;;;;;;;;;;;;;11702:32;11698:144;;;11779:1;11759:9;:17;11769:6;11759:17;;;;;;;;;;;;;;;;:21;11751:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;11822:8;:6;:8::i;:::-;11698:144;11884:13;;;;;;;;;;;11880:91;;;11923:13;:21;11937:6;11923:21;;;;;;;;;;;;;;;;;;;;;;;;;11922:22;11914:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;11880:91;12031:53;12053:6;12031:53;;;;;;;;;;;;;;;;;:9;:17;12041:6;12031:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;12011:9;:17;12021:6;12011:17;;;;;;;;;;;;;;;:73;;;;12102:15;:26;12118:9;12102:26;;;;;;;;;;;;;;;;;;;;;;;;;12101:27;:45;;;;;12132:14;;;;;;;;;;;12101:45;12097:157;;;12207:10;;12171:32;12196:6;12171:9;:20;12181:9;12171:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;:46;;12163:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12097:157;12266:19;12289:11;:19;12301:6;12289:19;;;;;;;;;;;;;;;;;;;;;;;;;12288:20;:47;;;;;12313:11;:22;12325:9;12313:22;;;;;;;;;;;;;;;;;;;;;;;;;12312:23;12288:47;:96;;12378:6;12288:96;;;12338:37;12349:6;12357:9;12368:6;12338:10;:37::i;:::-;12288:96;12266:118;;12418:37;12443:11;12418:9;:20;12428:9;12418:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;12395:9;:20;12405:9;12395:20;;;;;;;;;;;;;;;:60;;;;12490:9;12473:40;;12482:6;12473:40;;;12501:11;12473:40;;;;;;:::i;:::-;;;;;;;;12531:4;12524:11;;;11126:1417;;;;;;:::o;2881:136::-;2939:7;2966:43;2970:1;2973;2966:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2959:50;;2881:136;;;;:::o;10410:330::-;10503:4;10540:53;10562:6;10540:53;;;;;;;;;;;;;;;;;:9;:17;10550:6;10540:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;10520:9;:17;10530:6;10520:17;;;;;;;;;;;;;;;:73;;;;10627:32;10652:6;10627:9;:20;10637:9;10627:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;10604:9;:20;10614:9;10604:20;;;;;;;;;;;;;;;:55;;;;10692:9;10675:35;;10684:6;10675:35;;;10703:6;10675:35;;;;;;:::i;:::-;;;;;;;;10728:4;10721:11;;10410:330;;;;;:::o;13757:1863::-;7278:4;7259:16;;:23;;;;;;;;;;;;;;;;;;13822::::1;13848:9;:24;13866:4;13848:24;;;;;;;;;;;;;;;;13822:50;;13883:23;13909:69;13976:1;13909:62;13947:23;13960:9;;13947:8;;:12;;:23;;;;:::i;:::-;13909:33;13929:12;;13909:15;:19;;:33;;;;:::i;:::-;:37;;:62;;;;:::i;:::-;:66;;:69;;;;:::i;:::-;13883:95;;13989:20;14012:36;14032:15;14012;:19;;:36;;;;:::i;:::-;13989:59;;14061:21;14099:1;14085:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14061:40;;14130:4;14112;14117:1;14112:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;14156:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14146:4;14151:1;14146:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;14182:6;;;;;;;;;;;:57;;;14254:12;14281:1;14297:4;14324;14344:15;14182:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14383:17;14403:21;14383:41;;14437:19;14459:48;14487:19;14504:1;14487:12;;:16;;:19;;;;:::i;:::-;14459:23;14472:9;;14459:8;;:12;;:23;;;;:::i;:::-;:27;;:48;;;;:::i;:::-;14437:70;;14520:26;14549:51;14598:1;14549:44;14581:11;14549:27;14563:12;;14549:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;14520:80;;14611:26;14640:44;14672:11;14640:27;14654:12;;14640:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;14611:73;;14695:20;14718:38;14744:11;14718:21;14732:6;;14718:9;:13;;:21;;;;:::i;:::-;:25;;:38;;;;:::i;:::-;14695:61;;14767:24;14794:42;14824:11;14794:25;14808:10;;14794:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;14767:69;;14858:16;14887:15;;;;;;;;;;;14879:29;;14917:18;14943:5;14879:74;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14857:96;;;14978:5;14964:19;;15021:9;;;;;;;;;;;15013:23;;15045:12;15065:5;15013:62;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14996:79;;;;;15100:5;15086:19;;15143:13;;;;;;;;;;;15135:27;;15171:16;15195:5;15135:70;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15118:87;;;;;15230:5;15216:19;;15270:1;15252:15;:19;15248:365;;;15288:6;;;;;;;;;;;:22;;;15319:18;15365:4;15389:15;15423:1;15443::::0;15463:21:::1;;;;;;;;;;;15503:15;15288:245;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15553:48;15565:18;15585:15;15553:48;;;;;;;:::i;:::-;;;;;;;;15248:365;13811:1809;;;;;;;;;;;7324:5:::0;7305:16;;:24;;;;;;;;;;;;;;;;;;13757:1863::o;9895:90::-;9938:4;9976:1;9962:10;;:15;;9955:22;;9895:90;:::o;9993:71::-;10044:12;10031:10;:25;;;;9993:71::o;12551:1198::-;12640:7;12660:18;12681:1;12660:22;;12693:17;12729:6;:17;12736:9;12729:17;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;;12750:11;;;;;;;;;;;12729:32;12725:121;;;12794:32;12816:9;;12794:17;;:21;;:32;;;;:::i;:::-;12778:48;;12725:121;12860:6;:14;12867:6;12860:14;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;;;12878:10;;;;;;;;;;;12860:28;12856:108;;;12921:23;12934:9;;12921:8;;:12;;:23;;;;:::i;:::-;12905:39;;12856:108;12979:6;:14;12986:6;12979:14;;;;;;;;;;;;;;;;;;;;;;;;;12978:15;:37;;;;;12998:6;:17;13005:9;12998:17;;;;;;;;;;;;;;;;;;;;;;;;;12997:18;12978:37;12974:242;;;13035:15;;;;;;;;;;;13031:174;;;13086:32;13108:9;;13086:17;;:21;;:32;;;;:::i;:::-;13070:48;;13031:174;;;13188:1;13172:17;;13031:174;12974:242;13245:1;13229:13;:17;:33;;;;;13261:1;13250:9;;:12;13229:33;13226:255;;;13293:30;13319:3;13293:21;13304:9;;13293:6;:10;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;13278:45;;13364:41;13392:12;13364:9;:23;13374:12;;;;;;;;;;;13364:23;;;;;;;;;;;;;;;;:27;;:41;;;;:::i;:::-;13338:9;:23;13348:12;;;;;;;;;;;13338:23;;;;;;;;;;;;;;;:67;;;;13442:12;;;;;;;;;;;13425:44;;13434:6;13425:44;;;13456:12;13425:44;;;;;;:::i;:::-;;;;;;;;13226:255;13491:17;13511:34;13541:3;13511:25;13522:13;13511:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;13491:54;;13585:39;13614:9;13585;:24;13603:4;13585:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;13558:9;:24;13576:4;13558:24;;;;;;;;;;;;;;;:66;;;;13665:4;13640:42;;13649:6;13640:42;;;13672:9;13640:42;;;;;;:::i;:::-;;;;;;;;13702:39;13728:12;13702:21;13713:9;13702:6;:10;;:21;;;;:::i;:::-;:25;;:39;;;;:::i;:::-;13695:46;;;;;12551:1198;;;;;:::o;3223:222::-;3281:7;3310:1;3305;:6;3301:23;;3321:1;3314:8;;;;3301:23;3334:9;3350:1;3346;:5;;;;:::i;:::-;3334:17;;3379:1;3374;3370;:5;;;;:::i;:::-;:10;3362:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3436:1;3429:8;;;3223:222;;;;;:::o;3453:132::-;3511:7;3538:39;3542:1;3545;3538:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3531:46;;3453:132;;;;:::o;3593:189::-;3679:7;3711:1;3707;:5;3714:12;3699:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3738:9;3754:1;3750;:5;;;;:::i;:::-;3738:17;;3773:1;3766:8;;;3593:189;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:116::-;3868:21;3883:5;3868:21;:::i;:::-;3861:5;3858:32;3848:60;;3904:1;3901;3894:12;3848:60;3798:116;:::o;3920:133::-;3963:5;4001:6;3988:20;3979:29;;4017:30;4041:5;4017:30;:::i;:::-;3920:133;;;;:::o;4059:323::-;4115:6;4164:2;4152:9;4143:7;4139:23;4135:32;4132:119;;;4170:79;;:::i;:::-;4132:119;4290:1;4315:50;4357:7;4348:6;4337:9;4333:22;4315:50;:::i;:::-;4305:60;;4261:114;4059:323;;;;:::o;4388:911::-;4483:6;4491;4499;4507;4515;4564:3;4552:9;4543:7;4539:23;4535:33;4532:120;;;4571:79;;:::i;:::-;4532:120;4691:1;4716:53;4761:7;4752:6;4741:9;4737:22;4716:53;:::i;:::-;4706:63;;4662:117;4818:2;4844:53;4889:7;4880:6;4869:9;4865:22;4844:53;:::i;:::-;4834:63;;4789:118;4946:2;4972:53;5017:7;5008:6;4997:9;4993:22;4972:53;:::i;:::-;4962:63;;4917:118;5074:2;5100:53;5145:7;5136:6;5125:9;5121:22;5100:53;:::i;:::-;5090:63;;5045:118;5202:3;5229:53;5274:7;5265:6;5254:9;5250:22;5229:53;:::i;:::-;5219:63;;5173:119;4388:911;;;;;;;;:::o;5305:329::-;5364:6;5413:2;5401:9;5392:7;5388:23;5384:32;5381:119;;;5419:79;;:::i;:::-;5381:119;5539:1;5564:53;5609:7;5600:6;5589:9;5585:22;5564:53;:::i;:::-;5554:63;;5510:117;5305:329;;;;:::o;5640:619::-;5717:6;5725;5733;5782:2;5770:9;5761:7;5757:23;5753:32;5750:119;;;5788:79;;:::i;:::-;5750:119;5908:1;5933:53;5978:7;5969:6;5958:9;5954:22;5933:53;:::i;:::-;5923:63;;5879:117;6035:2;6061:53;6106:7;6097:6;6086:9;6082:22;6061:53;:::i;:::-;6051:63;;6006:118;6163:2;6189:53;6234:7;6225:6;6214:9;6210:22;6189:53;:::i;:::-;6179:63;;6134:118;5640:619;;;;;:::o;6265:86::-;6300:7;6340:4;6333:5;6329:16;6318:27;;6265:86;;;:::o;6357:112::-;6440:22;6456:5;6440:22;:::i;:::-;6435:3;6428:35;6357:112;;:::o;6475:214::-;6564:4;6602:2;6591:9;6587:18;6579:26;;6615:67;6679:1;6668:9;6664:17;6655:6;6615:67;:::i;:::-;6475:214;;;;:::o;6695:329::-;6754:6;6803:2;6791:9;6782:7;6778:23;6774:32;6771:119;;;6809:79;;:::i;:::-;6771:119;6929:1;6954:53;6999:7;6990:6;6979:9;6975:22;6954:53;:::i;:::-;6944:63;;6900:117;6695:329;;;;:::o;7030:468::-;7095:6;7103;7152:2;7140:9;7131:7;7127:23;7123:32;7120:119;;;7158:79;;:::i;:::-;7120:119;7278:1;7303:53;7348:7;7339:6;7328:9;7324:22;7303:53;:::i;:::-;7293:63;;7249:117;7405:2;7431:50;7473:7;7464:6;7453:9;7449:22;7431:50;:::i;:::-;7421:60;;7376:115;7030:468;;;;;:::o;7504:118::-;7591:24;7609:5;7591:24;:::i;:::-;7586:3;7579:37;7504:118;;:::o;7628:222::-;7721:4;7759:2;7748:9;7744:18;7736:26;;7772:71;7840:1;7829:9;7825:17;7816:6;7772:71;:::i;:::-;7628:222;;;;:::o;7856:1057::-;7960:6;7968;7976;7984;7992;8000;8049:3;8037:9;8028:7;8024:23;8020:33;8017:120;;;8056:79;;:::i;:::-;8017:120;8176:1;8201:53;8246:7;8237:6;8226:9;8222:22;8201:53;:::i;:::-;8191:63;;8147:117;8303:2;8329:53;8374:7;8365:6;8354:9;8350:22;8329:53;:::i;:::-;8319:63;;8274:118;8431:2;8457:53;8502:7;8493:6;8482:9;8478:22;8457:53;:::i;:::-;8447:63;;8402:118;8559:2;8585:53;8630:7;8621:6;8610:9;8606:22;8585:53;:::i;:::-;8575:63;;8530:118;8687:3;8714:53;8759:7;8750:6;8739:9;8735:22;8714:53;:::i;:::-;8704:63;;8658:119;8816:3;8843:53;8888:7;8879:6;8868:9;8864:22;8843:53;:::i;:::-;8833:63;;8787:119;7856:1057;;;;;;;;:::o;8919:117::-;9028:1;9025;9018:12;9042:117;9151:1;9148;9141:12;9165:117;9274:1;9271;9264:12;9305:568;9378:8;9388:6;9438:3;9431:4;9423:6;9419:17;9415:27;9405:122;;9446:79;;:::i;:::-;9405:122;9559:6;9546:20;9536:30;;9589:18;9581:6;9578:30;9575:117;;;9611:79;;:::i;:::-;9575:117;9725:4;9717:6;9713:17;9701:29;;9779:3;9771:4;9763:6;9759:17;9749:8;9745:32;9742:41;9739:128;;;9786:79;;:::i;:::-;9739:128;9305:568;;;;;:::o;9879:698::-;9971:6;9979;9987;10036:2;10024:9;10015:7;10011:23;10007:32;10004:119;;;10042:79;;:::i;:::-;10004:119;10190:1;10179:9;10175:17;10162:31;10220:18;10212:6;10209:30;10206:117;;;10242:79;;:::i;:::-;10206:117;10355:80;10427:7;10418:6;10407:9;10403:22;10355:80;:::i;:::-;10337:98;;;;10133:312;10484:2;10510:50;10552:7;10543:6;10532:9;10528:22;10510:50;:::i;:::-;10500:60;;10455:115;9879:698;;;;;:::o;10583:468::-;10648:6;10656;10705:2;10693:9;10684:7;10680:23;10676:32;10673:119;;;10711:79;;:::i;:::-;10673:119;10831:1;10856:50;10898:7;10889:6;10878:9;10874:22;10856:50;:::i;:::-;10846:60;;10802:114;10955:2;10981:53;11026:7;11017:6;11006:9;11002:22;10981:53;:::i;:::-;10971:63;;10926:118;10583:468;;;;;:::o;11057:474::-;11125:6;11133;11182:2;11170:9;11161:7;11157:23;11153:32;11150:119;;;11188:79;;:::i;:::-;11150:119;11308:1;11333:53;11378:7;11369:6;11358:9;11354:22;11333:53;:::i;:::-;11323:63;;11279:117;11435:2;11461:53;11506:7;11497:6;11486:9;11482:22;11461:53;:::i;:::-;11451:63;;11406:118;11057:474;;;;;:::o;11537:60::-;11565:3;11586:5;11579:12;;11537:60;;;:::o;11603:142::-;11653:9;11686:53;11704:34;11713:24;11731:5;11713:24;:::i;:::-;11704:34;:::i;:::-;11686:53;:::i;:::-;11673:66;;11603:142;;;:::o;11751:126::-;11801:9;11834:37;11865:5;11834:37;:::i;:::-;11821:50;;11751:126;;;:::o;11883:143::-;11950:9;11983:37;12014:5;11983:37;:::i;:::-;11970:50;;11883:143;;;:::o;12032:165::-;12136:54;12184:5;12136:54;:::i;:::-;12131:3;12124:67;12032:165;;:::o;12203:256::-;12313:4;12351:2;12340:9;12336:18;12328:26;;12364:88;12449:1;12438:9;12434:17;12425:6;12364:88;:::i;:::-;12203:256;;;;:::o;12465:182::-;12605:34;12601:1;12593:6;12589:14;12582:58;12465:182;:::o;12653:366::-;12795:3;12816:67;12880:2;12875:3;12816:67;:::i;:::-;12809:74;;12892:93;12981:3;12892:93;:::i;:::-;13010:2;13005:3;13001:12;12994:19;;12653:366;;;:::o;13025:419::-;13191:4;13229:2;13218:9;13214:18;13206:26;;13278:9;13272:4;13268:20;13264:1;13253:9;13249:17;13242:47;13306:131;13432:4;13306:131;:::i;:::-;13298:139;;13025:419;;;:::o;13450:177::-;13590:29;13586:1;13578:6;13574:14;13567:53;13450:177;:::o;13633:366::-;13775:3;13796:67;13860:2;13855:3;13796:67;:::i;:::-;13789:74;;13872:93;13961:3;13872:93;:::i;:::-;13990:2;13985:3;13981:12;13974:19;;13633:366;;;:::o;14005:419::-;14171:4;14209:2;14198:9;14194:18;14186:26;;14258:9;14252:4;14248:20;14244:1;14233:9;14229:17;14222:47;14286:131;14412:4;14286:131;:::i;:::-;14278:139;;14005:419;;;:::o;14430:180::-;14478:77;14475:1;14468:88;14575:4;14572:1;14565:15;14599:4;14596:1;14589:15;14616:348;14656:7;14679:20;14697:1;14679:20;:::i;:::-;14674:25;;14713:20;14731:1;14713:20;:::i;:::-;14708:25;;14901:1;14833:66;14829:74;14826:1;14823:81;14818:1;14811:9;14804:17;14800:105;14797:131;;;14908:18;;:::i;:::-;14797:131;14956:1;14953;14949:9;14938:20;;14616:348;;;;:::o;14970:180::-;15018:77;15015:1;15008:88;15115:4;15112:1;15105:15;15139:4;15136:1;15129:15;15156:185;15196:1;15213:20;15231:1;15213:20;:::i;:::-;15208:25;;15247:20;15265:1;15247:20;:::i;:::-;15242:25;;15286:1;15276:35;;15291:18;;:::i;:::-;15276:35;15333:1;15330;15326:9;15321:14;;15156:185;;;;:::o;15347:178::-;15487:30;15483:1;15475:6;15471:14;15464:54;15347:178;:::o;15531:366::-;15673:3;15694:67;15758:2;15753:3;15694:67;:::i;:::-;15687:74;;15770:93;15859:3;15770:93;:::i;:::-;15888:2;15883:3;15879:12;15872:19;;15531:366;;;:::o;15903:419::-;16069:4;16107:2;16096:9;16092:18;16084:26;;16156:9;16150:4;16146:20;16142:1;16131:9;16127:17;16120:47;16184:131;16310:4;16184:131;:::i;:::-;16176:139;;15903:419;;;:::o;16328:332::-;16449:4;16487:2;16476:9;16472:18;16464:26;;16500:71;16568:1;16557:9;16553:17;16544:6;16500:71;:::i;:::-;16581:72;16649:2;16638:9;16634:18;16625:6;16581:72;:::i;:::-;16328:332;;;;;:::o;16666:137::-;16720:5;16751:6;16745:13;16736:22;;16767:30;16791:5;16767:30;:::i;:::-;16666:137;;;;:::o;16809:345::-;16876:6;16925:2;16913:9;16904:7;16900:23;16896:32;16893:119;;;16931:79;;:::i;:::-;16893:119;17051:1;17076:61;17129:7;17120:6;17109:9;17105:22;17076:61;:::i;:::-;17066:71;;17022:125;16809:345;;;;:::o;17160:225::-;17300:34;17296:1;17288:6;17284:14;17277:58;17369:8;17364:2;17356:6;17352:15;17345:33;17160:225;:::o;17391:366::-;17533:3;17554:67;17618:2;17613:3;17554:67;:::i;:::-;17547:74;;17630:93;17719:3;17630:93;:::i;:::-;17748:2;17743:3;17739:12;17732:19;;17391:366;;;:::o;17763:419::-;17929:4;17967:2;17956:9;17952:18;17944:26;;18016:9;18010:4;18006:20;18002:1;17991:9;17987:17;17980:47;18044:131;18170:4;18044:131;:::i;:::-;18036:139;;17763:419;;;:::o;18188:178::-;18328:30;18324:1;18316:6;18312:14;18305:54;18188:178;:::o;18372:366::-;18514:3;18535:67;18599:2;18594:3;18535:67;:::i;:::-;18528:74;;18611:93;18700:3;18611:93;:::i;:::-;18729:2;18724:3;18720:12;18713:19;;18372:366;;;:::o;18744:419::-;18910:4;18948:2;18937:9;18933:18;18925:26;;18997:9;18991:4;18987:20;18983:1;18972:9;18968:17;18961:47;19025:131;19151:4;19025:131;:::i;:::-;19017:139;;18744:419;;;:::o;19169:191::-;19209:3;19228:20;19246:1;19228:20;:::i;:::-;19223:25;;19262:20;19280:1;19262:20;:::i;:::-;19257:25;;19305:1;19302;19298:9;19291:16;;19326:3;19323:1;19320:10;19317:36;;;19333:18;;:::i;:::-;19317:36;19169:191;;;;:::o;19366:180::-;19414:77;19411:1;19404:88;19511:4;19508:1;19501:15;19535:4;19532:1;19525:15;19552:233;19591:3;19614:24;19632:5;19614:24;:::i;:::-;19605:33;;19660:66;19653:5;19650:77;19647:103;;19730:18;;:::i;:::-;19647:103;19777:1;19770:5;19766:13;19759:20;;19552:233;;;:::o;19791:225::-;19931:34;19927:1;19919:6;19915:14;19908:58;20000:8;19995:2;19987:6;19983:15;19976:33;19791:225;:::o;20022:366::-;20164:3;20185:67;20249:2;20244:3;20185:67;:::i;:::-;20178:74;;20261:93;20350:3;20261:93;:::i;:::-;20379:2;20374:3;20370:12;20363:19;;20022:366;;;:::o;20394:419::-;20560:4;20598:2;20587:9;20583:18;20575:26;;20647:9;20641:4;20637:20;20633:1;20622:9;20618:17;20611:47;20675:131;20801:4;20675:131;:::i;:::-;20667:139;;20394:419;;;:::o;20819:177::-;20959:29;20955:1;20947:6;20943:14;20936:53;20819:177;:::o;21002:366::-;21144:3;21165:67;21229:2;21224:3;21165:67;:::i;:::-;21158:74;;21241:93;21330:3;21241:93;:::i;:::-;21359:2;21354:3;21350:12;21343:19;;21002:366;;;:::o;21374:419::-;21540:4;21578:2;21567:9;21563:18;21555:26;;21627:9;21621:4;21617:20;21613:1;21602:9;21598:17;21591:47;21655:131;21781:4;21655:131;:::i;:::-;21647:139;;21374:419;;;:::o;21799:194::-;21839:4;21859:20;21877:1;21859:20;:::i;:::-;21854:25;;21893:20;21911:1;21893:20;:::i;:::-;21888:25;;21937:1;21934;21930:9;21922:17;;21961:1;21955:4;21952:11;21949:37;;;21966:18;;:::i;:::-;21949:37;21799:194;;;;:::o;21999:170::-;22139:22;22135:1;22127:6;22123:14;22116:46;21999:170;:::o;22175:366::-;22317:3;22338:67;22402:2;22397:3;22338:67;:::i;:::-;22331:74;;22414:93;22503:3;22414:93;:::i;:::-;22532:2;22527:3;22523:12;22516:19;;22175:366;;;:::o;22547:419::-;22713:4;22751:2;22740:9;22736:18;22728:26;;22800:9;22794:4;22790:20;22786:1;22775:9;22771:17;22764:47;22828:131;22954:4;22828:131;:::i;:::-;22820:139;;22547:419;;;:::o;22972:167::-;23112:19;23108:1;23100:6;23096:14;23089:43;22972:167;:::o;23145:366::-;23287:3;23308:67;23372:2;23367:3;23308:67;:::i;:::-;23301:74;;23384:93;23473:3;23384:93;:::i;:::-;23502:2;23497:3;23493:12;23486:19;;23145:366;;;:::o;23517:419::-;23683:4;23721:2;23710:9;23706:18;23698:26;;23770:9;23764:4;23760:20;23756:1;23745:9;23741:17;23734:47;23798:131;23924:4;23798:131;:::i;:::-;23790:139;;23517:419;;;:::o;23942:172::-;24082:24;24078:1;24070:6;24066:14;24059:48;23942:172;:::o;24120:366::-;24262:3;24283:67;24347:2;24342:3;24283:67;:::i;:::-;24276:74;;24359:93;24448:3;24359:93;:::i;:::-;24477:2;24472:3;24468:12;24461:19;;24120:366;;;:::o;24492:419::-;24658:4;24696:2;24685:9;24681:18;24673:26;;24745:9;24739:4;24735:20;24731:1;24720:9;24716:17;24709:47;24773:131;24899:4;24773:131;:::i;:::-;24765:139;;24492:419;;;:::o;24917:161::-;25057:13;25053:1;25045:6;25041:14;25034:37;24917:161;:::o;25084:366::-;25226:3;25247:67;25311:2;25306:3;25247:67;:::i;:::-;25240:74;;25323:93;25412:3;25323:93;:::i;:::-;25441:2;25436:3;25432:12;25425:19;;25084:366;;;:::o;25456:419::-;25622:4;25660:2;25649:9;25645:18;25637:26;;25709:9;25703:4;25699:20;25695:1;25684:9;25680:17;25673:47;25737:131;25863:4;25737:131;:::i;:::-;25729:139;;25456:419;;;:::o;25881:170::-;26021:22;26017:1;26009:6;26005:14;25998:46;25881:170;:::o;26057:366::-;26199:3;26220:67;26284:2;26279:3;26220:67;:::i;:::-;26213:74;;26296:93;26385:3;26296:93;:::i;:::-;26414:2;26409:3;26405:12;26398:19;;26057:366;;;:::o;26429:419::-;26595:4;26633:2;26622:9;26618:18;26610:26;;26682:9;26676:4;26672:20;26668:1;26657:9;26653:17;26646:47;26710:131;26836:4;26710:131;:::i;:::-;26702:139;;26429:419;;;:::o;26854:180::-;26902:77;26899:1;26892:88;26999:4;26996:1;26989:15;27023:4;27020:1;27013:15;27040:143;27097:5;27128:6;27122:13;27113:22;;27144:33;27171:5;27144:33;:::i;:::-;27040:143;;;;:::o;27189:351::-;27259:6;27308:2;27296:9;27287:7;27283:23;27279:32;27276:119;;;27314:79;;:::i;:::-;27276:119;27434:1;27459:64;27515:7;27506:6;27495:9;27491:22;27459:64;:::i;:::-;27449:74;;27405:128;27189:351;;;;:::o;27546:85::-;27591:7;27620:5;27609:16;;27546:85;;;:::o;27637:158::-;27695:9;27728:61;27746:42;27755:32;27781:5;27755:32;:::i;:::-;27746:42;:::i;:::-;27728:61;:::i;:::-;27715:74;;27637:158;;;:::o;27801:147::-;27896:45;27935:5;27896:45;:::i;:::-;27891:3;27884:58;27801:147;;:::o;27954:114::-;28021:6;28055:5;28049:12;28039:22;;27954:114;;;:::o;28074:184::-;28173:11;28207:6;28202:3;28195:19;28247:4;28242:3;28238:14;28223:29;;28074:184;;;;:::o;28264:132::-;28331:4;28354:3;28346:11;;28384:4;28379:3;28375:14;28367:22;;28264:132;;;:::o;28402:108::-;28479:24;28497:5;28479:24;:::i;:::-;28474:3;28467:37;28402:108;;:::o;28516:179::-;28585:10;28606:46;28648:3;28640:6;28606:46;:::i;:::-;28684:4;28679:3;28675:14;28661:28;;28516:179;;;;:::o;28701:113::-;28771:4;28803;28798:3;28794:14;28786:22;;28701:113;;;:::o;28850:732::-;28969:3;28998:54;29046:5;28998:54;:::i;:::-;29068:86;29147:6;29142:3;29068:86;:::i;:::-;29061:93;;29178:56;29228:5;29178:56;:::i;:::-;29257:7;29288:1;29273:284;29298:6;29295:1;29292:13;29273:284;;;29374:6;29368:13;29401:63;29460:3;29445:13;29401:63;:::i;:::-;29394:70;;29487:60;29540:6;29487:60;:::i;:::-;29477:70;;29333:224;29320:1;29317;29313:9;29308:14;;29273:284;;;29277:14;29573:3;29566:10;;28974:608;;;28850:732;;;;:::o;29588:831::-;29851:4;29889:3;29878:9;29874:19;29866:27;;29903:71;29971:1;29960:9;29956:17;29947:6;29903:71;:::i;:::-;29984:80;30060:2;30049:9;30045:18;30036:6;29984:80;:::i;:::-;30111:9;30105:4;30101:20;30096:2;30085:9;30081:18;30074:48;30139:108;30242:4;30233:6;30139:108;:::i;:::-;30131:116;;30257:72;30325:2;30314:9;30310:18;30301:6;30257:72;:::i;:::-;30339:73;30407:3;30396:9;30392:19;30383:6;30339:73;:::i;:::-;29588:831;;;;;;;;:::o;30425:147::-;30526:11;30563:3;30548:18;;30425:147;;;;:::o;30578:114::-;;:::o;30698:398::-;30857:3;30878:83;30959:1;30954:3;30878:83;:::i;:::-;30871:90;;30970:93;31059:3;30970:93;:::i;:::-;31088:1;31083:3;31079:11;31072:18;;30698:398;;;:::o;31102:379::-;31286:3;31308:147;31451:3;31308:147;:::i;:::-;31301:154;;31472:3;31465:10;;31102:379;;;:::o;31487:807::-;31736:4;31774:3;31763:9;31759:19;31751:27;;31788:71;31856:1;31845:9;31841:17;31832:6;31788:71;:::i;:::-;31869:72;31937:2;31926:9;31922:18;31913:6;31869:72;:::i;:::-;31951:80;32027:2;32016:9;32012:18;32003:6;31951:80;:::i;:::-;32041;32117:2;32106:9;32102:18;32093:6;32041:80;:::i;:::-;32131:73;32199:3;32188:9;32184:19;32175:6;32131:73;:::i;:::-;32214;32282:3;32271:9;32267:19;32258:6;32214:73;:::i;:::-;31487:807;;;;;;;;;:::o;32300:143::-;32357:5;32388:6;32382:13;32373:22;;32404:33;32431:5;32404:33;:::i;:::-;32300:143;;;;:::o;32449:663::-;32537:6;32545;32553;32602:2;32590:9;32581:7;32577:23;32573:32;32570:119;;;32608:79;;:::i;:::-;32570:119;32728:1;32753:64;32809:7;32800:6;32789:9;32785:22;32753:64;:::i;:::-;32743:74;;32699:128;32866:2;32892:64;32948:7;32939:6;32928:9;32924:22;32892:64;:::i;:::-;32882:74;;32837:129;33005:2;33031:64;33087:7;33078:6;33067:9;33063:22;33031:64;:::i;:::-;33021:74;;32976:129;32449:663;;;;;:::o;33118:332::-;33239:4;33277:2;33266:9;33262:18;33254:26;;33290:71;33358:1;33347:9;33343:17;33334:6;33290:71;:::i;:::-;33371:72;33439:2;33428:9;33424:18;33415:6;33371:72;:::i;:::-;33118:332;;;;;:::o;33456:220::-;33596:34;33592:1;33584:6;33580:14;33573:58;33665:3;33660:2;33652:6;33648:15;33641:28;33456:220;:::o;33682:366::-;33824:3;33845:67;33909:2;33904:3;33845:67;:::i;:::-;33838:74;;33921:93;34010:3;33921:93;:::i;:::-;34039:2;34034:3;34030:12;34023:19;;33682:366;;;:::o;34054:419::-;34220:4;34258:2;34247:9;34243:18;34235:26;;34307:9;34301:4;34297:20;34293:1;34282:9;34278:17;34271:47;34335:131;34461:4;34335:131;:::i;:::-;34327:139;;34054:419;;;:::o

Swarm Source

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