ETH Price: $3,351.48 (-0.89%)

Token

Moo Token (MOO)
 

Overview

Max Total Supply

100,000,000 MOO

Holders

175

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
37,500 MOO

Value
$0.00
0x8966248e5ca83ed77ffedcb82b53ae81549e4dd7
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:
MOOTOKEN

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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

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

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

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

// Dex Router contract interface
interface IDexRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

    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; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _owner = _msgSender();
        emit OwnershipTransferred(address(0), _owner);
    }

    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 = payable(address(0));
    }

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

contract MOOTOKEN is Context, IERC20, Ownable {
    using SafeMath for uint256;

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

    mapping(address => bool) public isExcludedFromFee;
    mapping(address => bool) public isExcludedFromMaxTxn;
    mapping(address => bool) public isExcludedFromMaxHolding;
    mapping(address => bool) public isBot;

    string private _name = "Moo Token";
    string private _symbol = "MOO";
    uint8 private _decimals = 9;
    uint256 private _totalSupply = 100_000_000 * 1e9;

    address private constant DEAD = address(0xdead);
    address private constant ZERO = address(0);
    IDexRouter public dexRouter;
    address public dexPair;
    address public marketingWallet;
    address public NFTRewardWallet;
    address public liquidityReceiverWallet;

    uint256 public minTokenToSwap = _totalSupply.div(1e5); // this amount will trigger swap and distribute
    uint256 public maxHoldLimit = _totalSupply; // this is the max wallet holding limit
    uint256 public maxTxnLimit = _totalSupply; // this is the max transaction limit
    uint256 public percentDivider = 1000;
    uint256 public snipingTime = 0 seconds;
    uint256 public launchedAt;

    bool public distributeAndLiquifyStatus; // should be true to turn on to liquidate the pool
    bool public feesStatus = true; // enable by default
    bool public trading; // once enable can't be disable afterwards

    uint256 public liquidityFeeOnBuying = 20; // 2% will be added to the liquidity
    uint256 public marketingFeeOnBuying = 20; // 2% will be added to the marketing address
    uint256 public NFTRewardFeeOnBuying = 20; // 2% will be added to the NFT rewards address

    uint256 public liquidityFeeOnSelling = 20; // 2% will be added to the liquidity
    uint256 public marketingFeeOnSelling = 20; // 2% will be added to the marketing address
    uint256 public NFTRewardFeeOnSelling = 20; // 2% will be added to the NFT rewards address

    uint256 liquidityFeeCounter = 0;
    uint256 marketingFeeCounter = 0;
    uint256 NFTRewardFeeCounter = 0;

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

    constructor() {
        _balances[owner()] = _totalSupply;
        liquidityReceiverWallet = address(0);
        marketingWallet = address(0x712dc56C7d430F6c7914AF856dAfa60f9D709b47);
        NFTRewardWallet = address(0x21a92874b90e0997aa4D27fA358cF65Da05a2822);

        IDexRouter _dexRouter = IDexRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        // Create a dex pair for this new ERC20
        address _dexPair = IDexFactory(_dexRouter.factory()).createPair(
            address(this),
            _dexRouter.WETH()
        );
        dexPair = _dexPair;

        // set the rest of the contract variables
        dexRouter = _dexRouter;

        //exclude owner and this contract from fee
        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;

        //exclude owner and this contract from max Txn
        isExcludedFromMaxTxn[owner()] = true;
        isExcludedFromMaxTxn[address(this)] = true;

        //exclude owner and this contract from max hold limit
        isExcludedFromMaxHolding[owner()] = true;
        isExcludedFromMaxHolding[address(this)] = true;
        isExcludedFromMaxHolding[dexPair] = true;
        isExcludedFromMaxHolding[marketingWallet] = true;
        isExcludedFromMaxHolding[NFTRewardWallet] = true;

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

    //to receive ETH from dexRouter when swapping
    receive() external payable {}

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

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

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "Transfer amount exceeds allowance"
            )
        );
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "Decreased allowance or below zero"
            )
        );
        return true;
    }

    function includeOrExcludeFromFee(address account, bool value)
        external
        onlyOwner
    {
        isExcludedFromFee[account] = value;
    }

    function includeOrExcludeFromMaxTxn(address account, bool value)
        external
        onlyOwner
    {
        isExcludedFromMaxTxn[account] = value;
    }

    function includeOrExcludeFromMaxHolding(address account, bool value)
        external
        onlyOwner
    {
        isExcludedFromMaxHolding[account] = value;
    }

    function removeBots(address account)
        external
        onlyOwner
    {
        isBot[account] = false;
    }

    function setMinTokenToSwap(uint256 _amount) external onlyOwner {
        require(_amount > 0,"Can't be 0");
        minTokenToSwap = _amount;
    }

    function setMaxHoldLimit(uint256 _amount) external onlyOwner {
        maxHoldLimit = _amount;
    }

    function setMaxTxnLimit(uint256 _amount) external onlyOwner {
        maxTxnLimit = _amount;
    }

    function setBuyFeePercent(uint256 _lwFee, uint256 _marketingFee, uint256 _NFTRewardFee)
        external
        onlyOwner
    {
        marketingFeeOnBuying = _lwFee;
        NFTRewardFeeOnBuying = _NFTRewardFee;
        liquidityFeeOnBuying = _marketingFee;
        require(
            _lwFee.add(_marketingFee).add(_NFTRewardFee) <= percentDivider.div(10),
            "Can't be more than 10%"
        );
    }

    function setSellFeePercent(uint256 _lwFee, uint256 _marketingFee, uint256 _NFTRewardFee)
        external
        onlyOwner
    {
        marketingFeeOnSelling = _lwFee;
        NFTRewardFeeOnSelling = _NFTRewardFee;
        liquidityFeeOnSelling = _marketingFee;
        require(
            _lwFee.add(_marketingFee).add(_NFTRewardFee) <= percentDivider.div(10),
            "Can't be more than 10%"
        );
    }

    function setDistributionStatus(bool _value) public onlyOwner {
        distributeAndLiquifyStatus = _value;
    }

    function enableOrDisableFees(bool _value) external onlyOwner {
        feesStatus = _value;
    }

    function removeStuckEth(address _receiver) public onlyOwner {
        payable(_receiver).transfer(address(this).balance);
    }

    function updateAddresses(address _marketingWallet, address _NFTRewardWallet, address _liquidityReceiverWallet) external onlyOwner {
        marketingWallet = _marketingWallet;
        NFTRewardWallet = _NFTRewardWallet;
        liquidityReceiverWallet = _liquidityReceiverWallet;
    }

    function enableTrading() external onlyOwner {
        require(!trading, "Already enabled");
        trading = true;
        feesStatus = true;
        distributeAndLiquifyStatus = true;
        launchedAt = block.timestamp;
    }

    function totalBuyFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = amount.mul(marketingFeeOnBuying.add(liquidityFeeOnBuying).add(NFTRewardFeeOnBuying)).div(
            percentDivider
        );
        return fee;
    }

    function totalSellFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = amount
            .mul(marketingFeeOnSelling.add(liquidityFeeOnSelling).add(NFTRewardFeeOnSelling))
            .div(percentDivider);
        return fee;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "Approve from the zero address");
        require(spender != address(0), "Approve to the zero address");

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "Transfer from the zero address");
        require(to != address(0), "Transfer to the zero address");
        require(amount > 0, "Amount must be greater than zero");
        require(!isBot[from], "Bot detected");

        if (!isExcludedFromMaxTxn[from] && !isExcludedFromMaxTxn[to]) {
            require(amount <= maxTxnLimit, "Max txn limit exceeds");

            // trading disable till launch
            if (!trading) {
                require(
                    dexPair != from && dexPair != to,
                    "Trading is disabled"
                );
            }
            // antibot
            if (
                block.timestamp < launchedAt + snipingTime &&
                from != address(dexRouter)
            ) {
                if (dexPair == from) {
                    isBot[to] = true;
                } else if (dexPair == to) {
                    isBot[from] = true;
                }
            }
        }

        if (!isExcludedFromMaxHolding[to]) {
            require(
                balanceOf(to).add(amount) <= maxHoldLimit,
                "Max hold limit exceeds"
            );
        }

        // swap and liquify
        distributeAndLiquify(from, to);

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

        //if any account belongs to isExcludedFromFee account then remove the fee
        if (isExcludedFromFee[from] || isExcludedFromFee[to] || !feesStatus) {
            takeFee = false;
        }

        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from, to, amount, takeFee);
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (dexPair == sender && takeFee) {
            uint256 allFee = totalBuyFeePerTx(amount);
            uint256 tTransferAmount = amount.sub(allFee);
            _balances[sender] = _balances[sender].sub(amount,"Insufficient balance");
            _balances[recipient] = _balances[recipient].add(tTransferAmount);

            emit Transfer(sender, recipient, tTransferAmount);
            takeTokenFee(sender, allFee);
            setFeeCountersOnBuying(amount);
        } else if (dexPair == recipient && takeFee) {
            uint256 allFee = totalSellFeePerTx(amount);
            uint256 tTransferAmount = amount.sub(allFee);
            _balances[sender] = _balances[sender].sub(amount,"Insufficient balance");
            _balances[recipient] = _balances[recipient].add(tTransferAmount);

            emit Transfer(sender, recipient, tTransferAmount);
            takeTokenFee(sender, allFee);
            setFeeCountersOnSelling(amount);
        } else {
            _balances[sender] = _balances[sender].sub(amount,"Insufficient balance");
            _balances[recipient] = _balances[recipient].add(amount);

            emit Transfer(sender, recipient, amount);
        }
    }

    function takeTokenFee(address sender, uint256 amount) private {
        _balances[address(this)] = _balances[address(this)].add(amount);

        emit Transfer(sender, address(this), amount);
    }

    function setFeeCountersOnBuying(uint256 amount) private {
        liquidityFeeCounter += amount.mul(liquidityFeeOnBuying).div(
            percentDivider
        );
        marketingFeeCounter += amount.mul(marketingFeeOnBuying).div(percentDivider);
        NFTRewardFeeCounter += amount.mul(NFTRewardFeeOnBuying).div(percentDivider);
    }

    function setFeeCountersOnSelling(uint256 amount) private {
        liquidityFeeCounter += amount.mul(liquidityFeeOnSelling).div(
            percentDivider
        );
        marketingFeeCounter += amount.mul(marketingFeeOnSelling).div(percentDivider);
        NFTRewardFeeCounter += amount.mul(NFTRewardFeeOnSelling).div(percentDivider);
    }

    function distributeAndLiquify(address from, address to) private {
        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + liquidity lock?
        // also, don't get caught in a circular liquidity event.
        // also, don't swap & liquify if sender is Dex pair.
        uint256 contractTokenBalance = balanceOf(address(this));

        bool shouldSell = contractTokenBalance >= minTokenToSwap;

        if (
            shouldSell &&
            from != dexPair &&
            distributeAndLiquifyStatus &&
            !(from == address(this) && to == address(dexPair)) // swap 1 time
        ) {
            // approve contract
            _approve(address(this), address(dexRouter), contractTokenBalance);

            uint256 halfLiquidity = liquidityFeeCounter.div(2);
            uint256 otherHalfLiquidity = liquidityFeeCounter.sub(halfLiquidity);

            uint256 tokenAmountToBeSwapped = contractTokenBalance.sub(
                otherHalfLiquidity
            );

            uint256 balanceBefore = address(this).balance;

            // now is to lock into liquidty pool
            Utils.swapTokensForEth(address(dexRouter), tokenAmountToBeSwapped);

            uint256 deltaBalance = address(this).balance.sub(balanceBefore);
            uint256 ethToBeAddedToLiquidity = deltaBalance
                .mul(halfLiquidity)
                .div(tokenAmountToBeSwapped);
            uint256 ethFormarketing = deltaBalance.mul(marketingFeeCounter).div(
                tokenAmountToBeSwapped
            );
            uint256 ethForNFTReward = deltaBalance.sub(ethToBeAddedToLiquidity).sub(
                ethFormarketing
            );

            // add liquidity to Dex
            if (ethToBeAddedToLiquidity > 0) {
                Utils.addLiquidity(
                    address(dexRouter),
                    liquidityReceiverWallet,
                    otherHalfLiquidity,
                    ethToBeAddedToLiquidity
                );

                emit SwapAndLiquify(
                    halfLiquidity,
                    ethToBeAddedToLiquidity,
                    otherHalfLiquidity
                );
            }

            // sending eth to marketing wallet
            if (ethFormarketing > 0) payable(marketingWallet).transfer(ethFormarketing);

            // sending eth to NFT rewards wallet
            if (ethForNFTReward > 0) payable(NFTRewardWallet).transfer(ethForNFTReward);

            // Reset all fee counters
            liquidityFeeCounter = 0;
            marketingFeeCounter = 0;
            NFTRewardFeeCounter = 0;
        }
    }
}

