ETH Price: $2,407.75 (+1.50%)
Gas: 1.41 Gwei

Token

Dejitaru Ōkayama (ŌKAYAMA)
 

Overview

Max Total Supply

1,000,000,000 ŌKAYAMA

Holders

64

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
9,188,929.16139884936 ŌKAYAMA

Value
$0.00
0xa6bc1d55c3d09263f63e68d20c9bb88a0e34a3ca
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:
OKAYAMA

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

pragma solidity ^0.8.16;

// SPDX-License-Identifier: MIT

library SafeMath {
    function tryAdd(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

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

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

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

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

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

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

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

interface INFT {
    function freeMint(address to) external;
}

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

    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address private constant ZERO = 0x0000000000000000000000000000000000000000;

    address public nftContract;

    address private routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    uint8 private constant _decimals = 18;

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

    uint256 public nftMintCooldown = 5 days;
    uint256 public minBalanceForNFT = (_totalSupply * 2) / 1000;

    string private constant _name = "Dejitaru \u014Ckayama";
    string private constant _symbol = "\u014CKAYAMA";

    bool public restrictWhales = true;

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

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

    uint256 public liquidityFee = 8;
    uint256 public marketingFee = 12;
    uint256 public devFee = 0;
    uint256 public tokenFee = 0;

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

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

    address private lpWallet;
    address private projectAddress;
    address private devWallet;
    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;
    bool private inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

    mapping(address => bool) public isBlacklisted;
    mapping(address => bool) public isEcosystem;

    uint256 public swapThreshold = (_totalSupply * 2) / 2000;

    event AutoLiquify(uint256 amountETH, 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] = true;
        isFeeExempt[nativeWallet] = true;

        isEcosystem[address(this)] = true;
        isEcosystem[msg.sender] = true;
        isEcosystem[address(pair)] = true;
        isEcosystem[address(router)] = true;

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

        lpWallet = msg.sender;
        projectAddress = 0x0F5176ad3574bB05123a53F2a13F69c73e676C35;
        devWallet = msg.sender;
        nativeWallet = msg.sender;

        isFeeExempt[projectAddress] = true;
        totalFee = liquidityFee.add(marketingFee).add(tokenFee).add(devFee);
        totalFeeIfSelling = totalFee + 80;

        _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)).sub(balanceOf(ZERO));
    }

    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 eligible(address _address) public view returns (bool) {
        if (lastSell[_address] < 1) {
            return false;
        }
        return lastSell[_address] < block.timestamp - nftMintCooldown;
    }

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

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

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

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

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

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

        handleLastSell(sender, recipient);

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

    function handleLastSell(address sender, address recipient) internal{
        if (!isPair[sender]) {
            if(balanceOf(sender) < minBalanceForNFT){
                lastSell[sender] = 0;
            }
            else {
                lastSell[sender] = block.timestamp;
            }
        }
        if (lastSell[recipient] < 1 && balanceOf(recipient) > minBalanceForNFT) {
            lastSell[recipient] = block.timestamp;
        }
    }

    function extractFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        uint256 feeApplicable = 0;
        uint256 nativeAmount = 0;
        if (isPair[recipient] && takeSellFee) {
            feeApplicable = totalFeeIfSelling.sub(tokenFee);
        }
        if (isPair[sender] && takeBuyFee) {
            feeApplicable = totalFee.sub(tokenFee);
        }
        if (!isPair[sender] && !isPair[recipient]) {
            if (takeTransferFee) {
                feeApplicable = totalFeeIfSelling.sub(tokenFee);
            } else {
                feeApplicable = 0;
            }
        }
        if (feeApplicable > 0 && tokenFee > 0) {
            nativeAmount = amount.mul(tokenFee).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(tokenFee))
            .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 amountETH = address(this).balance;

        uint256 totalETHFee = totalFee.sub(tokenFee).sub(liquidityFee.div(2));

        uint256 amountETHLiquidity = amountETH
            .mul(liquidityFee)
            .div(totalETHFee)
            .div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(
            totalETHFee
        );
        uint256 amountETHDev = amountETH.mul(devFee).div(totalETHFee);

        (bool tmpSuccess1, ) = payable(projectAddress).call{
            value: amountETHMarketing,
            gas: 30000
        }("");
        tmpSuccess1 = false;

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

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

    function changeisEcosystem(address _address, bool _bool)
        external
        onlyOwner
    {
        isEcosystem[_address] = _bool;
    }

    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 addWhitelist(address target) public onlyOwner {
        authorizations[target] = true;
        isFeeExempt[target] = true;
        isTxLimitExempt[target] = true;
        isEcosystem[target] = true;
        isBlacklisted[target] = false;
    }

    function changeFees(
        uint256 newLiqFee,
        uint256 newMarketingFee,
        uint256 newBetFee,
        uint256 newNativeFee,
        uint256 extraSellFee
    ) external onlyOwner {
        liquidityFee = newLiqFee;
        marketingFee = newMarketingFee;
        devFee = newBetFee;
        tokenFee = newNativeFee;

        totalFee = liquidityFee.add(marketingFee).add(devFee).add(tokenFee);
        totalFeeIfSelling = totalFee + extraSellFee;
        require(totalFeeIfSelling + totalFee < 25);
    }

    function enableBlacklist(bool _status) public onlyOwner {
        require(canUseBlacklist, "");
        blacklistMode = _status;
    }

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

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

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

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

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

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

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

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

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

    function changeWallets(
        address newProjectWallet,
        address newDevWallet,
        address newLpWallet,
        address newNativeWallet
    ) public onlyOwner {
        lpWallet = newLpWallet;
        projectAddress = newProjectWallet;
        devWallet = newDevWallet;
        nativeWallet = newNativeWallet;
    }

    function removeERC20(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 removeEther(uint256 amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer((amountETH * amountPercentage) / 100);
    }

    function changeNFTContract(address _address) external onlyOwner {
        nftContract = _address;
    }

    function changeMintCooldown(uint256 _seconds) external onlyOwner {
        nftMintCooldown = _seconds;
    }

    function changeMinBalanceForNFT(uint256 _amount) external onlyOwner {
        minBalanceForNFT = (_totalSupply * _amount) / 1000;
    }

    function MintNFT() external {
        require(eligible(msg.sender), "cant mint yet");
        require(balanceOf(msg.sender) >= minBalanceForNFT, "not enough tokens");
        nftMinted[msg.sender] += 1;
        lastSell[msg.sender] = block.timestamp;
        INFT(nftContract).freeMint(msg.sender);
    }
}

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":"amountETH","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":"MintNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":"target","type":"address"}],"name":"addWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"canUseBlacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"changeBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiqFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"},{"internalType":"uint256","name":"newBetFee","type":"uint256"},{"internalType":"uint256","name":"newNativeFee","type":"uint256"},{"internalType":"uint256","name":"extraSellFee","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"changeMinBalanceForNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_seconds","type":"uint256"}],"name":"changeMintCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"changeNFTContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"changePair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"},{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"changeSwapbackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"changeTakeBuyfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"changeTakeSellfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"changeTakeTransferfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newProjectWallet","type":"address"},{"internalType":"address","name":"newDevWallet","type":"address"},{"internalType":"address","name":"newLpWallet","type":"address"},{"internalType":"address","name":"newNativeWallet","type":"address"}],"name":"changeWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_bool","type":"bool"}],"name":"changeisEcosystem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"eligible","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableBlacklist","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":"isEcosystem","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":[{"internalType":"address","name":"","type":"address"}],"name":"lastSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minBalanceForNFT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"nftContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftMintCooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nftMinted","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":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"removeERC20","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"removeEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"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":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"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":"tokenFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"}]

6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d60035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a6200006891906200106c565b633b9aca00620000799190620010bc565b6004556103e8600a600454620000909190620010bc565b6200009c919062001133565b6005556103e8600a600454620000b39190620010bc565b620000bf919062001133565b600655620697806007556103e86002600454620000dd9190620010bc565b620000e9919062001133565b600855600160095f6101000a81548160ff0219169083151502179055506008601055600c6011555f6012555f6013555f6014555f601555600160165f6101000a81548160ff0219169083151502179055506001601660016101000a81548160ff0219169083151502179055506001601660026101000a81548160ff0219169083151502179055505f601e5f6101000a81548160ff0219169083151502179055506001601e60016101000a81548160ff0219169083151502179055506001601e60026101000a81548160ff0219169083151502179055506001601e60046101000a81548160ff0219169083151502179055505f601e60056101000a81548160ff0219169083151502179055506107d06002600454620002089190620010bc565b62000214919062001133565b60215534801562000223575f80fd5b505f6200023562000ebc60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001805f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000411573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004379190620011cf565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004bd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004e39190620011cf565b306040518363ffffffff1660e01b81526004016200050392919062001210565b6020604051808303815f875af115801562000520573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620005469190620011cf565b601b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601c5f601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506001600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160205f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160205f601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160205f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555033601660036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730f5176ad3574bb05123a53f2a13f69c73e676c3560175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e5f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000dec60125462000ddd60135462000dce60115460105462000ec360201b90919060201c565b62000ec360201b90919060201c565b62000ec360201b90919060201c565b601481905550605060145462000e0391906200123b565b601581905550600454600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045460405162000eae919062001286565b60405180910390a3620012a1565b5f33905090565b5f818362000ed291906200123b565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000f645780860481111562000f3c5762000f3b62000eda565b5b600185161562000f4c5780820291505b808102905062000f5c8562000f07565b945062000f1c565b94509492505050565b5f8262000f7e576001905062001050565b8162000f8d575f905062001050565b816001811462000fa6576002811462000fb15762000fe7565b600191505062001050565b60ff84111562000fc65762000fc562000eda565b5b8360020a91508482111562000fe05762000fdf62000eda565b5b5062001050565b5060208310610133831016604e8410600b8410161715620010215782820a9050838111156200101b576200101a62000eda565b5b62001050565b62001030848484600162000f13565b925090508184048111156200104a576200104962000eda565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620010788262001057565b9150620010858362001060565b9250620010b47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f6d565b905092915050565b5f620010c88262001057565b9150620010d58362001057565b9250828202620010e58162001057565b91508282048414831517620010ff57620010fe62000eda565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200113f8262001057565b91506200114c8362001057565b9250826200115f576200115e62001106565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62001199826200116e565b9050919050565b620011ab816200118d565b8114620011b6575f80fd5b50565b5f81519050620011c981620011a0565b92915050565b5f60208284031215620011e757620011e66200116a565b5b5f620011f684828501620011b9565b91505092915050565b6200120a816200118d565b82525050565b5f604082019050620012255f830185620011ff565b620012346020830184620011ff565b9392505050565b5f620012478262001057565b9150620012548362001057565b92508282019050808211156200126f576200126e62000eda565b5b92915050565b620012808162001057565b82525050565b5f6020820190506200129b5f83018462001275565b92915050565b615b9780620012af5f395ff3fe608060405260043610610429575f3560e01c80637cc5d7eb11610228578063bb54c40e1161012d578063ea43915e116100b5578063f84ba65d11610079578063f84ba65d14610fca578063f887ea4014610ff2578063fb32b5c21461101c578063fe575a8714611046578063ffb54a991461108257610430565b8063ea43915e14610f12578063f0ef821f14610f28578063f1d5f51714610f52578063f2fde38b14610f7a578063f80f5dd514610fa257610430565b8063d56d229d116100fc578063d56d229d14610e1e578063d8e5a73414610e48578063da00097d14610e70578063dd62ed3e14610e9a578063e5e31b1314610ed657610430565b8063bb54c40e14610d8c578063bf56b37114610db4578063c9567bf914610dde578063ca987b0e14610df457610430565b806393c17322116101b05780639e1211171161017f5780639e12111714610caa578063a535598914610cd2578063a8aa1b3114610cfc578063a9059cbb14610d26578063af3c43ef14610d6257610430565b806393c1732214610c0657806394213c8914610c2e57806395d89b4114610c5657806398118cb414610c8057610430565b8063893d20e8116101f7578063893d20e814610b24578063896648c114610b4e5780638b42507f14610b785780638da5cb5b14610bb4578063900d961114610bde57610430565b80637cc5d7eb14610a6c5780637d1db4a514610a94578063807c2d9c14610abe5780638637b06914610ae857610430565b806344de2e4c1161032e5780636827e764116102b6578063705409331161028557806370540933146109a05780637070c898146109ca57806370a08231146109f2578063715018a614610a2e578063787a051b14610a4457610430565b80636827e764146108fa5780636b67c4df146109245780636d3643921461094e5780636f4ce4281461096457610430565b80635c85974f116102fd5780635c85974f146108305780635f18936114610858578063636924401461086e5780636476505d146108aa578063658d4b7f146108d257610430565b806344de2e4c1461077657806345599136146107a05780634a74bb02146107ca578063571ac8b0146107f457610430565b806323b872dd116103b15780632f6f92b3116103805780632f6f92b31461068457806330e30efd146106c0578063313ce567146106e8578063399c7976146107125780633f4218e01461073a57610430565b806323b872dd146105ce578063251b87871461060a5780632aea52ab146106325780632b112e491461065a57610430565b80630975d294116103f85780630975d294146105005780630d2959801461052857806318160ddd146105505780631df4ccfc1461057a57806321554bac146105a457610430565b80630445b6671461043457806306fdde031461045e5780630713b13914610488578063095ea7b3146104c457610430565b3661043057005b5f80fd5b34801561043f575f80fd5b506104486110ac565b6040516104559190614c67565b60405180910390f35b348015610469575f80fd5b506104726110b2565b60405161047f9190614d0a565b60405180910390f35b348015610493575f80fd5b506104ae60048036038101906104a99190614d8c565b6110ef565b6040516104bb9190614dd1565b60405180910390f35b3480156104cf575f80fd5b506104ea60048036038101906104e59190614e14565b611193565b6040516104f79190614dd1565b60405180910390f35b34801561050b575f80fd5b5061052660048036038101906105219190614e7c565b611280565b005b348015610533575f80fd5b5061054e60048036038101906105499190614eba565b611339565b005b34801561055b575f80fd5b50610564611438565b6040516105719190614c67565b60405180910390f35b348015610585575f80fd5b5061058e611441565b60405161059b9190614c67565b60405180910390f35b3480156105af575f80fd5b506105b8611447565b6040516105c59190614c67565b60405180910390f35b3480156105d9575f80fd5b506105f460048036038101906105ef9190614ee5565b61144d565b6040516106019190614dd1565b60405180910390f35b348015610615575f80fd5b50610630600480360381019061062b9190614f96565b611640565b005b34801561063d575f80fd5b5061065860048036038101906106539190614eba565b6117c2565b005b348015610665575f80fd5b5061066e6118c2565b60405161067b9190614c67565b60405180910390f35b34801561068f575f80fd5b506106aa60048036038101906106a59190614d8c565b611901565b6040516106b79190614c67565b60405180910390f35b3480156106cb575f80fd5b506106e660048036038101906106e19190614ff3565b611916565b005b3480156106f3575f80fd5b506106fc6119b4565b6040516107099190615039565b60405180910390f35b34801561071d575f80fd5b5061073860048036038101906107339190615052565b6119bc565b005b348015610745575f80fd5b50610760600480360381019061075b9190614d8c565b611aa8565b60405161076d9190614dd1565b60405180910390f35b348015610781575f80fd5b5061078a611ac5565b6040516107979190614dd1565b60405180910390f35b3480156107ab575f80fd5b506107b4611ad7565b6040516107c19190614c67565b60405180910390f35b3480156107d5575f80fd5b506107de611add565b6040516107eb9190614dd1565b60405180910390f35b3480156107ff575f80fd5b5061081a60048036038101906108159190614d8c565b611af0565b6040516108279190614dd1565b60405180910390f35b34801561083b575f80fd5b5061085660048036038101906108519190614ff3565b611b22565b005b348015610863575f80fd5b5061086c611c1e565b005b348015610879575f80fd5b50610894600480360381019061088f9190614d8c565b611cce565b6040516108a19190614dd1565b60405180910390f35b3480156108b5575f80fd5b506108d060048036038101906108cb9190614d8c565b611cea565b005b3480156108dd575f80fd5b506108f860048036038101906108f39190615052565b611dc1565b005b348015610905575f80fd5b5061090e611ead565b60405161091b9190614c67565b60405180910390f35b34801561092f575f80fd5b50610938611eb3565b6040516109459190614c67565b60405180910390f35b348015610959575f80fd5b50610962611eb9565b005b34801561096f575f80fd5b5061098a60048036038101906109859190614d8c565b61206d565b6040516109979190614c67565b60405180910390f35b3480156109ab575f80fd5b506109b4612082565b6040516109c19190614dd1565b60405180910390f35b3480156109d5575f80fd5b506109f060048036038101906109eb9190614eba565b612095565b005b3480156109fd575f80fd5b50610a186004803603810190610a139190614d8c565b612146565b604051610a259190614c67565b60405180910390f35b348015610a39575f80fd5b50610a4261218c565b005b348015610a4f575f80fd5b50610a6a6004803603810190610a659190614ff3565b6122da565b005b348015610a77575f80fd5b50610a926004803603810190610a8d9190615052565b6123d1565b005b348015610a9f575f80fd5b50610aa86124bd565b604051610ab59190614c67565b60405180910390f35b348015610ac9575f80fd5b50610ad26124c3565b604051610adf9190614c67565b60405180910390f35b348015610af3575f80fd5b50610b0e6004803603810190610b099190614e14565b6124c9565b604051610b1b9190614dd1565b60405180910390f35b348015610b2f575f80fd5b50610b3861264f565b604051610b45919061509f565b60405180910390f35b348015610b59575f80fd5b50610b6261265d565b604051610b6f9190614dd1565b60405180910390f35b348015610b83575f80fd5b50610b9e6004803603810190610b999190614d8c565b612670565b604051610bab9190614dd1565b60405180910390f35b348015610bbf575f80fd5b50610bc861268d565b604051610bd5919061509f565b60405180910390f35b348015610be9575f80fd5b50610c046004803603810190610bff9190614eba565b6126b4565b005b348015610c11575f80fd5b50610c2c6004803603810190610c2791906150b8565b612765565b005b348015610c39575f80fd5b50610c546004803603810190610c4f9190615052565b612900565b005b348015610c61575f80fd5b50610c6a6129ec565b604051610c779190614d0a565b60405180910390f35b348015610c8b575f80fd5b50610c94612a29565b604051610ca19190614c67565b60405180910390f35b348015610cb5575f80fd5b50610cd06004803603810190610ccb919061511c565b612a2f565b005b348015610cdd575f80fd5b50610ce6612b5a565b604051610cf39190614dd1565b60405180910390f35b348015610d07575f80fd5b50610d10612b6d565b604051610d1d919061509f565b60405180910390f35b348015610d31575f80fd5b50610d4c6004803603810190610d479190614e14565b612b92565b604051610d599190614dd1565b60405180910390f35b348015610d6d575f80fd5b50610d76612ba6565b604051610d839190614c67565b60405180910390f35b348015610d97575f80fd5b50610db26004803603810190610dad9190614eba565b612bac565b005b348015610dbf575f80fd5b50610dc8612c5c565b604051610dd59190614c67565b60405180910390f35b348015610de9575f80fd5b50610df2612c62565b005b348015610dff575f80fd5b50610e08612d12565b604051610e159190614c67565b60405180910390f35b348015610e29575f80fd5b50610e32612d18565b604051610e3f919061509f565b60405180910390f35b348015610e53575f80fd5b50610e6e6004803603810190610e699190614ff3565b612d3d565b005b348015610e7b575f80fd5b50610e84612df5565b604051610e919190614dd1565b60405180910390f35b348015610ea5575f80fd5b50610ec06004803603810190610ebb9190615193565b612e08565b604051610ecd9190614c67565b60405180910390f35b348015610ee1575f80fd5b50610efc6004803603810190610ef79190614d8c565b612e8a565b604051610f099190614dd1565b60405180910390f35b348015610f1d575f80fd5b50610f26612ea7565b005b348015610f33575f80fd5b50610f3c612f57565b604051610f499190614dd1565b60405180910390f35b348015610f5d575f80fd5b50610f786004803603810190610f739190614ff3565b612f69565b005b348015610f85575f80fd5b50610fa06004803603810190610f9b9190614d8c565b613065565b005b348015610fad575f80fd5b50610fc86004803603810190610fc39190614d8c565b613222565b005b348015610fd5575f80fd5b50610ff06004803603810190610feb9190615052565b613460565b005b348015610ffd575f80fd5b5061100661354c565b604051611013919061522c565b60405180910390f35b348015611027575f80fd5b50611030613571565b60405161103d9190614dd1565b60405180910390f35b348015611051575f80fd5b5061106c60048036038101906110679190614d8c565b613584565b6040516110799190614dd1565b60405180910390f35b34801561108d575f80fd5b506110966135a1565b6040516110a39190614dd1565b60405180910390f35b60215481565b60606040518060400160405280601181526020017f44656a697461727520c58c6b6179616d61000000000000000000000000000000815250905090565b5f6001600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561113e575f905061118e565b6007544261114c9190615272565b600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541090505b919050565b5f81600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161126e9190614c67565b60405180910390a36001905092915050565b6112886135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130b906152ef565b60405180910390fd5b81601e60046101000a81548160ff021916908315150217905550806021819055505050565b6113416135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c4906152ef565b60405180910390fd5b601e60029054906101000a900460ff1661141c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141390615357565b60405180910390fd5b80601e5f6101000a81548160ff02191690831515021790555050565b5f600454905090565b60145481565b60075481565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541461162c576115af826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546135ba9092919063ffffffff16565b600b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b61163784848461360e565b90509392505050565b6116486135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cb906152ef565b60405180910390fd5b601e60029054906101000a900460ff16611723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171a90615398565b60405180910390fd5b5f5b838390508110156117bc5781601f5f868685818110611747576117466153b6565b5b905060200201602081019061175c9190614d8c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550806117b5906153e3565b9050611725565b50505050565b6117ca6135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611856576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184d906152ef565b60405180910390fd5b601e60029054906101000a900460ff166118a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189c90615398565b60405180910390fd5b80601e60016101000a81548160ff02191690831515021790555050565b5f6118fc6118cf5f612146565b6118ee6118dd61dead612146565b600454613dcd90919063ffffffff16565b613dcd90919063ffffffff16565b905090565b600d602052805f5260405f205f915090505481565b61191e6135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a1906152ef565b60405180910390fd5b8060078190555050565b5f6012905090565b6119c46135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a47906152ef565b60405180910390fd5b80601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600e602052805f5260405f205f915054906101000a900460ff1681565b60095f9054906101000a900460ff1681565b60135481565b601e60049054906101000a900460ff1681565b5f611b1b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611193565b9050919050565b611b2a6135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bad906152ef565b60405180910390fd5b6005811015611bfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf19061549a565b60405180910390fd5b6103e881600454611c0b91906154b8565b611c159190615526565b60058190555050565b611c266135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca9906152ef565b60405180910390fd5b5f601e60026101000a81548160ff021916908315150217905550565b60208052805f5260405f205f915054906101000a900460ff1681565b611cf26135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d75906152ef565b60405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611dc96135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4c906152ef565b60405180910390fd5b80600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60125481565b60115481565b611ec2336110ef565b611f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef8906155a0565b60405180910390fd5b600854611f0d33612146565b1015611f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4590615608565b60405180910390fd5b6001600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611f9b9190615626565b9250508190555042600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fa07ce1d336040518263ffffffff1660e01b815260040161203e919061509f565b5f604051808303815f87803b158015612055575f80fd5b505af1158015612067573d5f803e3d5ffd5b50505050565b600c602052805f5260405f205f915090505481565b601660019054906101000a900460ff1681565b61209d6135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612129576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612120906152ef565b60405180910390fd5b80601660026101000a81548160ff02191690831515021790555050565b5f600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6121946135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612220576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612217906152ef565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6122e26135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461236e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612365906152ef565b60405180910390fd5b5f4790503373ffffffffffffffffffffffffffffffffffffffff166108fc6064848461239a91906154b8565b6123a49190615526565b90811502906040515f60405180830381858888f193505050501580156123cc573d5f803e3d5ffd5b505050565b6123d96135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245c906152ef565b60405180910390fd5b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60055481565b60065481565b5f6124d26135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461255e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612555906152ef565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c3906156a3565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016126079291906156c1565b6020604051808303815f875af1158015612623573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061264791906156fc565b905092915050565b5f61265861268d565b905090565b601e60019054906101000a900460ff1681565b600f602052805f5260405f205f915054906101000a900460ff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6126bc6135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273f906152ef565b60405180910390fd5b80601660016101000a81548160ff02191690831515021790555050565b61276d6135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f0906152ef565b60405180910390fd5b81601660036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6129086135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298b906152ef565b60405180910390fd5b8060205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60606040518060400160405280600881526020017fc58c4b4159414d41000000000000000000000000000000000000000000000000815250905090565b60105481565b612a376135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aba906152ef565b60405180910390fd5b84601081905550836011819055508260128190555081601381905550612b1e601354612b10601254612b02601154601054613de290919063ffffffff16565b613de290919063ffffffff16565b613de290919063ffffffff16565b60148190555080601454612b329190615626565b6015819055506019601454601554612b4a9190615626565b10612b53575f80fd5b5050505050565b601660029054906101000a900460ff1681565b601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f612b9e33848461360e565b905092915050565b60085481565b612bb46135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c37906152ef565b60405180910390fd5b8060165f6101000a81548160ff02191690831515021790555050565b601d5481565b612c6a6135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ced906152ef565b60405180910390fd5b6001601e5f6101000a81548160ff021916908315150217905550565b60155481565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612d456135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc8906152ef565b60405180910390fd5b6103e881600454612de291906154b8565b612dec9190615526565b60088190555050565b601e60059054906101000a900460ff1681565b5f600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b601c602052805f5260405f205f915054906101000a900460ff1681565b612eaf6135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f32906152ef565b60405180910390fd5b5f601e60016101000a81548160ff021916908315150217905550565b60165f9054906101000a900460ff1681565b612f716135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ffd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ff4906152ef565b60405180910390fd5b6005811015613041576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130389061549a565b60405180910390fd5b6103e88160045461305291906154b8565b61305c9190615526565b60068190555050565b61306d6135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146130f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130f0906152ef565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315e90615797565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61322a6135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146132b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ad906152ef565b60405180910390fd5b6001805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f601f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b6134686135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146134f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134eb906152ef565b60405180910390fd5b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e60029054906101000a900460ff1681565b601f602052805f5260405f205f915054906101000a900460ff1681565b601e5f9054906101000a900460ff1681565b5f33905090565b5f838311158290613601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135f89190614d0a565b60405180910390fd5b5082840390509392505050565b5f601e60039054906101000a900460ff16156136365761362f848484613df7565b9050613dc6565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156136d4575060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561372857601e5f9054906101000a900460ff16613727576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161371e90615398565b60405180910390fd5b5b600554821115806137d15750600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156137d05750600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b5b613810576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613807906157ff565b60405180910390fd5b601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156138735750601e60039054906101000a900460ff16155b801561388b5750601e60049054906101000a900460ff165b80156138d65750602154600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b156138e4576138e3613fc1565b5b6138ec6145b8565b15801561393f5750601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156139cc575f600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054116139c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139ba90615398565b60405180910390fd5b6139cb6145c4565b5b601e60019054906101000a900460ff1615613a6c57601f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615613a6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a6290615867565b60405180910390fd5b5b613acc8260405180602001604052805f815250600a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546135ba9092919063ffffffff16565b600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015613b6f575060095f9054906101000a900460ff165b15613c0957600654613bc783600a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613de290919063ffffffff16565b1115613c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bff90615398565b60405180910390fd5b5b5f600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015613ca85750600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b613cb25782613cbe565b613cbd8585856145cd565b5b9050613d1081600a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613de290919063ffffffff16565b600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613d5b8585614a98565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613db89190614c67565b60405180910390a360019150505b9392505050565b5f8183613dda9190615272565b905092915050565b5f8183613def9190615626565b905092915050565b5f613e7f826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546135ba9092919063ffffffff16565b600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613f1082600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613de290919063ffffffff16565b600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613fae9190614c67565b60405180910390a3600190509392505050565b6001601e60036101000a81548160ff0219169083151502179055505f600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f61406e600261406061403d601354601454613dcd90919063ffffffff16565b61405260105487614c2590919063ffffffff16565b614c3a90919063ffffffff16565b614c3a90919063ffffffff16565b90505f6140848284613dcd90919063ffffffff16565b90505f600267ffffffffffffffff8111156140a2576140a1615885565b5b6040519080825280602002602001820160405280156140d05781602001602082028036833780820191505090505b50905030815f815181106140e7576140e66153b6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561418b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141af91906158c6565b816001815181106141c3576141c26153b6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161425f9594939291906159e1565b5f604051808303815f87803b158015614276575f80fd5b505af1158015614288573d5f803e3d5ffd5b505050505f4790505f6142cf6142aa6002601054614c3a90919063ffffffff16565b6142c1601354601454613dcd90919063ffffffff16565b613dcd90919063ffffffff16565b90505f61430c60026142fe846142f060105488614c2590919063ffffffff16565b614c3a90919063ffffffff16565b614c3a90919063ffffffff16565b90505f6143368361432860115487614c2590919063ffffffff16565b614c3a90919063ffffffff16565b90505f6143608461435260125488614c2590919063ffffffff16565b614c3a90919063ffffffff16565b90505f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683617530906040516143ac90615a63565b5f60405180830381858888f193505050503d805f81146143e7576040519150601f19603f3d011682016040523d82523d5f602084013e6143ec565b606091505b505090505f905060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826175309060405161443c90615a63565b5f60405180830381858888f193505050503d805f8114614477576040519150601f19603f3d011682016040523d82523d5f602084013e61447c565b606091505b5050809150505f90505f89111561459257601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308c5f80601660039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161451496959493929190615a77565b60606040518083038185885af1158015614530573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906145559190615aea565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848a604051614589929190615b3a565b60405180910390a15b505050505050505050505f601e60036101000a81548160ff021916908315150217905550565b5f80601d541415905090565b43601d81905550565b5f805f90505f601c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156146355750601660019054906101000a900460ff165b1561465457614651601354601554613dcd90919063ffffffff16565b91505b601c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156146b5575060165f9054906101000a900460ff165b156146d4576146d1601354601454613dcd90919063ffffffff16565b91505b601c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156147725750601c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156147af57601660029054906101000a900460ff16156147aa576147a3601354601554613dcd90919063ffffffff16565b91506147ae565b5f91505b5b5f821180156147bf57505f601354115b15614948576147ec60646147de60135487614c2590919063ffffffff16565b614c3a90919063ffffffff16565b905061485f81600a5f60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613de290919063ffffffff16565b600a5f60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161493f9190614c67565b60405180910390a35b5f61496f60646149618588614c2590919063ffffffff16565b614c3a90919063ffffffff16565b90506149c181600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613de290919063ffffffff16565b600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051614a5f9190614c67565b60405180910390a3614a8c82614a7e8388613dcd90919063ffffffff16565b613dcd90919063ffffffff16565b93505050509392505050565b601c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16614b8357600854614af283612146565b1015614b3f575f600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550614b82565b42600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b6001600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054108015614bd95750600854614bd782612146565b115b15614c215742600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5050565b5f8183614c3291906154b8565b905092915050565b5f8183614c479190615526565b905092915050565b5f819050919050565b614c6181614c4f565b82525050565b5f602082019050614c7a5f830184614c58565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015614cb7578082015181840152602081019050614c9c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f614cdc82614c80565b614ce68185614c8a565b9350614cf6818560208601614c9a565b614cff81614cc2565b840191505092915050565b5f6020820190508181035f830152614d228184614cd2565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f614d5b82614d32565b9050919050565b614d6b81614d51565b8114614d75575f80fd5b50565b5f81359050614d8681614d62565b92915050565b5f60208284031215614da157614da0614d2a565b5b5f614dae84828501614d78565b91505092915050565b5f8115159050919050565b614dcb81614db7565b82525050565b5f602082019050614de45f830184614dc2565b92915050565b614df381614c4f565b8114614dfd575f80fd5b50565b5f81359050614e0e81614dea565b92915050565b5f8060408385031215614e2a57614e29614d2a565b5b5f614e3785828601614d78565b9250506020614e4885828601614e00565b9150509250929050565b614e5b81614db7565b8114614e65575f80fd5b50565b5f81359050614e7681614e52565b92915050565b5f8060408385031215614e9257614e91614d2a565b5b5f614e9f85828601614e68565b9250506020614eb085828601614e00565b9150509250929050565b5f60208284031215614ecf57614ece614d2a565b5b5f614edc84828501614e68565b91505092915050565b5f805f60608486031215614efc57614efb614d2a565b5b5f614f0986828701614d78565b9350506020614f1a86828701614d78565b9250506040614f2b86828701614e00565b9150509250925092565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112614f5657614f55614f35565b5b8235905067ffffffffffffffff811115614f7357614f72614f39565b5b602083019150836020820283011115614f8f57614f8e614f3d565b5b9250929050565b5f805f60408486031215614fad57614fac614d2a565b5b5f84013567ffffffffffffffff811115614fca57614fc9614d2e565b5b614fd686828701614f41565b93509350506020614fe986828701614e68565b9150509250925092565b5f6020828403121561500857615007614d2a565b5b5f61501584828501614e00565b91505092915050565b5f60ff82169050919050565b6150338161501e565b82525050565b5f60208201905061504c5f83018461502a565b92915050565b5f806040838503121561506857615067614d2a565b5b5f61507585828601614d78565b925050602061508685828601614e68565b9150509250929050565b61509981614d51565b82525050565b5f6020820190506150b25f830184615090565b92915050565b5f805f80608085870312156150d0576150cf614d2a565b5b5f6150dd87828801614d78565b94505060206150ee87828801614d78565b93505060406150ff87828801614d78565b925050606061511087828801614d78565b91505092959194509250565b5f805f805f60a0868803121561513557615134614d2a565b5b5f61514288828901614e00565b955050602061515388828901614e00565b945050604061516488828901614e00565b935050606061517588828901614e00565b925050608061518688828901614e00565b9150509295509295909350565b5f80604083850312156151a9576151a8614d2a565b5b5f6151b685828601614d78565b92505060206151c785828601614d78565b9150509250929050565b5f819050919050565b5f6151f46151ef6151ea84614d32565b6151d1565b614d32565b9050919050565b5f615205826151da565b9050919050565b5f615216826151fb565b9050919050565b6152268161520c565b82525050565b5f60208201905061523f5f83018461521d565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61527c82614c4f565b915061528783614c4f565b925082820390508181111561529f5761529e615245565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6152d9602083614c8a565b91506152e4826152a5565b602082019050919050565b5f6020820190508181035f830152615306816152cd565b9050919050565b7f43616e206e6f206c6f6e6765722070617573652074726164696e6700000000005f82015250565b5f615341601b83614c8a565b915061534c8261530d565b602082019050919050565b5f6020820190508181035f83015261536e81615335565b9050919050565b50565b5f6153835f83614c8a565b915061538e82615375565b5f82019050919050565b5f6020820190508181035f8301526153af81615378565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6153ed82614c4f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361541f5761541e615245565b5b600182019050919050565b7f57616c6c6574204c696d6974206e6565647320746f206265206174206c6561735f8201527f7420302e35250000000000000000000000000000000000000000000000000000602082015250565b5f615484602683614c8a565b915061548f8261542a565b604082019050919050565b5f6020820190508181035f8301526154b181615478565b9050919050565b5f6154c282614c4f565b91506154cd83614c4f565b92508282026154db81614c4f565b915082820484148315176154f2576154f1615245565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61553082614c4f565b915061553b83614c4f565b92508261554b5761554a6154f9565b5b828204905092915050565b7f63616e74206d696e7420796574000000000000000000000000000000000000005f82015250565b5f61558a600d83614c8a565b915061559582615556565b602082019050919050565b5f6020820190508181035f8301526155b78161557e565b9050919050565b7f6e6f7420656e6f75676820746f6b656e730000000000000000000000000000005f82015250565b5f6155f2601183614c8a565b91506155fd826155be565b602082019050919050565b5f6020820190508181035f83015261561f816155e6565b9050919050565b5f61563082614c4f565b915061563b83614c4f565b925082820190508082111561565357615652615245565b5b92915050565b7f43616e742072656d6f766520746865206e617469766520746f6b656e000000005f82015250565b5f61568d601c83614c8a565b915061569882615659565b602082019050919050565b5f6020820190508181035f8301526156ba81615681565b9050919050565b5f6040820190506156d45f830185615090565b6156e16020830184614c58565b9392505050565b5f815190506156f681614e52565b92915050565b5f6020828403121561571157615710614d2a565b5b5f61571e848285016156e8565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f615781602683614c8a565b915061578c82615727565b604082019050919050565b5f6020820190508181035f8301526157ae81615775565b9050919050565b7f5458204c696d69740000000000000000000000000000000000000000000000005f82015250565b5f6157e9600883614c8a565b91506157f4826157b5565b602082019050919050565b5f6020820190508181035f830152615816816157dd565b9050919050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f615851600b83614c8a565b915061585c8261581d565b602082019050919050565b5f6020820190508181035f83015261587e81615845565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506158c081614d62565b92915050565b5f602082840312156158db576158da614d2a565b5b5f6158e8848285016158b2565b91505092915050565b5f819050919050565b5f61591461590f61590a846158f1565b6151d1565b614c4f565b9050919050565b615924816158fa565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61595c81614d51565b82525050565b5f61596d8383615953565b60208301905092915050565b5f602082019050919050565b5f61598f8261592a565b6159998185615934565b93506159a483615944565b805f5b838110156159d45781516159bb8882615962565b97506159c683615979565b9250506001810190506159a7565b5085935050505092915050565b5f60a0820190506159f45f830188614c58565b615a01602083018761591b565b8181036040830152615a138186615985565b9050615a226060830185615090565b615a2f6080830184614c58565b9695505050505050565b5f81905092915050565b5f615a4e5f83615a39565b9150615a5982615375565b5f82019050919050565b5f615a6d82615a43565b9150819050919050565b5f60c082019050615a8a5f830189615090565b615a976020830188614c58565b615aa4604083018761591b565b615ab1606083018661591b565b615abe6080830185615090565b615acb60a0830184614c58565b979650505050505050565b5f81519050615ae481614dea565b92915050565b5f805f60608486031215615b0157615b00614d2a565b5b5f615b0e86828701615ad6565b9350506020615b1f86828701615ad6565b9250506040615b3086828701615ad6565b9150509250925092565b5f604082019050615b4d5f830185614c58565b615b5a6020830184614c58565b939250505056fea264697066735822122046a7f3e241405b6f328c33ad6d748140e748c03c444b1003ae5ffd1c80665ae764736f6c63430008140033

Deployed Bytecode

0x608060405260043610610429575f3560e01c80637cc5d7eb11610228578063bb54c40e1161012d578063ea43915e116100b5578063f84ba65d11610079578063f84ba65d14610fca578063f887ea4014610ff2578063fb32b5c21461101c578063fe575a8714611046578063ffb54a991461108257610430565b8063ea43915e14610f12578063f0ef821f14610f28578063f1d5f51714610f52578063f2fde38b14610f7a578063f80f5dd514610fa257610430565b8063d56d229d116100fc578063d56d229d14610e1e578063d8e5a73414610e48578063da00097d14610e70578063dd62ed3e14610e9a578063e5e31b1314610ed657610430565b8063bb54c40e14610d8c578063bf56b37114610db4578063c9567bf914610dde578063ca987b0e14610df457610430565b806393c17322116101b05780639e1211171161017f5780639e12111714610caa578063a535598914610cd2578063a8aa1b3114610cfc578063a9059cbb14610d26578063af3c43ef14610d6257610430565b806393c1732214610c0657806394213c8914610c2e57806395d89b4114610c5657806398118cb414610c8057610430565b8063893d20e8116101f7578063893d20e814610b24578063896648c114610b4e5780638b42507f14610b785780638da5cb5b14610bb4578063900d961114610bde57610430565b80637cc5d7eb14610a6c5780637d1db4a514610a94578063807c2d9c14610abe5780638637b06914610ae857610430565b806344de2e4c1161032e5780636827e764116102b6578063705409331161028557806370540933146109a05780637070c898146109ca57806370a08231146109f2578063715018a614610a2e578063787a051b14610a4457610430565b80636827e764146108fa5780636b67c4df146109245780636d3643921461094e5780636f4ce4281461096457610430565b80635c85974f116102fd5780635c85974f146108305780635f18936114610858578063636924401461086e5780636476505d146108aa578063658d4b7f146108d257610430565b806344de2e4c1461077657806345599136146107a05780634a74bb02146107ca578063571ac8b0146107f457610430565b806323b872dd116103b15780632f6f92b3116103805780632f6f92b31461068457806330e30efd146106c0578063313ce567146106e8578063399c7976146107125780633f4218e01461073a57610430565b806323b872dd146105ce578063251b87871461060a5780632aea52ab146106325780632b112e491461065a57610430565b80630975d294116103f85780630975d294146105005780630d2959801461052857806318160ddd146105505780631df4ccfc1461057a57806321554bac146105a457610430565b80630445b6671461043457806306fdde031461045e5780630713b13914610488578063095ea7b3146104c457610430565b3661043057005b5f80fd5b34801561043f575f80fd5b506104486110ac565b6040516104559190614c67565b60405180910390f35b348015610469575f80fd5b506104726110b2565b60405161047f9190614d0a565b60405180910390f35b348015610493575f80fd5b506104ae60048036038101906104a99190614d8c565b6110ef565b6040516104bb9190614dd1565b60405180910390f35b3480156104cf575f80fd5b506104ea60048036038101906104e59190614e14565b611193565b6040516104f79190614dd1565b60405180910390f35b34801561050b575f80fd5b5061052660048036038101906105219190614e7c565b611280565b005b348015610533575f80fd5b5061054e60048036038101906105499190614eba565b611339565b005b34801561055b575f80fd5b50610564611438565b6040516105719190614c67565b60405180910390f35b348015610585575f80fd5b5061058e611441565b60405161059b9190614c67565b60405180910390f35b3480156105af575f80fd5b506105b8611447565b6040516105c59190614c67565b60405180910390f35b3480156105d9575f80fd5b506105f460048036038101906105ef9190614ee5565b61144d565b6040516106019190614dd1565b60405180910390f35b348015610615575f80fd5b50610630600480360381019061062b9190614f96565b611640565b005b34801561063d575f80fd5b5061065860048036038101906106539190614eba565b6117c2565b005b348015610665575f80fd5b5061066e6118c2565b60405161067b9190614c67565b60405180910390f35b34801561068f575f80fd5b506106aa60048036038101906106a59190614d8c565b611901565b6040516106b79190614c67565b60405180910390f35b3480156106cb575f80fd5b506106e660048036038101906106e19190614ff3565b611916565b005b3480156106f3575f80fd5b506106fc6119b4565b6040516107099190615039565b60405180910390f35b34801561071d575f80fd5b5061073860048036038101906107339190615052565b6119bc565b005b348015610745575f80fd5b50610760600480360381019061075b9190614d8c565b611aa8565b60405161076d9190614dd1565b60405180910390f35b348015610781575f80fd5b5061078a611ac5565b6040516107979190614dd1565b60405180910390f35b3480156107ab575f80fd5b506107b4611ad7565b6040516107c19190614c67565b60405180910390f35b3480156107d5575f80fd5b506107de611add565b6040516107eb9190614dd1565b60405180910390f35b3480156107ff575f80fd5b5061081a60048036038101906108159190614d8c565b611af0565b6040516108279190614dd1565b60405180910390f35b34801561083b575f80fd5b5061085660048036038101906108519190614ff3565b611b22565b005b348015610863575f80fd5b5061086c611c1e565b005b348015610879575f80fd5b50610894600480360381019061088f9190614d8c565b611cce565b6040516108a19190614dd1565b60405180910390f35b3480156108b5575f80fd5b506108d060048036038101906108cb9190614d8c565b611cea565b005b3480156108dd575f80fd5b506108f860048036038101906108f39190615052565b611dc1565b005b348015610905575f80fd5b5061090e611ead565b60405161091b9190614c67565b60405180910390f35b34801561092f575f80fd5b50610938611eb3565b6040516109459190614c67565b60405180910390f35b348015610959575f80fd5b50610962611eb9565b005b34801561096f575f80fd5b5061098a60048036038101906109859190614d8c565b61206d565b6040516109979190614c67565b60405180910390f35b3480156109ab575f80fd5b506109b4612082565b6040516109c19190614dd1565b60405180910390f35b3480156109d5575f80fd5b506109f060048036038101906109eb9190614eba565b612095565b005b3480156109fd575f80fd5b50610a186004803603810190610a139190614d8c565b612146565b604051610a259190614c67565b60405180910390f35b348015610a39575f80fd5b50610a4261218c565b005b348015610a4f575f80fd5b50610a6a6004803603810190610a659190614ff3565b6122da565b005b348015610a77575f80fd5b50610a926004803603810190610a8d9190615052565b6123d1565b005b348015610a9f575f80fd5b50610aa86124bd565b604051610ab59190614c67565b60405180910390f35b348015610ac9575f80fd5b50610ad26124c3565b604051610adf9190614c67565b60405180910390f35b348015610af3575f80fd5b50610b0e6004803603810190610b099190614e14565b6124c9565b604051610b1b9190614dd1565b60405180910390f35b348015610b2f575f80fd5b50610b3861264f565b604051610b45919061509f565b60405180910390f35b348015610b59575f80fd5b50610b6261265d565b604051610b6f9190614dd1565b60405180910390f35b348015610b83575f80fd5b50610b9e6004803603810190610b999190614d8c565b612670565b604051610bab9190614dd1565b60405180910390f35b348015610bbf575f80fd5b50610bc861268d565b604051610bd5919061509f565b60405180910390f35b348015610be9575f80fd5b50610c046004803603810190610bff9190614eba565b6126b4565b005b348015610c11575f80fd5b50610c2c6004803603810190610c2791906150b8565b612765565b005b348015610c39575f80fd5b50610c546004803603810190610c4f9190615052565b612900565b005b348015610c61575f80fd5b50610c6a6129ec565b604051610c779190614d0a565b60405180910390f35b348015610c8b575f80fd5b50610c94612a29565b604051610ca19190614c67565b60405180910390f35b348015610cb5575f80fd5b50610cd06004803603810190610ccb919061511c565b612a2f565b005b348015610cdd575f80fd5b50610ce6612b5a565b604051610cf39190614dd1565b60405180910390f35b348015610d07575f80fd5b50610d10612b6d565b604051610d1d919061509f565b60405180910390f35b348015610d31575f80fd5b50610d4c6004803603810190610d479190614e14565b612b92565b604051610d599190614dd1565b60405180910390f35b348015610d6d575f80fd5b50610d76612ba6565b604051610d839190614c67565b60405180910390f35b348015610d97575f80fd5b50610db26004803603810190610dad9190614eba565b612bac565b005b348015610dbf575f80fd5b50610dc8612c5c565b604051610dd59190614c67565b60405180910390f35b348015610de9575f80fd5b50610df2612c62565b005b348015610dff575f80fd5b50610e08612d12565b604051610e159190614c67565b60405180910390f35b348015610e29575f80fd5b50610e32612d18565b604051610e3f919061509f565b60405180910390f35b348015610e53575f80fd5b50610e6e6004803603810190610e699190614ff3565b612d3d565b005b348015610e7b575f80fd5b50610e84612df5565b604051610e919190614dd1565b60405180910390f35b348015610ea5575f80fd5b50610ec06004803603810190610ebb9190615193565b612e08565b604051610ecd9190614c67565b60405180910390f35b348015610ee1575f80fd5b50610efc6004803603810190610ef79190614d8c565b612e8a565b604051610f099190614dd1565b60405180910390f35b348015610f1d575f80fd5b50610f26612ea7565b005b348015610f33575f80fd5b50610f3c612f57565b604051610f499190614dd1565b60405180910390f35b348015610f5d575f80fd5b50610f786004803603810190610f739190614ff3565b612f69565b005b348015610f85575f80fd5b50610fa06004803603810190610f9b9190614d8c565b613065565b005b348015610fad575f80fd5b50610fc86004803603810190610fc39190614d8c565b613222565b005b348015610fd5575f80fd5b50610ff06004803603810190610feb9190615052565b613460565b005b348015610ffd575f80fd5b5061100661354c565b604051611013919061522c565b60405180910390f35b348015611027575f80fd5b50611030613571565b60405161103d9190614dd1565b60405180910390f35b348015611051575f80fd5b5061106c60048036038101906110679190614d8c565b613584565b6040516110799190614dd1565b60405180910390f35b34801561108d575f80fd5b506110966135a1565b6040516110a39190614dd1565b60405180910390f35b60215481565b60606040518060400160405280601181526020017f44656a697461727520c58c6b6179616d61000000000000000000000000000000815250905090565b5f6001600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561113e575f905061118e565b6007544261114c9190615272565b600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541090505b919050565b5f81600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161126e9190614c67565b60405180910390a36001905092915050565b6112886135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130b906152ef565b60405180910390fd5b81601e60046101000a81548160ff021916908315150217905550806021819055505050565b6113416135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c4906152ef565b60405180910390fd5b601e60029054906101000a900460ff1661141c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141390615357565b60405180910390fd5b80601e5f6101000a81548160ff02191690831515021790555050565b5f600454905090565b60145481565b60075481565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541461162c576115af826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546135ba9092919063ffffffff16565b600b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b61163784848461360e565b90509392505050565b6116486135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cb906152ef565b60405180910390fd5b601e60029054906101000a900460ff16611723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171a90615398565b60405180910390fd5b5f5b838390508110156117bc5781601f5f868685818110611747576117466153b6565b5b905060200201602081019061175c9190614d8c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550806117b5906153e3565b9050611725565b50505050565b6117ca6135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611856576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184d906152ef565b60405180910390fd5b601e60029054906101000a900460ff166118a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189c90615398565b60405180910390fd5b80601e60016101000a81548160ff02191690831515021790555050565b5f6118fc6118cf5f612146565b6118ee6118dd61dead612146565b600454613dcd90919063ffffffff16565b613dcd90919063ffffffff16565b905090565b600d602052805f5260405f205f915090505481565b61191e6135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a1906152ef565b60405180910390fd5b8060078190555050565b5f6012905090565b6119c46135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a47906152ef565b60405180910390fd5b80601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600e602052805f5260405f205f915054906101000a900460ff1681565b60095f9054906101000a900460ff1681565b60135481565b601e60049054906101000a900460ff1681565b5f611b1b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611193565b9050919050565b611b2a6135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bad906152ef565b60405180910390fd5b6005811015611bfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf19061549a565b60405180910390fd5b6103e881600454611c0b91906154b8565b611c159190615526565b60058190555050565b611c266135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca9906152ef565b60405180910390fd5b5f601e60026101000a81548160ff021916908315150217905550565b60208052805f5260405f205f915054906101000a900460ff1681565b611cf26135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d75906152ef565b60405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611dc96135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4c906152ef565b60405180910390fd5b80600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60125481565b60115481565b611ec2336110ef565b611f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef8906155a0565b60405180910390fd5b600854611f0d33612146565b1015611f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4590615608565b60405180910390fd5b6001600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611f9b9190615626565b9250508190555042600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fa07ce1d336040518263ffffffff1660e01b815260040161203e919061509f565b5f604051808303815f87803b158015612055575f80fd5b505af1158015612067573d5f803e3d5ffd5b50505050565b600c602052805f5260405f205f915090505481565b601660019054906101000a900460ff1681565b61209d6135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612129576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612120906152ef565b60405180910390fd5b80601660026101000a81548160ff02191690831515021790555050565b5f600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6121946135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612220576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612217906152ef565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6122e26135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461236e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612365906152ef565b60405180910390fd5b5f4790503373ffffffffffffffffffffffffffffffffffffffff166108fc6064848461239a91906154b8565b6123a49190615526565b90811502906040515f60405180830381858888f193505050501580156123cc573d5f803e3d5ffd5b505050565b6123d96135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245c906152ef565b60405180910390fd5b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60055481565b60065481565b5f6124d26135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461255e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612555906152ef565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c3906156a3565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016126079291906156c1565b6020604051808303815f875af1158015612623573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061264791906156fc565b905092915050565b5f61265861268d565b905090565b601e60019054906101000a900460ff1681565b600f602052805f5260405f205f915054906101000a900460ff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6126bc6135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273f906152ef565b60405180910390fd5b80601660016101000a81548160ff02191690831515021790555050565b61276d6135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f0906152ef565b60405180910390fd5b81601660036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6129086135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298b906152ef565b60405180910390fd5b8060205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60606040518060400160405280600881526020017fc58c4b4159414d41000000000000000000000000000000000000000000000000815250905090565b60105481565b612a376135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aba906152ef565b60405180910390fd5b84601081905550836011819055508260128190555081601381905550612b1e601354612b10601254612b02601154601054613de290919063ffffffff16565b613de290919063ffffffff16565b613de290919063ffffffff16565b60148190555080601454612b329190615626565b6015819055506019601454601554612b4a9190615626565b10612b53575f80fd5b5050505050565b601660029054906101000a900460ff1681565b601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f612b9e33848461360e565b905092915050565b60085481565b612bb46135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c37906152ef565b60405180910390fd5b8060165f6101000a81548160ff02191690831515021790555050565b601d5481565b612c6a6135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ced906152ef565b60405180910390fd5b6001601e5f6101000a81548160ff021916908315150217905550565b60155481565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612d456135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc8906152ef565b60405180910390fd5b6103e881600454612de291906154b8565b612dec9190615526565b60088190555050565b601e60059054906101000a900460ff1681565b5f600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b601c602052805f5260405f205f915054906101000a900460ff1681565b612eaf6135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f32906152ef565b60405180910390fd5b5f601e60016101000a81548160ff021916908315150217905550565b60165f9054906101000a900460ff1681565b612f716135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ffd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ff4906152ef565b60405180910390fd5b6005811015613041576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130389061549a565b60405180910390fd5b6103e88160045461305291906154b8565b61305c9190615526565b60068190555050565b61306d6135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146130f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130f0906152ef565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315e90615797565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61322a6135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146132b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ad906152ef565b60405180910390fd5b6001805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f601f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b6134686135b3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146134f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134eb906152ef565b60405180910390fd5b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e60029054906101000a900460ff1681565b601f602052805f5260405f205f915054906101000a900460ff1681565b601e5f9054906101000a900460ff1681565b5f33905090565b5f838311158290613601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135f89190614d0a565b60405180910390fd5b5082840390509392505050565b5f601e60039054906101000a900460ff16156136365761362f848484613df7565b9050613dc6565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156136d4575060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561372857601e5f9054906101000a900460ff16613727576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161371e90615398565b60405180910390fd5b5b600554821115806137d15750600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156137d05750600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b5b613810576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613807906157ff565b60405180910390fd5b601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156138735750601e60039054906101000a900460ff16155b801561388b5750601e60049054906101000a900460ff165b80156138d65750602154600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b156138e4576138e3613fc1565b5b6138ec6145b8565b15801561393f5750601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156139cc575f600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054116139c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139ba90615398565b60405180910390fd5b6139cb6145c4565b5b601e60019054906101000a900460ff1615613a6c57601f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615613a6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a6290615867565b60405180910390fd5b5b613acc8260405180602001604052805f815250600a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546135ba9092919063ffffffff16565b600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015613b6f575060095f9054906101000a900460ff165b15613c0957600654613bc783600a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613de290919063ffffffff16565b1115613c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bff90615398565b60405180910390fd5b5b5f600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015613ca85750600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b613cb25782613cbe565b613cbd8585856145cd565b5b9050613d1081600a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613de290919063ffffffff16565b600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613d5b8585614a98565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613db89190614c67565b60405180910390a360019150505b9392505050565b5f8183613dda9190615272565b905092915050565b5f8183613def9190615626565b905092915050565b5f613e7f826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546135ba9092919063ffffffff16565b600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613f1082600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613de290919063ffffffff16565b600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613fae9190614c67565b60405180910390a3600190509392505050565b6001601e60036101000a81548160ff0219169083151502179055505f600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f61406e600261406061403d601354601454613dcd90919063ffffffff16565b61405260105487614c2590919063ffffffff16565b614c3a90919063ffffffff16565b614c3a90919063ffffffff16565b90505f6140848284613dcd90919063ffffffff16565b90505f600267ffffffffffffffff8111156140a2576140a1615885565b5b6040519080825280602002602001820160405280156140d05781602001602082028036833780820191505090505b50905030815f815181106140e7576140e66153b6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561418b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141af91906158c6565b816001815181106141c3576141c26153b6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161425f9594939291906159e1565b5f604051808303815f87803b158015614276575f80fd5b505af1158015614288573d5f803e3d5ffd5b505050505f4790505f6142cf6142aa6002601054614c3a90919063ffffffff16565b6142c1601354601454613dcd90919063ffffffff16565b613dcd90919063ffffffff16565b90505f61430c60026142fe846142f060105488614c2590919063ffffffff16565b614c3a90919063ffffffff16565b614c3a90919063ffffffff16565b90505f6143368361432860115487614c2590919063ffffffff16565b614c3a90919063ffffffff16565b90505f6143608461435260125488614c2590919063ffffffff16565b614c3a90919063ffffffff16565b90505f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683617530906040516143ac90615a63565b5f60405180830381858888f193505050503d805f81146143e7576040519150601f19603f3d011682016040523d82523d5f602084013e6143ec565b606091505b505090505f905060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826175309060405161443c90615a63565b5f60405180830381858888f193505050503d805f8114614477576040519150601f19603f3d011682016040523d82523d5f602084013e61447c565b606091505b5050809150505f90505f89111561459257601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308c5f80601660039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161451496959493929190615a77565b60606040518083038185885af1158015614530573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906145559190615aea565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848a604051614589929190615b3a565b60405180910390a15b505050505050505050505f601e60036101000a81548160ff021916908315150217905550565b5f80601d541415905090565b43601d81905550565b5f805f90505f601c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156146355750601660019054906101000a900460ff165b1561465457614651601354601554613dcd90919063ffffffff16565b91505b601c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156146b5575060165f9054906101000a900460ff165b156146d4576146d1601354601454613dcd90919063ffffffff16565b91505b601c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156147725750601c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156147af57601660029054906101000a900460ff16156147aa576147a3601354601554613dcd90919063ffffffff16565b91506147ae565b5f91505b5b5f821180156147bf57505f601354115b15614948576147ec60646147de60135487614c2590919063ffffffff16565b614c3a90919063ffffffff16565b905061485f81600a5f60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613de290919063ffffffff16565b600a5f60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161493f9190614c67565b60405180910390a35b5f61496f60646149618588614c2590919063ffffffff16565b614c3a90919063ffffffff16565b90506149c181600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613de290919063ffffffff16565b600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051614a5f9190614c67565b60405180910390a3614a8c82614a7e8388613dcd90919063ffffffff16565b613dcd90919063ffffffff16565b93505050509392505050565b601c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16614b8357600854614af283612146565b1015614b3f575f600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550614b82565b42600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b6001600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054108015614bd95750600854614bd782612146565b115b15614c215742600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5050565b5f8183614c3291906154b8565b905092915050565b5f8183614c479190615526565b905092915050565b5f819050919050565b614c6181614c4f565b82525050565b5f602082019050614c7a5f830184614c58565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015614cb7578082015181840152602081019050614c9c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f614cdc82614c80565b614ce68185614c8a565b9350614cf6818560208601614c9a565b614cff81614cc2565b840191505092915050565b5f6020820190508181035f830152614d228184614cd2565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f614d5b82614d32565b9050919050565b614d6b81614d51565b8114614d75575f80fd5b50565b5f81359050614d8681614d62565b92915050565b5f60208284031215614da157614da0614d2a565b5b5f614dae84828501614d78565b91505092915050565b5f8115159050919050565b614dcb81614db7565b82525050565b5f602082019050614de45f830184614dc2565b92915050565b614df381614c4f565b8114614dfd575f80fd5b50565b5f81359050614e0e81614dea565b92915050565b5f8060408385031215614e2a57614e29614d2a565b5b5f614e3785828601614d78565b9250506020614e4885828601614e00565b9150509250929050565b614e5b81614db7565b8114614e65575f80fd5b50565b5f81359050614e7681614e52565b92915050565b5f8060408385031215614e9257614e91614d2a565b5b5f614e9f85828601614e68565b9250506020614eb085828601614e00565b9150509250929050565b5f60208284031215614ecf57614ece614d2a565b5b5f614edc84828501614e68565b91505092915050565b5f805f60608486031215614efc57614efb614d2a565b5b5f614f0986828701614d78565b9350506020614f1a86828701614d78565b9250506040614f2b86828701614e00565b9150509250925092565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112614f5657614f55614f35565b5b8235905067ffffffffffffffff811115614f7357614f72614f39565b5b602083019150836020820283011115614f8f57614f8e614f3d565b5b9250929050565b5f805f60408486031215614fad57614fac614d2a565b5b5f84013567ffffffffffffffff811115614fca57614fc9614d2e565b5b614fd686828701614f41565b93509350506020614fe986828701614e68565b9150509250925092565b5f6020828403121561500857615007614d2a565b5b5f61501584828501614e00565b91505092915050565b5f60ff82169050919050565b6150338161501e565b82525050565b5f60208201905061504c5f83018461502a565b92915050565b5f806040838503121561506857615067614d2a565b5b5f61507585828601614d78565b925050602061508685828601614e68565b9150509250929050565b61509981614d51565b82525050565b5f6020820190506150b25f830184615090565b92915050565b5f805f80608085870312156150d0576150cf614d2a565b5b5f6150dd87828801614d78565b94505060206150ee87828801614d78565b93505060406150ff87828801614d78565b925050606061511087828801614d78565b91505092959194509250565b5f805f805f60a0868803121561513557615134614d2a565b5b5f61514288828901614e00565b955050602061515388828901614e00565b945050604061516488828901614e00565b935050606061517588828901614e00565b925050608061518688828901614e00565b9150509295509295909350565b5f80604083850312156151a9576151a8614d2a565b5b5f6151b685828601614d78565b92505060206151c785828601614d78565b9150509250929050565b5f819050919050565b5f6151f46151ef6151ea84614d32565b6151d1565b614d32565b9050919050565b5f615205826151da565b9050919050565b5f615216826151fb565b9050919050565b6152268161520c565b82525050565b5f60208201905061523f5f83018461521d565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61527c82614c4f565b915061528783614c4f565b925082820390508181111561529f5761529e615245565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6152d9602083614c8a565b91506152e4826152a5565b602082019050919050565b5f6020820190508181035f830152615306816152cd565b9050919050565b7f43616e206e6f206c6f6e6765722070617573652074726164696e6700000000005f82015250565b5f615341601b83614c8a565b915061534c8261530d565b602082019050919050565b5f6020820190508181035f83015261536e81615335565b9050919050565b50565b5f6153835f83614c8a565b915061538e82615375565b5f82019050919050565b5f6020820190508181035f8301526153af81615378565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6153ed82614c4f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361541f5761541e615245565b5b600182019050919050565b7f57616c6c6574204c696d6974206e6565647320746f206265206174206c6561735f8201527f7420302e35250000000000000000000000000000000000000000000000000000602082015250565b5f615484602683614c8a565b915061548f8261542a565b604082019050919050565b5f6020820190508181035f8301526154b181615478565b9050919050565b5f6154c282614c4f565b91506154cd83614c4f565b92508282026154db81614c4f565b915082820484148315176154f2576154f1615245565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61553082614c4f565b915061553b83614c4f565b92508261554b5761554a6154f9565b5b828204905092915050565b7f63616e74206d696e7420796574000000000000000000000000000000000000005f82015250565b5f61558a600d83614c8a565b915061559582615556565b602082019050919050565b5f6020820190508181035f8301526155b78161557e565b9050919050565b7f6e6f7420656e6f75676820746f6b656e730000000000000000000000000000005f82015250565b5f6155f2601183614c8a565b91506155fd826155be565b602082019050919050565b5f6020820190508181035f83015261561f816155e6565b9050919050565b5f61563082614c4f565b915061563b83614c4f565b925082820190508082111561565357615652615245565b5b92915050565b7f43616e742072656d6f766520746865206e617469766520746f6b656e000000005f82015250565b5f61568d601c83614c8a565b915061569882615659565b602082019050919050565b5f6020820190508181035f8301526156ba81615681565b9050919050565b5f6040820190506156d45f830185615090565b6156e16020830184614c58565b9392505050565b5f815190506156f681614e52565b92915050565b5f6020828403121561571157615710614d2a565b5b5f61571e848285016156e8565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f615781602683614c8a565b915061578c82615727565b604082019050919050565b5f6020820190508181035f8301526157ae81615775565b9050919050565b7f5458204c696d69740000000000000000000000000000000000000000000000005f82015250565b5f6157e9600883614c8a565b91506157f4826157b5565b602082019050919050565b5f6020820190508181035f830152615816816157dd565b9050919050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f615851600b83614c8a565b915061585c8261581d565b602082019050919050565b5f6020820190508181035f83015261587e81615845565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506158c081614d62565b92915050565b5f602082840312156158db576158da614d2a565b5b5f6158e8848285016158b2565b91505092915050565b5f819050919050565b5f61591461590f61590a846158f1565b6151d1565b614c4f565b9050919050565b615924816158fa565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61595c81614d51565b82525050565b5f61596d8383615953565b60208301905092915050565b5f602082019050919050565b5f61598f8261592a565b6159998185615934565b93506159a483615944565b805f5b838110156159d45781516159bb8882615962565b97506159c683615979565b9250506001810190506159a7565b5085935050505092915050565b5f60a0820190506159f45f830188614c58565b615a01602083018761591b565b8181036040830152615a138186615985565b9050615a226060830185615090565b615a2f6080830184614c58565b9695505050505050565b5f81905092915050565b5f615a4e5f83615a39565b9150615a5982615375565b5f82019050919050565b5f615a6d82615a43565b9150819050919050565b5f60c082019050615a8a5f830189615090565b615a976020830188614c58565b615aa4604083018761591b565b615ab1606083018661591b565b615abe6080830185615090565b615acb60a0830184614c58565b979650505050505050565b5f81519050615ae481614dea565b92915050565b5f805f60608486031215615b0157615b00614d2a565b5b5f615b0e86828701615ad6565b9350506020615b1f86828701615ad6565b9250506040615b3086828701615ad6565b9150509250925092565b5f604082019050615b4d5f830185614c58565b615b5a6020830184614c58565b939250505056fea264697066735822122046a7f3e241405b6f328c33ad6d748140e748c03c444b1003ae5ffd1c80665ae764736f6c63430008140033

Deployed Bytecode Sourcemap

6832:16807:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9013:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10640:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12198:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11635:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21901:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19378:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10950:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8185:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7430:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13242:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20871:271;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20726:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11485:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7881:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23063:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10848:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21274:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7934:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7663:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8149:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8808:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11891:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19172:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21394:88;;;;;;;;;;;;;:::i;:::-;;8961:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22950:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19635:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8117:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8078:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23326:310;;;;;;;;;;;;;:::i;:::-;;7831:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8300:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21789:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11162:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6320:148;;;;;;;;;;;;;:::i;:::-;;22739:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21150:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7304:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7367:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22444:287;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11060:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8692:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7984:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6106:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21685:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22098:338;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18809:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10742:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8040:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20186:532;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8337:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8547:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12637:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7476:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21583:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8620:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19550:77;;;;;;;;;;;;;:::i;:::-;;8219:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7074:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23181:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8855:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11289:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8573:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21490:85;;;;;;;;;;;;;:::i;:::-;;8264:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18964:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6476:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19920:258;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19762:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8517:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8731:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8909:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8654:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9013:56;;;;:::o;10640:94::-;10688:13;10721:5;;;;;;;;;;;;;;;;;10714:12;;10640:94;:::o;12198:220::-;12255:4;12297:1;12276:8;:18;12285:8;12276:18;;;;;;;;;;;;;;;;:22;12272:67;;;12322:5;12315:12;;;;12272:67;12395:15;;12377;:33;;;;:::i;:::-;12356:8;:18;12365:8;12356:18;;;;;;;;;;;;;;;;:54;12349:61;;12198:220;;;;:::o;11635:248::-;11737:4;11794:6;11759:11;:23;11771:10;11759:23;;;;;;;;;;;;;;;:32;11783:7;11759:32;;;;;;;;;;;;;;;:41;;;;11837:7;11816:37;;11825:10;11816:37;;;11846:6;11816:37;;;;;;:::i;:::-;;;;;;;;11871:4;11864:11;;11635:248;;;;:::o;21901:189::-;6243:12;:10;:12::i;:::-;6233:22;;:6;;;;;;;;;;:22;;;6225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22040:6:::1;22016:21;;:30;;;;;;;;;;;;;;;;;;22073:9;22057:13;:25;;;;21901:189:::0;;:::o;19378:164::-;6243:12;:10;:12::i;:::-;6233:22;;:6;;;;;;;;;;:22;;;6225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19453:15:::1;;;;;;;;;;;19445:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;19525:9;19511:11;;:23;;;;;;;;;;;;;;;;;;19378:164:::0;:::o;10950:102::-;11005:7;11032:12;;11025:19;;10950:102;:::o;8185:27::-;;;;:::o;7430:39::-;;;;:::o;13242:422::-;13376:4;13432:17;13397:11;:19;13409:6;13397:19;;;;;;;;;;;;;;;:31;13417:10;13397:31;;;;;;;;;;;;;;;;:52;13393:206;;13500:87;13554:6;13500:87;;;;;;;;;;;;;;;;;:11;:19;13512:6;13500:19;;;;;;;;;;;;;;;:31;13520:10;13500:31;;;;;;;;;;;;;;;;:53;;:87;;;;;:::i;:::-;13466:11;:19;13478:6;13466:19;;;;;;;;;;;;;;;:31;13486:10;13466:31;;;;;;;;;;;;;;;:121;;;;13393:206;13616:40;13630:6;13638:9;13649:6;13616:13;:40::i;:::-;13609:47;;13242:422;;;;;:::o;20871:271::-;6243:12;:10;:12::i;:::-;6233:22;;:6;;;;;;;;;;:22;;;6225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20998:15:::1;;;;;;;;;;;20990:28;;;;;;;;;;;;:::i;:::-;;;;;;;;;21034:9;21029:106;21049:9;;:16;;21045:1;:20;21029:106;;;21117:6;21087:13;:27;21101:9;;21111:1;21101:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;21087:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;21067:3;;;;:::i;:::-;;;21029:106;;;;20871:271:::0;;;:::o;20726:137::-;6243:12;:10;:12::i;:::-;6233:22;;:6;;;;;;;;;;:22;;;6225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20801:15:::1;;;;;;;;;;;20793:28;;;;;;;;;;;;:::i;:::-;;;;;;;;;20848:7;20832:13;;:23;;;;;;;;;;;;;;;;;;20726:137:::0;:::o;11485:142::-;11538:7;11565:54;11603:15;7023:42;11603:9;:15::i;:::-;11565:33;11582:15;6942:42;11582:9;:15::i;:::-;11565:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;11558:61;;11485:142;:::o;7881:44::-;;;;;;;;;;;;;;;;;:::o;23063:110::-;6243:12;:10;:12::i;:::-;6233:22;;:6;;;;;;;;;;:22;;;6225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23157:8:::1;23139:15;:26;;;;23063:110:::0;:::o;10848:94::-;10900:5;7227:2;10918:16;;10848:94;:::o;21274:112::-;6243:12;:10;:12::i;:::-;6233:22;;:6;;;;;;;;;;:22;;;6225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21372:6:::1;21353;:16;21360:8;21353:16;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;21274:112:::0;;:::o;7934:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;7663:33::-;;;;;;;;;;;;;:::o;8149:27::-;;;;:::o;8808:40::-;;;;;;;;;;;;;:::o;11891:122::-;11946:4;11970:35;11978:7;11987:17;11970:7;:35::i;:::-;11963:42;;11891:122;;;:::o;19172:198::-;6243:12;:10;:12::i;:::-;6233:22;;:6;;;;;;;;;;:22;;;6225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19260:1:::1;19248:8;:13;;19240:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19358:4;19346:8;19331:12;;:23;;;;:::i;:::-;19330:32;;;;:::i;:::-;19315:12;:47;;;;19172:198:::0;:::o;21394:88::-;6243:12;:10;:12::i;:::-;6233:22;;:6;;;;;;;;;;:22;;;6225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21469:5:::1;21451:15;;:23;;;;;;;;;;;;;;;;;;21394:88::o:0;8961:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;22950:105::-;6243:12;:10;:12::i;:::-;6233:22;;:6;;;;;;;;;;:22;;;6225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23039:8:::1;23025:11;;:22;;;;;;;;;;;;;;;;;;22950:105:::0;:::o;19635:119::-;6243:12;:10;:12::i;:::-;6233:22;;:6;;;;;;;;;;:22;;;6225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19740:6:::1;19718:11;:19;19730:6;19718:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;19635:119:::0;;:::o;8117:25::-;;;;:::o;8078:32::-;;;;:::o;23326:310::-;23373:20;23382:10;23373:8;:20::i;:::-;23365:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;23455:16;;23430:21;23440:10;23430:9;:21::i;:::-;:41;;23422:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;23529:1;23504:9;:21;23514:10;23504:21;;;;;;;;;;;;;;;;:26;;;;;;;:::i;:::-;;;;;;;;23564:15;23541:8;:20;23550:10;23541:20;;;;;;;;;;;;;;;:38;;;;23595:11;;;;;;;;;;;23590:26;;;23617:10;23590:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23326:310::o;7831:43::-;;;;;;;;;;;;;;;;;:::o;8300:30::-;;;;;;;;;;;;;:::o;21789:104::-;6243:12;:10;:12::i;:::-;6233:22;;:6;;;;;;;;;;:22;;;6225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21879:6:::1;21861:15;;:24;;;;;;;;;;;;;;;;;;21789:104:::0;:::o;11162:119::-;11228:7;11255:9;:18;11265:7;11255:18;;;;;;;;;;;;;;;;11248:25;;11162:119;;;:::o;6320:148::-;6243:12;:10;:12::i;:::-;6233:22;;:6;;;;;;;;;;:22;;;6225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6427:1:::1;6390:40;;6411:6;::::0;::::1;;;;;;;;6390:40;;;;;;;;;;;;6458:1;6441:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6320:148::o:0;22739:203::-;6243:12;:10;:12::i;:::-;6233:22;;:6;;;;;;;;;;:22;;;6225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22816:17:::1;22836:21;22816:41;;22876:10;22868:28;;:66;22930:3;22910:16;22898:9;:28;;;;:::i;:::-;22897:36;;;;:::i;:::-;22868:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22805:137;22739:203:::0;:::o;21150:116::-;6243:12;:10;:12::i;:::-;6233:22;;:6;;;;;;;;;;:22;;;6225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21252:6:::1;21225:14;:24;21240:8;21225:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;21150:116:::0;;:::o;7304:56::-;;;;:::o;7367:54::-;;;;:::o;22444:287::-;22556:12;6243;:10;:12::i;:::-;6233:22;;:6;;;;;;;;;;:22;;;6225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22618:4:::1;22594:29;;:12;:29;;::::0;22586:70:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22681:12;22674:29;;;22704:10;22716:6;22674:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22667:56;;22444:287:::0;;;;:::o;11060:94::-;11112:7;11139;:5;:7::i;:::-;11132:14;;11060:94;:::o;8692:32::-;;;;;;;;;;;;;:::o;7984:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;6106:79::-;6144:7;6171:6;;;;;;;;;;;6164:13;;6106:79;:::o;21685:96::-;6243:12;:10;:12::i;:::-;6233:22;;:6;;;;;;;;;;:22;;;6225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21767:6:::1;21753:11;;:20;;;;;;;;;;;;;;;;;;21685:96:::0;:::o;22098:338::-;6243:12;:10;:12::i;:::-;6233:22;;:6;;;;;;;;;;:22;;;6225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22297:11:::1;22286:8;;:22;;;;;;;;;;;;;;;;;;22336:16;22319:14;;:33;;;;;;;;;;;;;;;;;;22375:12;22363:9;;:24;;;;;;;;;;;;;;;;;;22413:15;22398:12;;:30;;;;;;;;;;;;;;;;;;22098:338:::0;;;;:::o;18809:147::-;6243:12;:10;:12::i;:::-;6233:22;;:6;;;;;;;;;;:22;;;6225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18943:5:::1;18919:11;:21;18931:8;18919:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;18809:147:::0;;:::o;10742:98::-;10792:13;10825:7;;;;;;;;;;;;;;;;;10818:14;;10742:98;:::o;8040:31::-;;;;:::o;20186:532::-;6243:12;:10;:12::i;:::-;6233:22;;:6;;;;;;;;;;:22;;;6225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20410:9:::1;20395:12;:24;;;;20445:15;20430:12;:30;;;;20480:9;20471:6;:18;;;;20511:12;20500:8;:23;;;;20547:56;20594:8;;20547:42;20582:6;;20547:30;20564:12;;20547;;:16;;:30;;;;:::i;:::-;:34;;:42;;;;:::i;:::-;:46;;:56;;;;:::i;:::-;20536:8;:67;;;;20645:12;20634:8;;:23;;;;:::i;:::-;20614:17;:43;;;;20707:2;20696:8;;20676:17;;:28;;;;:::i;:::-;:33;20668:42;;;::::0;::::1;;20186:532:::0;;;;;:::o;8337:34::-;;;;;;;;;;;;;:::o;8547:19::-;;;;;;;;;;;;;:::o;12637:188::-;12744:4;12773:44;12787:10;12799:9;12810:6;12773:13;:44::i;:::-;12766:51;;12637:188;;;;:::o;7476:59::-;;;;:::o;21583:94::-;6243:12;:10;:12::i;:::-;6233:22;;:6;;;;;;;;;;:22;;;6225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21663:6:::1;21650:10;;:19;;;;;;;;;;;;;;;;;;21583:94:::0;:::o;8620:25::-;;;;:::o;19550:77::-;6243:12;:10;:12::i;:::-;6233:22;;:6;;;;;;;;;;:22;;;6225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19615:4:::1;19601:11;;:18;;;;;;;;;;;;;;;;;;19550:77::o:0;8219:36::-;;;;:::o;7074:26::-;;;;;;;;;;;;;:::o;23181:137::-;6243:12;:10;:12::i;:::-;6233:22;;:6;;;;;;;;;;:22;;;6225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23306:4:::1;23295:7;23280:12;;:22;;;;:::i;:::-;23279:31;;;;:::i;:::-;23260:16;:50;;;;23181:137:::0;:::o;8855:45::-;;;;;;;;;;;;;:::o;11289:188::-;11409:7;11441:11;:19;11453:6;11441:19;;;;;;;;;;;;;;;:28;11461:7;11441:28;;;;;;;;;;;;;;;;11434:35;;11289:188;;;;:::o;8573:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;21490:85::-;6243:12;:10;:12::i;:::-;6233:22;;:6;;;;;;;;;;:22;;;6225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21562:5:::1;21546:13;;:21;;;;;;;;;;;;;;;;;;21490:85::o:0;8264:29::-;;;;;;;;;;;;;:::o;18964:200::-;6243:12;:10;:12::i;:::-;6233:22;;:6;;;;;;;;;;:22;;;6225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19056:1:::1;19044:8;:13;;19036:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19152:4;19140:8;19125:12;;:23;;;;:::i;:::-;19124:32;;;;:::i;:::-;19111:10;:45;;;;18964:200:::0;:::o;6476:281::-;6243:12;:10;:12::i;:::-;6233:22;;:6;;;;;;;;;;:22;;;6225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6599:1:::1;6579:22;;:8;:22;;::::0;6557:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6712:8;6683:38;;6704:6;::::0;::::1;;;;;;;;6683:38;;;;;;;;;;;;6741:8;6732:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6476:281:::0;:::o;19920:258::-;6243:12;:10;:12::i;:::-;6233:22;;:6;;;;;;;;;;:22;;;6225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20011:4:::1;19986:14:::0;:22:::1;20001:6;19986:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;20048:4;20026:11;:19;20038:6;20026:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;20089:4;20063:15;:23;20079:6;20063:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;20126:4;20104:11;:19;20116:6;20104:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;20165:5;20141:13;:21;20155:6;20141:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;19920:258:::0;:::o;19762:150::-;6243:12;:10;:12::i;:::-;6233:22;;:6;;;;;;;;;;:22;;;6225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19898:6:::1;19872:15;:23;19888:6;19872:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;19762:150:::0;;:::o;8517:23::-;;;;;;;;;;;;;:::o;8731:34::-;;;;;;;;;;;;;:::o;8909:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;8654:31::-;;;;;;;;;;;;;:::o;5421:115::-;5474:15;5517:10;5502:26;;5421:115;:::o;1893:240::-;2013:7;2071:1;2066;:6;;2074:12;2058:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2113:1;2109;:5;2102:12;;1893:240;;;;;:::o;13672:1627::-;13798:4;13819:16;;;;;;;;;;;13815:97;;;13859:41;13874:6;13882:9;13893:6;13859:14;:41::i;:::-;13852:48;;;;13815:97;13927:14;:22;13942:6;13927:22;;;;;;;;;;;;;;;;;;;;;;;;;13926:23;:53;;;;;13954:14;:25;13969:9;13954:25;;;;;;;;;;;;;;;;;;;;;;;;;13953:26;13926:53;13922:110;;;14004:11;;;;;;;;;;;13996:24;;;;;;;;;;;;:::i;:::-;;;;;;;;;13922:110;14076:12;;14066:6;:22;;:98;;;;14110:15;:23;14126:6;14110:23;;;;;;;;;;;;;;;;;;;;;;;;;:53;;;;;14137:15;:26;14153:9;14137:26;;;;;;;;;;;;;;;;;;;;;;;;;14110:53;14066:98;14044:156;;;;;;;;;;;;:::i;:::-;;;;;;;;;14229:6;:17;14236:9;14229:17;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;14264:16;;;;;;;;;;;14263:17;14229:51;:89;;;;;14297:21;;;;;;;;;;;14229:89;:147;;;;;14363:13;;14335:9;:24;14353:4;14335:24;;;;;;;;;;;;;;;;:41;;14229:147;14211:227;;;14403:23;:21;:23::i;:::-;14211:227;14453:10;:8;:10::i;:::-;14452:11;:32;;;;;14467:6;:17;14474:9;14467:17;;;;;;;;;;;;;;;;;;;;;;;;;14452:32;14448:122;;;14529:1;14509:9;:17;14519:6;14509:17;;;;;;;;;;;;;;;;:21;14501:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;14550:8;:6;:8::i;:::-;14448:122;14608:13;;;;;;;;;;;14604:92;;;14647:13;:21;14661:6;14647:21;;;;;;;;;;;;;;;;;;;;;;;;;14646:22;14638:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;14604:92;14755:33;14777:6;14755:33;;;;;;;;;;;;:9;:17;14765:6;14755:17;;;;;;;;;;;;;;;;:21;;:33;;;;;:::i;:::-;14735:9;:17;14745:6;14735:17;;;;;;;;;;;;;;;:53;;;;14806:15;:26;14822:9;14806:26;;;;;;;;;;;;;;;;;;;;;;;;;14805:27;:45;;;;;14836:14;;;;;;;;;;;14805:45;14801:137;;;14911:10;;14875:32;14900:6;14875:9;:20;14885:9;14875:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;:46;;14867:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;14801:137;14950:19;14973:11;:19;14985:6;14973:19;;;;;;;;;;;;;;;;;;;;;;;;;14972:20;:47;;;;;14997:11;:22;15009:9;14997:22;;;;;;;;;;;;;;;;;;;;;;;;;14996:23;14972:47;:122;;15088:6;14972:122;;;15035:37;15046:6;15054:9;15065:6;15035:10;:37::i;:::-;14972:122;14950:144;;15128:37;15153:11;15128:9;:20;15138:9;15128:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;15105:9;:20;15115:9;15105:20;;;;;;;;;;;;;;;:60;;;;15178:33;15193:6;15201:9;15178:14;:33::i;:::-;15246:9;15229:40;;15238:6;15229:40;;;15257:11;15229:40;;;;;;:::i;:::-;;;;;;;;15287:4;15280:11;;;13672:1627;;;;;;:::o;1469:98::-;1527:7;1558:1;1554;:5;;;;:::i;:::-;1547:12;;1469:98;;;;:::o;1363:::-;1421:7;1452:1;1448;:5;;;;:::i;:::-;1441:12;;1363:98;;;;:::o;12833:401::-;12960:4;12997:90;13033:6;12997:90;;;;;;;;;;;;;;;;;:9;:17;13007:6;12997:17;;;;;;;;;;;;;;;;:21;;:90;;;;;:::i;:::-;12977:9;:17;12987:6;12977:17;;;;;;;;;;;;;;;:110;;;;13121:32;13146:6;13121:9;:20;13131:9;13121:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;13098:9;:20;13108:9;13098:20;;;;;;;;;;;;;;;:55;;;;13186:9;13169:35;;13178:6;13169:35;;;13197:6;13169:35;;;;;;:::i;:::-;;;;;;;;13222:4;13215:11;;12833:401;;;;;:::o;16993:1808::-;9195:4;9176:16;;:23;;;;;;;;;;;;;;;;;;17058::::1;17084:9;:24;17102:4;17084:24;;;;;;;;;;;;;;;;17058:50;;17119:23;17145:110;17253:1;17145:89;17211:22;17224:8;;17211;;:12;;:22;;;;:::i;:::-;17145:47;17179:12;;17145:15;:33;;:47;;;;:::i;:::-;:65;;:89;;;;:::i;:::-;:107;;:110;;;;:::i;:::-;17119:136;;17266:20;17289:36;17309:15;17289;:19;;:36;;;;:::i;:::-;17266:59;;17338:21;17376:1;17362:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17338:40;;17407:4;17389;17394:1;17389:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;17433:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17423:4;17428:1;17423:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;17459:6;;;;;;;;;;;:57;;;17531:12;17558:1;17574:4;17601;17621:15;17459:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17660:17;17680:21;17660:41;;17714:19;17736:47;17763:19;17780:1;17763:12;;:16;;:19;;;;:::i;:::-;17736:22;17749:8;;17736;;:12;;:22;;;;:::i;:::-;:26;;:47;;;;:::i;:::-;17714:69;;17796:26;17825:93;17916:1;17825:72;17885:11;17825:41;17853:12;;17825:9;:27;;:41;;;;:::i;:::-;:59;;:72;;;;:::i;:::-;:90;;:93;;;;:::i;:::-;17796:122;;17929:26;17958:68;18004:11;17958:27;17972:12;;17958:9;:13;;:27;;;;:::i;:::-;:31;;:68;;;;:::i;:::-;17929:97;;18037:20;18060:38;18086:11;18060:21;18074:6;;18060:9;:13;;:21;;;;:::i;:::-;:25;;:38;;;;:::i;:::-;18037:61;;18112:16;18142:14;;;;;;;;;;;18134:28;;18184:18;18222:5;18134:108;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18111:131;;;18267:5;18253:19;;18311:9;;;;;;;;;;;18303:23;;18348:12;18380:5;18303:97;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18285:115;;;;;18425:5;18411:19;;18465:1;18447:15;:19;18443:351;;;18483:6;;;;;;;;;;;:22;;;18513:18;18559:4;18583:15;18617:1;18637::::0;18657:8:::1;;;;;;;;;;;18684:15;18483:231;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18734:48;18746:18;18766:15;18734:48;;;;;;;:::i;:::-;;;;;;;;18443:351;17047:1754;;;;;;;;;;9241:5:::0;9222:16;;:24;;;;;;;;;;;;;;;;;;16993:1808::o;12021:90::-;12064:4;12102:1;12088:10;;:15;;12081:22;;12021:90;:::o;12119:71::-;12170:12;12157:10;:25;;;;12119:71::o;15776:1209::-;15899:7;15919:21;15943:1;15919:25;;15955:20;15994:6;:17;16001:9;15994:17;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;;16015:11;;;;;;;;;;;15994:32;15990:112;;;16059:31;16081:8;;16059:17;;:21;;:31;;;;:::i;:::-;16043:47;;15990:112;16116:6;:14;16123:6;16116:14;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;;;16134:10;;;;;;;;;;;16116:28;16112:99;;;16177:22;16190:8;;16177;;:12;;:22;;;;:::i;:::-;16161:38;;16112:99;16226:6;:14;16233:6;16226:14;;;;;;;;;;;;;;;;;;;;;;;;;16225:15;:37;;;;;16245:6;:17;16252:9;16245:17;;;;;;;;;;;;;;;;;;;;;;;;;16244:18;16225:37;16221:230;;;16283:15;;;;;;;;;;;16279:161;;;16335:31;16357:8;;16335:17;;:21;;:31;;;;:::i;:::-;16319:47;;16279:161;;;16423:1;16407:17;;16279:161;16221:230;16481:1;16465:13;:17;:33;;;;;16497:1;16486:8;;:12;16465:33;16461:256;;;16530:29;16555:3;16530:20;16541:8;;16530:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;16515:44;;16600:41;16628:12;16600:9;:23;16610:12;;;;;;;;;;;16600:23;;;;;;;;;;;;;;;;:27;;:41;;;;:::i;:::-;16574:9;:23;16584:12;;;;;;;;;;;16574:23;;;;;;;;;;;;;;;:67;;;;16678:12;;;;;;;;;;;16661:44;;16670:6;16661:44;;;16692:12;16661:44;;;;;;:::i;:::-;;;;;;;;16461:256;16727:17;16747:34;16777:3;16747:25;16758:13;16747:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;16727:54;;16821:39;16850:9;16821;:24;16839:4;16821:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;16794:9;:24;16812:4;16794:24;;;;;;;;;;;;;;;:66;;;;16901:4;16876:42;;16885:6;16876:42;;;16908:9;16876:42;;;;;;:::i;:::-;;;;;;;;16938:39;16964:12;16938:21;16949:9;16938:6;:10;;:21;;;;:::i;:::-;:25;;:39;;;;:::i;:::-;16931:46;;;;;15776:1209;;;;;:::o;15307:461::-;15390:6;:14;15397:6;15390:14;;;;;;;;;;;;;;;;;;;;;;;;;15385:230;;15444:16;;15424:17;15434:6;15424:9;:17::i;:::-;:36;15421:183;;;15499:1;15480:8;:16;15489:6;15480:16;;;;;;;;;;;;;;;:20;;;;15421:183;;;15573:15;15554:8;:16;15563:6;15554:16;;;;;;;;;;;;;;;:34;;;;15421:183;15385:230;15651:1;15629:8;:19;15638:9;15629:19;;;;;;;;;;;;;;;;:23;:66;;;;;15679:16;;15656:20;15666:9;15656;:20::i;:::-;:39;15629:66;15625:136;;;15734:15;15712:8;:19;15721:9;15712:19;;;;;;;;;;;;;;;:37;;;;15625:136;15307:461;;:::o;1575:98::-;1633:7;1664:1;1660;:5;;;;:::i;:::-;1653:12;;1575:98;;;;:::o;1681:::-;1739:7;1770:1;1766;:5;;;;:::i;:::-;1759:12;;1681:98;;;;:::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:329::-;2677:6;2726:2;2714:9;2705:7;2701:23;2697:32;2694:119;;;2732:79;;:::i;:::-;2694:119;2852:1;2877:53;2922:7;2913:6;2902:9;2898:22;2877:53;:::i;:::-;2867:63;;2823:117;2618:329;;;;:::o;2953:90::-;2987:7;3030:5;3023:13;3016:21;3005:32;;2953:90;;;:::o;3049:109::-;3130:21;3145:5;3130:21;:::i;:::-;3125:3;3118:34;3049:109;;:::o;3164:210::-;3251:4;3289:2;3278:9;3274:18;3266:26;;3302:65;3364:1;3353:9;3349:17;3340:6;3302:65;:::i;:::-;3164:210;;;;:::o;3380:122::-;3453:24;3471:5;3453:24;:::i;:::-;3446:5;3443:35;3433:63;;3492:1;3489;3482:12;3433:63;3380:122;:::o;3508:139::-;3554:5;3592:6;3579:20;3570:29;;3608:33;3635:5;3608:33;:::i;:::-;3508:139;;;;:::o;3653:474::-;3721:6;3729;3778:2;3766:9;3757:7;3753:23;3749:32;3746:119;;;3784:79;;:::i;:::-;3746:119;3904:1;3929:53;3974:7;3965:6;3954:9;3950:22;3929:53;:::i;:::-;3919:63;;3875:117;4031:2;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4002:118;3653:474;;;;;:::o;4133:116::-;4203:21;4218:5;4203:21;:::i;:::-;4196:5;4193:32;4183:60;;4239:1;4236;4229:12;4183:60;4133:116;:::o;4255:133::-;4298:5;4336:6;4323:20;4314:29;;4352:30;4376:5;4352:30;:::i;:::-;4255:133;;;;:::o;4394:468::-;4459:6;4467;4516:2;4504:9;4495:7;4491:23;4487:32;4484:119;;;4522:79;;:::i;:::-;4484:119;4642:1;4667:50;4709:7;4700:6;4689:9;4685:22;4667:50;:::i;:::-;4657:60;;4613:114;4766:2;4792:53;4837:7;4828:6;4817:9;4813:22;4792:53;:::i;:::-;4782:63;;4737:118;4394:468;;;;;:::o;4868:323::-;4924:6;4973:2;4961:9;4952:7;4948:23;4944:32;4941:119;;;4979:79;;:::i;:::-;4941:119;5099:1;5124:50;5166:7;5157:6;5146:9;5142:22;5124:50;:::i;:::-;5114:60;;5070:114;4868:323;;;;:::o;5197:619::-;5274:6;5282;5290;5339:2;5327:9;5318:7;5314:23;5310:32;5307:119;;;5345:79;;:::i;:::-;5307:119;5465:1;5490:53;5535:7;5526:6;5515:9;5511:22;5490:53;:::i;:::-;5480:63;;5436:117;5592:2;5618:53;5663:7;5654:6;5643:9;5639:22;5618:53;:::i;:::-;5608:63;;5563:118;5720:2;5746:53;5791:7;5782:6;5771:9;5767:22;5746:53;:::i;:::-;5736:63;;5691:118;5197:619;;;;;:::o;5822:117::-;5931:1;5928;5921:12;5945:117;6054:1;6051;6044:12;6068:117;6177:1;6174;6167:12;6208:568;6281:8;6291:6;6341:3;6334:4;6326:6;6322:17;6318:27;6308:122;;6349:79;;:::i;:::-;6308:122;6462:6;6449:20;6439:30;;6492:18;6484:6;6481:30;6478:117;;;6514:79;;:::i;:::-;6478:117;6628:4;6620:6;6616:17;6604:29;;6682:3;6674:4;6666:6;6662:17;6652:8;6648:32;6645:41;6642:128;;;6689:79;;:::i;:::-;6642:128;6208:568;;;;;:::o;6782:698::-;6874:6;6882;6890;6939:2;6927:9;6918:7;6914:23;6910:32;6907:119;;;6945:79;;:::i;:::-;6907:119;7093:1;7082:9;7078:17;7065:31;7123:18;7115:6;7112:30;7109:117;;;7145:79;;:::i;:::-;7109:117;7258:80;7330:7;7321:6;7310:9;7306:22;7258:80;:::i;:::-;7240:98;;;;7036:312;7387:2;7413:50;7455:7;7446:6;7435:9;7431:22;7413:50;:::i;:::-;7403:60;;7358:115;6782:698;;;;;:::o;7486:329::-;7545:6;7594:2;7582:9;7573:7;7569:23;7565:32;7562:119;;;7600:79;;:::i;:::-;7562:119;7720:1;7745:53;7790:7;7781:6;7770:9;7766:22;7745:53;:::i;:::-;7735:63;;7691:117;7486:329;;;;:::o;7821:86::-;7856:7;7896:4;7889:5;7885:16;7874:27;;7821:86;;;:::o;7913:112::-;7996:22;8012:5;7996:22;:::i;:::-;7991:3;7984:35;7913:112;;:::o;8031:214::-;8120:4;8158:2;8147:9;8143:18;8135:26;;8171:67;8235:1;8224:9;8220:17;8211:6;8171:67;:::i;:::-;8031:214;;;;:::o;8251:468::-;8316:6;8324;8373:2;8361:9;8352:7;8348:23;8344:32;8341:119;;;8379:79;;:::i;:::-;8341:119;8499:1;8524:53;8569:7;8560:6;8549:9;8545:22;8524:53;:::i;:::-;8514:63;;8470:117;8626:2;8652:50;8694:7;8685:6;8674:9;8670:22;8652:50;:::i;:::-;8642:60;;8597:115;8251:468;;;;;:::o;8725:118::-;8812:24;8830:5;8812:24;:::i;:::-;8807:3;8800:37;8725:118;;:::o;8849:222::-;8942:4;8980:2;8969:9;8965:18;8957:26;;8993:71;9061:1;9050:9;9046:17;9037:6;8993:71;:::i;:::-;8849:222;;;;:::o;9077:765::-;9163:6;9171;9179;9187;9236:3;9224:9;9215:7;9211:23;9207:33;9204:120;;;9243:79;;:::i;:::-;9204:120;9363:1;9388:53;9433:7;9424:6;9413:9;9409:22;9388:53;:::i;:::-;9378:63;;9334:117;9490:2;9516:53;9561:7;9552:6;9541:9;9537:22;9516:53;:::i;:::-;9506:63;;9461:118;9618:2;9644:53;9689:7;9680:6;9669:9;9665:22;9644:53;:::i;:::-;9634:63;;9589:118;9746:2;9772:53;9817:7;9808:6;9797:9;9793:22;9772:53;:::i;:::-;9762:63;;9717:118;9077:765;;;;;;;:::o;9848:911::-;9943:6;9951;9959;9967;9975;10024:3;10012:9;10003:7;9999:23;9995:33;9992:120;;;10031:79;;:::i;:::-;9992:120;10151:1;10176:53;10221:7;10212:6;10201:9;10197:22;10176:53;:::i;:::-;10166:63;;10122:117;10278:2;10304:53;10349:7;10340:6;10329:9;10325:22;10304:53;:::i;:::-;10294:63;;10249:118;10406:2;10432:53;10477:7;10468:6;10457:9;10453:22;10432:53;:::i;:::-;10422:63;;10377:118;10534:2;10560:53;10605:7;10596:6;10585:9;10581:22;10560:53;:::i;:::-;10550:63;;10505:118;10662:3;10689:53;10734:7;10725:6;10714:9;10710:22;10689:53;:::i;:::-;10679:63;;10633:119;9848:911;;;;;;;;:::o;10765:474::-;10833:6;10841;10890:2;10878:9;10869:7;10865:23;10861:32;10858:119;;;10896:79;;:::i;:::-;10858:119;11016:1;11041:53;11086:7;11077:6;11066:9;11062:22;11041:53;:::i;:::-;11031:63;;10987:117;11143:2;11169:53;11214:7;11205:6;11194:9;11190:22;11169:53;:::i;:::-;11159:63;;11114:118;10765:474;;;;;:::o;11245:60::-;11273:3;11294:5;11287:12;;11245:60;;;:::o;11311:142::-;11361:9;11394:53;11412:34;11421:24;11439:5;11421:24;:::i;:::-;11412:34;:::i;:::-;11394:53;:::i;:::-;11381:66;;11311:142;;;:::o;11459:126::-;11509:9;11542:37;11573:5;11542:37;:::i;:::-;11529:50;;11459:126;;;:::o;11591:143::-;11658:9;11691:37;11722:5;11691:37;:::i;:::-;11678:50;;11591:143;;;:::o;11740:165::-;11844:54;11892:5;11844:54;:::i;:::-;11839:3;11832:67;11740:165;;:::o;11911:256::-;12021:4;12059:2;12048:9;12044:18;12036:26;;12072:88;12157:1;12146:9;12142:17;12133:6;12072:88;:::i;:::-;11911:256;;;;:::o;12173:180::-;12221:77;12218:1;12211:88;12318:4;12315:1;12308:15;12342:4;12339:1;12332:15;12359:194;12399:4;12419:20;12437:1;12419:20;:::i;:::-;12414:25;;12453:20;12471:1;12453:20;:::i;:::-;12448:25;;12497:1;12494;12490:9;12482:17;;12521:1;12515:4;12512:11;12509:37;;;12526:18;;:::i;:::-;12509:37;12359:194;;;;:::o;12559:182::-;12699:34;12695:1;12687:6;12683:14;12676:58;12559:182;:::o;12747:366::-;12889:3;12910:67;12974:2;12969:3;12910:67;:::i;:::-;12903:74;;12986:93;13075:3;12986:93;:::i;:::-;13104:2;13099:3;13095:12;13088:19;;12747:366;;;:::o;13119:419::-;13285:4;13323:2;13312:9;13308:18;13300:26;;13372:9;13366:4;13362:20;13358:1;13347:9;13343:17;13336:47;13400:131;13526:4;13400:131;:::i;:::-;13392:139;;13119:419;;;:::o;13544:177::-;13684:29;13680:1;13672:6;13668:14;13661:53;13544:177;:::o;13727:366::-;13869:3;13890:67;13954:2;13949:3;13890:67;:::i;:::-;13883:74;;13966:93;14055:3;13966:93;:::i;:::-;14084:2;14079:3;14075:12;14068:19;;13727:366;;;:::o;14099:419::-;14265:4;14303:2;14292:9;14288:18;14280:26;;14352:9;14346:4;14342:20;14338:1;14327:9;14323:17;14316:47;14380:131;14506:4;14380:131;:::i;:::-;14372:139;;14099:419;;;:::o;14524:114::-;;:::o;14644:364::-;14786:3;14807:66;14871:1;14866:3;14807:66;:::i;:::-;14800:73;;14882:93;14971:3;14882:93;:::i;:::-;15000:1;14995:3;14991:11;14984:18;;14644:364;;;:::o;15014:419::-;15180:4;15218:2;15207:9;15203:18;15195:26;;15267:9;15261:4;15257:20;15253:1;15242:9;15238:17;15231:47;15295:131;15421:4;15295:131;:::i;:::-;15287:139;;15014:419;;;:::o;15439:180::-;15487:77;15484:1;15477:88;15584:4;15581:1;15574:15;15608:4;15605:1;15598:15;15625:233;15664:3;15687:24;15705:5;15687:24;:::i;:::-;15678:33;;15733:66;15726:5;15723:77;15720:103;;15803:18;;:::i;:::-;15720:103;15850:1;15843:5;15839:13;15832:20;;15625:233;;;:::o;15864:225::-;16004:34;16000:1;15992:6;15988:14;15981:58;16073:8;16068:2;16060:6;16056:15;16049:33;15864:225;:::o;16095:366::-;16237:3;16258:67;16322:2;16317:3;16258:67;:::i;:::-;16251:74;;16334:93;16423:3;16334:93;:::i;:::-;16452:2;16447:3;16443:12;16436:19;;16095:366;;;:::o;16467:419::-;16633:4;16671:2;16660:9;16656:18;16648:26;;16720:9;16714:4;16710:20;16706:1;16695:9;16691:17;16684:47;16748:131;16874:4;16748:131;:::i;:::-;16740:139;;16467:419;;;:::o;16892:410::-;16932:7;16955:20;16973:1;16955:20;:::i;:::-;16950:25;;16989:20;17007:1;16989:20;:::i;:::-;16984:25;;17044:1;17041;17037:9;17066:30;17084:11;17066:30;:::i;:::-;17055:41;;17245:1;17236:7;17232:15;17229:1;17226:22;17206:1;17199:9;17179:83;17156:139;;17275:18;;:::i;:::-;17156:139;16940:362;16892:410;;;;:::o;17308:180::-;17356:77;17353:1;17346:88;17453:4;17450:1;17443:15;17477:4;17474:1;17467:15;17494:185;17534:1;17551:20;17569:1;17551:20;:::i;:::-;17546:25;;17585:20;17603:1;17585:20;:::i;:::-;17580:25;;17624:1;17614:35;;17629:18;;:::i;:::-;17614:35;17671:1;17668;17664:9;17659:14;;17494:185;;;;:::o;17685:163::-;17825:15;17821:1;17813:6;17809:14;17802:39;17685:163;:::o;17854:366::-;17996:3;18017:67;18081:2;18076:3;18017:67;:::i;:::-;18010:74;;18093:93;18182:3;18093:93;:::i;:::-;18211:2;18206:3;18202:12;18195:19;;17854:366;;;:::o;18226:419::-;18392:4;18430:2;18419:9;18415:18;18407:26;;18479:9;18473:4;18469:20;18465:1;18454:9;18450:17;18443:47;18507:131;18633:4;18507:131;:::i;:::-;18499:139;;18226:419;;;:::o;18651:167::-;18791:19;18787:1;18779:6;18775:14;18768:43;18651:167;:::o;18824:366::-;18966:3;18987:67;19051:2;19046:3;18987:67;:::i;:::-;18980:74;;19063:93;19152:3;19063:93;:::i;:::-;19181:2;19176:3;19172:12;19165:19;;18824:366;;;:::o;19196:419::-;19362:4;19400:2;19389:9;19385:18;19377:26;;19449:9;19443:4;19439:20;19435:1;19424:9;19420:17;19413:47;19477:131;19603:4;19477:131;:::i;:::-;19469:139;;19196:419;;;:::o;19621:191::-;19661:3;19680:20;19698:1;19680:20;:::i;:::-;19675:25;;19714:20;19732:1;19714:20;:::i;:::-;19709:25;;19757:1;19754;19750:9;19743:16;;19778:3;19775:1;19772:10;19769:36;;;19785:18;;:::i;:::-;19769:36;19621:191;;;;:::o;19818:178::-;19958:30;19954:1;19946:6;19942:14;19935:54;19818:178;:::o;20002:366::-;20144:3;20165:67;20229:2;20224:3;20165:67;:::i;:::-;20158:74;;20241:93;20330:3;20241:93;:::i;:::-;20359:2;20354:3;20350:12;20343:19;;20002:366;;;:::o;20374:419::-;20540:4;20578:2;20567:9;20563:18;20555:26;;20627:9;20621:4;20617:20;20613:1;20602:9;20598:17;20591:47;20655:131;20781:4;20655:131;:::i;:::-;20647:139;;20374:419;;;:::o;20799:332::-;20920:4;20958:2;20947:9;20943:18;20935:26;;20971:71;21039:1;21028:9;21024:17;21015:6;20971:71;:::i;:::-;21052:72;21120:2;21109:9;21105:18;21096:6;21052:72;:::i;:::-;20799:332;;;;;:::o;21137:137::-;21191:5;21222:6;21216:13;21207:22;;21238:30;21262:5;21238:30;:::i;:::-;21137:137;;;;:::o;21280:345::-;21347:6;21396:2;21384:9;21375:7;21371:23;21367:32;21364:119;;;21402:79;;:::i;:::-;21364:119;21522:1;21547:61;21600:7;21591:6;21580:9;21576:22;21547:61;:::i;:::-;21537:71;;21493:125;21280:345;;;;:::o;21631:225::-;21771:34;21767:1;21759:6;21755:14;21748:58;21840:8;21835:2;21827:6;21823:15;21816:33;21631:225;:::o;21862:366::-;22004:3;22025:67;22089:2;22084:3;22025:67;:::i;:::-;22018:74;;22101:93;22190:3;22101:93;:::i;:::-;22219:2;22214:3;22210:12;22203:19;;21862:366;;;:::o;22234:419::-;22400:4;22438:2;22427:9;22423:18;22415:26;;22487:9;22481:4;22477:20;22473:1;22462:9;22458:17;22451:47;22515:131;22641:4;22515:131;:::i;:::-;22507:139;;22234:419;;;:::o;22659:158::-;22799:10;22795:1;22787:6;22783:14;22776:34;22659:158;:::o;22823:365::-;22965:3;22986:66;23050:1;23045:3;22986:66;:::i;:::-;22979:73;;23061:93;23150:3;23061:93;:::i;:::-;23179:2;23174:3;23170:12;23163:19;;22823:365;;;:::o;23194:419::-;23360:4;23398:2;23387:9;23383:18;23375:26;;23447:9;23441:4;23437:20;23433:1;23422:9;23418:17;23411:47;23475:131;23601:4;23475:131;:::i;:::-;23467:139;;23194:419;;;:::o;23619:161::-;23759:13;23755:1;23747:6;23743:14;23736:37;23619:161;:::o;23786:366::-;23928:3;23949:67;24013:2;24008:3;23949:67;:::i;:::-;23942:74;;24025:93;24114:3;24025:93;:::i;:::-;24143:2;24138:3;24134:12;24127:19;;23786:366;;;:::o;24158:419::-;24324:4;24362:2;24351:9;24347:18;24339:26;;24411:9;24405:4;24401:20;24397:1;24386:9;24382:17;24375:47;24439:131;24565:4;24439:131;:::i;:::-;24431:139;;24158:419;;;:::o;24583:180::-;24631:77;24628:1;24621:88;24728:4;24725:1;24718:15;24752:4;24749:1;24742:15;24769:143;24826:5;24857:6;24851:13;24842:22;;24873:33;24900:5;24873:33;:::i;:::-;24769:143;;;;:::o;24918:351::-;24988:6;25037:2;25025:9;25016:7;25012:23;25008:32;25005:119;;;25043:79;;:::i;:::-;25005:119;25163:1;25188:64;25244:7;25235:6;25224:9;25220:22;25188:64;:::i;:::-;25178:74;;25134:128;24918:351;;;;:::o;25275:85::-;25320:7;25349:5;25338:16;;25275:85;;;:::o;25366:158::-;25424:9;25457:61;25475:42;25484:32;25510:5;25484:32;:::i;:::-;25475:42;:::i;:::-;25457:61;:::i;:::-;25444:74;;25366:158;;;:::o;25530:147::-;25625:45;25664:5;25625:45;:::i;:::-;25620:3;25613:58;25530:147;;:::o;25683:114::-;25750:6;25784:5;25778:12;25768:22;;25683:114;;;:::o;25803:184::-;25902:11;25936:6;25931:3;25924:19;25976:4;25971:3;25967:14;25952:29;;25803:184;;;;:::o;25993:132::-;26060:4;26083:3;26075:11;;26113:4;26108:3;26104:14;26096:22;;25993:132;;;:::o;26131:108::-;26208:24;26226:5;26208:24;:::i;:::-;26203:3;26196:37;26131:108;;:::o;26245:179::-;26314:10;26335:46;26377:3;26369:6;26335:46;:::i;:::-;26413:4;26408:3;26404:14;26390:28;;26245:179;;;;:::o;26430:113::-;26500:4;26532;26527:3;26523:14;26515:22;;26430:113;;;:::o;26579:732::-;26698:3;26727:54;26775:5;26727:54;:::i;:::-;26797:86;26876:6;26871:3;26797:86;:::i;:::-;26790:93;;26907:56;26957:5;26907:56;:::i;:::-;26986:7;27017:1;27002:284;27027:6;27024:1;27021:13;27002:284;;;27103:6;27097:13;27130:63;27189:3;27174:13;27130:63;:::i;:::-;27123:70;;27216:60;27269:6;27216:60;:::i;:::-;27206:70;;27062:224;27049:1;27046;27042:9;27037:14;;27002:284;;;27006:14;27302:3;27295:10;;26703:608;;;26579:732;;;;:::o;27317:831::-;27580:4;27618:3;27607:9;27603:19;27595:27;;27632:71;27700:1;27689:9;27685:17;27676:6;27632:71;:::i;:::-;27713:80;27789:2;27778:9;27774:18;27765:6;27713:80;:::i;:::-;27840:9;27834:4;27830:20;27825:2;27814:9;27810:18;27803:48;27868:108;27971:4;27962:6;27868:108;:::i;:::-;27860:116;;27986:72;28054:2;28043:9;28039:18;28030:6;27986:72;:::i;:::-;28068:73;28136:3;28125:9;28121:19;28112:6;28068:73;:::i;:::-;27317:831;;;;;;;;:::o;28154:147::-;28255:11;28292:3;28277:18;;28154:147;;;;:::o;28307:398::-;28466:3;28487:83;28568:1;28563:3;28487:83;:::i;:::-;28480:90;;28579:93;28668:3;28579:93;:::i;:::-;28697:1;28692:3;28688:11;28681:18;;28307:398;;;:::o;28711:379::-;28895:3;28917:147;29060:3;28917:147;:::i;:::-;28910:154;;29081:3;29074:10;;28711:379;;;:::o;29096:807::-;29345:4;29383:3;29372:9;29368:19;29360:27;;29397:71;29465:1;29454:9;29450:17;29441:6;29397:71;:::i;:::-;29478:72;29546:2;29535:9;29531:18;29522:6;29478:72;:::i;:::-;29560:80;29636:2;29625:9;29621:18;29612:6;29560:80;:::i;:::-;29650;29726:2;29715:9;29711:18;29702:6;29650:80;:::i;:::-;29740:73;29808:3;29797:9;29793:19;29784:6;29740:73;:::i;:::-;29823;29891:3;29880:9;29876:19;29867:6;29823:73;:::i;:::-;29096:807;;;;;;;;;:::o;29909:143::-;29966:5;29997:6;29991:13;29982:22;;30013:33;30040:5;30013:33;:::i;:::-;29909:143;;;;:::o;30058:663::-;30146:6;30154;30162;30211:2;30199:9;30190:7;30186:23;30182:32;30179:119;;;30217:79;;:::i;:::-;30179:119;30337:1;30362:64;30418:7;30409:6;30398:9;30394:22;30362:64;:::i;:::-;30352:74;;30308:128;30475:2;30501:64;30557:7;30548:6;30537:9;30533:22;30501:64;:::i;:::-;30491:74;;30446:129;30614:2;30640:64;30696:7;30687:6;30676:9;30672:22;30640:64;:::i;:::-;30630:74;;30585:129;30058:663;;;;;:::o;30727:332::-;30848:4;30886:2;30875:9;30871:18;30863:26;;30899:71;30967:1;30956:9;30952:17;30943:6;30899:71;:::i;:::-;30980:72;31048:2;31037:9;31033:18;31024:6;30980:72;:::i;:::-;30727:332;;;;;:::o

Swarm Source

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