ETH Price: $2,972.36 (+2.47%)
Gas: 1 Gwei

Token

Bank of $DIE (DIEB)
 

Overview

Max Total Supply

1,000,000,000 DIEB

Holders

54

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
920,700 DIEB

Value
$0.00
0x2c393ca590be1543f96dee74c6c2ae09b0fe9579
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:
BankofDIE

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-21
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.13;

/**
 * DIE Bank - Earn $DIE reflections.
 */
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

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

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        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;
    }
}

/**
 * ERC20 standard interface.
 */
interface IERC20 {
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

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

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

    function getOwner() external view returns (address);

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

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

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

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

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

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

abstract contract Auth {
    address internal owner;

    constructor(address _owner) {
        owner = _owner;
    }

    /**
     * Function modifier to require caller to be contract deployer
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!Owner");
        _;
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

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

    function WETH() external pure returns (address);

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

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

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

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

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

interface DIEBANK {
    function setDistributionCriteria(
        uint256 _minPeriod,
        uint256 _minDistribution
    ) external;

    function setShare(address shareholder, uint256 amount) external;

    function deposit() external payable;

    function process(uint256 gas) external;

    function gibDIEBank(address shareholder) external;
}

contract DBANK is DIEBANK {
    using SafeMath for uint256;
    address _token;

    address public $DIE;

    IDEXRouter router;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    address[] shareholders;
    mapping(address => uint256) shareholderIndexes;
    mapping(address => uint256) shareholderClaims;
    mapping(address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10**36;

    uint256 public minPeriod = 30 minutes;
    uint256 public minDistribution = 0 * (10**9);

    uint256 public currentIndex;
    bool initialized;

    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token);
        _;
    }

    constructor() {
        _token = msg.sender;
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        $DIE = 0x6Ef6610d24593805144d73b13d4405E00A4E4aC7;
    }

    receive() external payable {
        deposit();
    }

    function setDistributionCriteria(
        uint256 newMinPeriod,
        uint256 newMinDistribution
    ) external override onlyToken {
        minPeriod = newMinPeriod;
        minDistribution = newMinDistribution;
    }

    function setShare(address shareholder, uint256 amount)
        external
        override
        onlyToken
    {
        if (shares[shareholder].amount > 0) {
            distributeDividend(shareholder);
        }

        if (amount > 0 && shares[shareholder].amount == 0) {
            addShareholder(shareholder);
        } else if (amount == 0 && shares[shareholder].amount > 0) {
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(
            shares[shareholder].amount
        );
    }

    function deposit() public payable override {
        uint256 balanceBefore = IERC20($DIE).balanceOf(address(this));

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

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{
            value: msg.value
        }(0, path, address(this), block.timestamp);

        uint256 amount = IERC20($DIE).balanceOf(address(this)).sub(
            balanceBefore
        );
        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(
            dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)
        );
    }

    function process(uint256 gas) external override {
        uint256 shareholderCount = shareholders.length;

        if (shareholderCount == 0) {
            return;
        }

        uint256 iterations = 0;
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        while (gasUsed < gas && iterations < shareholderCount) {
            if (currentIndex >= shareholderCount) {
                currentIndex = 0;
            }

            if (shouldDistribute(shareholders[currentIndex])) {
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }

    function shouldDistribute(address shareholder) public view returns (bool) {
        return
            shareholderClaims[shareholder] + minPeriod < block.timestamp &&
            getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if (shares[shareholder].amount == 0) {
            return;
        }

        uint256 amount = getUnpaidEarnings(shareholder);
        if (amount > 0) {
            totalDistributed = totalDistributed.add(amount);
            IERC20($DIE).transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder]
                .totalRealised
                .add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(
                shares[shareholder].amount
            );
        }
    }

    function gibDIEBank(address shareholder) external override onlyToken {
        distributeDividend(shareholder);
    }

    function getUnpaidEarnings(address shareholder)
        public
        view
        returns (uint256)
    {
        if (shares[shareholder].amount == 0) {
            return 0;
        }

        uint256 shareholderTotalDividends = getCumulativeDividends(
            shares[shareholder].amount
        );
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if (shareholderTotalDividends <= shareholderTotalExcluded) {
            return 0;
        }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share)
        internal
        view
        returns (uint256)
    {
        return
            share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[
            shareholders.length - 1
        ];
        shareholderIndexes[
            shareholders[shareholders.length - 1]
        ] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}

contract BankofDIE is IERC20, Auth {
    using SafeMath for uint256;

    address public $DIE = 0x6Ef6610d24593805144d73b13d4405E00A4E4aC7; //$DIE Token

    string private constant _name = "Bank of $DIE";
    string private constant _symbol = "DIEB";
    uint8 private constant _decimals = 18;

    uint256 private _totalSupply = 1000000000 * (10**_decimals);

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

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

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

    address public lpWallet = DEAD;

    uint256 public buyFee = 7;
    uint256 public sellFee = 7;

    uint256 public toReflections = 40;
    uint256 public toLiquidity = 20;
    uint256 public toMarketing = 40;

    uint256 public allocationSum = 100;

    IDEXRouter public router;
    address public pair;
    address public factory;
    address private tokenOwner;
    address public devWallet;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public tradingOpen = false;

    DBANK public dBANK;
    uint256 public dBANKGas = 0;

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

    uint256 public maxTx = _totalSupply.div(1000);
    uint256 public maxWallet = _totalSupply.div(1000);
    uint256 public swapThreshold = _totalSupply.div(400);

    constructor(address _owner) Auth(_owner) {
        devWallet = payable(_owner);

        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        WETH = router.WETH();

        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));

        _allowances[address(this)][address(router)] = type(uint256).max;

        dBANK = new DBANK();

        isFeeExempt[_owner] = true;
        isFeeExempt[devWallet] = true;

        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;

        isTxLimitExempt[_owner] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[devWallet] = true;

        _balances[_owner] = _totalSupply;

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

    receive() external payable {}

    function botsPointOne() external onlyOwner {
        require(!tradingOpen, "Behave.");

        maxTx = _totalSupply.div(100);
        maxWallet = _totalSupply.div(100);
    }

    //once enabled, cannot be reversed
    function openMarkets() external onlyOwner {
        tradingOpen = true;
    }

    function changeTotalFees(uint256 newBuyFee, uint256 newSellFee)
        external
        onlyOwner
    {
        buyFee = newBuyFee;
        sellFee = newSellFee;

        require(buyFee <= 7, "too high");
        require(sellFee <= 7, "too high");
    }

    function changeFeeAllocation(
        uint256 newRewardFee,
        uint256 newLpFee,
        uint256 newMarketingFee
    ) external onlyOwner {
        toReflections = newRewardFee;
        toLiquidity = newLpFee;
        toMarketing = newMarketingFee;
    }

    function changeTxLimit(uint256 newLimit) external onlyOwner {
        require(newLimit >= maxTx, "Can not lower max tx");
        maxTx = newLimit;
    }

    function changeWalletLimit(uint256 newLimit) external onlyOwner {
        require(newLimit >= maxWallet, "Can not lower max wallet");
        maxWallet = newLimit;
    }

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

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

    function setDevWallet(address payable newDevWallet) external onlyOwner {
        devWallet = payable(newDevWallet);
    }

    function setOwnerWallet(address payable newOwnerWallet) external onlyOwner {
        tokenOwner = newOwnerWallet;
    }

    function changeSwapBackSettings(
        bool enableSwapBack,
        uint256 newSwapBackLimit
    ) external onlyOwner {
        swapAndLiquifyEnabled = enableSwapBack;
        swapThreshold = newSwapBackLimit;
    }

    function setDistributionCriteria(
        uint256 newMinPeriod,
        uint256 newMinDistribution
    ) external onlyOwner {
        dBANK.setDistributionCriteria(newMinPeriod, newMinDistribution);
    }

    function _setIsDividendExempt(address holder, bool exempt) internal {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if (exempt) {
            dBANK.setShare(holder, 0);
        } else {
            dBANK.setShare(holder, _balances[holder]);
        }
    }

    function setIsDividendExempt(address holder, bool exempt)
        external
        onlyOwner
    {
        _setIsDividendExempt(holder, exempt);
    }

    function changeDIEgas(uint256 newGas) external onlyOwner {
        dBANKGas = newGas;
    }

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

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

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

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

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

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

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

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

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

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

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

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

        return _transfer(sender, recipient, amount);
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        if (sender != owner && recipient != owner)
            require(tradingOpen, "calm down ser"); //transfers disabled before tradingActive

        if (inSwapAndLiquify) {
            return _basicTransfer(sender, recipient, amount);
        }

        require(amount <= maxTx || isTxLimitExempt[sender], "tx");

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

        if (
            msg.sender != pair &&
            !inSwapAndLiquify &&
            swapAndLiquifyEnabled &&
            _balances[address(this)] >= swapThreshold
        ) {
            swapBack();
        }

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

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

        // Dividend tracker
        if (!isDividendExempt[sender]) {
            try dBANK.setShare(sender, _balances[sender]) {} catch {}
        }

        if (!isDividendExempt[recipient]) {
            try dBANK.setShare(recipient, _balances[recipient]) {} catch {}
        }

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

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

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        uint256 feeApplicable = pair == recipient ? sellFee : buyFee;
        uint256 feeAmount = amount.mul(feeApplicable).div(100);

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

        return amount.sub(feeAmount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        approve(address(this), tokenAmount);

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            lpWallet,
            block.timestamp
        );
    }

    function swapBack() internal lockTheSwap {
        uint256 tokenBalance = _balances[address(this)];
        uint256 tokensForLiquidity = tokenBalance.mul(toLiquidity).div(100).div(
            2
        );
        uint256 amountToSwap = tokenBalance.sub(tokensForLiquidity);

        swapTokensForEth(amountToSwap);

        uint256 totalEthBalance = address(this).balance;
        uint256 ethForDIE = totalEthBalance.mul(toReflections).div(100);
        uint256 ethForDev = totalEthBalance.mul(toMarketing).div(100);
        uint256 ethForLiquidity = totalEthBalance.mul(toLiquidity).div(100).div(
            2
        );

        if (totalEthBalance > 0) {
            payable(devWallet).transfer(ethForDev);
        }

        try dBANK.deposit{value: ethForDIE}() {} catch {}

        if (tokensForLiquidity > 0) {
            addLiquidity(tokensForLiquidity, ethForLiquidity);
        }
    }

    function manualSwapBack() external onlyOwner {
        swapBack();
    }

    function clearStuckEth() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        if (contractETHBalance > 0) {
            payable(devWallet).transfer(contractETHBalance);
        }
    }

    function manualProcessGas(uint256 manualGas) external onlyOwner {
        dBANK.process(manualGas);
    }

    function checkPendingReflections(address shareholder)
        external
        view
        returns (uint256)
    {
        return dBANK.getUnpaidEarnings(shareholder);
    }

    function withdrawFromBank() external {
        dBANK.gibDIEBank(msg.sender);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"$DIE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allocationSum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botsPointOne","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newGas","type":"uint256"}],"name":"changeDIEgas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newRewardFee","type":"uint256"},{"internalType":"uint256","name":"newLpFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"}],"name":"changeFeeAllocation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"changeTotalFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"checkPendingReflections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dBANK","outputs":[{"internalType":"contract DBANK","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dBANKGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"manualGas","type":"uint256"}],"name":"manualProcessGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openMarkets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"newDevWallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwnerWallet","type":"address"}],"name":"setOwnerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"toLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toReflections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawFromBank","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052736ef6610d24593805144d73b13d4405e00a4e4ac7600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a62000069919062000da4565b633b9aca006200007a919062000df5565b60025561dead600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506007600d556007600e556028600f556014601055602860115560646012556001601760156101000a81548160ff0219169083151502179055506000601760166101000a81548160ff0219169083151502179055506000601955620001dc6103e860025462000b4260201b620020281790919060201c565b601a55620001fd6103e860025462000b4260201b620020281790919060201c565b601b556200021e61019060025462000b4260201b620020281790919060201c565b601c553480156200022e57600080fd5b506040516200763338038062007633833981810160405281019062000254919062000ec0565b80806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200039a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c0919062000ec0565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200046e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000494919062000ec0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401620004f292919062000f03565b6020604051808303816000875af115801562000512573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000538919062000ec0565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550604051620006499062000bfc565b604051809103906000f08015801562000666573d6000803e3d6000fd5b50601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600254600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60025460405162000b33919062000f41565b60405180910390a3506200108d565b600062000b8c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000b9460201b60201c565b905092915050565b6000808311829062000bde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bd5919062001002565b60405180910390fd5b506000838562000bef919062001055565b9050809150509392505050565b61204c80620055e783390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000c985780860481111562000c705762000c6f62000c0a565b5b600185161562000c805780820291505b808102905062000c908562000c39565b945062000c50565b94509492505050565b60008262000cb3576001905062000d86565b8162000cc3576000905062000d86565b816001811462000cdc576002811462000ce75762000d1d565b600191505062000d86565b60ff84111562000cfc5762000cfb62000c0a565b5b8360020a91508482111562000d165762000d1562000c0a565b5b5062000d86565b5060208310610133831016604e8410600b841016171562000d575782820a90508381111562000d515762000d5062000c0a565b5b62000d86565b62000d66848484600162000c46565b9250905081840481111562000d805762000d7f62000c0a565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000db18262000d8d565b915062000dbe8362000d97565b925062000ded7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ca1565b905092915050565b600062000e028262000d8d565b915062000e0f8362000d8d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e4b5762000e4a62000c0a565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e888262000e5b565b9050919050565b62000e9a8162000e7b565b811462000ea657600080fd5b50565b60008151905062000eba8162000e8f565b92915050565b60006020828403121562000ed95762000ed862000e56565b5b600062000ee98482850162000ea9565b91505092915050565b62000efd8162000e7b565b82525050565b600060408201905062000f1a600083018562000ef2565b62000f29602083018462000ef2565b9392505050565b62000f3b8162000d8d565b82525050565b600060208201905062000f58600083018462000f30565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101562000f9a57808201518184015260208101905062000f7d565b8381111562000faa576000848401525b50505050565b6000601f19601f8301169050919050565b600062000fce8262000f5e565b62000fda818562000f69565b935062000fec81856020860162000f7a565b62000ff78162000fb0565b840191505092915050565b600060208201905081810360008301526200101e818462000fc1565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010628262000d8d565b91506200106f8362000d8d565b92508262001082576200108162001026565b5b828204905092915050565b61454a806200109d6000396000f3fe6080604052600436106103545760003560e01c806377359aa7116101c6578063be80d447116100f7578063f16c5bb011610095578063f887ea401161006f578063f887ea4014610c39578063f8b45b0514610c64578063fabe628314610c8f578063ffb54a9914610cb85761035b565b8063f16c5bb014610bbc578063f2fde38b14610be7578063f708a64f14610c105761035b565b8063caa5581b116100d1578063caa5581b14610b02578063d920334e14610b2d578063dd62ed3e14610b56578063e26a78ff14610b935761035b565b8063be80d44714610a95578063c45a015514610aac578063c8d1293d14610ad75761035b565b80638ea5220f11610164578063a72a90381161013e578063a72a9038146109ed578063a8aa1b3114610a04578063a9059cbb14610a2f578063bb542ef014610a6c5761035b565b80638ea5220f1461096e57806395d89b4114610999578063a3a2e89e146109c45761035b565b80638267f649116101a05780638267f649146108d857806389291a8f146108ef578063893d20e8146109065780638b42507f146109315761035b565b806377359aa7146108495780637db1342c1461088657806381934031146108af5761035b565b806330ca34ee116102a05780634a74bb021161023e57806366eb37851161021857806366eb37851461079f57806370a08231146107b65780637437681e146107f357806375df13051461081e5761035b565b80634a74bb021461070c578063571ac8b0146107375780636303516c146107745761035b565b80633f4218e01161027a5780633f4218e01461063c5780634355855a1461067957806345434377146106b657806347062402146106e15761035b565b806330ca34ee146105bf578063313ce567146105e85780633dab5269146106135761035b565b806323b872dd1161030d5780632b14ca56116102e75780632b14ca56146105055780632d48e896146105305780632dbea2e1146105595780632f54bf6e146105825761035b565b806323b872dd14610472578063261801c9146104af5780632b112e49146104da5761035b565b80630445b6671461036057806306fdde031461038b578063095ea7b3146103b657806318160ddd146103f35780631f53ac021461041e57806322da51fd146104475761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610ce3565b6040516103829190613608565b60405180910390f35b34801561039757600080fd5b506103a0610ce9565b6040516103ad91906136bc565b60405180910390f35b3480156103c257600080fd5b506103dd60048036038101906103d8919061376d565b610d26565b6040516103ea91906137c8565b60405180910390f35b3480156103ff57600080fd5b50610408610e18565b6040516104159190613608565b60405180910390f35b34801561042a57600080fd5b5061044560048036038101906104409190613821565b610e22565b005b34801561045357600080fd5b5061045c610eae565b60405161046991906138ad565b60405180910390f35b34801561047e57600080fd5b50610499600480360381019061049491906138c8565b610ed4565b6040516104a691906137c8565b60405180910390f35b3480156104bb57600080fd5b506104c46110d4565b6040516104d19190613608565b60405180910390f35b3480156104e657600080fd5b506104ef6110da565b6040516104fc9190613608565b60405180910390f35b34801561051157600080fd5b5061051a61115c565b6040516105279190613608565b60405180910390f35b34801561053c57600080fd5b506105576004803603810190610552919061391b565b611162565b005b34801561056557600080fd5b50610580600480360381019061057b919061395b565b61123d565b005b34801561058e57600080fd5b506105a960048036038101906105a491906139ae565b61129f565b6040516105b691906137c8565b60405180910390f35b3480156105cb57600080fd5b506105e660048036038101906105e1919061391b565b6112f8565b005b3480156105f457600080fd5b506105fd6113de565b60405161060a91906139f7565b60405180910390f35b34801561061f57600080fd5b5061063a60048036038101906106359190613a3e565b6113e7565b005b34801561064857600080fd5b50610663600480360381019061065e91906139ae565b611454565b60405161067091906137c8565b60405180910390f35b34801561068557600080fd5b506106a0600480360381019061069b91906139ae565b611474565b6040516106ad91906137c8565b60405180910390f35b3480156106c257600080fd5b506106cb611494565b6040516106d89190613608565b60405180910390f35b3480156106ed57600080fd5b506106f661149a565b6040516107039190613608565b60405180910390f35b34801561071857600080fd5b506107216114a0565b60405161072e91906137c8565b60405180910390f35b34801561074357600080fd5b5061075e600480360381019061075991906139ae565b6114b3565b60405161076b91906137c8565b60405180910390f35b34801561078057600080fd5b506107896114e6565b6040516107969190613a8d565b60405180910390f35b3480156107ab57600080fd5b506107b461150c565b005b3480156107c257600080fd5b506107dd60048036038101906107d891906139ae565b61155e565b6040516107ea9190613608565b60405180910390f35b3480156107ff57600080fd5b506108086115a7565b6040516108159190613608565b60405180910390f35b34801561082a57600080fd5b506108336115ad565b6040516108409190613608565b60405180910390f35b34801561085557600080fd5b50610870600480360381019061086b91906139ae565b6115b3565b60405161087d9190613608565b60405180910390f35b34801561089257600080fd5b506108ad60048036038101906108a89190613aa8565b611658565b005b3480156108bb57600080fd5b506108d660048036038101906108d19190613aa8565b6116ef565b005b3480156108e457600080fd5b506108ed6117c7565b005b3480156108fb57600080fd5b5061090461182c565b005b34801561091257600080fd5b5061091b6118ef565b6040516109289190613a8d565b60405180910390f35b34801561093d57600080fd5b50610958600480360381019061095391906139ae565b611918565b60405161096591906137c8565b60405180910390f35b34801561097a57600080fd5b50610983611938565b6040516109909190613a8d565b60405180910390f35b3480156109a557600080fd5b506109ae61195e565b6040516109bb91906136bc565b60405180910390f35b3480156109d057600080fd5b506109eb60048036038101906109e69190613ad5565b61199b565b005b3480156109f957600080fd5b50610a02611a3e565b005b348015610a1057600080fd5b50610a19611b10565b604051610a269190613a8d565b60405180910390f35b348015610a3b57600080fd5b50610a566004803603810190610a51919061376d565b611b36565b604051610a6391906137c8565b60405180910390f35b348015610a7857600080fd5b50610a936004803603810190610a8e9190613821565b611b4b565b005b348015610aa157600080fd5b50610aaa611bd7565b005b348015610ab857600080fd5b50610ac1611c66565b604051610ace9190613a8d565b60405180910390f35b348015610ae357600080fd5b50610aec611c8c565b604051610af99190613608565b60405180910390f35b348015610b0e57600080fd5b50610b17611c92565b604051610b249190613608565b60405180910390f35b348015610b3957600080fd5b50610b546004803603810190610b4f9190613aa8565b611c98565b005b348015610b6257600080fd5b50610b7d6004803603810190610b789190613b15565b611d2f565b604051610b8a9190613608565b60405180910390f35b348015610b9f57600080fd5b50610bba6004803603810190610bb59190613aa8565b611db6565b005b348015610bc857600080fd5b50610bd1611e08565b604051610bde9190613a8d565b60405180910390f35b348015610bf357600080fd5b50610c0e6004803603810190610c099190613821565b611e2e565b005b348015610c1c57600080fd5b50610c376004803603810190610c329190613ad5565b611ef0565b005b348015610c4557600080fd5b50610c4e611f46565b604051610c5b9190613b88565b60405180910390f35b348015610c7057600080fd5b50610c79611f6c565b604051610c869190613608565b60405180910390f35b348015610c9b57600080fd5b50610cb66004803603810190610cb19190613ad5565b611f72565b005b348015610cc457600080fd5b50610ccd612015565b604051610cda91906137c8565b60405180910390f35b601c5481565b60606040518060400160405280600c81526020017f42616e6b206f6620244449450000000000000000000000000000000000000000815250905090565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610e069190613608565b60405180910390a36001905092915050565b6000600254905090565b610e2b3361129f565b610e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6190613bef565b60405180910390fd5b80601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146110c05761103f826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120729092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6110cb8484846120d6565b90509392505050565b60195481565b600061115761110a600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661155e565b611149611138600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661155e565b60025461292190919063ffffffff16565b61292190919063ffffffff16565b905090565b600e5481565b61116b3361129f565b6111aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a190613bef565b60405180910390fd5b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b8152600401611207929190613c0f565b600060405180830381600087803b15801561122157600080fd5b505af1158015611235573d6000803e3d6000fd5b505050505050565b6112463361129f565b611285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127c90613bef565b60405180910390fd5b82600f819055508160108190555080601181905550505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6113013361129f565b611340576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133790613bef565b60405180910390fd5b81600d8190555080600e819055506007600d541115611394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138b90613c84565b60405180910390fd5b6007600e5411156113da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d190613c84565b60405180910390fd5b5050565b60006012905090565b6113f03361129f565b61142f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142690613bef565b60405180910390fd5b81601760156101000a81548160ff02191690831515021790555080601c819055505050565b60096020528060005260406000206000915054906101000a900460ff1681565b600b6020528060005260406000206000915054906101000a900460ff1681565b60125481565b600d5481565b601760159054906101000a900460ff1681565b60006114df827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610d26565b9050919050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6115153361129f565b611554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154b90613bef565b60405180910390fd5b61155c61296b565b565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601a5481565b60115481565b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fd3198836040518263ffffffff1660e01b81526004016116109190613a8d565b602060405180830381865afa15801561162d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116519190613cb9565b9050919050565b6116613361129f565b6116a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169790613bef565b60405180910390fd5b601b548110156116e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116dc90613d32565b60405180910390fd5b80601b8190555050565b6116f83361129f565b611737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172e90613bef565b60405180910390fd5b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479826040518263ffffffff1660e01b81526004016117929190613608565b600060405180830381600087803b1580156117ac57600080fd5b505af11580156117c0573d6000803e3d6000fd5b5050505050565b6117d03361129f565b61180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180690613bef565b60405180910390fd5b6001601760166101000a81548160ff021916908315150217905550565b6118353361129f565b611874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186b90613bef565b60405180910390fd5b600047905060008111156118ec57601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156118ea573d6000803e3d6000fd5b505b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a6020528060005260406000206000915054906101000a900460ff1681565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600481526020017f4449454200000000000000000000000000000000000000000000000000000000815250905090565b6119a43361129f565b6119e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119da90613bef565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611a473361129f565b611a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7d90613bef565b60405180910390fd5b601760169054906101000a900460ff1615611ad6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acd90613d9e565b60405180910390fd5b611aec606460025461202890919063ffffffff16565b601a81905550611b08606460025461202890919063ffffffff16565b601b81905550565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611b433384846120d6565b905092915050565b611b543361129f565b611b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8a90613bef565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e573d374336040518263ffffffff1660e01b8152600401611c329190613a8d565b600060405180830381600087803b158015611c4c57600080fd5b505af1158015611c60573d6000803e3d6000fd5b50505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b600f5481565b611ca13361129f565b611ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd790613bef565b60405180910390fd5b601a54811015611d25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1c90613e0a565b60405180910390fd5b80601a8190555050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611dbf3361129f565b611dfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df590613bef565b60405180910390fd5b8060198190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e373361129f565b611e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6d90613bef565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611ee59190613e4b565b60405180910390a150565b611ef93361129f565b611f38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2f90613bef565b60405180910390fd5b611f428282612bed565b5050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b5481565b611f7b3361129f565b611fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb190613bef565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601760169054906101000a900460ff1681565b600061206a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612e45565b905092915050565b60008383111582906120ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b191906136bc565b60405180910390fd5b50600083856120c99190613e95565b9050809150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612181575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156121d657601760169054906101000a900460ff166121d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cc90613f15565b60405180910390fd5b5b601760149054906101000a900460ff16156121fd576121f6848484612ea8565b905061291a565b601a54821115806122575750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228d90613f81565b60405180910390fd5b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661237e57601b5461233c83600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461307b90919063ffffffff16565b111561237d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237490613fed565b60405180910390fd5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156123e95750601760149054906101000a900460ff16155b80156124015750601760159054906101000a900460ff165b801561244e5750601c54600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b1561245c5761245b61296b565b5b6124e5826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120729092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125ce5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6125d857826125e4565b6125e38585856130d9565b5b905061263881600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461307b90919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661279557601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161276892919061400d565b600060405180830381600087803b15801561278257600080fd5b505af1925050508015612793575060015b505b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166128af57601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161288292919061400d565b600060405180830381600087803b15801561289c57600080fd5b505af19250505080156128ad575060015b505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161290c9190613608565b60405180910390a360019150505b9392505050565b600061296383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612072565b905092915050565b6001601760146101000a81548160ff0219169083151502179055506000600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000612a0760026129f960646129eb6010548761328190919063ffffffff16565b61202890919063ffffffff16565b61202890919063ffffffff16565b90506000612a1e828461292190919063ffffffff16565b9050612a29816132fb565b60004790506000612a586064612a4a600f548561328190919063ffffffff16565b61202890919063ffffffff16565b90506000612a846064612a766011548661328190919063ffffffff16565b61202890919063ffffffff16565b90506000612ac36002612ab56064612aa76010548961328190919063ffffffff16565b61202890919063ffffffff16565b61202890919063ffffffff16565b90506000841115612b3857601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612b36573d6000803e3d6000fd5b505b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015612ba257600080fd5b505af193505050508015612bb4575060015b506000861115612bc957612bc8868261351c565b5b505050505050506000601760146101000a81548160ff021916908315150217905550565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612c775750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612c8057600080fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015612d7257601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401612d3b929190614071565b600060405180830381600087803b158015612d5557600080fd5b505af1158015612d69573d6000803e3d6000fd5b50505050612e41565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612e0e92919061400d565b600060405180830381600087803b158015612e2857600080fd5b505af1158015612e3c573d6000803e3d6000fd5b505050505b5050565b60008083118290612e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8391906136bc565b60405180910390fd5b5060008385612e9b91906140c9565b9050809150509392505050565b6000612f33826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120729092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fc882600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461307b90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130689190613608565b60405180910390a3600190509392505050565b600080828461308a91906140fa565b9050838110156130cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130c69061419c565b60405180910390fd5b8091505092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461313957600d5461313d565b600e545b905060006131676064613159848761328190919063ffffffff16565b61202890919063ffffffff16565b90506131bb81600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461307b90919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161325b9190613608565b60405180910390a3613276818561292190919063ffffffff16565b925050509392505050565b600080830361329357600090506132f5565b600082846132a191906141bc565b90508284826132b091906140c9565b146132f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132e790614288565b60405180910390fd5b809150505b92915050565b6000600267ffffffffffffffff811115613318576133176142a8565b5b6040519080825280602002602001820160405280156133465781602001602082028036833780820191505090505b509050308160008151811061335e5761335d6142d7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613405573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613429919061431b565b8160018151811061343d5761343c6142d7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506134813083610d26565b50601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016134e6959493929190614406565b600060405180830381600087803b15801561350057600080fd5b505af1158015613514573d6000803e3d6000fd5b505050505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016135a596959493929190614460565b60606040518083038185885af11580156135c3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906135e891906144c1565b5050505050565b6000819050919050565b613602816135ef565b82525050565b600060208201905061361d60008301846135f9565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561365d578082015181840152602081019050613642565b8381111561366c576000848401525b50505050565b6000601f19601f8301169050919050565b600061368e82613623565b613698818561362e565b93506136a881856020860161363f565b6136b181613672565b840191505092915050565b600060208201905081810360008301526136d68184613683565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061370e826136e3565b9050919050565b61371e81613703565b811461372957600080fd5b50565b60008135905061373b81613715565b92915050565b61374a816135ef565b811461375557600080fd5b50565b60008135905061376781613741565b92915050565b60008060408385031215613784576137836136de565b5b60006137928582860161372c565b92505060206137a385828601613758565b9150509250929050565b60008115159050919050565b6137c2816137ad565b82525050565b60006020820190506137dd60008301846137b9565b92915050565b60006137ee826136e3565b9050919050565b6137fe816137e3565b811461380957600080fd5b50565b60008135905061381b816137f5565b92915050565b600060208284031215613837576138366136de565b5b60006138458482850161380c565b91505092915050565b6000819050919050565b600061387361386e613869846136e3565b61384e565b6136e3565b9050919050565b600061388582613858565b9050919050565b60006138978261387a565b9050919050565b6138a78161388c565b82525050565b60006020820190506138c2600083018461389e565b92915050565b6000806000606084860312156138e1576138e06136de565b5b60006138ef8682870161372c565b93505060206139008682870161372c565b925050604061391186828701613758565b9150509250925092565b60008060408385031215613932576139316136de565b5b600061394085828601613758565b925050602061395185828601613758565b9150509250929050565b600080600060608486031215613974576139736136de565b5b600061398286828701613758565b935050602061399386828701613758565b92505060406139a486828701613758565b9150509250925092565b6000602082840312156139c4576139c36136de565b5b60006139d28482850161372c565b91505092915050565b600060ff82169050919050565b6139f1816139db565b82525050565b6000602082019050613a0c60008301846139e8565b92915050565b613a1b816137ad565b8114613a2657600080fd5b50565b600081359050613a3881613a12565b92915050565b60008060408385031215613a5557613a546136de565b5b6000613a6385828601613a29565b9250506020613a7485828601613758565b9150509250929050565b613a8781613703565b82525050565b6000602082019050613aa26000830184613a7e565b92915050565b600060208284031215613abe57613abd6136de565b5b6000613acc84828501613758565b91505092915050565b60008060408385031215613aec57613aeb6136de565b5b6000613afa8582860161372c565b9250506020613b0b85828601613a29565b9150509250929050565b60008060408385031215613b2c57613b2b6136de565b5b6000613b3a8582860161372c565b9250506020613b4b8582860161372c565b9150509250929050565b6000613b6082613858565b9050919050565b6000613b7282613b55565b9050919050565b613b8281613b67565b82525050565b6000602082019050613b9d6000830184613b79565b92915050565b7f214f776e65720000000000000000000000000000000000000000000000000000600082015250565b6000613bd960068361362e565b9150613be482613ba3565b602082019050919050565b60006020820190508181036000830152613c0881613bcc565b9050919050565b6000604082019050613c2460008301856135f9565b613c3160208301846135f9565b9392505050565b7f746f6f2068696768000000000000000000000000000000000000000000000000600082015250565b6000613c6e60088361362e565b9150613c7982613c38565b602082019050919050565b60006020820190508181036000830152613c9d81613c61565b9050919050565b600081519050613cb381613741565b92915050565b600060208284031215613ccf57613cce6136de565b5b6000613cdd84828501613ca4565b91505092915050565b7f43616e206e6f74206c6f776572206d61782077616c6c65740000000000000000600082015250565b6000613d1c60188361362e565b9150613d2782613ce6565b602082019050919050565b60006020820190508181036000830152613d4b81613d0f565b9050919050565b7f4265686176652e00000000000000000000000000000000000000000000000000600082015250565b6000613d8860078361362e565b9150613d9382613d52565b602082019050919050565b60006020820190508181036000830152613db781613d7b565b9050919050565b7f43616e206e6f74206c6f776572206d6178207478000000000000000000000000600082015250565b6000613df460148361362e565b9150613dff82613dbe565b602082019050919050565b60006020820190508181036000830152613e2381613de7565b9050919050565b6000613e3582613b55565b9050919050565b613e4581613e2a565b82525050565b6000602082019050613e606000830184613e3c565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613ea0826135ef565b9150613eab836135ef565b925082821015613ebe57613ebd613e66565b5b828203905092915050565b7f63616c6d20646f776e2073657200000000000000000000000000000000000000600082015250565b6000613eff600d8361362e565b9150613f0a82613ec9565b602082019050919050565b60006020820190508181036000830152613f2e81613ef2565b9050919050565b7f7478000000000000000000000000000000000000000000000000000000000000600082015250565b6000613f6b60028361362e565b9150613f7682613f35565b602082019050919050565b60006020820190508181036000830152613f9a81613f5e565b9050919050565b7f77616c6c65740000000000000000000000000000000000000000000000000000600082015250565b6000613fd760068361362e565b9150613fe282613fa1565b602082019050919050565b6000602082019050818103600083015261400681613fca565b9050919050565b60006040820190506140226000830185613a7e565b61402f60208301846135f9565b9392505050565b6000819050919050565b600061405b61405661405184614036565b61384e565b6135ef565b9050919050565b61406b81614040565b82525050565b60006040820190506140866000830185613a7e565b6140936020830184614062565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006140d4826135ef565b91506140df836135ef565b9250826140ef576140ee61409a565b5b828204905092915050565b6000614105826135ef565b9150614110836135ef565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561414557614144613e66565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614186601b8361362e565b915061419182614150565b602082019050919050565b600060208201905081810360008301526141b581614179565b9050919050565b60006141c7826135ef565b91506141d2836135ef565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561420b5761420a613e66565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061427260218361362e565b915061427d82614216565b604082019050919050565b600060208201905081810360008301526142a181614265565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061431581613715565b92915050565b600060208284031215614331576143306136de565b5b600061433f84828501614306565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61437d81613703565b82525050565b600061438f8383614374565b60208301905092915050565b6000602082019050919050565b60006143b382614348565b6143bd8185614353565b93506143c883614364565b8060005b838110156143f95781516143e08882614383565b97506143eb8361439b565b9250506001810190506143cc565b5085935050505092915050565b600060a08201905061441b60008301886135f9565b6144286020830187614062565b818103604083015261443a81866143a8565b90506144496060830185613a7e565b61445660808301846135f9565b9695505050505050565b600060c0820190506144756000830189613a7e565b61448260208301886135f9565b61448f6040830187614062565b61449c6060830186614062565b6144a96080830185613a7e565b6144b660a08301846135f9565b979650505050505050565b6000806000606084860312156144da576144d96136de565b5b60006144e886828701613ca4565b93505060206144f986828701613ca4565b925050604061450a86828701613ca4565b915050925092509256fea26469706673582212201f967b2d4f0e07ce468324bfe8a7b155233b325c3cc86e5eb4f1a22d5c9d67b264736f6c634300080d003360806040526ec097ce7bc90715b34b9f1000000000600b55610708600c556000600d5534801561002e57600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550736ef6610d24593805144d73b13d4405e00a4e4ac7600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611f24806101286000396000f3fe6080604052600436106101025760003560e01c8063997664d711610095578063e573d37411610064578063e573d3741461032d578063efca2eed14610356578063f16c5bb014610381578063ffb2c479146103ac578063ffd49c84146103d557610111565b8063997664d71461028e578063ce7c2ac2146102b9578063d0e30db0146102f8578063e2d2e2191461030257610111565b80632d48e896116100d15780632d48e896146101d25780633a98ef39146101fb5780634fab0ae8146102265780638c21cd521461025157610111565b806311ce023d1461011657806314b6ca961461014157806326987b601461016a57806328fd31981461019557610111565b366101115761010f610400565b005b600080fd5b34801561012257600080fd5b5061012b6107e8565b604051610138919061167d565b60405180910390f35b34801561014d57600080fd5b5061016860048036038101906101639190611727565b6107ee565b005b34801561017657600080fd5b5061017f610aad565b60405161018c919061167d565b60405180910390f35b3480156101a157600080fd5b506101bc60048036038101906101b79190611767565b610ab3565b6040516101c9919061167d565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f49190611794565b610bcc565b005b34801561020757600080fd5b50610210610c36565b60405161021d919061167d565b60405180910390f35b34801561023257600080fd5b5061023b610c3c565b604051610248919061167d565b60405180910390f35b34801561025d57600080fd5b5061027860048036038101906102739190611767565b610c42565b60405161028591906117ef565b60405180910390f35b34801561029a57600080fd5b506102a3610caf565b6040516102b0919061167d565b60405180910390f35b3480156102c557600080fd5b506102e060048036038101906102db9190611767565b610cb5565b6040516102ef9392919061180a565b60405180910390f35b610300610400565b005b34801561030e57600080fd5b50610317610cdf565b604051610324919061167d565b60405180910390f35b34801561033957600080fd5b50610354600480360381019061034f9190611767565b610ce5565b005b34801561036257600080fd5b5061036b610d49565b604051610378919061167d565b60405180910390f35b34801561038d57600080fd5b50610396610d4f565b6040516103a39190611850565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce919061186b565b610d75565b005b3480156103e157600080fd5b506103ea610eb0565b6040516103f7919061167d565b60405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161045d9190611850565b602060405180830381865afa15801561047a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049e91906118ad565b90506000600267ffffffffffffffff8111156104bd576104bc6118da565b5b6040519080825280602002602001820160405280156104eb5781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561055b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057f919061191e565b816000815181106105935761059261194b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106106045761060361194b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b81526004016106a19493929190611a7d565b6000604051808303818588803b1580156106ba57600080fd5b505af11580156106ce573d6000803e3d6000fd5b5050505050600061078383600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016107349190611850565b602060405180830381865afa158015610751573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077591906118ad565b610eb690919063ffffffff16565b905061079a81600854610f0090919063ffffffff16565b6008819055506107dd6107cc6007546107be84600b54610f5e90919063ffffffff16565b610fd890919063ffffffff16565b600a54610f0090919063ffffffff16565b600a81905550505050565b600b5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461084657600080fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154111561089b5761089a82611022565b5b6000811180156108ed57506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b15610900576108fb826112b5565b610962565b60008114801561095257506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156109615761096082611364565b5b5b6109cb816109bd600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600754610eb690919063ffffffff16565b610f0090919063ffffffff16565b60078190555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550610a63600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461156b565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600e5481565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015403610b075760009050610bc7565b6000610b54600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461156b565b90506000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050808211610baf57600092505050610bc7565b610bc28183610eb690919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c2457600080fd5b81600c8190555080600d819055505050565b60075481565b600d5481565b600042600c54600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c929190611af8565b108015610ca85750600d54610ca683610ab3565b115b9050919050565b60085481565b60066020528060005260406000206000915090508060000154908060010154908060020154905083565b600a5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d3d57600080fd5b610d4681611022565b50565b60095481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600380549050905060008103610d8d5750610ead565b60008060005a90505b8482108015610da457508383105b15610ea85783600e5410610dbb576000600e819055505b610e046003600e5481548110610dd457610dd361194b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610c42565b15610e5357610e526003600e5481548110610e2257610e2161194b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611022565b5b610e78610e695a83610eb690919063ffffffff16565b83610f0090919063ffffffff16565b91505a9050600e6000815480929190610e9090611b4e565b91905055508280610ea090611b4e565b935050610d96565b505050505b50565b600c5481565b6000610ef883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061159d565b905092915050565b6000808284610f0f9190611af8565b905083811015610f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4b90611bf3565b60405180910390fd5b8091505092915050565b6000808303610f705760009050610fd2565b60008284610f7e9190611c13565b9050828482610f8d9190611c9c565b14610fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc490611d3f565b60405180910390fd5b809150505b92915050565b600061101a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611601565b905092915050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015403156112b257600061107882610ab3565b905060008111156112b05761109881600954610f0090919063ffffffff16565b600981905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016110fb929190611d5f565b6020604051808303816000875af115801561111a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113e9190611db4565b5042600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111d881600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154610f0090919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550611269600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461156b565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600380549050600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360016003805490506113789190611de1565b815481106113895761138861194b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815481106114075761140661194b565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460046000600360016003805490506114a79190611de1565b815481106114b8576114b761194b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600380548061153357611532611e15565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b6000611596600b54611588600a5485610f5e90919063ffffffff16565b610fd890919063ffffffff16565b9050919050565b60008383111582906115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc9190611ecc565b60405180910390fd5b50600083856115f49190611de1565b9050809150509392505050565b60008083118290611648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163f9190611ecc565b60405180910390fd5b50600083856116579190611c9c565b9050809150509392505050565b6000819050919050565b61167781611664565b82525050565b6000602082019050611692600083018461166e565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006116c88261169d565b9050919050565b6116d8816116bd565b81146116e357600080fd5b50565b6000813590506116f5816116cf565b92915050565b61170481611664565b811461170f57600080fd5b50565b600081359050611721816116fb565b92915050565b6000806040838503121561173e5761173d611698565b5b600061174c858286016116e6565b925050602061175d85828601611712565b9150509250929050565b60006020828403121561177d5761177c611698565b5b600061178b848285016116e6565b91505092915050565b600080604083850312156117ab576117aa611698565b5b60006117b985828601611712565b92505060206117ca85828601611712565b9150509250929050565b60008115159050919050565b6117e9816117d4565b82525050565b600060208201905061180460008301846117e0565b92915050565b600060608201905061181f600083018661166e565b61182c602083018561166e565b611839604083018461166e565b949350505050565b61184a816116bd565b82525050565b60006020820190506118656000830184611841565b92915050565b60006020828403121561188157611880611698565b5b600061188f84828501611712565b91505092915050565b6000815190506118a7816116fb565b92915050565b6000602082840312156118c3576118c2611698565b5b60006118d184828501611898565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050611918816116cf565b92915050565b60006020828403121561193457611933611698565b5b600061194284828501611909565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b60006119a96119a461199f8461197a565b611984565b611664565b9050919050565b6119b98161198e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6119f4816116bd565b82525050565b6000611a0683836119eb565b60208301905092915050565b6000602082019050919050565b6000611a2a826119bf565b611a3481856119ca565b9350611a3f836119db565b8060005b83811015611a70578151611a5788826119fa565b9750611a6283611a12565b925050600181019050611a43565b5085935050505092915050565b6000608082019050611a9260008301876119b0565b8181036020830152611aa48186611a1f565b9050611ab36040830185611841565b611ac0606083018461166e565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b0382611664565b9150611b0e83611664565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611b4357611b42611ac9565b5b828201905092915050565b6000611b5982611664565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611b8b57611b8a611ac9565b5b600182019050919050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000611bdd601b83611b96565b9150611be882611ba7565b602082019050919050565b60006020820190508181036000830152611c0c81611bd0565b9050919050565b6000611c1e82611664565b9150611c2983611664565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611c6257611c61611ac9565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611ca782611664565b9150611cb283611664565b925082611cc257611cc1611c6d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000611d29602183611b96565b9150611d3482611ccd565b604082019050919050565b60006020820190508181036000830152611d5881611d1c565b9050919050565b6000604082019050611d746000830185611841565b611d81602083018461166e565b9392505050565b611d91816117d4565b8114611d9c57600080fd5b50565b600081519050611dae81611d88565b92915050565b600060208284031215611dca57611dc9611698565b5b6000611dd884828501611d9f565b91505092915050565b6000611dec82611664565b9150611df783611664565b925082821015611e0a57611e09611ac9565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081519050919050565b60005b83811015611e6d578082015181840152602081019050611e52565b83811115611e7c576000848401525b50505050565b6000601f19601f8301169050919050565b6000611e9e82611e44565b611ea88185611b96565b9350611eb8818560208601611e4f565b611ec181611e82565b840191505092915050565b60006020820190508181036000830152611ee68184611e93565b90509291505056fea26469706673582212205e05f8061b4f3d8be30c0ba91b7ddda1f406f0a57ea059bdb4aff6933ce65d6564736f6c634300080d003300000000000000000000000003cd3d2167333e3f04f8fefdced93db6d3de63bf

Deployed Bytecode

0x6080604052600436106103545760003560e01c806377359aa7116101c6578063be80d447116100f7578063f16c5bb011610095578063f887ea401161006f578063f887ea4014610c39578063f8b45b0514610c64578063fabe628314610c8f578063ffb54a9914610cb85761035b565b8063f16c5bb014610bbc578063f2fde38b14610be7578063f708a64f14610c105761035b565b8063caa5581b116100d1578063caa5581b14610b02578063d920334e14610b2d578063dd62ed3e14610b56578063e26a78ff14610b935761035b565b8063be80d44714610a95578063c45a015514610aac578063c8d1293d14610ad75761035b565b80638ea5220f11610164578063a72a90381161013e578063a72a9038146109ed578063a8aa1b3114610a04578063a9059cbb14610a2f578063bb542ef014610a6c5761035b565b80638ea5220f1461096e57806395d89b4114610999578063a3a2e89e146109c45761035b565b80638267f649116101a05780638267f649146108d857806389291a8f146108ef578063893d20e8146109065780638b42507f146109315761035b565b806377359aa7146108495780637db1342c1461088657806381934031146108af5761035b565b806330ca34ee116102a05780634a74bb021161023e57806366eb37851161021857806366eb37851461079f57806370a08231146107b65780637437681e146107f357806375df13051461081e5761035b565b80634a74bb021461070c578063571ac8b0146107375780636303516c146107745761035b565b80633f4218e01161027a5780633f4218e01461063c5780634355855a1461067957806345434377146106b657806347062402146106e15761035b565b806330ca34ee146105bf578063313ce567146105e85780633dab5269146106135761035b565b806323b872dd1161030d5780632b14ca56116102e75780632b14ca56146105055780632d48e896146105305780632dbea2e1146105595780632f54bf6e146105825761035b565b806323b872dd14610472578063261801c9146104af5780632b112e49146104da5761035b565b80630445b6671461036057806306fdde031461038b578063095ea7b3146103b657806318160ddd146103f35780631f53ac021461041e57806322da51fd146104475761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610ce3565b6040516103829190613608565b60405180910390f35b34801561039757600080fd5b506103a0610ce9565b6040516103ad91906136bc565b60405180910390f35b3480156103c257600080fd5b506103dd60048036038101906103d8919061376d565b610d26565b6040516103ea91906137c8565b60405180910390f35b3480156103ff57600080fd5b50610408610e18565b6040516104159190613608565b60405180910390f35b34801561042a57600080fd5b5061044560048036038101906104409190613821565b610e22565b005b34801561045357600080fd5b5061045c610eae565b60405161046991906138ad565b60405180910390f35b34801561047e57600080fd5b50610499600480360381019061049491906138c8565b610ed4565b6040516104a691906137c8565b60405180910390f35b3480156104bb57600080fd5b506104c46110d4565b6040516104d19190613608565b60405180910390f35b3480156104e657600080fd5b506104ef6110da565b6040516104fc9190613608565b60405180910390f35b34801561051157600080fd5b5061051a61115c565b6040516105279190613608565b60405180910390f35b34801561053c57600080fd5b506105576004803603810190610552919061391b565b611162565b005b34801561056557600080fd5b50610580600480360381019061057b919061395b565b61123d565b005b34801561058e57600080fd5b506105a960048036038101906105a491906139ae565b61129f565b6040516105b691906137c8565b60405180910390f35b3480156105cb57600080fd5b506105e660048036038101906105e1919061391b565b6112f8565b005b3480156105f457600080fd5b506105fd6113de565b60405161060a91906139f7565b60405180910390f35b34801561061f57600080fd5b5061063a60048036038101906106359190613a3e565b6113e7565b005b34801561064857600080fd5b50610663600480360381019061065e91906139ae565b611454565b60405161067091906137c8565b60405180910390f35b34801561068557600080fd5b506106a0600480360381019061069b91906139ae565b611474565b6040516106ad91906137c8565b60405180910390f35b3480156106c257600080fd5b506106cb611494565b6040516106d89190613608565b60405180910390f35b3480156106ed57600080fd5b506106f661149a565b6040516107039190613608565b60405180910390f35b34801561071857600080fd5b506107216114a0565b60405161072e91906137c8565b60405180910390f35b34801561074357600080fd5b5061075e600480360381019061075991906139ae565b6114b3565b60405161076b91906137c8565b60405180910390f35b34801561078057600080fd5b506107896114e6565b6040516107969190613a8d565b60405180910390f35b3480156107ab57600080fd5b506107b461150c565b005b3480156107c257600080fd5b506107dd60048036038101906107d891906139ae565b61155e565b6040516107ea9190613608565b60405180910390f35b3480156107ff57600080fd5b506108086115a7565b6040516108159190613608565b60405180910390f35b34801561082a57600080fd5b506108336115ad565b6040516108409190613608565b60405180910390f35b34801561085557600080fd5b50610870600480360381019061086b91906139ae565b6115b3565b60405161087d9190613608565b60405180910390f35b34801561089257600080fd5b506108ad60048036038101906108a89190613aa8565b611658565b005b3480156108bb57600080fd5b506108d660048036038101906108d19190613aa8565b6116ef565b005b3480156108e457600080fd5b506108ed6117c7565b005b3480156108fb57600080fd5b5061090461182c565b005b34801561091257600080fd5b5061091b6118ef565b6040516109289190613a8d565b60405180910390f35b34801561093d57600080fd5b50610958600480360381019061095391906139ae565b611918565b60405161096591906137c8565b60405180910390f35b34801561097a57600080fd5b50610983611938565b6040516109909190613a8d565b60405180910390f35b3480156109a557600080fd5b506109ae61195e565b6040516109bb91906136bc565b60405180910390f35b3480156109d057600080fd5b506109eb60048036038101906109e69190613ad5565b61199b565b005b3480156109f957600080fd5b50610a02611a3e565b005b348015610a1057600080fd5b50610a19611b10565b604051610a269190613a8d565b60405180910390f35b348015610a3b57600080fd5b50610a566004803603810190610a51919061376d565b611b36565b604051610a6391906137c8565b60405180910390f35b348015610a7857600080fd5b50610a936004803603810190610a8e9190613821565b611b4b565b005b348015610aa157600080fd5b50610aaa611bd7565b005b348015610ab857600080fd5b50610ac1611c66565b604051610ace9190613a8d565b60405180910390f35b348015610ae357600080fd5b50610aec611c8c565b604051610af99190613608565b60405180910390f35b348015610b0e57600080fd5b50610b17611c92565b604051610b249190613608565b60405180910390f35b348015610b3957600080fd5b50610b546004803603810190610b4f9190613aa8565b611c98565b005b348015610b6257600080fd5b50610b7d6004803603810190610b789190613b15565b611d2f565b604051610b8a9190613608565b60405180910390f35b348015610b9f57600080fd5b50610bba6004803603810190610bb59190613aa8565b611db6565b005b348015610bc857600080fd5b50610bd1611e08565b604051610bde9190613a8d565b60405180910390f35b348015610bf357600080fd5b50610c0e6004803603810190610c099190613821565b611e2e565b005b348015610c1c57600080fd5b50610c376004803603810190610c329190613ad5565b611ef0565b005b348015610c4557600080fd5b50610c4e611f46565b604051610c5b9190613b88565b60405180910390f35b348015610c7057600080fd5b50610c79611f6c565b604051610c869190613608565b60405180910390f35b348015610c9b57600080fd5b50610cb66004803603810190610cb19190613ad5565b611f72565b005b348015610cc457600080fd5b50610ccd612015565b604051610cda91906137c8565b60405180910390f35b601c5481565b60606040518060400160405280600c81526020017f42616e6b206f6620244449450000000000000000000000000000000000000000815250905090565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610e069190613608565b60405180910390a36001905092915050565b6000600254905090565b610e2b3361129f565b610e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6190613bef565b60405180910390fd5b80601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146110c05761103f826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120729092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6110cb8484846120d6565b90509392505050565b60195481565b600061115761110a600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661155e565b611149611138600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661155e565b60025461292190919063ffffffff16565b61292190919063ffffffff16565b905090565b600e5481565b61116b3361129f565b6111aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a190613bef565b60405180910390fd5b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b8152600401611207929190613c0f565b600060405180830381600087803b15801561122157600080fd5b505af1158015611235573d6000803e3d6000fd5b505050505050565b6112463361129f565b611285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127c90613bef565b60405180910390fd5b82600f819055508160108190555080601181905550505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6113013361129f565b611340576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133790613bef565b60405180910390fd5b81600d8190555080600e819055506007600d541115611394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138b90613c84565b60405180910390fd5b6007600e5411156113da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d190613c84565b60405180910390fd5b5050565b60006012905090565b6113f03361129f565b61142f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142690613bef565b60405180910390fd5b81601760156101000a81548160ff02191690831515021790555080601c819055505050565b60096020528060005260406000206000915054906101000a900460ff1681565b600b6020528060005260406000206000915054906101000a900460ff1681565b60125481565b600d5481565b601760159054906101000a900460ff1681565b60006114df827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610d26565b9050919050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6115153361129f565b611554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154b90613bef565b60405180910390fd5b61155c61296b565b565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601a5481565b60115481565b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fd3198836040518263ffffffff1660e01b81526004016116109190613a8d565b602060405180830381865afa15801561162d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116519190613cb9565b9050919050565b6116613361129f565b6116a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169790613bef565b60405180910390fd5b601b548110156116e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116dc90613d32565b60405180910390fd5b80601b8190555050565b6116f83361129f565b611737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172e90613bef565b60405180910390fd5b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479826040518263ffffffff1660e01b81526004016117929190613608565b600060405180830381600087803b1580156117ac57600080fd5b505af11580156117c0573d6000803e3d6000fd5b5050505050565b6117d03361129f565b61180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180690613bef565b60405180910390fd5b6001601760166101000a81548160ff021916908315150217905550565b6118353361129f565b611874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186b90613bef565b60405180910390fd5b600047905060008111156118ec57601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156118ea573d6000803e3d6000fd5b505b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a6020528060005260406000206000915054906101000a900460ff1681565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600481526020017f4449454200000000000000000000000000000000000000000000000000000000815250905090565b6119a43361129f565b6119e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119da90613bef565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611a473361129f565b611a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7d90613bef565b60405180910390fd5b601760169054906101000a900460ff1615611ad6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acd90613d9e565b60405180910390fd5b611aec606460025461202890919063ffffffff16565b601a81905550611b08606460025461202890919063ffffffff16565b601b81905550565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611b433384846120d6565b905092915050565b611b543361129f565b611b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8a90613bef565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e573d374336040518263ffffffff1660e01b8152600401611c329190613a8d565b600060405180830381600087803b158015611c4c57600080fd5b505af1158015611c60573d6000803e3d6000fd5b50505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b600f5481565b611ca13361129f565b611ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd790613bef565b60405180910390fd5b601a54811015611d25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1c90613e0a565b60405180910390fd5b80601a8190555050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611dbf3361129f565b611dfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df590613bef565b60405180910390fd5b8060198190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e373361129f565b611e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6d90613bef565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611ee59190613e4b565b60405180910390a150565b611ef93361129f565b611f38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2f90613bef565b60405180910390fd5b611f428282612bed565b5050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b5481565b611f7b3361129f565b611fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb190613bef565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601760169054906101000a900460ff1681565b600061206a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612e45565b905092915050565b60008383111582906120ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b191906136bc565b60405180910390fd5b50600083856120c99190613e95565b9050809150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612181575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156121d657601760169054906101000a900460ff166121d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cc90613f15565b60405180910390fd5b5b601760149054906101000a900460ff16156121fd576121f6848484612ea8565b905061291a565b601a54821115806122575750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228d90613f81565b60405180910390fd5b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661237e57601b5461233c83600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461307b90919063ffffffff16565b111561237d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237490613fed565b60405180910390fd5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156123e95750601760149054906101000a900460ff16155b80156124015750601760159054906101000a900460ff165b801561244e5750601c54600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b1561245c5761245b61296b565b5b6124e5826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120729092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125ce5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6125d857826125e4565b6125e38585856130d9565b5b905061263881600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461307b90919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661279557601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161276892919061400d565b600060405180830381600087803b15801561278257600080fd5b505af1925050508015612793575060015b505b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166128af57601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161288292919061400d565b600060405180830381600087803b15801561289c57600080fd5b505af19250505080156128ad575060015b505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161290c9190613608565b60405180910390a360019150505b9392505050565b600061296383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612072565b905092915050565b6001601760146101000a81548160ff0219169083151502179055506000600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000612a0760026129f960646129eb6010548761328190919063ffffffff16565b61202890919063ffffffff16565b61202890919063ffffffff16565b90506000612a1e828461292190919063ffffffff16565b9050612a29816132fb565b60004790506000612a586064612a4a600f548561328190919063ffffffff16565b61202890919063ffffffff16565b90506000612a846064612a766011548661328190919063ffffffff16565b61202890919063ffffffff16565b90506000612ac36002612ab56064612aa76010548961328190919063ffffffff16565b61202890919063ffffffff16565b61202890919063ffffffff16565b90506000841115612b3857601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612b36573d6000803e3d6000fd5b505b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015612ba257600080fd5b505af193505050508015612bb4575060015b506000861115612bc957612bc8868261351c565b5b505050505050506000601760146101000a81548160ff021916908315150217905550565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612c775750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612c8057600080fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015612d7257601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401612d3b929190614071565b600060405180830381600087803b158015612d5557600080fd5b505af1158015612d69573d6000803e3d6000fd5b50505050612e41565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612e0e92919061400d565b600060405180830381600087803b158015612e2857600080fd5b505af1158015612e3c573d6000803e3d6000fd5b505050505b5050565b60008083118290612e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8391906136bc565b60405180910390fd5b5060008385612e9b91906140c9565b9050809150509392505050565b6000612f33826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120729092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fc882600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461307b90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130689190613608565b60405180910390a3600190509392505050565b600080828461308a91906140fa565b9050838110156130cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130c69061419c565b60405180910390fd5b8091505092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461313957600d5461313d565b600e545b905060006131676064613159848761328190919063ffffffff16565b61202890919063ffffffff16565b90506131bb81600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461307b90919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161325b9190613608565b60405180910390a3613276818561292190919063ffffffff16565b925050509392505050565b600080830361329357600090506132f5565b600082846132a191906141bc565b90508284826132b091906140c9565b146132f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132e790614288565b60405180910390fd5b809150505b92915050565b6000600267ffffffffffffffff811115613318576133176142a8565b5b6040519080825280602002602001820160405280156133465781602001602082028036833780820191505090505b509050308160008151811061335e5761335d6142d7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613405573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613429919061431b565b8160018151811061343d5761343c6142d7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506134813083610d26565b50601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016134e6959493929190614406565b600060405180830381600087803b15801561350057600080fd5b505af1158015613514573d6000803e3d6000fd5b505050505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016135a596959493929190614460565b60606040518083038185885af11580156135c3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906135e891906144c1565b5050505050565b6000819050919050565b613602816135ef565b82525050565b600060208201905061361d60008301846135f9565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561365d578082015181840152602081019050613642565b8381111561366c576000848401525b50505050565b6000601f19601f8301169050919050565b600061368e82613623565b613698818561362e565b93506136a881856020860161363f565b6136b181613672565b840191505092915050565b600060208201905081810360008301526136d68184613683565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061370e826136e3565b9050919050565b61371e81613703565b811461372957600080fd5b50565b60008135905061373b81613715565b92915050565b61374a816135ef565b811461375557600080fd5b50565b60008135905061376781613741565b92915050565b60008060408385031215613784576137836136de565b5b60006137928582860161372c565b92505060206137a385828601613758565b9150509250929050565b60008115159050919050565b6137c2816137ad565b82525050565b60006020820190506137dd60008301846137b9565b92915050565b60006137ee826136e3565b9050919050565b6137fe816137e3565b811461380957600080fd5b50565b60008135905061381b816137f5565b92915050565b600060208284031215613837576138366136de565b5b60006138458482850161380c565b91505092915050565b6000819050919050565b600061387361386e613869846136e3565b61384e565b6136e3565b9050919050565b600061388582613858565b9050919050565b60006138978261387a565b9050919050565b6138a78161388c565b82525050565b60006020820190506138c2600083018461389e565b92915050565b6000806000606084860312156138e1576138e06136de565b5b60006138ef8682870161372c565b93505060206139008682870161372c565b925050604061391186828701613758565b9150509250925092565b60008060408385031215613932576139316136de565b5b600061394085828601613758565b925050602061395185828601613758565b9150509250929050565b600080600060608486031215613974576139736136de565b5b600061398286828701613758565b935050602061399386828701613758565b92505060406139a486828701613758565b9150509250925092565b6000602082840312156139c4576139c36136de565b5b60006139d28482850161372c565b91505092915050565b600060ff82169050919050565b6139f1816139db565b82525050565b6000602082019050613a0c60008301846139e8565b92915050565b613a1b816137ad565b8114613a2657600080fd5b50565b600081359050613a3881613a12565b92915050565b60008060408385031215613a5557613a546136de565b5b6000613a6385828601613a29565b9250506020613a7485828601613758565b9150509250929050565b613a8781613703565b82525050565b6000602082019050613aa26000830184613a7e565b92915050565b600060208284031215613abe57613abd6136de565b5b6000613acc84828501613758565b91505092915050565b60008060408385031215613aec57613aeb6136de565b5b6000613afa8582860161372c565b9250506020613b0b85828601613a29565b9150509250929050565b60008060408385031215613b2c57613b2b6136de565b5b6000613b3a8582860161372c565b9250506020613b4b8582860161372c565b9150509250929050565b6000613b6082613858565b9050919050565b6000613b7282613b55565b9050919050565b613b8281613b67565b82525050565b6000602082019050613b9d6000830184613b79565b92915050565b7f214f776e65720000000000000000000000000000000000000000000000000000600082015250565b6000613bd960068361362e565b9150613be482613ba3565b602082019050919050565b60006020820190508181036000830152613c0881613bcc565b9050919050565b6000604082019050613c2460008301856135f9565b613c3160208301846135f9565b9392505050565b7f746f6f2068696768000000000000000000000000000000000000000000000000600082015250565b6000613c6e60088361362e565b9150613c7982613c38565b602082019050919050565b60006020820190508181036000830152613c9d81613c61565b9050919050565b600081519050613cb381613741565b92915050565b600060208284031215613ccf57613cce6136de565b5b6000613cdd84828501613ca4565b91505092915050565b7f43616e206e6f74206c6f776572206d61782077616c6c65740000000000000000600082015250565b6000613d1c60188361362e565b9150613d2782613ce6565b602082019050919050565b60006020820190508181036000830152613d4b81613d0f565b9050919050565b7f4265686176652e00000000000000000000000000000000000000000000000000600082015250565b6000613d8860078361362e565b9150613d9382613d52565b602082019050919050565b60006020820190508181036000830152613db781613d7b565b9050919050565b7f43616e206e6f74206c6f776572206d6178207478000000000000000000000000600082015250565b6000613df460148361362e565b9150613dff82613dbe565b602082019050919050565b60006020820190508181036000830152613e2381613de7565b9050919050565b6000613e3582613b55565b9050919050565b613e4581613e2a565b82525050565b6000602082019050613e606000830184613e3c565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613ea0826135ef565b9150613eab836135ef565b925082821015613ebe57613ebd613e66565b5b828203905092915050565b7f63616c6d20646f776e2073657200000000000000000000000000000000000000600082015250565b6000613eff600d8361362e565b9150613f0a82613ec9565b602082019050919050565b60006020820190508181036000830152613f2e81613ef2565b9050919050565b7f7478000000000000000000000000000000000000000000000000000000000000600082015250565b6000613f6b60028361362e565b9150613f7682613f35565b602082019050919050565b60006020820190508181036000830152613f9a81613f5e565b9050919050565b7f77616c6c65740000000000000000000000000000000000000000000000000000600082015250565b6000613fd760068361362e565b9150613fe282613fa1565b602082019050919050565b6000602082019050818103600083015261400681613fca565b9050919050565b60006040820190506140226000830185613a7e565b61402f60208301846135f9565b9392505050565b6000819050919050565b600061405b61405661405184614036565b61384e565b6135ef565b9050919050565b61406b81614040565b82525050565b60006040820190506140866000830185613a7e565b6140936020830184614062565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006140d4826135ef565b91506140df836135ef565b9250826140ef576140ee61409a565b5b828204905092915050565b6000614105826135ef565b9150614110836135ef565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561414557614144613e66565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614186601b8361362e565b915061419182614150565b602082019050919050565b600060208201905081810360008301526141b581614179565b9050919050565b60006141c7826135ef565b91506141d2836135ef565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561420b5761420a613e66565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061427260218361362e565b915061427d82614216565b604082019050919050565b600060208201905081810360008301526142a181614265565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061431581613715565b92915050565b600060208284031215614331576143306136de565b5b600061433f84828501614306565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61437d81613703565b82525050565b600061438f8383614374565b60208301905092915050565b6000602082019050919050565b60006143b382614348565b6143bd8185614353565b93506143c883614364565b8060005b838110156143f95781516143e08882614383565b97506143eb8361439b565b9250506001810190506143cc565b5085935050505092915050565b600060a08201905061441b60008301886135f9565b6144286020830187614062565b818103604083015261443a81866143a8565b90506144496060830185613a7e565b61445660808301846135f9565b9695505050505050565b600060c0820190506144756000830189613a7e565b61448260208301886135f9565b61448f6040830187614062565b61449c6060830186614062565b6144a96080830185613a7e565b6144b660a08301846135f9565b979650505050505050565b6000806000606084860312156144da576144d96136de565b5b60006144e886828701613ca4565b93505060206144f986828701613ca4565b925050604061450a86828701613ca4565b915050925092509256fea26469706673582212201f967b2d4f0e07ce468324bfe8a7b155233b325c3cc86e5eb4f1a22d5c9d67b264736f6c634300080d0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000003Cd3D2167333e3F04F8fEfDcEd93dB6D3de63Bf

-----Decoded View---------------
Arg [0] : _owner (address): 0x03Cd3D2167333e3F04F8fEfDcEd93dB6D3de63Bf

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000003Cd3D2167333e3F04F8fEfDcEd93dB6D3de63Bf


Deployed Bytecode Sourcemap

11428:12279:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13125:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17369:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17894:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17051:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15592:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12836:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18472:420;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12861:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16901:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12373:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16083:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14682:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2938:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14411:263;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17161:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15852:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12141:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12245:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12526:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12341:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12749:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18150:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12302:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23002:74;;;;;;;;;;;;;:::i;:::-;;17571:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13017:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12486:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23432:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15121:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23317:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14324:79;;;;;;;;;;;;;:::i;:::-;;23084:225;;;;;;;;;;;;;:::i;:::-;;17471:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12191:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12688:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17263:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15301:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14096:180;;;;;;;;;;;;;:::i;:::-;;12600:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18280:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15723:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23620:84;;;;;;;;;;;;;:::i;:::-;;12626:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12448:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12408:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14957:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17698:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16800:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11505:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3049:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16637:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12569:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13069:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15431:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12796:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13125:52;;;;:::o;17369:94::-;17417:13;17450:5;;;;;;;;;;;;;;;;;17443:12;;17369:94;:::o;17894:248::-;17996:4;18053:6;18018:11;:23;18030:10;18018:23;;;;;;;;;;;;;;;:32;18042:7;18018:32;;;;;;;;;;;;;;;:41;;;;18096:7;18075:37;;18084:10;18075:37;;;18105:6;18075:37;;;;;;:::i;:::-;;;;;;;;18130:4;18123:11;;17894:248;;;;:::o;17051:102::-;17106:7;17133:12;;17126:19;;17051:102;:::o;15592:123::-;2828:19;2836:10;2828:7;:19::i;:::-;2820:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15694:12:::1;15674:9;;:33;;;;;;;;;;;;;;;;;;15592:123:::0;:::o;12836:18::-;;;;;;;;;;;;;:::o;18472:420::-;18606:4;18662:17;18627:11;:19;18639:6;18627:19;;;;;;;;;;;;;;;:31;18647:10;18627:31;;;;;;;;;;;;;;;;:52;18623:206;;18730:87;18784:6;18730:87;;;;;;;;;;;;;;;;;:11;:19;18742:6;18730:19;;;;;;;;;;;;;;;:31;18750:10;18730:31;;;;;;;;;;;;;;;;:53;;:87;;;;;:::i;:::-;18696:11;:19;18708:6;18696:19;;;;;;;;;;;;;;;:31;18716:10;18696:31;;;;;;;;;;;;;;;:121;;;;18623:206;18848:36;18858:6;18866:9;18877:6;18848:9;:36::i;:::-;18841:43;;18472:420;;;;;:::o;12861:27::-;;;;:::o;16901:142::-;16954:7;16981:54;17019:15;17029:4;;;;;;;;;;;17019:9;:15::i;:::-;16981:33;16998:15;17008:4;;;;;;;;;;;16998:9;:15::i;:::-;16981:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;16974:61;;16901:142;:::o;12373:26::-;;;;:::o;16083:209::-;2828:19;2836:10;2828:7;:19::i;:::-;2820:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16221:5:::1;;;;;;;;;;;:29;;;16251:12;16265:18;16221:63;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16083:209:::0;;:::o;14682:267::-;2828:19;2836:10;2828:7;:19::i;:::-;2820:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14856:12:::1;14840:13;:28;;;;14893:8;14879:11;:22;;;;14926:15;14912:11;:29;;;;14682:267:::0;;;:::o;2938:103::-;2993:4;3028:5;;;;;;;;;;;3017:16;;:7;:16;;;3010:23;;2938:103;;;:::o;14411:263::-;2828:19;2836:10;2828:7;:19::i;:::-;2820:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14537:9:::1;14528:6;:18;;;;14567:10;14557:7;:20;;;;14608:1;14598:6;;:11;;14590:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;14652:1;14641:7;;:12;;14633:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;14411:263:::0;;:::o;17161:94::-;17213:5;11726:2;17231:16;;17161:94;:::o;15852:223::-;2828:19;2836:10;2828:7;:19::i;:::-;2820:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16010:14:::1;15986:21;;:38;;;;;;;;;;;;;;;;;;16051:16;16035:13;:32;;;;15852:223:::0;;:::o;12141:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;12245:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;12526:34::-;;;;:::o;12341:25::-;;;;:::o;12749:40::-;;;;;;;;;;;;;:::o;18150:122::-;18205:4;18229:35;18237:7;18246:17;18229:7;:35::i;:::-;18222:42;;18150:122;;;:::o;12302:30::-;;;;;;;;;;;;;:::o;23002:74::-;2828:19;2836:10;2828:7;:19::i;:::-;2820:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;23058:10:::1;:8;:10::i;:::-;23002:74::o:0;17571:119::-;17637:7;17664:9;:18;17674:7;17664:18;;;;;;;;;;;;;;;;17657:25;;17571:119;;;:::o;13017:45::-;;;;:::o;12486:31::-;;;;:::o;23432:180::-;23536:7;23568:5;;;;;;;;;;;:23;;;23592:11;23568:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23561:43;;23432:180;;;:::o;15121:172::-;2828:19;2836:10;2828:7;:19::i;:::-;2820:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15216:9:::1;;15204:8;:21;;15196:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;15277:8;15265:9;:20;;;;15121:172:::0;:::o;23317:107::-;2828:19;2836:10;2828:7;:19::i;:::-;2820:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;23392:5:::1;;;;;;;;;;;:13;;;23406:9;23392:24;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23317:107:::0;:::o;14324:79::-;2828:19;2836:10;2828:7;:19::i;:::-;2820:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14391:4:::1;14377:11;;:18;;;;;;;;;;;;;;;;;;14324:79::o:0;23084:225::-;2828:19;2836:10;2828:7;:19::i;:::-;2820:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;23139:26:::1;23168:21;23139:50;;23225:1;23204:18;:22;23200:102;;;23251:9;;;;;;;;;;;23243:27;;:47;23271:18;23243:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;23200:102;23128:181;23084:225::o:0;17471:92::-;17523:7;17550:5;;;;;;;;;;;17543:12;;17471:92;:::o;12191:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;12688:24::-;;;;;;;;;;;;;:::o;17263:98::-;17313:13;17346:7;;;;;;;;;;;;;;;;;17339:14;;17263:98;:::o;15301:122::-;2828:19;2836:10;2828:7;:19::i;:::-;2820:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15409:6:::1;15387:11;:19;15399:6;15387:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;15301:122:::0;;:::o;14096:180::-;2828:19;2836:10;2828:7;:19::i;:::-;2820:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14159:11:::1;;;;;;;;;;;14158:12;14150:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;14203:21;14220:3;14203:12;;:16;;:21;;;;:::i;:::-;14195:5;:29;;;;14247:21;14264:3;14247:12;;:16;;:21;;;;:::i;:::-;14235:9;:33;;;;14096:180::o:0;12600:19::-;;;;;;;;;;;;;:::o;18280:184::-;18387:4;18416:40;18426:10;18438:9;18449:6;18416:9;:40::i;:::-;18409:47;;18280:184;;;;:::o;15723:121::-;2828:19;2836:10;2828:7;:19::i;:::-;2820:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15822:14:::1;15809:10;;:27;;;;;;;;;;;;;;;;;;15723:121:::0;:::o;23620:84::-;23668:5;;;;;;;;;;;:16;;;23685:10;23668:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23620:84::o;12626:22::-;;;;;;;;;;;;;:::o;12448:31::-;;;;:::o;12408:33::-;;;;:::o;14957:156::-;2828:19;2836:10;2828:7;:19::i;:::-;2820:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15048:5:::1;;15036:8;:17;;15028:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;15097:8;15089:5;:16;;;;14957:156:::0;:::o;17698:188::-;17818:7;17850:11;:19;17862:6;17850:19;;;;;;;;;;;;;;;:28;17870:7;17850:28;;;;;;;;;;;;;;;;17843:35;;17698:188;;;;:::o;16800:93::-;2828:19;2836:10;2828:7;:19::i;:::-;2820:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16879:6:::1;16868:8;:17;;;;16800:93:::0;:::o;11505:64::-;;;;;;;;;;;;;:::o;3049:136::-;2828:19;2836:10;2828:7;:19::i;:::-;2820:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3133:3:::1;3125:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3152:25;3173:3;3152:25;;;;;;:::i;:::-;;;;;;;;3049:136:::0;:::o;16637:155::-;2828:19;2836:10;2828:7;:19::i;:::-;2820:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16748:36:::1;16769:6;16777;16748:20;:36::i;:::-;16637:155:::0;;:::o;12569:24::-;;;;;;;;;;;;;:::o;13069:49::-;;;;:::o;15431:153::-;2828:19;2836:10;2828:7;:19::i;:::-;2820:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15570:6:::1;15544:15;:23;15560:6;15544:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;15431:153:::0;;:::o;12796:31::-;;;;;;;;;;;;;:::o;959:132::-;1017:7;1044:39;1048:1;1051;1044:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1037:46;;959:132;;;;:::o;467:226::-;587:7;620:1;615;:6;;623:12;607:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;647:9;663:1;659;:5;;;;:::i;:::-;647:17;;684:1;677:8;;;467:226;;;;;:::o;18900:1542::-;19022:4;19053:5;;;;;;;;;;;19043:15;;:6;:15;;;;:37;;;;;19075:5;;;;;;;;;;19062:18;;:9;:18;;;;19043:37;19039:93;;;19103:11;;;;;;;;;;;19095:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;19039:93;19191:16;;;;;;;;;;;19187:97;;;19231:41;19246:6;19254:9;19265:6;19231:14;:41::i;:::-;19224:48;;;;19187:97;19314:5;;19304:6;:15;;:42;;;;19323:15;:23;19339:6;19323:23;;;;;;;;;;;;;;;;;;;;;;;;;19304:42;19296:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;19371:15;:26;19387:9;19371:26;;;;;;;;;;;;;;;;;;;;;;;;;19366:124;;19458:9;;19422:32;19447:6;19422:9;:20;19432:9;19422:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;:45;;19414:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19366:124;19534:4;;;;;;;;;;;19520:18;;:10;:18;;;;:52;;;;;19556:16;;;;;;;;;;;19555:17;19520:52;:90;;;;;19589:21;;;;;;;;;;;19520:90;:148;;;;;19655:13;;19627:9;:24;19645:4;19627:24;;;;;;;;;;;;;;;;:41;;19520:148;19502:215;;;19695:10;:8;:10::i;:::-;19502:215;19749:90;19785:6;19749:90;;;;;;;;;;;;;;;;;:9;:17;19759:6;19749:17;;;;;;;;;;;;;;;;:21;;:90;;;;;:::i;:::-;19729:9;:17;19739:6;19729:17;;;;;;;;;;;;;;;:110;;;;19852:19;19875:11;:19;19887:6;19875:19;;;;;;;;;;;;;;;;;;;;;;;;;19874:20;:47;;;;;19899:11;:22;19911:9;19899:22;;;;;;;;;;;;;;;;;;;;;;;;;19898:23;19874:47;:119;;19987:6;19874:119;;;19937:34;19945:6;19953:9;19964:6;19937:7;:34::i;:::-;19874:119;19852:141;;20027:37;20052:11;20027:9;:20;20037:9;20027:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;20004:9;:20;20014:9;20004:20;;;;;;;;;;;;;;;:60;;;;20111:16;:24;20128:6;20111:24;;;;;;;;;;;;;;;;;;;;;;;;;20106:114;;20156:5;;;;;;;;;;;:14;;;20171:6;20179:9;:17;20189:6;20179:17;;;;;;;;;;;;;;;;20156:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20152:57;20106:114;20237:16;:27;20254:9;20237:27;;;;;;;;;;;;;;;;;;;;;;;;;20232:123;;20285:5;;;;;;;;;;;:14;;;20300:9;20311;:20;20321:9;20311:20;;;;;;;;;;;;;;;;20285:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20281:63;20232:123;20389:9;20372:40;;20381:6;20372:40;;;20400:11;20372:40;;;;;;:::i;:::-;;;;;;;;20430:4;20423:11;;;18900:1542;;;;;;:::o;323:136::-;381:7;408:43;412:1;415;408:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;401:50;;323:136;;;;:::o;22071:923::-;12950:4;12931:16;;:23;;;;;;;;;;;;;;;;;;22123:20:::1;22146:9;:24;22164:4;22146:24;;;;;;;;;;;;;;;;22123:47;;22181:26;22210:69;22267:1;22210:38;22244:3;22210:29;22227:11;;22210:12;:16;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;:42;;:69;;;;:::i;:::-;22181:98;;22290:20;22313:36;22330:18;22313:12;:16;;:36;;;;:::i;:::-;22290:59;;22362:30;22379:12;22362:16;:30::i;:::-;22405:23;22431:21;22405:47;;22463:17;22483:43;22522:3;22483:34;22503:13;;22483:15;:19;;:34;;;;:::i;:::-;:38;;:43;;;;:::i;:::-;22463:63;;22537:17;22557:41;22594:3;22557:32;22577:11;;22557:15;:19;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;22537:61;;22609:23;22635:72;22695:1;22635:41;22672:3;22635:32;22655:11;;22635:15;:19;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;:45;;:72;;;;:::i;:::-;22609:98;;22742:1;22724:15;:19;22720:90;;;22768:9;;;;;;;;;;;22760:27;;:38;22788:9;22760:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22720:90;22826:5;;;;;;;;;;;:13;;;22847:9;22826:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;22822:49:::0;22908:1:::1;22887:18;:22;22883:104;;;22926:49;22939:18;22959:15;22926:12;:49::i;:::-;22883:104;22112:882;;;;;;;12996:5:::0;12977:16;;:24;;;;;;;;;;;;;;;;;;22071:923::o;16300:329::-;16405:4;16387:23;;:6;:23;;;;:41;;;;;16424:4;;;;;;;;;;;16414:14;;:6;:14;;;;16387:41;16379:50;;;;;;16467:6;16440:16;:24;16457:6;16440:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;16488:6;16484:138;;;16511:5;;;;;;;;;;;:14;;;16526:6;16534:1;16511:25;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16484:138;;;16569:5;;;;;;;;;;;:14;;;16584:6;16592:9;:17;16602:6;16592:17;;;;;;;;;;;;;;;;16569:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16484:138;16300:329;;:::o;1099:379::-;1219:7;1318:1;1314;:5;1321:12;1306:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1345:9;1361:1;1357;:5;;;;:::i;:::-;1345:17;;1469:1;1462:8;;;1099:379;;;;;:::o;20450:401::-;20577:4;20614:90;20650:6;20614:90;;;;;;;;;;;;;;;;;:9;:17;20624:6;20614:17;;;;;;;;;;;;;;;;:21;;:90;;;;;:::i;:::-;20594:9;:17;20604:6;20594:17;;;;;;;;;;;;;;;:110;;;;20738:32;20763:6;20738:9;:20;20748:9;20738:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;20715:9;:20;20725:9;20715:20;;;;;;;;;;;;;;;:55;;;;20803:9;20786:35;;20795:6;20786:35;;;20814:6;20786:35;;;;;;:::i;:::-;;;;;;;;20839:4;20832:11;;20450:401;;;;;:::o;134:181::-;192:7;212:9;228:1;224;:5;;;;:::i;:::-;212:17;;253:1;248;:6;;240:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;306:1;299:8;;;134:181;;;;:::o;20859:451::-;20979:7;20999:21;21031:9;21023:17;;:4;;;;;;;;;;;:17;;;:36;;21053:6;;21023:36;;;21043:7;;21023:36;20999:60;;21070:17;21090:34;21120:3;21090:25;21101:13;21090:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;21070:54;;21164:39;21193:9;21164;:24;21182:4;21164:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;21137:9;:24;21155:4;21137:24;;;;;;;;;;;;;;;:66;;;;21244:4;21219:42;;21228:6;21219:42;;;21251:9;21219:42;;;;;;:::i;:::-;;;;;;;;21281:21;21292:9;21281:6;:10;;:21;;;;:::i;:::-;21274:28;;;;20859:451;;;;;:::o;701:250::-;759:7;788:1;783;:6;779:47;;813:1;806:8;;;;779:47;838:9;854:1;850;:5;;;;:::i;:::-;838:17;;883:1;878;874;:5;;;;:::i;:::-;:10;866:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;942:1;935:8;;;701:250;;;;;:::o;21318:458::-;21384:21;21422:1;21408:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21384:40;;21453:4;21435;21440:1;21435:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21479:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21469:4;21474:1;21469:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21505:35;21521:4;21528:11;21505:7;:35::i;:::-;;21553:6;;;;;;;;;;;:57;;;21625:11;21651:1;21695:4;21722;21742:15;21553:215;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21373:403;21318:458;:::o;21784:279::-;21865:6;;;;;;;;;;;:22;;;21895:9;21928:4;21948:11;21974:1;21990;22006:8;;;;;;;;;;;22029:15;21865:190;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21784:279;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1913:117::-;2022:1;2019;2012:12;2159:126;2196:7;2236:42;2229:5;2225:54;2214:65;;2159:126;;;:::o;2291:96::-;2328:7;2357:24;2375:5;2357:24;:::i;:::-;2346:35;;2291:96;;;:::o;2393:122::-;2466:24;2484:5;2466:24;:::i;:::-;2459:5;2456:35;2446:63;;2505:1;2502;2495:12;2446:63;2393:122;:::o;2521:139::-;2567:5;2605:6;2592:20;2583:29;;2621:33;2648:5;2621:33;:::i;:::-;2521:139;;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:104::-;3891:7;3920:24;3938:5;3920:24;:::i;:::-;3909:35;;3846:104;;;:::o;3956:138::-;4037:32;4063:5;4037:32;:::i;:::-;4030:5;4027:43;4017:71;;4084:1;4081;4074:12;4017:71;3956:138;:::o;4100:155::-;4154:5;4192:6;4179:20;4170:29;;4208:41;4243:5;4208:41;:::i;:::-;4100:155;;;;:::o;4261:345::-;4328:6;4377:2;4365:9;4356:7;4352:23;4348:32;4345:119;;;4383:79;;:::i;:::-;4345:119;4503:1;4528:61;4581:7;4572:6;4561:9;4557:22;4528:61;:::i;:::-;4518:71;;4474:125;4261:345;;;;:::o;4612:60::-;4640:3;4661:5;4654:12;;4612:60;;;:::o;4678:142::-;4728:9;4761:53;4779:34;4788:24;4806:5;4788:24;:::i;:::-;4779:34;:::i;:::-;4761:53;:::i;:::-;4748:66;;4678:142;;;:::o;4826:134::-;4884:9;4917:37;4948:5;4917:37;:::i;:::-;4904:50;;4826:134;;;:::o;4966:156::-;5038:9;5071:45;5110:5;5071:45;:::i;:::-;5058:58;;4966:156;;;:::o;5128:175::-;5237:59;5290:5;5237:59;:::i;:::-;5232:3;5225:72;5128:175;;:::o;5309:266::-;5424:4;5462:2;5451:9;5447:18;5439:26;;5475:93;5565:1;5554:9;5550:17;5541:6;5475:93;:::i;:::-;5309:266;;;;:::o;5581:619::-;5658:6;5666;5674;5723:2;5711:9;5702:7;5698:23;5694:32;5691:119;;;5729:79;;:::i;:::-;5691:119;5849:1;5874:53;5919:7;5910:6;5899:9;5895:22;5874:53;:::i;:::-;5864:63;;5820:117;5976:2;6002:53;6047:7;6038:6;6027:9;6023:22;6002:53;:::i;:::-;5992:63;;5947:118;6104:2;6130:53;6175:7;6166:6;6155:9;6151:22;6130:53;:::i;:::-;6120:63;;6075:118;5581:619;;;;;:::o;6206:474::-;6274:6;6282;6331:2;6319:9;6310:7;6306:23;6302:32;6299:119;;;6337:79;;:::i;:::-;6299:119;6457:1;6482:53;6527:7;6518:6;6507:9;6503:22;6482:53;:::i;:::-;6472:63;;6428:117;6584:2;6610:53;6655:7;6646:6;6635:9;6631:22;6610:53;:::i;:::-;6600:63;;6555:118;6206:474;;;;;:::o;6686:619::-;6763:6;6771;6779;6828:2;6816:9;6807:7;6803:23;6799:32;6796:119;;;6834:79;;:::i;:::-;6796:119;6954:1;6979:53;7024:7;7015:6;7004:9;7000:22;6979:53;:::i;:::-;6969:63;;6925:117;7081:2;7107:53;7152:7;7143:6;7132:9;7128:22;7107:53;:::i;:::-;7097:63;;7052:118;7209:2;7235:53;7280:7;7271:6;7260:9;7256:22;7235:53;:::i;:::-;7225:63;;7180:118;6686:619;;;;;:::o;7311:329::-;7370:6;7419:2;7407:9;7398:7;7394:23;7390:32;7387:119;;;7425:79;;:::i;:::-;7387:119;7545:1;7570:53;7615:7;7606:6;7595:9;7591:22;7570:53;:::i;:::-;7560:63;;7516:117;7311:329;;;;:::o;7646:86::-;7681:7;7721:4;7714:5;7710:16;7699:27;;7646:86;;;:::o;7738:112::-;7821:22;7837:5;7821:22;:::i;:::-;7816:3;7809:35;7738:112;;:::o;7856:214::-;7945:4;7983:2;7972:9;7968:18;7960:26;;7996:67;8060:1;8049:9;8045:17;8036:6;7996:67;:::i;:::-;7856:214;;;;:::o;8076:116::-;8146:21;8161:5;8146:21;:::i;:::-;8139:5;8136:32;8126:60;;8182:1;8179;8172:12;8126:60;8076:116;:::o;8198:133::-;8241:5;8279:6;8266:20;8257:29;;8295:30;8319:5;8295:30;:::i;:::-;8198:133;;;;:::o;8337:468::-;8402:6;8410;8459:2;8447:9;8438:7;8434:23;8430:32;8427:119;;;8465:79;;:::i;:::-;8427:119;8585:1;8610:50;8652:7;8643:6;8632:9;8628:22;8610:50;:::i;:::-;8600:60;;8556:114;8709:2;8735:53;8780:7;8771:6;8760:9;8756:22;8735:53;:::i;:::-;8725:63;;8680:118;8337:468;;;;;:::o;8811:118::-;8898:24;8916:5;8898:24;:::i;:::-;8893:3;8886:37;8811:118;;:::o;8935:222::-;9028:4;9066:2;9055:9;9051:18;9043:26;;9079:71;9147:1;9136:9;9132:17;9123:6;9079:71;:::i;:::-;8935:222;;;;:::o;9163:329::-;9222:6;9271:2;9259:9;9250:7;9246:23;9242:32;9239:119;;;9277:79;;:::i;:::-;9239:119;9397:1;9422:53;9467:7;9458:6;9447:9;9443:22;9422:53;:::i;:::-;9412:63;;9368:117;9163:329;;;;:::o;9498:468::-;9563:6;9571;9620:2;9608:9;9599:7;9595:23;9591:32;9588:119;;;9626:79;;:::i;:::-;9588:119;9746:1;9771:53;9816:7;9807:6;9796:9;9792:22;9771:53;:::i;:::-;9761:63;;9717:117;9873:2;9899:50;9941:7;9932:6;9921:9;9917:22;9899:50;:::i;:::-;9889:60;;9844:115;9498:468;;;;;:::o;9972:474::-;10040:6;10048;10097:2;10085:9;10076:7;10072:23;10068:32;10065:119;;;10103:79;;:::i;:::-;10065:119;10223:1;10248:53;10293:7;10284:6;10273:9;10269:22;10248:53;:::i;:::-;10238:63;;10194:117;10350:2;10376:53;10421:7;10412:6;10401:9;10397:22;10376:53;:::i;:::-;10366:63;;10321:118;9972:474;;;;;:::o;10452:126::-;10502:9;10535:37;10566:5;10535:37;:::i;:::-;10522:50;;10452:126;;;:::o;10584:144::-;10652:9;10685:37;10716:5;10685:37;:::i;:::-;10672:50;;10584:144;;;:::o;10734:167::-;10839:55;10888:5;10839:55;:::i;:::-;10834:3;10827:68;10734:167;;:::o;10907:258::-;11018:4;11056:2;11045:9;11041:18;11033:26;;11069:89;11155:1;11144:9;11140:17;11131:6;11069:89;:::i;:::-;10907:258;;;;:::o;11171:156::-;11311:8;11307:1;11299:6;11295:14;11288:32;11171:156;:::o;11333:365::-;11475:3;11496:66;11560:1;11555:3;11496:66;:::i;:::-;11489:73;;11571:93;11660:3;11571:93;:::i;:::-;11689:2;11684:3;11680:12;11673:19;;11333:365;;;:::o;11704:419::-;11870:4;11908:2;11897:9;11893:18;11885:26;;11957:9;11951:4;11947:20;11943:1;11932:9;11928:17;11921:47;11985:131;12111:4;11985:131;:::i;:::-;11977:139;;11704:419;;;:::o;12129:332::-;12250:4;12288:2;12277:9;12273:18;12265:26;;12301:71;12369:1;12358:9;12354:17;12345:6;12301:71;:::i;:::-;12382:72;12450:2;12439:9;12435:18;12426:6;12382:72;:::i;:::-;12129:332;;;;;:::o;12467:158::-;12607:10;12603:1;12595:6;12591:14;12584:34;12467:158;:::o;12631:365::-;12773:3;12794:66;12858:1;12853:3;12794:66;:::i;:::-;12787:73;;12869:93;12958:3;12869:93;:::i;:::-;12987:2;12982:3;12978:12;12971:19;;12631:365;;;:::o;13002:419::-;13168:4;13206:2;13195:9;13191:18;13183:26;;13255:9;13249:4;13245:20;13241:1;13230:9;13226:17;13219:47;13283:131;13409:4;13283:131;:::i;:::-;13275:139;;13002:419;;;:::o;13427:143::-;13484:5;13515:6;13509:13;13500:22;;13531:33;13558:5;13531:33;:::i;:::-;13427:143;;;;:::o;13576:351::-;13646:6;13695:2;13683:9;13674:7;13670:23;13666:32;13663:119;;;13701:79;;:::i;:::-;13663:119;13821:1;13846:64;13902:7;13893:6;13882:9;13878:22;13846:64;:::i;:::-;13836:74;;13792:128;13576:351;;;;:::o;13933:174::-;14073:26;14069:1;14061:6;14057:14;14050:50;13933:174;:::o;14113:366::-;14255:3;14276:67;14340:2;14335:3;14276:67;:::i;:::-;14269:74;;14352:93;14441:3;14352:93;:::i;:::-;14470:2;14465:3;14461:12;14454:19;;14113:366;;;:::o;14485:419::-;14651:4;14689:2;14678:9;14674:18;14666:26;;14738:9;14732:4;14728:20;14724:1;14713:9;14709:17;14702:47;14766:131;14892:4;14766:131;:::i;:::-;14758:139;;14485:419;;;:::o;14910:157::-;15050:9;15046:1;15038:6;15034:14;15027:33;14910:157;:::o;15073:365::-;15215:3;15236:66;15300:1;15295:3;15236:66;:::i;:::-;15229:73;;15311:93;15400:3;15311:93;:::i;:::-;15429:2;15424:3;15420:12;15413:19;;15073:365;;;:::o;15444:419::-;15610:4;15648:2;15637:9;15633:18;15625:26;;15697:9;15691:4;15687:20;15683:1;15672:9;15668:17;15661:47;15725:131;15851:4;15725:131;:::i;:::-;15717:139;;15444:419;;;:::o;15869:170::-;16009:22;16005:1;15997:6;15993:14;15986:46;15869:170;:::o;16045:366::-;16187:3;16208:67;16272:2;16267:3;16208:67;:::i;:::-;16201:74;;16284:93;16373:3;16284:93;:::i;:::-;16402:2;16397:3;16393:12;16386:19;;16045:366;;;:::o;16417:419::-;16583:4;16621:2;16610:9;16606:18;16598:26;;16670:9;16664:4;16660:20;16656:1;16645:9;16641:17;16634:47;16698:131;16824:4;16698:131;:::i;:::-;16690:139;;16417:419;;;:::o;16842:134::-;16900:9;16933:37;16964:5;16933:37;:::i;:::-;16920:50;;16842:134;;;:::o;16982:147::-;17077:45;17116:5;17077:45;:::i;:::-;17072:3;17065:58;16982:147;;:::o;17135:238::-;17236:4;17274:2;17263:9;17259:18;17251:26;;17287:79;17363:1;17352:9;17348:17;17339:6;17287:79;:::i;:::-;17135:238;;;;:::o;17379:180::-;17427:77;17424:1;17417:88;17524:4;17521:1;17514:15;17548:4;17545:1;17538:15;17565:191;17605:4;17625:20;17643:1;17625:20;:::i;:::-;17620:25;;17659:20;17677:1;17659:20;:::i;:::-;17654:25;;17698:1;17695;17692:8;17689:34;;;17703:18;;:::i;:::-;17689:34;17748:1;17745;17741:9;17733:17;;17565:191;;;;:::o;17762:163::-;17902:15;17898:1;17890:6;17886:14;17879:39;17762:163;:::o;17931:366::-;18073:3;18094:67;18158:2;18153:3;18094:67;:::i;:::-;18087:74;;18170:93;18259:3;18170:93;:::i;:::-;18288:2;18283:3;18279:12;18272:19;;17931:366;;;:::o;18303:419::-;18469:4;18507:2;18496:9;18492:18;18484:26;;18556:9;18550:4;18546:20;18542:1;18531:9;18527:17;18520:47;18584:131;18710:4;18584:131;:::i;:::-;18576:139;;18303:419;;;:::o;18728:152::-;18868:4;18864:1;18856:6;18852:14;18845:28;18728:152;:::o;18886:365::-;19028:3;19049:66;19113:1;19108:3;19049:66;:::i;:::-;19042:73;;19124:93;19213:3;19124:93;:::i;:::-;19242:2;19237:3;19233:12;19226:19;;18886:365;;;:::o;19257:419::-;19423:4;19461:2;19450:9;19446:18;19438:26;;19510:9;19504:4;19500:20;19496:1;19485:9;19481:17;19474:47;19538:131;19664:4;19538:131;:::i;:::-;19530:139;;19257:419;;;:::o;19682:156::-;19822:8;19818:1;19810:6;19806:14;19799:32;19682:156;:::o;19844:365::-;19986:3;20007:66;20071:1;20066:3;20007:66;:::i;:::-;20000:73;;20082:93;20171:3;20082:93;:::i;:::-;20200:2;20195:3;20191:12;20184:19;;19844:365;;;:::o;20215:419::-;20381:4;20419:2;20408:9;20404:18;20396:26;;20468:9;20462:4;20458:20;20454:1;20443:9;20439:17;20432:47;20496:131;20622:4;20496:131;:::i;:::-;20488:139;;20215:419;;;:::o;20640:332::-;20761:4;20799:2;20788:9;20784:18;20776:26;;20812:71;20880:1;20869:9;20865:17;20856:6;20812:71;:::i;:::-;20893:72;20961:2;20950:9;20946:18;20937:6;20893:72;:::i;:::-;20640:332;;;;;:::o;20978:85::-;21023:7;21052:5;21041:16;;20978:85;;;:::o;21069:158::-;21127:9;21160:61;21178:42;21187:32;21213:5;21187:32;:::i;:::-;21178:42;:::i;:::-;21160:61;:::i;:::-;21147:74;;21069:158;;;:::o;21233:147::-;21328:45;21367:5;21328:45;:::i;:::-;21323:3;21316:58;21233:147;;:::o;21386:348::-;21515:4;21553:2;21542:9;21538:18;21530:26;;21566:71;21634:1;21623:9;21619:17;21610:6;21566:71;:::i;:::-;21647:80;21723:2;21712:9;21708:18;21699:6;21647:80;:::i;:::-;21386:348;;;;;:::o;21740:180::-;21788:77;21785:1;21778:88;21885:4;21882:1;21875:15;21909:4;21906:1;21899:15;21926:185;21966:1;21983:20;22001:1;21983:20;:::i;:::-;21978:25;;22017:20;22035:1;22017:20;:::i;:::-;22012:25;;22056:1;22046:35;;22061:18;;:::i;:::-;22046:35;22103:1;22100;22096:9;22091:14;;21926:185;;;;:::o;22117:305::-;22157:3;22176:20;22194:1;22176:20;:::i;:::-;22171:25;;22210:20;22228:1;22210:20;:::i;:::-;22205:25;;22364:1;22296:66;22292:74;22289:1;22286:81;22283:107;;;22370:18;;:::i;:::-;22283:107;22414:1;22411;22407:9;22400:16;;22117:305;;;;:::o;22428:177::-;22568:29;22564:1;22556:6;22552:14;22545:53;22428:177;:::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:348::-;23448:7;23471:20;23489:1;23471:20;:::i;:::-;23466:25;;23505:20;23523:1;23505:20;:::i;:::-;23500:25;;23693:1;23625:66;23621:74;23618:1;23615:81;23610:1;23603:9;23596:17;23592:105;23589:131;;;23700:18;;:::i;:::-;23589:131;23748:1;23745;23741:9;23730:20;;23408:348;;;;:::o;23762:220::-;23902:34;23898:1;23890:6;23886:14;23879:58;23971:3;23966:2;23958:6;23954:15;23947:28;23762:220;:::o;23988:366::-;24130:3;24151:67;24215:2;24210:3;24151:67;:::i;:::-;24144:74;;24227:93;24316:3;24227:93;:::i;:::-;24345:2;24340:3;24336:12;24329:19;;23988:366;;;:::o;24360:419::-;24526:4;24564:2;24553:9;24549:18;24541:26;;24613:9;24607:4;24603:20;24599:1;24588:9;24584:17;24577:47;24641:131;24767:4;24641:131;:::i;:::-;24633:139;;24360:419;;;:::o;24785:180::-;24833:77;24830:1;24823:88;24930:4;24927:1;24920:15;24954:4;24951:1;24944:15;24971:180;25019:77;25016:1;25009:88;25116:4;25113:1;25106:15;25140:4;25137:1;25130:15;25157:143;25214:5;25245:6;25239:13;25230:22;;25261:33;25288:5;25261:33;:::i;:::-;25157:143;;;;:::o;25306:351::-;25376:6;25425:2;25413:9;25404:7;25400:23;25396:32;25393:119;;;25431:79;;:::i;:::-;25393:119;25551:1;25576:64;25632:7;25623:6;25612:9;25608:22;25576:64;:::i;:::-;25566:74;;25522:128;25306:351;;;;:::o;25663:114::-;25730:6;25764:5;25758:12;25748:22;;25663:114;;;:::o;25783:184::-;25882:11;25916:6;25911:3;25904:19;25956:4;25951:3;25947:14;25932:29;;25783:184;;;;:::o;25973:132::-;26040:4;26063:3;26055:11;;26093:4;26088:3;26084:14;26076:22;;25973:132;;;:::o;26111:108::-;26188:24;26206:5;26188:24;:::i;:::-;26183:3;26176:37;26111:108;;:::o;26225:179::-;26294:10;26315:46;26357:3;26349:6;26315:46;:::i;:::-;26393:4;26388:3;26384:14;26370:28;;26225:179;;;;:::o;26410:113::-;26480:4;26512;26507:3;26503:14;26495:22;;26410:113;;;:::o;26559:732::-;26678:3;26707:54;26755:5;26707:54;:::i;:::-;26777:86;26856:6;26851:3;26777:86;:::i;:::-;26770:93;;26887:56;26937:5;26887:56;:::i;:::-;26966:7;26997:1;26982:284;27007:6;27004:1;27001:13;26982:284;;;27083:6;27077:13;27110:63;27169:3;27154:13;27110:63;:::i;:::-;27103:70;;27196:60;27249:6;27196:60;:::i;:::-;27186:70;;27042:224;27029:1;27026;27022:9;27017:14;;26982:284;;;26986:14;27282:3;27275:10;;26683:608;;;26559:732;;;;:::o;27297:831::-;27560:4;27598:3;27587:9;27583:19;27575:27;;27612:71;27680:1;27669:9;27665:17;27656:6;27612:71;:::i;:::-;27693:80;27769:2;27758:9;27754:18;27745:6;27693:80;:::i;:::-;27820:9;27814:4;27810:20;27805:2;27794:9;27790:18;27783:48;27848:108;27951:4;27942:6;27848:108;:::i;:::-;27840:116;;27966:72;28034:2;28023:9;28019:18;28010:6;27966:72;:::i;:::-;28048:73;28116:3;28105:9;28101:19;28092:6;28048:73;:::i;:::-;27297:831;;;;;;;;:::o;28134:807::-;28383:4;28421:3;28410:9;28406:19;28398:27;;28435:71;28503:1;28492:9;28488:17;28479:6;28435:71;:::i;:::-;28516:72;28584:2;28573:9;28569:18;28560:6;28516:72;:::i;:::-;28598:80;28674:2;28663:9;28659:18;28650:6;28598:80;:::i;:::-;28688;28764:2;28753:9;28749:18;28740:6;28688:80;:::i;:::-;28778:73;28846:3;28835:9;28831:19;28822:6;28778:73;:::i;:::-;28861;28929:3;28918:9;28914:19;28905:6;28861:73;:::i;:::-;28134:807;;;;;;;;;:::o;28947:663::-;29035:6;29043;29051;29100:2;29088:9;29079:7;29075:23;29071:32;29068:119;;;29106:79;;:::i;:::-;29068:119;29226:1;29251:64;29307:7;29298:6;29287:9;29283:22;29251:64;:::i;:::-;29241:74;;29197:128;29364:2;29390:64;29446:7;29437:6;29426:9;29422:22;29390:64;:::i;:::-;29380:74;;29335:129;29503:2;29529:64;29585:7;29576:6;29565:9;29561:22;29529:64;:::i;:::-;29519:74;;29474:129;28947:663;;;;;:::o

Swarm Source

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