// Library for doing a swap on Dex
library Utils {
    using SafeMath for uint256;

    function swapTokensForEth(address routerAddress, uint256 tokenAmount)
        internal
    {
        IDexRouter dexRouter = IDexRouter(routerAddress);

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

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

    function addLiquidity(
        address routerAddress,
        address owner,
        uint256 tokenAmount,
        uint256 ethAmount
    ) internal {
        IDexRouter dexRouter = IDexRouter(routerAddress);

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

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

        return c;
    }

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

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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

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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"NFTRewardFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NFTRewardFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NFTRewardWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributeAndLiquifyStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"enableOrDisableFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromMaxHolding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromMaxTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxHolding","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityReceiverWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTokenToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentDivider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"removeStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lwFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_NFTRewardFee","type":"uint256"}],"name":"setBuyFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setDistributionStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxHoldLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxTxnLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMinTokenToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lwFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_NFTRewardFee","type":"uint256"}],"name":"setSellFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalBuyFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalSellFeePerTx","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":"trading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_NFTRewardWallet","type":"address"},{"internalType":"address","name":"_liquidityReceiverWallet","type":"address"}],"name":"updateAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600981526020017f4d6f6f20546f6b656e0000000000000000000000000000000000000000000000815250600790805190602001906200005192919062000a7c565b506040518060400160405280600381526020017f4d4f4f0000000000000000000000000000000000000000000000000000000000815250600890805190602001906200009f92919062000a7c565b5060098060006101000a81548160ff021916908360ff16021790555067016345785d8a0000600a55620000e6620186a0600a546200099160201b620024771790919060201c565b601055600a54601155600a546012556103e860135560006014556001601660016101000a81548160ff0219169083151502179055506014601755601460185560146019556014601a556014601b556014601c556000601d556000601e556000601f553480156200015557600080fd5b5062000166620009e360201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600a546001600062000237620009eb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073712dc56c7d430f6c7914af856dafa60f9d709b47600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507321a92874b90e0997aa4d27fa358cf65da05a2822600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ee919062000b96565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000456573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047c919062000b96565b6040518363ffffffff1660e01b81526004016200049b92919062000bd9565b6020604051808303816000875af1158015620004bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004e1919062000b96565b905080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360006200057b620009eb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460006200063a620009eb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000620006f9620009eb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000920620009eb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a5460405162000981919062000c21565b60405180910390a3505062000dd2565b6000620009db83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000a1460201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808311829062000a5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a55919062000ce2565b60405180910390fd5b506000838562000a6f919062000d35565b9050809150509392505050565b82805462000a8a9062000d9c565b90600052602060002090601f01602090048101928262000aae576000855562000afa565b82601f1062000ac957805160ff191683800117855562000afa565b8280016001018555821562000afa579182015b8281111562000af957825182559160200191906001019062000adc565b5b50905062000b09919062000b0d565b5090565b5b8082111562000b2857600081600090555060010162000b0e565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b5e8262000b31565b9050919050565b62000b708162000b51565b811462000b7c57600080fd5b50565b60008151905062000b908162000b65565b92915050565b60006020828403121562000baf5762000bae62000b2c565b5b600062000bbf8482850162000b7f565b91505092915050565b62000bd38162000b51565b82525050565b600060408201905062000bf0600083018562000bc8565b62000bff602083018462000bc8565b9392505050565b6000819050919050565b62000c1b8162000c06565b82525050565b600060208201905062000c38600083018462000c10565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101562000c7a57808201518184015260208101905062000c5d565b8381111562000c8a576000848401525b50505050565b6000601f19601f8301169050919050565b600062000cae8262000c3e565b62000cba818562000c49565b935062000ccc81856020860162000c5a565b62000cd78162000c90565b840191505092915050565b6000602082019050818103600083015262000cfe818462000ca1565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000d428262000c06565b915062000d4f8362000c06565b92508262000d625762000d6162000d06565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000db557607f821691505b6020821081141562000dcc5762000dcb62000d6d565b5b50919050565b6150748062000de26000396000f3fe6080604052600436106103395760003560e01c80638756aabd116101ab578063be19674b116100f7578063ec44acf211610095578063f242ab411161006f578063f242ab4114610c41578063f2fde38b14610c6c578063f4b3dbc314610c95578063fe6f1b0514610cd257610340565b8063ec44acf214610bb0578063ed42142914610bdb578063f097ea1a14610c1857610340565b8063dd62ed3e116100d1578063dd62ed3e14610af6578063e41f9efe14610b33578063e6c84dc614610b5c578063ea5b9e8514610b8757610340565b8063be19674b14610a77578063bf56b37114610aa0578063dcbbe9d414610acb57610340565b80639a36dfa111610164578063a7c29b401161013e578063a7c29b40146109bd578063a9059cbb146109e6578063b0a30f6a14610a23578063b0bc2a2d14610a4e57610340565b80639a36dfa11461092c5780639b6a275014610957578063a457c2d71461098057610340565b80638756aabd1461082e578063879dd3c5146108575780638a8c523c146108825780638da5cb5b1461089957806395d89b41146108c457806399b102b5146108ef57610340565b8063352bfe2f11610285578063715018a6116102235780637c6a9a9c116101fd5780637c6a9a9c146107705780637d99c66d1461079b578063844af78e146107c657806384ea21bc146107f157610340565b8063715018a61461070357806375f0a8741461071a57806379777b4e1461074557610340565b80635342acb41161025f5780635342acb414610635578063679a3c5914610672578063681aa3621461069b57806370a08231146106c657610340565b8063352bfe2f1461059057806339509351146105bb5780633bbac579146105f857610340565b80631884f1e6116102f25780632d129390116102cc5780632d129390146104e8578063313ce567146105115780633326d7f21461053c578063334c14391461056757610340565b80631884f1e61461045557806323b872dd1461048057806325d90189146104bd57610340565b806306fdde03146103455780630758d92414610370578063095ea7b31461039b5780630a2d140c146103d8578063151cd1c21461040157806318160ddd1461042a57610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610cfd565b6040516103679190613fc7565b60405180910390f35b34801561037c57600080fd5b50610385610d8f565b6040516103929190614068565b60405180910390f35b3480156103a757600080fd5b506103c260048036038101906103bd91906140fc565b610db5565b6040516103cf9190614157565b60405180910390f35b3480156103e457600080fd5b506103ff60048036038101906103fa919061419e565b610dd3565b005b34801561040d57600080fd5b50610428600480360381019061042391906141cb565b610e85565b005b34801561043657600080fd5b5061043f610fb0565b60405161044c919061422d565b60405180910390f35b34801561046157600080fd5b5061046a610fba565b604051610477919061422d565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a29190614248565b610fc0565b6040516104b49190614157565b60405180910390f35b3480156104c957600080fd5b506104d2611099565b6040516104df919061422d565b60405180910390f35b3480156104f457600080fd5b5061050f600480360381019061050a919061429b565b61109f565b005b34801561051d57600080fd5b5061052661118f565b60405161053391906142f7565b60405180910390f35b34801561054857600080fd5b506105516111a6565b60405161055e919061422d565b60405180910390f35b34801561057357600080fd5b5061058e60048036038101906105899190614312565b6111ac565b005b34801561059c57600080fd5b506105a5611309565b6040516105b29190614374565b60405180910390f35b3480156105c757600080fd5b506105e260048036038101906105dd91906140fc565b61132f565b6040516105ef9190614157565b60405180910390f35b34801561060457600080fd5b5061061f600480360381019061061a919061438f565b6113e2565b60405161062c9190614157565b60405180910390f35b34801561064157600080fd5b5061065c6004803603810190610657919061438f565b611402565b6040516106699190614157565b60405180910390f35b34801561067e57600080fd5b506106996004803603810190610694919061438f565b611422565b005b3480156106a757600080fd5b506106b0611501565b6040516106bd919061422d565b60405180910390f35b3480156106d257600080fd5b506106ed60048036038101906106e8919061438f565b611507565b6040516106fa919061422d565b60405180910390f35b34801561070f57600080fd5b50610718611550565b005b34801561072657600080fd5b5061072f6116a3565b60405161073c9190614374565b60405180910390f35b34801561075157600080fd5b5061075a6116c9565b6040516107679190614157565b60405180910390f35b34801561077c57600080fd5b506107856116dc565b604051610792919061422d565b60405180910390f35b3480156107a757600080fd5b506107b06116e2565b6040516107bd919061422d565b60405180910390f35b3480156107d257600080fd5b506107db6116e8565b6040516107e8919061422d565b60405180910390f35b3480156107fd57600080fd5b506108186004803603810190610813919061438f565b6116ee565b6040516108259190614157565b60405180910390f35b34801561083a57600080fd5b50610855600480360381019061085091906143bc565b61170e565b005b34801561086357600080fd5b5061086c6117ad565b6040516108799190614157565b60405180910390f35b34801561088e57600080fd5b506108976117c0565b005b3480156108a557600080fd5b506108ae6118ff565b6040516108bb9190614374565b60405180910390f35b3480156108d057600080fd5b506108d9611928565b6040516108e69190613fc7565b60405180910390f35b3480156108fb57600080fd5b506109166004803603810190610911919061438f565b6119ba565b6040516109239190614157565b60405180910390f35b34801561093857600080fd5b506109416119da565b60405161094e919061422d565b60405180910390f35b34801561096357600080fd5b5061097e600480360381019061097991906143bc565b6119e0565b005b34801561098c57600080fd5b506109a760048036038101906109a291906140fc565b611a7f565b6040516109b49190614157565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df919061429b565b611b4c565b005b3480156109f257600080fd5b50610a0d6004803603810190610a0891906140fc565b611c3c565b604051610a1a9190614157565b60405180910390f35b348015610a2f57600080fd5b50610a38611c5a565b604051610a459190614374565b60405180910390f35b348015610a5a57600080fd5b50610a756004803603810190610a70919061419e565b611c80565b005b348015610a8357600080fd5b50610a9e6004803603810190610a9991906141cb565b611d32565b005b348015610aac57600080fd5b50610ab5611e5d565b604051610ac2919061422d565b60405180910390f35b348015610ad757600080fd5b50610ae0611e63565b604051610aed919061422d565b60405180910390f35b348015610b0257600080fd5b50610b1d6004803603810190610b1891906143e9565b611e69565b604051610b2a919061422d565b60405180910390f35b348015610b3f57600080fd5b50610b5a6004803603810190610b55919061438f565b611ef0565b005b348015610b6857600080fd5b50610b71611fe0565b604051610b7e919061422d565b60405180910390f35b348015610b9357600080fd5b50610bae6004803603810190610ba9919061429b565b611fe6565b005b348015610bbc57600080fd5b50610bc56120d6565b604051610bd29190614157565b60405180910390f35b348015610be757600080fd5b50610c026004803603810190610bfd91906143bc565b6120e9565b604051610c0f919061422d565b60405180910390f35b348015610c2457600080fd5b50610c3f6004803603810190610c3a91906143bc565b612148565b005b348015610c4d57600080fd5b50610c5661222a565b604051610c639190614374565b60405180910390f35b348015610c7857600080fd5b50610c936004803603810190610c8e919061438f565b612250565b005b348015610ca157600080fd5b50610cbc6004803603810190610cb791906143bc565b612412565b604051610cc9919061422d565b60405180910390f35b348015610cde57600080fd5b50610ce7612471565b604051610cf4919061422d565b60405180910390f35b606060078054610d0c90614458565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3890614458565b8015610d855780601f10610d5a57610100808354040283529160200191610d85565b820191906000526020600020905b815481529060010190602001808311610d6857829003601f168201915b5050505050905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610dc9610dc26124c1565b84846124c9565b6001905092915050565b610ddb6124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5f906144d6565b60405180910390fd5b80601660006101000a81548160ff02191690831515021790555050565b610e8d6124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f11906144d6565b60405180910390fd5b82601b8190555080601c8190555081601a81905550610f45600a60135461247790919063ffffffff16565b610f6a82610f5c858761269490919063ffffffff16565b61269490919063ffffffff16565b1115610fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa290614542565b60405180910390fd5b505050565b6000600a54905090565b60105481565b6000610fcd8484846126f2565b61108e84610fd96124c1565b61108985604051806060016040528060218152602001614ffd60219139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061103f6124c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfc9092919063ffffffff16565b6124c9565b600190509392505050565b601c5481565b6110a76124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112b906144d6565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600960009054906101000a900460ff16905090565b60175481565b6111b46124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611241576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611238906144d6565b60405180910390fd5b82600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006113d861133c6124c1565b846113d3856002600061134d6124c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269490919063ffffffff16565b6124c9565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b61142a6124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ae906144d6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156114fd573d6000803e3d6000fd5b5050565b60125481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115586124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc906144d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601660009054906101000a900460ff1681565b60185481565b60145481565b601b5481565b60056020528060005260406000206000915054906101000a900460ff1681565b6117166124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179a906144d6565b60405180910390fd5b8060118190555050565b601660019054906101000a900460ff1681565b6117c86124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184c906144d6565b60405180910390fd5b601660029054906101000a900460ff16156118a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189c906145ae565b60405180910390fd5b6001601660026101000a81548160ff0219169083151502179055506001601660016101000a81548160ff0219169083151502179055506001601660006101000a81548160ff02191690831515021790555042601581905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606008805461193790614458565b80601f016020809104026020016040519081016040528092919081815260200182805461196390614458565b80156119b05780601f10611985576101008083540402835291602001916119b0565b820191906000526020600020905b81548152906001019060200180831161199357829003601f168201915b5050505050905090565b60046020528060005260406000206000915054906101000a900460ff1681565b60115481565b6119e86124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6c906144d6565b60405180910390fd5b8060128190555050565b6000611b42611a8c6124c1565b84611b3d8560405180606001604052806021815260200161501e6021913960026000611ab66124c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfc9092919063ffffffff16565b6124c9565b6001905092915050565b611b546124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd8906144d6565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611c50611c496124c1565b84846126f2565b6001905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c886124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0c906144d6565b60405180910390fd5b80601660016101000a81548160ff02191690831515021790555050565b611d3a6124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbe906144d6565b60405180910390fd5b826018819055508060198190555081601781905550611df2600a60135461247790919063ffffffff16565b611e1782611e09858761269490919063ffffffff16565b61269490919063ffffffff16565b1115611e58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4f90614542565b60405180910390fd5b505050565b60155481565b60195481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611ef86124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7c906144d6565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601a5481565b611fee6124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461207b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612072906144d6565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660029054906101000a900460ff1681565b60008061213d60135461212f61212060195461211260175460185461269490919063ffffffff16565b61269490919063ffffffff16565b86612e6090919063ffffffff16565b61247790919063ffffffff16565b905080915050919050565b6121506124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d4906144d6565b60405180910390fd5b60008111612220576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122179061461a565b60405180910390fd5b8060108190555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6122586124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122dc906144d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234c906146ac565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080612466601354612458612449601c5461243b601a54601b5461269490919063ffffffff16565b61269490919063ffffffff16565b86612e6090919063ffffffff16565b61247790919063ffffffff16565b905080915050919050565b60135481565b60006124b983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612edb565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612539576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253090614718565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a090614784565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612687919061422d565b60405180910390a3505050565b60008082846126a391906147d3565b9050838110156126e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126df90614875565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612762576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612759906148e1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c99061494d565b60405180910390fd5b60008111612815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280c906149b9565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156128a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289990614a25565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129465750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c6657601254811115612990576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298790614a91565b60405180910390fd5b601660029054906101000a900460ff16612a90578273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612a5057508173ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b612a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8690614afd565b60405180910390fd5b5b601454601554612aa091906147d3565b42108015612afc5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612c65578273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612bb4576001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612c64565b8173ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612c63576001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612d1757601154612cd582612cc785611507565b61269490919063ffffffff16565b1115612d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0d90614b69565b60405180910390fd5b5b612d218383612f3e565b600060019050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612dc85750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612de05750601660019054906101000a900460ff16155b15612dea57600090505b612df68484848461333c565b50505050565b6000838311158290612e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3b9190613fc7565b60405180910390fd5b5060008385612e539190614b89565b9050809150509392505050565b600080831415612e735760009050612ed5565b60008284612e819190614bbd565b9050828482612e909190614c46565b14612ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec790614ce9565b60405180910390fd5b809150505b92915050565b60008083118290612f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f199190613fc7565b60405180910390fd5b5060008385612f319190614c46565b9050809150509392505050565b6000612f4930611507565b905060006010548210159050808015612fb05750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612fc85750601660009054906101000a900460ff165b801561305957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156130575750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b156133365761308b30600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124c9565b60006130a36002601d5461247790919063ffffffff16565b905060006130bc82601d546139d090919063ffffffff16565b905060006130d382866139d090919063ffffffff16565b90506000479050613106600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613a1a565b600061311b82476139d090919063ffffffff16565b90506000613144846131368885612e6090919063ffffffff16565b61247790919063ffffffff16565b9050600061316f85613161601e5486612e6090919063ffffffff16565b61247790919063ffffffff16565b905060006131988261318a85876139d090919063ffffffff16565b6139d090919063ffffffff16565b9050600083111561322f576131f3600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168986613c00565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56188848960405161322693929190614d09565b60405180910390a15b60008211156132a257600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156132a0573d6000803e3d6000fd5b505b600081111561331557600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613313573d6000803e3d6000fd5b505b6000601d819055506000601e819055506000601f8190555050505050505050505b50505050565b8373ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156133965750805b1561359f5760006133a6836120e9565b905060006133bd82856139d090919063ffffffff16565b9050613448846040518060400160405280601481526020017f496e73756666696369656e742062616c616e6365000000000000000000000000815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfc9092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134dd81600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161357d919061422d565b60405180910390a361358f8683613ca4565b61359884613da2565b50506139ca565b8273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156135f95750805b1561380257600061360983612412565b9050600061362082856139d090919063ffffffff16565b90506136ab846040518060400160405280601481526020017f496e73756666696369656e742062616c616e6365000000000000000000000000815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfc9092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061374081600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516137e0919061422d565b60405180910390a36137f28683613ca4565b6137fb84613e68565b50506139c9565b61388b826040518060400160405280601481526020017f496e73756666696369656e742062616c616e6365000000000000000000000000815250600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfc9092919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061392082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269490919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516139c0919061422d565b60405180910390a35b5b50505050565b6000613a1283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612dfc565b905092915050565b60008290506000600267ffffffffffffffff811115613a3c57613a3b614d40565b5b604051908082528060200260200182016040528015613a6a5781602001602082028036833780820191505090505b5090503081600081518110613a8257613a81614d6f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b2b9190614db3565b81600181518110613b3f57613b3e614d6f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c42613ba891906147d3565b6040518663ffffffff1660e01b8152600401613bc8959493929190614ed9565b600060405180830381600087803b158015613be257600080fd5b505af1158015613bf6573d6000803e3d6000fd5b5050505050505050565b60008490508073ffffffffffffffffffffffffffffffffffffffff1663f305d7198330866000808a61012c42613c3691906147d3565b6040518863ffffffff1660e01b8152600401613c5796959493929190614f33565b60606040518083038185885af1158015613c75573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613c9a9190614fa9565b5050505050505050565b613cf681600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269490919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d96919061422d565b60405180910390a35050565b613dcb601354613dbd60175484612e6090919063ffffffff16565b61247790919063ffffffff16565b601d6000828254613ddc91906147d3565b92505081905550613e0c601354613dfe60185484612e6090919063ffffffff16565b61247790919063ffffffff16565b601e6000828254613e1d91906147d3565b92505081905550613e4d601354613e3f60195484612e6090919063ffffffff16565b61247790919063ffffffff16565b601f6000828254613e5e91906147d3565b9250508190555050565b613e91601354613e83601a5484612e6090919063ffffffff16565b61247790919063ffffffff16565b601d6000828254613ea291906147d3565b92505081905550613ed2601354613ec4601b5484612e6090919063ffffffff16565b61247790919063ffffffff16565b601e6000828254613ee391906147d3565b92505081905550613f13601354613f05601c5484612e6090919063ffffffff16565b61247790919063ffffffff16565b601f6000828254613f2491906147d3565b9250508190555050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613f68578082015181840152602081019050613f4d565b83811115613f77576000848401525b50505050565b6000601f19601f8301169050919050565b6000613f9982613f2e565b613fa38185613f39565b9350613fb3818560208601613f4a565b613fbc81613f7d565b840191505092915050565b60006020820190508181036000830152613fe18184613f8e565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061402e61402961402484613fe9565b614009565b613fe9565b9050919050565b600061404082614013565b9050919050565b600061405282614035565b9050919050565b61406281614047565b82525050565b600060208201905061407d6000830184614059565b92915050565b600080fd5b600061409382613fe9565b9050919050565b6140a381614088565b81146140ae57600080fd5b50565b6000813590506140c08161409a565b92915050565b6000819050919050565b6140d9816140c6565b81146140e457600080fd5b50565b6000813590506140f6816140d0565b92915050565b6000806040838503121561411357614112614083565b5b6000614121858286016140b1565b9250506020614132858286016140e7565b9150509250929050565b60008115159050919050565b6141518161413c565b82525050565b600060208201905061416c6000830184614148565b92915050565b61417b8161413c565b811461418657600080fd5b50565b60008135905061419881614172565b92915050565b6000602082840312156141b4576141b3614083565b5b60006141c284828501614189565b91505092915050565b6000806000606084860312156141e4576141e3614083565b5b60006141f2868287016140e7565b9350506020614203868287016140e7565b9250506040614214868287016140e7565b9150509250925092565b614227816140c6565b82525050565b6000602082019050614242600083018461421e565b92915050565b60008060006060848603121561426157614260614083565b5b600061426f868287016140b1565b9350506020614280868287016140b1565b9250506040614291868287016140e7565b9150509250925092565b600080604083850312156142b2576142b1614083565b5b60006142c0858286016140b1565b92505060206142d185828601614189565b9150509250929050565b600060ff82169050919050565b6142f1816142db565b82525050565b600060208201905061430c60008301846142e8565b92915050565b60008060006060848603121561432b5761432a614083565b5b6000614339868287016140b1565b935050602061434a868287016140b1565b925050604061435b868287016140b1565b9150509250925092565b61436e81614088565b82525050565b60006020820190506143896000830184614365565b92915050565b6000602082840312156143a5576143a4614083565b5b60006143b3848285016140b1565b91505092915050565b6000602082840312156143d2576143d1614083565b5b60006143e0848285016140e7565b91505092915050565b60008060408385031215614400576143ff614083565b5b600061440e858286016140b1565b925050602061441f858286016140b1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061447057607f821691505b6020821081141561448457614483614429565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006144c0602083613f39565b91506144cb8261448a565b602082019050919050565b600060208201905081810360008301526144ef816144b3565b9050919050565b7f43616e2774206265206d6f7265207468616e2031302500000000000000000000600082015250565b600061452c601683613f39565b9150614537826144f6565b602082019050919050565b6000602082019050818103600083015261455b8161451f565b9050919050565b7f416c726561647920656e61626c65640000000000000000000000000000000000600082015250565b6000614598600f83613f39565b91506145a382614562565b602082019050919050565b600060208201905081810360008301526145c78161458b565b9050919050565b7f43616e2774206265203000000000000000000000000000000000000000000000600082015250565b6000614604600a83613f39565b915061460f826145ce565b602082019050919050565b60006020820190508181036000830152614633816145f7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614696602683613f39565b91506146a18261463a565b604082019050919050565b600060208201905081810360008301526146c581614689565b9050919050565b7f417070726f76652066726f6d20746865207a65726f2061646472657373000000600082015250565b6000614702601d83613f39565b915061470d826146cc565b602082019050919050565b60006020820190508181036000830152614731816146f5565b9050919050565b7f417070726f766520746f20746865207a65726f20616464726573730000000000600082015250565b600061476e601b83613f39565b915061477982614738565b602082019050919050565b6000602082019050818103600083015261479d81614761565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006147de826140c6565b91506147e9836140c6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561481e5761481d6147a4565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061485f601b83613f39565b915061486a82614829565b602082019050919050565b6000602082019050818103600083015261488e81614852565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b60006148cb601e83613f39565b91506148d682614895565b602082019050919050565b600060208201905081810360008301526148fa816148be565b9050919050565b7f5472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b6000614937601c83613f39565b915061494282614901565b602082019050919050565b600060208201905081810360008301526149668161492a565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f600082015250565b60006149a3602083613f39565b91506149ae8261496d565b602082019050919050565b600060208201905081810360008301526149d281614996565b9050919050565b7f426f742064657465637465640000000000000000000000000000000000000000600082015250565b6000614a0f600c83613f39565b9150614a1a826149d9565b602082019050919050565b60006020820190508181036000830152614a3e81614a02565b9050919050565b7f4d61782074786e206c696d697420657863656564730000000000000000000000600082015250565b6000614a7b601583613f39565b9150614a8682614a45565b602082019050919050565b60006020820190508181036000830152614aaa81614a6e565b9050919050565b7f54726164696e672069732064697361626c656400000000000000000000000000600082015250565b6000614ae7601383613f39565b9150614af282614ab1565b602082019050919050565b60006020820190508181036000830152614b1681614ada565b9050919050565b7f4d617820686f6c64206c696d6974206578636565647300000000000000000000600082015250565b6000614b53601683613f39565b9150614b5e82614b1d565b602082019050919050565b60006020820190508181036000830152614b8281614b46565b9050919050565b6000614b94826140c6565b9150614b9f836140c6565b925082821015614bb257614bb16147a4565b5b828203905092915050565b6000614bc8826140c6565b9150614bd3836140c6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614c0c57614c0b6147a4565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c51826140c6565b9150614c5c836140c6565b925082614c6c57614c6b614c17565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614cd3602183613f39565b9150614cde82614c77565b604082019050919050565b60006020820190508181036000830152614d0281614cc6565b9050919050565b6000606082019050614d1e600083018661421e565b614d2b602083018561421e565b614d38604083018461421e565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614dad8161409a565b92915050565b600060208284031215614dc957614dc8614083565b5b6000614dd784828501614d9e565b91505092915050565b6000819050919050565b6000614e05614e00614dfb84614de0565b614009565b6140c6565b9050919050565b614e1581614dea565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614e5081614088565b82525050565b6000614e628383614e47565b60208301905092915050565b6000602082019050919050565b6000614e8682614e1b565b614e908185614e26565b9350614e9b83614e37565b8060005b83811015614ecc578151614eb38882614e56565b9750614ebe83614e6e565b925050600181019050614e9f565b5085935050505092915050565b600060a082019050614eee600083018861421e565b614efb6020830187614e0c565b8181036040830152614f0d8186614e7b565b9050614f1c6060830185614365565b614f29608083018461421e565b9695505050505050565b600060c082019050614f486000830189614365565b614f55602083018861421e565b614f626040830187614e0c565b614f6f6060830186614e0c565b614f7c6080830185614365565b614f8960a083018461421e565b979650505050505050565b600081519050614fa3816140d0565b92915050565b600080600060608486031215614fc257614fc1614083565b5b6000614fd086828701614f94565b9350506020614fe186828701614f94565b9250506040614ff286828701614f94565b915050925092509256fe5472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636544656372656173656420616c6c6f77616e6365206f722062656c6f77207a65726fa2646970667358221220da0fb8dd5a45a560e2820e305f840ebeb37ba66fff26296d5a174c6ee3373ca364736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106103395760003560e01c80638756aabd116101ab578063be19674b116100f7578063ec44acf211610095578063f242ab411161006f578063f242ab4114610c41578063f2fde38b14610c6c578063f4b3dbc314610c95578063fe6f1b0514610cd257610340565b8063ec44acf214610bb0578063ed42142914610bdb578063f097ea1a14610c1857610340565b8063dd62ed3e116100d1578063dd62ed3e14610af6578063e41f9efe14610b33578063e6c84dc614610b5c578063ea5b9e8514610b8757610340565b8063be19674b14610a77578063bf56b37114610aa0578063dcbbe9d414610acb57610340565b80639a36dfa111610164578063a7c29b401161013e578063a7c29b40146109bd578063a9059cbb146109e6578063b0a30f6a14610a23578063b0bc2a2d14610a4e57610340565b80639a36dfa11461092c5780639b6a275014610957578063a457c2d71461098057610340565b80638756aabd1461082e578063879dd3c5146108575780638a8c523c146108825780638da5cb5b1461089957806395d89b41146108c457806399b102b5146108ef57610340565b8063352bfe2f11610285578063715018a6116102235780637c6a9a9c116101fd5780637c6a9a9c146107705780637d99c66d1461079b578063844af78e146107c657806384ea21bc146107f157610340565b8063715018a61461070357806375f0a8741461071a57806379777b4e1461074557610340565b80635342acb41161025f5780635342acb414610635578063679a3c5914610672578063681aa3621461069b57806370a08231146106c657610340565b8063352bfe2f1461059057806339509351146105bb5780633bbac579146105f857610340565b80631884f1e6116102f25780632d129390116102cc5780632d129390146104e8578063313ce567146105115780633326d7f21461053c578063334c14391461056757610340565b80631884f1e61461045557806323b872dd1461048057806325d90189146104bd57610340565b806306fdde03146103455780630758d92414610370578063095ea7b31461039b5780630a2d140c146103d8578063151cd1c21461040157806318160ddd1461042a57610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610cfd565b6040516103679190613fc7565b60405180910390f35b34801561037c57600080fd5b50610385610d8f565b6040516103929190614068565b60405180910390f35b3480156103a757600080fd5b506103c260048036038101906103bd91906140fc565b610db5565b6040516103cf9190614157565b60405180910390f35b3480156103e457600080fd5b506103ff60048036038101906103fa919061419e565b610dd3565b005b34801561040d57600080fd5b50610428600480360381019061042391906141cb565b610e85565b005b34801561043657600080fd5b5061043f610fb0565b60405161044c919061422d565b60405180910390f35b34801561046157600080fd5b5061046a610fba565b604051610477919061422d565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a29190614248565b610fc0565b6040516104b49190614157565b60405180910390f35b3480156104c957600080fd5b506104d2611099565b6040516104df919061422d565b60405180910390f35b3480156104f457600080fd5b5061050f600480360381019061050a919061429b565b61109f565b005b34801561051d57600080fd5b5061052661118f565b60405161053391906142f7565b60405180910390f35b34801561054857600080fd5b506105516111a6565b60405161055e919061422d565b60405180910390f35b34801561057357600080fd5b5061058e60048036038101906105899190614312565b6111ac565b005b34801561059c57600080fd5b506105a5611309565b6040516105b29190614374565b60405180910390f35b3480156105c757600080fd5b506105e260048036038101906105dd91906140fc565b61132f565b6040516105ef9190614157565b60405180910390f35b34801561060457600080fd5b5061061f600480360381019061061a919061438f565b6113e2565b60405161062c9190614157565b60405180910390f35b34801561064157600080fd5b5061065c6004803603810190610657919061438f565b611402565b6040516106699190614157565b60405180910390f35b34801561067e57600080fd5b506106996004803603810190610694919061438f565b611422565b005b3480156106a757600080fd5b506106b0611501565b6040516106bd919061422d565b60405180910390f35b3480156106d257600080fd5b506106ed60048036038101906106e8919061438f565b611507565b6040516106fa919061422d565b60405180910390f35b34801561070f57600080fd5b50610718611550565b005b34801561072657600080fd5b5061072f6116a3565b60405161073c9190614374565b60405180910390f35b34801561075157600080fd5b5061075a6116c9565b6040516107679190614157565b60405180910390f35b34801561077c57600080fd5b506107856116dc565b604051610792919061422d565b60405180910390f35b3480156107a757600080fd5b506107b06116e2565b6040516107bd919061422d565b60405180910390f35b3480156107d257600080fd5b506107db6116e8565b6040516107e8919061422d565b60405180910390f35b3480156107fd57600080fd5b506108186004803603810190610813919061438f565b6116ee565b6040516108259190614157565b60405180910390f35b34801561083a57600080fd5b50610855600480360381019061085091906143bc565b61170e565b005b34801561086357600080fd5b5061086c6117ad565b6040516108799190614157565b60405180910390f35b34801561088e57600080fd5b506108976117c0565b005b3480156108a557600080fd5b506108ae6118ff565b6040516108bb9190614374565b60405180910390f35b3480156108d057600080fd5b506108d9611928565b6040516108e69190613fc7565b60405180910390f35b3480156108fb57600080fd5b506109166004803603810190610911919061438f565b6119ba565b6040516109239190614157565b60405180910390f35b34801561093857600080fd5b506109416119da565b60405161094e919061422d565b60405180910390f35b34801561096357600080fd5b5061097e600480360381019061097991906143bc565b6119e0565b005b34801561098c57600080fd5b506109a760048036038101906109a291906140fc565b611a7f565b6040516109b49190614157565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df919061429b565b611b4c565b005b3480156109f257600080fd5b50610a0d6004803603810190610a0891906140fc565b611c3c565b604051610a1a9190614157565b60405180910390f35b348015610a2f57600080fd5b50610a38611c5a565b604051610a459190614374565b60405180910390f35b348015610a5a57600080fd5b50610a756004803603810190610a70919061419e565b611c80565b005b348015610a8357600080fd5b50610a9e6004803603810190610a9991906141cb565b611d32565b005b348015610aac57600080fd5b50610ab5611e5d565b604051610ac2919061422d565b60405180910390f35b348015610ad757600080fd5b50610ae0611e63565b604051610aed919061422d565b60405180910390f35b348015610b0257600080fd5b50610b1d6004803603810190610b1891906143e9565b611e69565b604051610b2a919061422d565b60405180910390f35b348015610b3f57600080fd5b50610b5a6004803603810190610b55919061438f565b611ef0565b005b348015610b6857600080fd5b50610b71611fe0565b604051610b7e919061422d565b60405180910390f35b348015610b9357600080fd5b50610bae6004803603810190610ba9919061429b565b611fe6565b005b348015610bbc57600080fd5b50610bc56120d6565b604051610bd29190614157565b60405180910390f35b348015610be757600080fd5b50610c026004803603810190610bfd91906143bc565b6120e9565b604051610c0f919061422d565b60405180910390f35b348015610c2457600080fd5b50610c3f6004803603810190610c3a91906143bc565b612148565b005b348015610c4d57600080fd5b50610c5661222a565b604051610c639190614374565b60405180910390f35b348015610c7857600080fd5b50610c936004803603810190610c8e919061438f565b612250565b005b348015610ca157600080fd5b50610cbc6004803603810190610cb791906143bc565b612412565b604051610cc9919061422d565b60405180910390f35b348015610cde57600080fd5b50610ce7612471565b604051610cf4919061422d565b60405180910390f35b606060078054610d0c90614458565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3890614458565b8015610d855780601f10610d5a57610100808354040283529160200191610d85565b820191906000526020600020905b815481529060010190602001808311610d6857829003601f168201915b5050505050905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610dc9610dc26124c1565b84846124c9565b6001905092915050565b610ddb6124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5f906144d6565b60405180910390fd5b80601660006101000a81548160ff02191690831515021790555050565b610e8d6124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f11906144d6565b60405180910390fd5b82601b8190555080601c8190555081601a81905550610f45600a60135461247790919063ffffffff16565b610f6a82610f5c858761269490919063ffffffff16565b61269490919063ffffffff16565b1115610fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa290614542565b60405180910390fd5b505050565b6000600a54905090565b60105481565b6000610fcd8484846126f2565b61108e84610fd96124c1565b61108985604051806060016040528060218152602001614ffd60219139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061103f6124c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfc9092919063ffffffff16565b6124c9565b600190509392505050565b601c5481565b6110a76124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112b906144d6565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600960009054906101000a900460ff16905090565b60175481565b6111b46124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611241576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611238906144d6565b60405180910390fd5b82600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006113d861133c6124c1565b846113d3856002600061134d6124c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269490919063ffffffff16565b6124c9565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b61142a6124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ae906144d6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156114fd573d6000803e3d6000fd5b5050565b60125481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115586124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc906144d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601660009054906101000a900460ff1681565b60185481565b60145481565b601b5481565b60056020528060005260406000206000915054906101000a900460ff1681565b6117166124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179a906144d6565b60405180910390fd5b8060118190555050565b601660019054906101000a900460ff1681565b6117c86124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184c906144d6565b60405180910390fd5b601660029054906101000a900460ff16156118a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189c906145ae565b60405180910390fd5b6001601660026101000a81548160ff0219169083151502179055506001601660016101000a81548160ff0219169083151502179055506001601660006101000a81548160ff02191690831515021790555042601581905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606008805461193790614458565b80601f016020809104026020016040519081016040528092919081815260200182805461196390614458565b80156119b05780601f10611985576101008083540402835291602001916119b0565b820191906000526020600020905b81548152906001019060200180831161199357829003601f168201915b5050505050905090565b60046020528060005260406000206000915054906101000a900460ff1681565b60115481565b6119e86124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6c906144d6565b60405180910390fd5b8060128190555050565b6000611b42611a8c6124c1565b84611b3d8560405180606001604052806021815260200161501e6021913960026000611ab66124c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfc9092919063ffffffff16565b6124c9565b6001905092915050565b611b546124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd8906144d6565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611c50611c496124c1565b84846126f2565b6001905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c886124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0c906144d6565b60405180910390fd5b80601660016101000a81548160ff02191690831515021790555050565b611d3a6124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbe906144d6565b60405180910390fd5b826018819055508060198190555081601781905550611df2600a60135461247790919063ffffffff16565b611e1782611e09858761269490919063ffffffff16565b61269490919063ffffffff16565b1115611e58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4f90614542565b60405180910390fd5b505050565b60155481565b60195481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611ef86124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7c906144d6565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601a5481565b611fee6124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461207b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612072906144d6565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660029054906101000a900460ff1681565b60008061213d60135461212f61212060195461211260175460185461269490919063ffffffff16565b61269490919063ffffffff16565b86612e6090919063ffffffff16565b61247790919063ffffffff16565b905080915050919050565b6121506124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d4906144d6565b60405180910390fd5b60008111612220576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122179061461a565b60405180910390fd5b8060108190555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6122586124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122dc906144d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234c906146ac565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080612466601354612458612449601c5461243b601a54601b5461269490919063ffffffff16565b61269490919063ffffffff16565b86612e6090919063ffffffff16565b61247790919063ffffffff16565b905080915050919050565b60135481565b60006124b983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612edb565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612539576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253090614718565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a090614784565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612687919061422d565b60405180910390a3505050565b60008082846126a391906147d3565b9050838110156126e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126df90614875565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612762576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612759906148e1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c99061494d565b60405180910390fd5b60008111612815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280c906149b9565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156128a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289990614a25565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129465750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c6657601254811115612990576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298790614a91565b60405180910390fd5b601660029054906101000a900460ff16612a90578273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612a5057508173ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b612a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8690614afd565b60405180910390fd5b5b601454601554612aa091906147d3565b42108015612afc5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612c65578273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612bb4576001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612c64565b8173ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612c63576001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612d1757601154612cd582612cc785611507565b61269490919063ffffffff16565b1115612d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0d90614b69565b60405180910390fd5b5b612d218383612f3e565b600060019050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612dc85750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612de05750601660019054906101000a900460ff16155b15612dea57600090505b612df68484848461333c565b50505050565b6000838311158290612e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3b9190613fc7565b60405180910390fd5b5060008385612e539190614b89565b9050809150509392505050565b600080831415612e735760009050612ed5565b60008284612e819190614bbd565b9050828482612e909190614c46565b14612ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec790614ce9565b60405180910390fd5b809150505b92915050565b60008083118290612f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f199190613fc7565b60405180910390fd5b5060008385612f319190614c46565b9050809150509392505050565b6000612f4930611507565b905060006010548210159050808015612fb05750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612fc85750601660009054906101000a900460ff165b801561305957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156130575750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b156133365761308b30600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124c9565b60006130a36002601d5461247790919063ffffffff16565b905060006130bc82601d546139d090919063ffffffff16565b905060006130d382866139d090919063ffffffff16565b90506000479050613106600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613a1a565b600061311b82476139d090919063ffffffff16565b90506000613144846131368885612e6090919063ffffffff16565b61247790919063ffffffff16565b9050600061316f85613161601e5486612e6090919063ffffffff16565b61247790919063ffffffff16565b905060006131988261318a85876139d090919063ffffffff16565b6139d090919063ffffffff16565b9050600083111561322f576131f3600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168986613c00565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56188848960405161322693929190614d09565b60405180910390a15b60008211156132a257600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156132a0573d6000803e3d6000fd5b505b600081111561331557600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613313573d6000803e3d6000fd5b505b6000601d819055506000601e819055506000601f8190555050505050505050505b50505050565b8373ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156133965750805b1561359f5760006133a6836120e9565b905060006133bd82856139d090919063ffffffff16565b9050613448846040518060400160405280601481526020017f496e73756666696369656e742062616c616e6365000000000000000000000000815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfc9092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134dd81600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161357d919061422d565b60405180910390a361358f8683613ca4565b61359884613da2565b50506139ca565b8273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156135f95750805b1561380257600061360983612412565b9050600061362082856139d090919063ffffffff16565b90506136ab846040518060400160405280601481526020017f496e73756666696369656e742062616c616e6365000000000000000000000000815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfc9092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061374081600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516137e0919061422d565b60405180910390a36137f28683613ca4565b6137fb84613e68565b50506139c9565b61388b826040518060400160405280601481526020017f496e73756666696369656e742062616c616e6365000000000000000000000000815250600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfc9092919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061392082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269490919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516139c0919061422d565b60405180910390a35b5b50505050565b6000613a1283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612dfc565b905092915050565b60008290506000600267ffffffffffffffff811115613a3c57613a3b614d40565b5b604051908082528060200260200182016040528015613a6a5781602001602082028036833780820191505090505b5090503081600081518110613a8257613a81614d6f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b2b9190614db3565b81600181518110613b3f57613b3e614d6f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c42613ba891906147d3565b6040518663ffffffff1660e01b8152600401613bc8959493929190614ed9565b600060405180830381600087803b158015613be257600080fd5b505af1158015613bf6573d6000803e3d6000fd5b5050505050505050565b60008490508073ffffffffffffffffffffffffffffffffffffffff1663f305d7198330866000808a61012c42613c3691906147d3565b6040518863ffffffff1660e01b8152600401613c5796959493929190614f33565b60606040518083038185885af1158015613c75573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613c9a9190614fa9565b5050505050505050565b613cf681600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269490919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d96919061422d565b60405180910390a35050565b613dcb601354613dbd60175484612e6090919063ffffffff16565b61247790919063ffffffff16565b601d6000828254613ddc91906147d3565b92505081905550613e0c601354613dfe60185484612e6090919063ffffffff16565b61247790919063ffffffff16565b601e6000828254613e1d91906147d3565b92505081905550613e4d601354613e3f60195484612e6090919063ffffffff16565b61247790919063ffffffff16565b601f6000828254613e5e91906147d3565b9250508190555050565b613e91601354613e83601a5484612e6090919063ffffffff16565b61247790919063ffffffff16565b601d6000828254613ea291906147d3565b92505081905550613ed2601354613ec4601b5484612e6090919063ffffffff16565b61247790919063ffffffff16565b601e6000828254613ee391906147d3565b92505081905550613f13601354613f05601c5484612e6090919063ffffffff16565b61247790919063ffffffff16565b601f6000828254613f2491906147d3565b9250508190555050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613f68578082015181840152602081019050613f4d565b83811115613f77576000848401525b50505050565b6000601f19601f8301169050919050565b6000613f9982613f2e565b613fa38185613f39565b9350613fb3818560208601613f4a565b613fbc81613f7d565b840191505092915050565b60006020820190508181036000830152613fe18184613f8e565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061402e61402961402484613fe9565b614009565b613fe9565b9050919050565b600061404082614013565b9050919050565b600061405282614035565b9050919050565b61406281614047565b82525050565b600060208201905061407d6000830184614059565b92915050565b600080fd5b600061409382613fe9565b9050919050565b6140a381614088565b81146140ae57600080fd5b50565b6000813590506140c08161409a565b92915050565b6000819050919050565b6140d9816140c6565b81146140e457600080fd5b50565b6000813590506140f6816140d0565b92915050565b6000806040838503121561411357614112614083565b5b6000614121858286016140b1565b9250506020614132858286016140e7565b9150509250929050565b60008115159050919050565b6141518161413c565b82525050565b600060208201905061416c6000830184614148565b92915050565b61417b8161413c565b811461418657600080fd5b50565b60008135905061419881614172565b92915050565b6000602082840312156141b4576141b3614083565b5b60006141c284828501614189565b91505092915050565b6000806000606084860312156141e4576141e3614083565b5b60006141f2868287016140e7565b9350506020614203868287016140e7565b9250506040614214868287016140e7565b9150509250925092565b614227816140c6565b82525050565b6000602082019050614242600083018461421e565b92915050565b60008060006060848603121561426157614260614083565b5b600061426f868287016140b1565b9350506020614280868287016140b1565b9250506040614291868287016140e7565b9150509250925092565b600080604083850312156142b2576142b1614083565b5b60006142c0858286016140b1565b92505060206142d185828601614189565b9150509250929050565b600060ff82169050919050565b6142f1816142db565b82525050565b600060208201905061430c60008301846142e8565b92915050565b60008060006060848603121561432b5761432a614083565b5b6000614339868287016140b1565b935050602061434a868287016140b1565b925050604061435b868287016140b1565b9150509250925092565b61436e81614088565b82525050565b60006020820190506143896000830184614365565b92915050565b6000602082840312156143a5576143a4614083565b5b60006143b3848285016140b1565b91505092915050565b6000602082840312156143d2576143d1614083565b5b60006143e0848285016140e7565b91505092915050565b60008060408385031215614400576143ff614083565b5b600061440e858286016140b1565b925050602061441f858286016140b1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061447057607f821691505b6020821081141561448457614483614429565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006144c0602083613f39565b91506144cb8261448a565b602082019050919050565b600060208201905081810360008301526144ef816144b3565b9050919050565b7f43616e2774206265206d6f7265207468616e2031302500000000000000000000600082015250565b600061452c601683613f39565b9150614537826144f6565b602082019050919050565b6000602082019050818103600083015261455b8161451f565b9050919050565b7f416c726561647920656e61626c65640000000000000000000000000000000000600082015250565b6000614598600f83613f39565b91506145a382614562565b602082019050919050565b600060208201905081810360008301526145c78161458b565b9050919050565b7f43616e2774206265203000000000000000000000000000000000000000000000600082015250565b6000614604600a83613f39565b915061460f826145ce565b602082019050919050565b60006020820190508181036000830152614633816145f7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614696602683613f39565b91506146a18261463a565b604082019050919050565b600060208201905081810360008301526146c581614689565b9050919050565b7f417070726f76652066726f6d20746865207a65726f2061646472657373000000600082015250565b6000614702601d83613f39565b915061470d826146cc565b602082019050919050565b60006020820190508181036000830152614731816146f5565b9050919050565b7f417070726f766520746f20746865207a65726f20616464726573730000000000600082015250565b600061476e601b83613f39565b915061477982614738565b602082019050919050565b6000602082019050818103600083015261479d81614761565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006147de826140c6565b91506147e9836140c6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561481e5761481d6147a4565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061485f601b83613f39565b915061486a82614829565b602082019050919050565b6000602082019050818103600083015261488e81614852565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b60006148cb601e83613f39565b91506148d682614895565b602082019050919050565b600060208201905081810360008301526148fa816148be565b9050919050565b7f5472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b6000614937601c83613f39565b915061494282614901565b602082019050919050565b600060208201905081810360008301526149668161492a565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f600082015250565b60006149a3602083613f39565b91506149ae8261496d565b602082019050919050565b600060208201905081810360008301526149d281614996565b9050919050565b7f426f742064657465637465640000000000000000000000000000000000000000600082015250565b6000614a0f600c83613f39565b9150614a1a826149d9565b602082019050919050565b60006020820190508181036000830152614a3e81614a02565b9050919050565b7f4d61782074786e206c696d697420657863656564730000000000000000000000600082015250565b6000614a7b601583613f39565b9150614a8682614a45565b602082019050919050565b60006020820190508181036000830152614aaa81614a6e565b9050919050565b7f54726164696e672069732064697361626c656400000000000000000000000000600082015250565b6000614ae7601383613f39565b9150614af282614ab1565b602082019050919050565b60006020820190508181036000830152614b1681614ada565b9050919050565b7f4d617820686f6c64206c696d6974206578636565647300000000000000000000600082015250565b6000614b53601683613f39565b9150614b5e82614b1d565b602082019050919050565b60006020820190508181036000830152614b8281614b46565b9050919050565b6000614b94826140c6565b9150614b9f836140c6565b925082821015614bb257614bb16147a4565b5b828203905092915050565b6000614bc8826140c6565b9150614bd3836140c6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614c0c57614c0b6147a4565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c51826140c6565b9150614c5c836140c6565b925082614c6c57614c6b614c17565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614cd3602183613f39565b9150614cde82614c77565b604082019050919050565b60006020820190508181036000830152614d0281614cc6565b9050919050565b6000606082019050614d1e600083018661421e565b614d2b602083018561421e565b614d38604083018461421e565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614dad8161409a565b92915050565b600060208284031215614dc957614dc8614083565b5b6000614dd784828501614d9e565b91505092915050565b6000819050919050565b6000614e05614e00614dfb84614de0565b614009565b6140c6565b9050919050565b614e1581614dea565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614e5081614088565b82525050565b6000614e628383614e47565b60208301905092915050565b6000602082019050919050565b6000614e8682614e1b565b614e908185614e26565b9350614e9b83614e37565b8060005b83811015614ecc578151614eb38882614e56565b9750614ebe83614e6e565b925050600181019050614e9f565b5085935050505092915050565b600060a082019050614eee600083018861421e565b614efb6020830187614e0c565b8181036040830152614f0d8186614e7b565b9050614f1c6060830185614365565b614f29608083018461421e565b9695505050505050565b600060c082019050614f486000830189614365565b614f55602083018861421e565b614f626040830187614e0c565b614f6f6060830186614e0c565b614f7c6080830185614365565b614f8960a083018461421e565b979650505050505050565b600081519050614fa3816140d0565b92915050565b600080600060608486031215614fc257614fc1614083565b5b6000614fd086828701614f94565b9350506020614fe186828701614f94565b9250506040614ff286828701614f94565b915050925092509256fe5472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636544656372656173656420616c6c6f77616e6365206f722062656c6f77207a65726fa2646970667358221220da0fb8dd5a45a560e2820e305f840ebeb37ba66fff26296d5a174c6ee3373ca364736f6c634300080a0033

Deployed Bytecode Sourcemap

3176:16711:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7000:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3888:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7911:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11160:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10723:429;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7277:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4072:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8112:439;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5150:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9607:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7186:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4700:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11527:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3988:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8559:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3570:37;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3392:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11390:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4269:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7385:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2723:157;;;;;;;;;;;;;:::i;:::-;;3951:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4476:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4784:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4397:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5057:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3507:56;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10072:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4572:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11824:235;;;;;;;;;;;;;:::i;:::-;;2509:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7091:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3448:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4180:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10182:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8867:396;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9436:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7512:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4025:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11283:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10290:425;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4442:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4876:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7719:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9786:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4972:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9271:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4629:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12067:254;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9914:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3922:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2888:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12329:262;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4354:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7000:83;7037:13;7070:5;7063:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7000:83;:::o;3888:27::-;;;;;;;;;;;;;:::o;7911:193::-;8013:4;8035:39;8044:12;:10;:12::i;:::-;8058:7;8067:6;8035:8;:39::i;:::-;8092:4;8085:11;;7911:193;;;;:::o;11160:115::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11261:6:::1;11232:26;;:35;;;;;;;;;;;;;;;;;;11160:115:::0;:::o;10723:429::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10889:6:::1;10865:21;:30;;;;10930:13;10906:21;:37;;;;10978:13;10954:21;:37;;;;11072:22;11091:2;11072:14;;:18;;:22;;;;:::i;:::-;11024:44;11054:13;11024:25;11035:13;11024:6;:10;;:25;;;;:::i;:::-;:29;;:44;;;;:::i;:::-;:70;;11002:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;10723:429:::0;;;:::o;7277:100::-;7330:7;7357:12;;7350:19;;7277:100;:::o;4072:53::-;;;;:::o;8112:439::-;8244:4;8261:36;8271:6;8279:9;8290:6;8261:9;:36::i;:::-;8308:213;8331:6;8352:12;:10;:12::i;:::-;8379:131;8435:6;8379:131;;;;;;;;;;;;;;;;;:11;:19;8391:6;8379:19;;;;;;;;;;;;;;;:33;8399:12;:10;:12::i;:::-;8379:33;;;;;;;;;;;;;;;;:37;;:131;;;;;:::i;:::-;8308:8;:213::i;:::-;8539:4;8532:11;;8112:439;;;;;:::o;5150:41::-;;;;:::o;9607:171::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9765:5:::1;9729:24;:33;9754:7;9729:33;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;9607:171:::0;;:::o;7186:83::-;7227:5;7252:9;;;;;;;;;;;7245:16;;7186:83;:::o;4700:40::-;;;;:::o;11527:289::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11686:16:::1;11668:15;;:34;;;;;;;;;;;;;;;;;;11731:16;11713:15;;:34;;;;;;;;;;;;;;;;;;11784:24;11758:23;;:50;;;;;;;;;;;;;;;;;;11527:289:::0;;;:::o;3988:30::-;;;;;;;;;;;;;:::o;8559:300::-;8674:4;8696:133;8719:12;:10;:12::i;:::-;8746:7;8768:50;8807:10;8768:11;:25;8780:12;:10;:12::i;:::-;8768:25;;;;;;;;;;;;;;;:34;8794:7;8768:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;8696:8;:133::i;:::-;8847:4;8840:11;;8559:300;;;;:::o;3570:37::-;;;;;;;;;;;;;;;;;;;;;;:::o;3392:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;11390:129::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11469:9:::1;11461:27;;:50;11489:21;11461:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11390:129:::0;:::o;4269:41::-;;;;:::o;7385:119::-;7451:7;7478:9;:18;7488:7;7478:18;;;;;;;;;;;;;;;;7471:25;;7385:119;;;:::o;2723:157::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2830:1:::1;2793:40;;2814:6;::::0;::::1;;;;;;;;2793:40;;;;;;;;;;;;2869:1;2844:6:::0;::::1;:28;;;;;;;;;;;;;;;;;;2723:157::o:0;3951:30::-;;;;;;;;;;;;;:::o;4476:38::-;;;;;;;;;;;;;:::o;4784:40::-;;;;:::o;4397:38::-;;;;:::o;5057:41::-;;;;:::o;3507:56::-;;;;;;;;;;;;;;;;;;;;;;:::o;10072:102::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10159:7:::1;10144:12;:22;;;;10072:102:::0;:::o;4572:29::-;;;;;;;;;;;;;:::o;11824:235::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11888:7:::1;;;;;;;;;;;11887:8;11879:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;11936:4;11926:7;;:14;;;;;;;;;;;;;;;;;;11964:4;11951:10;;:17;;;;;;;;;;;;;;;;;;12008:4;11979:26;;:33;;;;;;;;;;;;;;;;;;12036:15;12023:10;:28;;;;11824:235::o:0;2509:79::-;2547:7;2574:6;;;;;;;;;;;2567:13;;2509:79;:::o;7091:87::-;7130:13;7163:7;7156:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7091:87;:::o;3448:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;4180:42::-;;;;:::o;10182:100::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10267:7:::1;10253:11;:21;;;;10182:100:::0;:::o;8867:396::-;8987:4;9009:224;9032:12;:10;:12::i;:::-;9059:7;9081:141;9138:15;9081:141;;;;;;;;;;;;;;;;;:11;:25;9093:12;:10;:12::i;:::-;9081:25;;;;;;;;;;;;;;;:34;9107:7;9081:34;;;;;;;;;;;;;;;;:38;;:141;;;;;:::i;:::-;9009:8;:224::i;:::-;9251:4;9244:11;;8867:396;;;;:::o;9436:163::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9586:5:::1;9554:20;:29;9575:7;9554:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;9436:163:::0;;:::o;7512:199::-;7617:4;7639:42;7649:12;:10;:12::i;:::-;7663:9;7674:6;7639:9;:42::i;:::-;7699:4;7692:11;;7512:199;;;;:::o;4025:38::-;;;;;;;;;;;;;:::o;11283:99::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11368:6:::1;11355:10;;:19;;;;;;;;;;;;;;;;;;11283:99:::0;:::o;10290:425::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10454:6:::1;10431:20;:29;;;;10494:13;10471:20;:36;;;;10541:13;10518:20;:36;;;;10635:22;10654:2;10635:14;;:18;;:22;;;;:::i;:::-;10587:44;10617:13;10587:25;10598:13;10587:6;:10;;:25;;;;:::i;:::-;:29;;:44;;;;:::i;:::-;:70;;10565:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;10290:425:::0;;;:::o;4442:25::-;;;;:::o;4876:40::-;;;;:::o;7719:184::-;7836:7;7868:11;:18;7880:5;7868:18;;;;;;;;;;;;;;;:27;7887:7;7868:27;;;;;;;;;;;;;;;;7861:34;;7719:184;;;;:::o;9786:120::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9893:5:::1;9876;:14;9882:7;9876:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;9786:120:::0;:::o;4972:41::-;;;;:::o;9271:157::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9415:5:::1;9386:17;:26;9404:7;9386:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;9271:157:::0;;:::o;4629:19::-;;;;;;;;;;;;;:::o;12067:254::-;12130:7;12150:11;12164:128;12267:14;;12164:84;12175:72;12226:20;;12175:46;12200:20;;12175;;:24;;:46;;;;:::i;:::-;:50;;:72;;;;:::i;:::-;12164:6;:10;;:84;;;;:::i;:::-;:88;;:128;;;;:::i;:::-;12150:142;;12310:3;12303:10;;;12067:254;;;:::o;9914:150::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10006:1:::1;9996:7;:11;9988:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;10049:7;10032:14;:24;;;;9914:150:::0;:::o;3922:22::-;;;;;;;;;;;;;:::o;2888:281::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3011:1:::1;2991:22;;:8;:22;;;;2969:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;3124:8;3095:38;;3116:6;::::0;::::1;;;;;;;;3095:38;;;;;;;;;;;;3153:8;3144:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2888:281:::0;:::o;12329:262::-;12393:7;12413:11;12427:135;12547:14;;12427:101;12452:75;12505:21;;12452:48;12478:21;;12452;;:25;;:48;;;;:::i;:::-;:52;;:75;;;;:::i;:::-;12427:6;:24;;:101;;;;:::i;:::-;:119;;:135;;;;:::i;:::-;12413:149;;12580:3;12573:10;;;12329:262;;;:::o;4354:36::-;;;;:::o;22183:132::-;22241:7;22268:39;22272:1;22275;22268:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;22261:46;;22183:132;;;;:::o;1845:115::-;1898:15;1941:10;1926:26;;1845:115;:::o;12599:357::-;12743:1;12726:19;;:5;:19;;;;12718:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;12817:1;12798:21;;:7;:21;;;;12790:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;12894:6;12864:11;:18;12876:5;12864:18;;;;;;;;;;;;;;;:27;12883:7;12864:27;;;;;;;;;;;;;;;:36;;;;12932:7;12916:32;;12925:5;12916:32;;;12941:6;12916:32;;;;;;:::i;:::-;;;;;;;;12599:357;;;:::o;21137:181::-;21195:7;21215:9;21231:1;21227;:5;;;;:::i;:::-;21215:17;;21256:1;21251;:6;;21243:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;21309:1;21302:8;;;21137:181;;;;:::o;12964:1810::-;13102:1;13086:18;;:4;:18;;;;13078:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;13172:1;13158:16;;:2;:16;;;;13150:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;13235:1;13226:6;:10;13218:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;13293:5;:11;13299:4;13293:11;;;;;;;;;;;;;;;;;;;;;;;;;13292:12;13284:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;13339:20;:26;13360:4;13339:26;;;;;;;;;;;;;;;;;;;;;;;;;13338:27;:56;;;;;13370:20;:24;13391:2;13370:24;;;;;;;;;;;;;;;;;;;;;;;;;13369:25;13338:56;13334:743;;;13429:11;;13419:6;:21;;13411:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;13532:7;;;;;;;;;;;13527:174;;13601:4;13590:15;;:7;;;;;;;;;;;:15;;;;:32;;;;;13620:2;13609:13;;:7;;;;;;;;;;;:13;;;;13590:32;13560:125;;;;;;;;;;;;:::i;:::-;;;;;;;;;13527:174;13792:11;;13779:10;;:24;;;;:::i;:::-;13761:15;:42;:89;;;;;13840:9;;;;;;;;;;;13824:26;;:4;:26;;;;13761:89;13739:327;;;13900:4;13889:15;;:7;;;;;;;;;;;:15;;;13885:166;;;13941:4;13929:5;:9;13935:2;13929:9;;;;;;;;;;;;;;;;:16;;;;;;;;;;;;;;;;;;13885:166;;;13986:2;13975:13;;:7;;;;;;;;;;;:13;;;13971:80;;;14027:4;14013:5;:11;14019:4;14013:11;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;13971:80;13885:166;13739:327;13334:743;14094:24;:28;14119:2;14094:28;;;;;;;;;;;;;;;;;;;;;;;;;14089:187;;14194:12;;14165:25;14183:6;14165:13;14175:2;14165:9;:13::i;:::-;:17;;:25;;;;:::i;:::-;:41;;14139:125;;;;;;;;;;;;:::i;:::-;;;;;;;;;14089:187;14317:30;14338:4;14344:2;14317:20;:30::i;:::-;14421:12;14436:4;14421:19;;14540:17;:23;14558:4;14540:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;14567:17;:21;14585:2;14567:21;;;;;;;;;;;;;;;;;;;;;;;;;14540:48;:63;;;;14593:10;;;;;;;;;;;14592:11;14540:63;14536:111;;;14630:5;14620:15;;14536:111;14725:41;14740:4;14746:2;14750:6;14758:7;14725:14;:41::i;:::-;13067:1707;12964:1810;;;:::o;21470:226::-;21590:7;21623:1;21618;:6;;21626:12;21610:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;21650:9;21666:1;21662;:5;;;;:::i;:::-;21650:17;;21687:1;21680:8;;;21470:226;;;;;:::o;21704:471::-;21762:7;22012:1;22007;:6;22003:47;;;22037:1;22030:8;;;;22003:47;22062:9;22078:1;22074;:5;;;;:::i;:::-;22062:17;;22107:1;22102;22098;:5;;;;:::i;:::-;:10;22090:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;22166:1;22159:8;;;21704:471;;;;;:::o;22323:312::-;22443:7;22475:1;22471;:5;22478:12;22463:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;22502:9;22518:1;22514;:5;;;;:::i;:::-;22502:17;;22626:1;22619:8;;;22323:312;;;;;:::o;17147:2737::-;17500:28;17531:24;17549:4;17531:9;:24::i;:::-;17500:55;;17568:15;17610:14;;17586:20;:38;;17568:56;;17655:10;:42;;;;;17690:7;;;;;;;;;;;17682:15;;:4;:15;;;;17655:42;:85;;;;;17714:26;;;;;;;;;;;17655:85;:152;;;;;17775:4;17759:21;;:4;:21;;;:47;;;;;17798:7;;;;;;;;;;;17784:22;;:2;:22;;;17759:47;17757:50;17655:152;17637:2240;;;17882:65;17899:4;17914:9;;;;;;;;;;;17926:20;17882:8;:65::i;:::-;17964:21;17988:26;18012:1;17988:19;;:23;;:26;;;;:::i;:::-;17964:50;;18029:26;18058:38;18082:13;18058:19;;:23;;:38;;;;:::i;:::-;18029:67;;18113:30;18146:76;18189:18;18146:20;:24;;:76;;;;:::i;:::-;18113:109;;18239:21;18263;18239:45;;18351:66;18382:9;;;;;;;;;;;18394:22;18351;:66::i;:::-;18434:20;18457:40;18483:13;18457:21;:25;;:40;;;;:::i;:::-;18434:63;;18512:31;18546:95;18618:22;18546:49;18581:13;18546:12;:34;;:49;;;;:::i;:::-;:71;;:95;;;;:::i;:::-;18512:129;;18656:23;18682:97;18742:22;18682:37;18699:19;;18682:12;:16;;:37;;;;:::i;:::-;:41;;:97;;;;:::i;:::-;18656:123;;18794:23;18820:94;18884:15;18820:41;18837:23;18820:12;:16;;:41;;;;:::i;:::-;:45;;:94;;;;:::i;:::-;18794:120;;18998:1;18972:23;:27;18968:461;;;19020:211;19069:9;;;;;;;;;;;19102:23;;;;;;;;;;;19148:18;19189:23;19020:18;:211::i;:::-;19257:156;19294:13;19330:23;19376:18;19257:156;;;;;;;;:::i;:::-;;;;;;;;18968:461;19515:1;19497:15;:19;19493:75;;;19526:15;;;;;;;;;;;19518:33;;:50;19552:15;19518:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19493:75;19657:1;19639:15;:19;19635:75;;;19668:15;;;;;;;;;;;19660:33;;:50;19694:15;19660:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19635:75;19788:1;19766:19;:23;;;;19826:1;19804:19;:23;;;;19864:1;19842:19;:23;;;;17834:2043;;;;;;;;17637:2240;17211:2673;;17147:2737;;:::o;14855:1363::-;15021:6;15010:17;;:7;;;;;;;;;;;:17;;;:28;;;;;15031:7;15010:28;15006:1205;;;15055:14;15072:24;15089:6;15072:16;:24::i;:::-;15055:41;;15111:23;15137:18;15148:6;15137;:10;;:18;;;;:::i;:::-;15111:44;;15190:52;15212:6;15190:52;;;;;;;;;;;;;;;;;:9;:17;15200:6;15190:17;;;;;;;;;;;;;;;;:21;;:52;;;;;:::i;:::-;15170:9;:17;15180:6;15170:17;;;;;;;;;;;;;;;:72;;;;15280:41;15305:15;15280:9;:20;15290:9;15280:20;;;;;;;;;;;;;;;;:24;;:41;;;;:::i;:::-;15257:9;:20;15267:9;15257:20;;;;;;;;;;;;;;;:64;;;;15360:9;15343:44;;15352:6;15343:44;;;15371:15;15343:44;;;;;;:::i;:::-;;;;;;;;15402:28;15415:6;15423;15402:12;:28::i;:::-;15445:30;15468:6;15445:22;:30::i;:::-;15040:447;;15006:1205;;;15508:9;15497:20;;:7;;;;;;;;;;;:20;;;:31;;;;;15521:7;15497:31;15493:718;;;15545:14;15562:25;15580:6;15562:17;:25::i;:::-;15545:42;;15602:23;15628:18;15639:6;15628;:10;;:18;;;;:::i;:::-;15602:44;;15681:52;15703:6;15681:52;;;;;;;;;;;;;;;;;:9;:17;15691:6;15681:17;;;;;;;;;;;;;;;;:21;;:52;;;;;:::i;:::-;15661:9;:17;15671:6;15661:17;;;;;;;;;;;;;;;:72;;;;15771:41;15796:15;15771:9;:20;15781:9;15771:20;;;;;;;;;;;;;;;;:24;;:41;;;;:::i;:::-;15748:9;:20;15758:9;15748:20;;;;;;;;;;;;;;;:64;;;;15851:9;15834:44;;15843:6;15834:44;;;15862:15;15834:44;;;;;;:::i;:::-;;;;;;;;15893:28;15906:6;15914;15893:12;:28::i;:::-;15936:31;15960:6;15936:23;:31::i;:::-;15530:449;;15493:718;;;16020:52;16042:6;16020:52;;;;;;;;;;;;;;;;;:9;:17;16030:6;16020:17;;;;;;;;;;;;;;;;:21;;:52;;;;;:::i;:::-;16000:9;:17;16010:6;16000:17;;;;;;;;;;;;;;;:72;;;;16110:32;16135:6;16110:9;:20;16120:9;16110:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;16087:9;:20;16097:9;16087:20;;;;;;;;;;;;;;;:55;;;;16181:9;16164:35;;16173:6;16164:35;;;16192:6;16164:35;;;;;;:::i;:::-;;;;;;;;15493:718;15006:1205;14855:1363;;;;:::o;21326:136::-;21384:7;21411:43;21415:1;21418;21411:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;21404:50;;21326:136;;;;:::o;19983:603::-;20087:20;20121:13;20087:48;;20204:21;20242:1;20228:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20204:40;;20273:4;20255;20260:1;20255:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20299:9;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20289:4;20294:1;20289:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;20354:9;:60;;;20429:11;20455:1;20499:4;20526;20564:3;20546:15;:21;;;;:::i;:::-;20354:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20076:510;;19983:603;;:::o;20594:512::-;20757:20;20791:13;20757:48;;20848:9;:25;;;20881:9;20914:4;20934:11;20960:1;21003;21046:5;21084:3;21066:15;:21;;;;:::i;:::-;20848:250;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20746:360;20594:512;;;;:::o;16226:201::-;16326:36;16355:6;16326:9;:24;16344:4;16326:24;;;;;;;;;;;;;;;;:28;;:36;;;;:::i;:::-;16299:9;:24;16317:4;16299:24;;;;;;;;;;;;;;;:63;;;;16405:4;16380:39;;16389:6;16380:39;;;16412:6;16380:39;;;;;;:::i;:::-;;;;;;;;16226:201;;:::o;16435:346::-;16525:76;16576:14;;16525:32;16536:20;;16525:6;:10;;:32;;;;:::i;:::-;:36;;:76;;;;:::i;:::-;16502:19;;:99;;;;;;;:::i;:::-;;;;;;;;16635:52;16672:14;;16635:32;16646:20;;16635:6;:10;;:32;;;;:::i;:::-;:36;;:52;;;;:::i;:::-;16612:19;;:75;;;;;;;:::i;:::-;;;;;;;;16721:52;16758:14;;16721:32;16732:20;;16721:6;:10;;:32;;;;:::i;:::-;:36;;:52;;;;:::i;:::-;16698:19;;:75;;;;;;;:::i;:::-;;;;;;;;16435:346;:::o;16789:350::-;16880:77;16932:14;;16880:33;16891:21;;16880:6;:10;;:33;;;;:::i;:::-;:37;;:77;;;;:::i;:::-;16857:19;;:100;;;;;;;:::i;:::-;;;;;;;;16991:53;17029:14;;16991:33;17002:21;;16991:6;:10;;:33;;;;:::i;:::-;:37;;:53;;;;:::i;:::-;16968:19;;:76;;;;;;;:::i;:::-;;;;;;;;17078:53;17116:14;;17078:33;17089:21;;17078:6;:10;;:33;;;;:::i;:::-;:37;;:53;;;;:::i;:::-;17055:19;;:76;;;;;;;:::i;:::-;;;;;;;;16789:350;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:126::-;1434:7;1474:42;1467:5;1463:54;1452:65;;1397:126;;;:::o;1529:60::-;1557:3;1578:5;1571:12;;1529:60;;;:::o;1595:142::-;1645:9;1678:53;1696:34;1705:24;1723:5;1705:24;:::i;:::-;1696:34;:::i;:::-;1678:53;:::i;:::-;1665:66;;1595:142;;;:::o;1743:126::-;1793:9;1826:37;1857:5;1826:37;:::i;:::-;1813:50;;1743:126;;;:::o;1875:144::-;1943:9;1976:37;2007:5;1976:37;:::i;:::-;1963:50;;1875:144;;;:::o;2025:167::-;2130:55;2179:5;2130:55;:::i;:::-;2125:3;2118:68;2025:167;;:::o;2198:258::-;2309:4;2347:2;2336:9;2332:18;2324:26;;2360:89;2446:1;2435:9;2431:17;2422:6;2360:89;:::i;:::-;2198:258;;;;:::o;2543:117::-;2652:1;2649;2642:12;2789:96;2826:7;2855:24;2873:5;2855:24;:::i;:::-;2844:35;;2789:96;;;:::o;2891:122::-;2964:24;2982:5;2964:24;:::i;:::-;2957:5;2954:35;2944:63;;3003:1;3000;2993:12;2944:63;2891:122;:::o;3019:139::-;3065:5;3103:6;3090:20;3081:29;;3119:33;3146:5;3119:33;:::i;:::-;3019:139;;;;:::o;3164:77::-;3201:7;3230:5;3219:16;;3164:77;;;:::o;3247:122::-;3320:24;3338:5;3320:24;:::i;:::-;3313:5;3310:35;3300:63;;3359:1;3356;3349:12;3300:63;3247:122;:::o;3375:139::-;3421:5;3459:6;3446:20;3437:29;;3475:33;3502:5;3475:33;:::i;:::-;3375:139;;;;:::o;3520:474::-;3588:6;3596;3645:2;3633:9;3624:7;3620:23;3616:32;3613:119;;;3651:79;;:::i;:::-;3613:119;3771:1;3796:53;3841:7;3832:6;3821:9;3817:22;3796:53;:::i;:::-;3786:63;;3742:117;3898:2;3924:53;3969:7;3960:6;3949:9;3945:22;3924:53;:::i;:::-;3914:63;;3869:118;3520:474;;;;;:::o;4000:90::-;4034:7;4077:5;4070:13;4063:21;4052:32;;4000:90;;;:::o;4096:109::-;4177:21;4192:5;4177:21;:::i;:::-;4172:3;4165:34;4096:109;;:::o;4211:210::-;4298:4;4336:2;4325:9;4321:18;4313:26;;4349:65;4411:1;4400:9;4396:17;4387:6;4349:65;:::i;:::-;4211:210;;;;:::o;4427:116::-;4497:21;4512:5;4497:21;:::i;:::-;4490:5;4487:32;4477:60;;4533:1;4530;4523:12;4477:60;4427:116;:::o;4549:133::-;4592:5;4630:6;4617:20;4608:29;;4646:30;4670:5;4646:30;:::i;:::-;4549:133;;;;:::o;4688:323::-;4744:6;4793:2;4781:9;4772:7;4768:23;4764:32;4761:119;;;4799:79;;:::i;:::-;4761:119;4919:1;4944:50;4986:7;4977:6;4966:9;4962:22;4944:50;:::i;:::-;4934:60;;4890:114;4688:323;;;;:::o;5017:619::-;5094:6;5102;5110;5159:2;5147:9;5138:7;5134:23;5130:32;5127:119;;;5165:79;;:::i;:::-;5127:119;5285:1;5310:53;5355:7;5346:6;5335:9;5331:22;5310:53;:::i;:::-;5300:63;;5256:117;5412:2;5438:53;5483:7;5474:6;5463:9;5459:22;5438:53;:::i;:::-;5428:63;;5383:118;5540:2;5566:53;5611:7;5602:6;5591:9;5587:22;5566:53;:::i;:::-;5556:63;;5511:118;5017:619;;;;;:::o;5642:118::-;5729:24;5747:5;5729:24;:::i;:::-;5724:3;5717:37;5642:118;;:::o;5766:222::-;5859:4;5897:2;5886:9;5882:18;5874:26;;5910:71;5978:1;5967:9;5963:17;5954:6;5910:71;:::i;:::-;5766:222;;;;:::o;5994:619::-;6071:6;6079;6087;6136:2;6124:9;6115:7;6111:23;6107:32;6104:119;;;6142:79;;:::i;:::-;6104:119;6262:1;6287:53;6332:7;6323:6;6312:9;6308:22;6287:53;:::i;:::-;6277:63;;6233:117;6389:2;6415:53;6460:7;6451:6;6440:9;6436:22;6415:53;:::i;:::-;6405:63;;6360:118;6517:2;6543:53;6588:7;6579:6;6568:9;6564:22;6543:53;:::i;:::-;6533:63;;6488:118;5994:619;;;;;:::o;6619:468::-;6684:6;6692;6741:2;6729:9;6720:7;6716:23;6712:32;6709:119;;;6747:79;;:::i;:::-;6709:119;6867:1;6892:53;6937:7;6928:6;6917:9;6913:22;6892:53;:::i;:::-;6882:63;;6838:117;6994:2;7020:50;7062:7;7053:6;7042:9;7038:22;7020:50;:::i;:::-;7010:60;;6965:115;6619:468;;;;;:::o;7093:86::-;7128:7;7168:4;7161:5;7157:16;7146:27;;7093:86;;;:::o;7185:112::-;7268:22;7284:5;7268:22;:::i;:::-;7263:3;7256:35;7185:112;;:::o;7303:214::-;7392:4;7430:2;7419:9;7415:18;7407:26;;7443:67;7507:1;7496:9;7492:17;7483:6;7443:67;:::i;:::-;7303:214;;;;:::o;7523:619::-;7600:6;7608;7616;7665:2;7653:9;7644:7;7640:23;7636:32;7633:119;;;7671:79;;:::i;:::-;7633:119;7791:1;7816:53;7861:7;7852:6;7841:9;7837:22;7816:53;:::i;:::-;7806:63;;7762:117;7918:2;7944:53;7989:7;7980:6;7969:9;7965:22;7944:53;:::i;:::-;7934:63;;7889:118;8046:2;8072:53;8117:7;8108:6;8097:9;8093:22;8072:53;:::i;:::-;8062:63;;8017:118;7523:619;;;;;:::o;8148:118::-;8235:24;8253:5;8235:24;:::i;:::-;8230:3;8223:37;8148:118;;:::o;8272:222::-;8365:4;8403:2;8392:9;8388:18;8380:26;;8416:71;8484:1;8473:9;8469:17;8460:6;8416:71;:::i;:::-;8272:222;;;;:::o;8500:329::-;8559:6;8608:2;8596:9;8587:7;8583:23;8579:32;8576:119;;;8614:79;;:::i;:::-;8576:119;8734:1;8759:53;8804:7;8795:6;8784:9;8780:22;8759:53;:::i;:::-;8749:63;;8705:117;8500:329;;;;:::o;8835:::-;8894:6;8943:2;8931:9;8922:7;8918:23;8914:32;8911:119;;;8949:79;;:::i;:::-;8911:119;9069:1;9094:53;9139:7;9130:6;9119:9;9115:22;9094:53;:::i;:::-;9084:63;;9040:117;8835:329;;;;:::o;9170:474::-;9238:6;9246;9295:2;9283:9;9274:7;9270:23;9266:32;9263:119;;;9301:79;;:::i;:::-;9263:119;9421:1;9446:53;9491:7;9482:6;9471:9;9467:22;9446:53;:::i;:::-;9436:63;;9392:117;9548:2;9574:53;9619:7;9610:6;9599:9;9595:22;9574:53;:::i;:::-;9564:63;;9519:118;9170:474;;;;;:::o;9650:180::-;9698:77;9695:1;9688:88;9795:4;9792:1;9785:15;9819:4;9816:1;9809:15;9836:320;9880:6;9917:1;9911:4;9907:12;9897:22;;9964:1;9958:4;9954:12;9985:18;9975:81;;10041:4;10033:6;10029:17;10019:27;;9975:81;10103:2;10095:6;10092:14;10072:18;10069:38;10066:84;;;10122:18;;:::i;:::-;10066:84;9887:269;9836:320;;;:::o;10162:182::-;10302:34;10298:1;10290:6;10286:14;10279:58;10162:182;:::o;10350:366::-;10492:3;10513:67;10577:2;10572:3;10513:67;:::i;:::-;10506:74;;10589:93;10678:3;10589:93;:::i;:::-;10707:2;10702:3;10698:12;10691:19;;10350:366;;;:::o;10722:419::-;10888:4;10926:2;10915:9;10911:18;10903:26;;10975:9;10969:4;10965:20;10961:1;10950:9;10946:17;10939:47;11003:131;11129:4;11003:131;:::i;:::-;10995:139;;10722:419;;;:::o;11147:172::-;11287:24;11283:1;11275:6;11271:14;11264:48;11147:172;:::o;11325:366::-;11467:3;11488:67;11552:2;11547:3;11488:67;:::i;:::-;11481:74;;11564:93;11653:3;11564:93;:::i;:::-;11682:2;11677:3;11673:12;11666:19;;11325:366;;;:::o;11697:419::-;11863:4;11901:2;11890:9;11886:18;11878:26;;11950:9;11944:4;11940:20;11936:1;11925:9;11921:17;11914:47;11978:131;12104:4;11978:131;:::i;:::-;11970:139;;11697:419;;;:::o;12122:165::-;12262:17;12258:1;12250:6;12246:14;12239:41;12122:165;:::o;12293:366::-;12435:3;12456:67;12520:2;12515:3;12456:67;:::i;:::-;12449:74;;12532:93;12621:3;12532:93;:::i;:::-;12650:2;12645:3;12641:12;12634:19;;12293:366;;;:::o;12665:419::-;12831:4;12869:2;12858:9;12854:18;12846:26;;12918:9;12912:4;12908:20;12904:1;12893:9;12889:17;12882:47;12946:131;13072:4;12946:131;:::i;:::-;12938:139;;12665:419;;;:::o;13090:160::-;13230:12;13226:1;13218:6;13214:14;13207:36;13090:160;:::o;13256:366::-;13398:3;13419:67;13483:2;13478:3;13419:67;:::i;:::-;13412:74;;13495:93;13584:3;13495:93;:::i;:::-;13613:2;13608:3;13604:12;13597:19;;13256:366;;;:::o;13628:419::-;13794:4;13832:2;13821:9;13817:18;13809:26;;13881:9;13875:4;13871:20;13867:1;13856:9;13852:17;13845:47;13909:131;14035:4;13909:131;:::i;:::-;13901:139;;13628:419;;;:::o;14053:225::-;14193:34;14189:1;14181:6;14177:14;14170:58;14262:8;14257:2;14249:6;14245:15;14238:33;14053:225;:::o;14284:366::-;14426:3;14447:67;14511:2;14506:3;14447:67;:::i;:::-;14440:74;;14523:93;14612:3;14523:93;:::i;:::-;14641:2;14636:3;14632:12;14625:19;;14284:366;;;:::o;14656:419::-;14822:4;14860:2;14849:9;14845:18;14837:26;;14909:9;14903:4;14899:20;14895:1;14884:9;14880:17;14873:47;14937:131;15063:4;14937:131;:::i;:::-;14929:139;;14656:419;;;:::o;15081:179::-;15221:31;15217:1;15209:6;15205:14;15198:55;15081:179;:::o;15266:366::-;15408:3;15429:67;15493:2;15488:3;15429:67;:::i;:::-;15422:74;;15505:93;15594:3;15505:93;:::i;:::-;15623:2;15618:3;15614:12;15607:19;;15266:366;;;:::o;15638:419::-;15804:4;15842:2;15831:9;15827:18;15819:26;;15891:9;15885:4;15881:20;15877:1;15866:9;15862:17;15855:47;15919:131;16045:4;15919:131;:::i;:::-;15911:139;;15638:419;;;:::o;16063:177::-;16203:29;16199:1;16191:6;16187:14;16180:53;16063:177;:::o;16246:366::-;16388:3;16409:67;16473:2;16468:3;16409:67;:::i;:::-;16402:74;;16485:93;16574:3;16485:93;:::i;:::-;16603:2;16598:3;16594:12;16587:19;;16246:366;;;:::o;16618:419::-;16784:4;16822:2;16811:9;16807:18;16799:26;;16871:9;16865:4;16861:20;16857:1;16846:9;16842:17;16835:47;16899:131;17025:4;16899:131;:::i;:::-;16891:139;;16618:419;;;:::o;17043:180::-;17091:77;17088:1;17081:88;17188:4;17185:1;17178:15;17212:4;17209:1;17202:15;17229:305;17269:3;17288:20;17306:1;17288:20;:::i;:::-;17283:25;;17322:20;17340:1;17322:20;:::i;:::-;17317:25;;17476:1;17408:66;17404:74;17401:1;17398:81;17395:107;;;17482:18;;:::i;:::-;17395:107;17526:1;17523;17519:9;17512:16;;17229:305;;;;:::o;17540:177::-;17680:29;17676:1;17668:6;17664:14;17657:53;17540:177;:::o;17723:366::-;17865:3;17886:67;17950:2;17945:3;17886:67;:::i;:::-;17879:74;;17962:93;18051:3;17962:93;:::i;:::-;18080:2;18075:3;18071:12;18064:19;;17723:366;;;:::o;18095:419::-;18261:4;18299:2;18288:9;18284:18;18276:26;;18348:9;18342:4;18338:20;18334:1;18323:9;18319:17;18312:47;18376:131;18502:4;18376:131;:::i;:::-;18368:139;;18095:419;;;:::o;18520:180::-;18660:32;18656:1;18648:6;18644:14;18637:56;18520:180;:::o;18706:366::-;18848:3;18869:67;18933:2;18928:3;18869:67;:::i;:::-;18862:74;;18945:93;19034:3;18945:93;:::i;:::-;19063:2;19058:3;19054:12;19047:19;;18706:366;;;:::o;19078:419::-;19244:4;19282:2;19271:9;19267:18;19259:26;;19331:9;19325:4;19321:20;19317:1;19306:9;19302:17;19295:47;19359:131;19485:4;19359:131;:::i;:::-;19351:139;;19078:419;;;:::o;19503:178::-;19643:30;19639:1;19631:6;19627:14;19620:54;19503:178;:::o;19687:366::-;19829:3;19850:67;19914:2;19909:3;19850:67;:::i;:::-;19843:74;;19926:93;20015:3;19926:93;:::i;:::-;20044:2;20039:3;20035:12;20028:19;;19687:366;;;:::o;20059:419::-;20225:4;20263:2;20252:9;20248:18;20240:26;;20312:9;20306:4;20302:20;20298:1;20287:9;20283:17;20276:47;20340:131;20466:4;20340:131;:::i;:::-;20332:139;;20059:419;;;:::o;20484:182::-;20624:34;20620:1;20612:6;20608:14;20601:58;20484:182;:::o;20672:366::-;20814:3;20835:67;20899:2;20894:3;20835:67;:::i;:::-;20828:74;;20911:93;21000:3;20911:93;:::i;:::-;21029:2;21024:3;21020:12;21013:19;;20672:366;;;:::o;21044:419::-;21210:4;21248:2;21237:9;21233:18;21225:26;;21297:9;21291:4;21287:20;21283:1;21272:9;21268:17;21261:47;21325:131;21451:4;21325:131;:::i;:::-;21317:139;;21044:419;;;:::o;21469:162::-;21609:14;21605:1;21597:6;21593:14;21586:38;21469:162;:::o;21637:366::-;21779:3;21800:67;21864:2;21859:3;21800:67;:::i;:::-;21793:74;;21876:93;21965:3;21876:93;:::i;:::-;21994:2;21989:3;21985:12;21978:19;;21637:366;;;:::o;22009:419::-;22175:4;22213:2;22202:9;22198:18;22190:26;;22262:9;22256:4;22252:20;22248:1;22237:9;22233:17;22226:47;22290:131;22416:4;22290:131;:::i;:::-;22282:139;;22009:419;;;:::o;22434:171::-;22574:23;22570:1;22562:6;22558:14;22551:47;22434:171;:::o;22611:366::-;22753:3;22774:67;22838:2;22833:3;22774:67;:::i;:::-;22767:74;;22850:93;22939:3;22850:93;:::i;:::-;22968:2;22963:3;22959:12;22952:19;;22611:366;;;:::o;22983:419::-;23149:4;23187:2;23176:9;23172:18;23164:26;;23236:9;23230:4;23226:20;23222:1;23211:9;23207:17;23200:47;23264:131;23390:4;23264:131;:::i;:::-;23256:139;;22983:419;;;:::o;23408:169::-;23548:21;23544:1;23536:6;23532:14;23525:45;23408:169;:::o;23583:366::-;23725:3;23746:67;23810:2;23805:3;23746:67;:::i;:::-;23739:74;;23822:93;23911:3;23822:93;:::i;:::-;23940:2;23935:3;23931:12;23924:19;;23583:366;;;:::o;23955:419::-;24121:4;24159:2;24148:9;24144:18;24136:26;;24208:9;24202:4;24198:20;24194:1;24183:9;24179:17;24172:47;24236:131;24362:4;24236:131;:::i;:::-;24228:139;;23955:419;;;:::o;24380:172::-;24520:24;24516:1;24508:6;24504:14;24497:48;24380:172;:::o;24558:366::-;24700:3;24721:67;24785:2;24780:3;24721:67;:::i;:::-;24714:74;;24797:93;24886:3;24797:93;:::i;:::-;24915:2;24910:3;24906:12;24899:19;;24558:366;;;:::o;24930:419::-;25096:4;25134:2;25123:9;25119:18;25111:26;;25183:9;25177:4;25173:20;25169:1;25158:9;25154:17;25147:47;25211:131;25337:4;25211:131;:::i;:::-;25203:139;;24930:419;;;:::o;25355:191::-;25395:4;25415:20;25433:1;25415:20;:::i;:::-;25410:25;;25449:20;25467:1;25449:20;:::i;:::-;25444:25;;25488:1;25485;25482:8;25479:34;;;25493:18;;:::i;:::-;25479:34;25538:1;25535;25531:9;25523:17;;25355:191;;;;:::o;25552:348::-;25592:7;25615:20;25633:1;25615:20;:::i;:::-;25610:25;;25649:20;25667:1;25649:20;:::i;:::-;25644:25;;25837:1;25769:66;25765:74;25762:1;25759:81;25754:1;25747:9;25740:17;25736:105;25733:131;;;25844:18;;:::i;:::-;25733:131;25892:1;25889;25885:9;25874:20;;25552:348;;;;:::o;25906:180::-;25954:77;25951:1;25944:88;26051:4;26048:1;26041:15;26075:4;26072:1;26065:15;26092:185;26132:1;26149:20;26167:1;26149:20;:::i;:::-;26144:25;;26183:20;26201:1;26183:20;:::i;:::-;26178:25;;26222:1;26212:35;;26227:18;;:::i;:::-;26212:35;26269:1;26266;26262:9;26257:14;;26092:185;;;;:::o;26283:220::-;26423:34;26419:1;26411:6;26407:14;26400:58;26492:3;26487:2;26479:6;26475:15;26468:28;26283:220;:::o;26509:366::-;26651:3;26672:67;26736:2;26731:3;26672:67;:::i;:::-;26665:74;;26748:93;26837:3;26748:93;:::i;:::-;26866:2;26861:3;26857:12;26850:19;;26509:366;;;:::o;26881:419::-;27047:4;27085:2;27074:9;27070:18;27062:26;;27134:9;27128:4;27124:20;27120:1;27109:9;27105:17;27098:47;27162:131;27288:4;27162:131;:::i;:::-;27154:139;;26881:419;;;:::o;27306:442::-;27455:4;27493:2;27482:9;27478:18;27470:26;;27506:71;27574:1;27563:9;27559:17;27550:6;27506:71;:::i;:::-;27587:72;27655:2;27644:9;27640:18;27631:6;27587:72;:::i;:::-;27669;27737:2;27726:9;27722:18;27713:6;27669:72;:::i;:::-;27306:442;;;;;;:::o;27754:180::-;27802:77;27799:1;27792:88;27899:4;27896:1;27889:15;27923:4;27920:1;27913:15;27940:180;27988:77;27985:1;27978:88;28085:4;28082:1;28075:15;28109:4;28106:1;28099:15;28126:143;28183:5;28214:6;28208:13;28199:22;;28230:33;28257:5;28230:33;:::i;:::-;28126:143;;;;:::o;28275:351::-;28345:6;28394:2;28382:9;28373:7;28369:23;28365:32;28362:119;;;28400:79;;:::i;:::-;28362:119;28520:1;28545:64;28601:7;28592:6;28581:9;28577:22;28545:64;:::i;:::-;28535:74;;28491:128;28275:351;;;;:::o;28632:85::-;28677:7;28706:5;28695:16;;28632:85;;;:::o;28723:158::-;28781:9;28814:61;28832:42;28841:32;28867:5;28841:32;:::i;:::-;28832:42;:::i;:::-;28814:61;:::i;:::-;28801:74;;28723:158;;;:::o;28887:147::-;28982:45;29021:5;28982:45;:::i;:::-;28977:3;28970:58;28887:147;;:::o;29040:114::-;29107:6;29141:5;29135:12;29125:22;;29040:114;;;:::o;29160:184::-;29259:11;29293:6;29288:3;29281:19;29333:4;29328:3;29324:14;29309:29;;29160:184;;;;:::o;29350:132::-;29417:4;29440:3;29432:11;;29470:4;29465:3;29461:14;29453:22;;29350:132;;;:::o;29488:108::-;29565:24;29583:5;29565:24;:::i;:::-;29560:3;29553:37;29488:108;;:::o;29602:179::-;29671:10;29692:46;29734:3;29726:6;29692:46;:::i;:::-;29770:4;29765:3;29761:14;29747:28;;29602:179;;;;:::o;29787:113::-;29857:4;29889;29884:3;29880:14;29872:22;;29787:113;;;:::o;29936:732::-;30055:3;30084:54;30132:5;30084:54;:::i;:::-;30154:86;30233:6;30228:3;30154:86;:::i;:::-;30147:93;;30264:56;30314:5;30264:56;:::i;:::-;30343:7;30374:1;30359:284;30384:6;30381:1;30378:13;30359:284;;;30460:6;30454:13;30487:63;30546:3;30531:13;30487:63;:::i;:::-;30480:70;;30573:60;30626:6;30573:60;:::i;:::-;30563:70;;30419:224;30406:1;30403;30399:9;30394:14;;30359:284;;;30363:14;30659:3;30652:10;;30060:608;;;29936:732;;;;:::o;30674:831::-;30937:4;30975:3;30964:9;30960:19;30952:27;;30989:71;31057:1;31046:9;31042:17;31033:6;30989:71;:::i;:::-;31070:80;31146:2;31135:9;31131:18;31122:6;31070:80;:::i;:::-;31197:9;31191:4;31187:20;31182:2;31171:9;31167:18;31160:48;31225:108;31328:4;31319:6;31225:108;:::i;:::-;31217:116;;31343:72;31411:2;31400:9;31396:18;31387:6;31343:72;:::i;:::-;31425:73;31493:3;31482:9;31478:19;31469:6;31425:73;:::i;:::-;30674:831;;;;;;;;:::o;31511:807::-;31760:4;31798:3;31787:9;31783:19;31775:27;;31812:71;31880:1;31869:9;31865:17;31856:6;31812:71;:::i;:::-;31893:72;31961:2;31950:9;31946:18;31937:6;31893:72;:::i;:::-;31975:80;32051:2;32040:9;32036:18;32027:6;31975:80;:::i;:::-;32065;32141:2;32130:9;32126:18;32117:6;32065:80;:::i;:::-;32155:73;32223:3;32212:9;32208:19;32199:6;32155:73;:::i;:::-;32238;32306:3;32295:9;32291:19;32282:6;32238:73;:::i;:::-;31511:807;;;;;;;;;:::o;32324:143::-;32381:5;32412:6;32406:13;32397:22;;32428:33;32455:5;32428:33;:::i;:::-;32324:143;;;;:::o;32473:663::-;32561:6;32569;32577;32626:2;32614:9;32605:7;32601:23;32597:32;32594:119;;;32632:79;;:::i;:::-;32594:119;32752:1;32777:64;32833:7;32824:6;32813:9;32809:22;32777:64;:::i;:::-;32767:74;;32723:128;32890:2;32916:64;32972:7;32963:6;32952:9;32948:22;32916:64;:::i;:::-;32906:74;;32861:129;33029:2;33055:64;33111:7;33102:6;33091:9;33087:22;33055:64;:::i;:::-;33045:74;;33000:129;32473:663;;;;;:::o

Swarm Source

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