ETH Price: $2,438.91 (-0.77%)
 

Overview

Max Total Supply

42,069 42069

Holders

36

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Balance
640 42069

Value
$0.00
0x1D4a348e86D52dd104639a3e708c2FF9D454571c
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:
ERC42069

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, GNU GPLv2 license

Contract Source Code (Solidity)

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

/**
*/

// SPDX-License-Identifier: MIT

/*

    Website: https://42069.cash (soon)
    Telegram: https://t.me/ERC42069
    Twitter: https://twitter.com/42069ERC

        ,--,                                        ,---.-,    
      ,--.'|      ,----,     ,----..               '   ,'  '.  
   ,--,  | :    .'   .' \   /   /   \      ,---.  /   /      \ 
,---.'|  : '  ,----,'    | /   .     :    /     \.   ;  ,/.  : 
;   : |  | ;  |    :  .  ;.   /   ;.  \  /    / ''   |  | :  ; 
|   | : _' |  ;    |.'  /.   ;   /  ` ; .    ' / '   |  ./   : 
:   : |.'  |  `----'/  ; ;   |  ; \ ; |'    / ;  |   :       , 
|   ' '  ; :    /  ;  /  |   :  | ; | '|   :  \   \   \      | 
\   \  .'. |   ;  /  /-, .   |  ' ' ' :;   |   ``. `---`---  ; 
 `---`:  | '  /  /  /.`| '   ;  \; /  |'   ;      \   |   |  | 
      '  ; |./__;      :  \   \  ',  / '   |  .\  |   '   :  ; 
      |  : ;|   :    .'    ;   :    /  |   :  ';  :   |   |  ' 
      '  ,/ ;   | .'        \   \ .'    \   \    /    ;   |.'  

    42069 supply and no decimals. Deflationary mechanics.
    A single token cannot be split into parts. On 42069, you can only transact integers.

    A unique trading experience with extremely limited supply and 3 different burn mechanisms.

    Fork of $4096
*/

pragma solidity 0.8.23;

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

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

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

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

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

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

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

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

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

    function decimals() external view returns (uint8);
}

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(
        address tokenA,
        address tokenB
    ) external view returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(
        address to
    ) external returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

        _beforeTokenTransfer(address(0), account, amount);

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

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

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

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

contract ERC42069 is ERC20, Ownable {
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private isSwapping;

    address private treasuryWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxSwapTokens;

    uint256 public lpBurnFrequency = 8 hours;
    uint256 public lastLpBurnTime;

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

    uint256 private launchedAt;

    uint256 public buyTotalFees;
    uint256 public buyTreasuryFee;
    uint256 public buyBurnFee;

    uint256 public sellTotalFees;
    uint256 public sellTreasuryFee;
    uint256 public sellBurnFee;

    uint256 public sellCounter;
    uint256 public sellAmountCounter;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(uint256 => uint256) private swapInBlock;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;

    mapping(address => bool) public automatedMarketMakerPairs;

    event AutoNukeLP();

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

    event MarketingWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    constructor() ERC20("42069", "42069", 0) {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

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

        uint256 _buyTreasuryFee = 10;
        uint256 _buyBurnFee = 10;

        uint256 _sellTreasuryFee = 16;
        uint256 _sellBurnFee = 16;

        buyTreasuryFee = _buyTreasuryFee;
        buyBurnFee = _buyBurnFee;
        buyTotalFees = buyTreasuryFee + buyBurnFee;

        sellTreasuryFee = _sellTreasuryFee;
        sellBurnFee = _sellBurnFee;
        sellTotalFees = sellTreasuryFee + sellBurnFee;

        uint256 totalSupply = 42069;

        maxTransactionAmount = 841; // 2%
        swapTokensAtAmount = 2;
        maxSwapTokens = 841;

        treasuryWallet = msg.sender;

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

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function addLiquidity() external payable onlyOwner {
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        _addLiquidity(balanceOf(address(this)), msg.value);
    }

    function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    function enableTrading() external onlyOwner {
        tradingActive = true;
        launchedAt = block.number;
    }

    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    function wlContract(address _whitelist, bool isWL) public onlyOwner {
        _isExcludedMaxTransactionAmount[_whitelist] = isWL;
        _isExcludedFromFees[_whitelist] = isWL;
    }

    function excludeFromMaxTransaction(
        address excludedAddress,
        bool isExcluded
    ) public onlyOwner {
        _isExcludedMaxTransactionAmount[excludedAddress] = isExcluded;
    }

    function updateSwapTokensAtAmount(
        uint256 newAmount
    ) external onlyOwner returns (bool) {
        require(newAmount >= 1 && newAmount <= 128);
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updateMaxSwapTokens(
        uint256 newAmount
    ) external onlyOwner returns (bool) {
        require(newAmount >= 1 && newAmount <= 128);
        maxSwapTokens = newAmount;
        return true;
    }

    function updateBuyFees(
        uint256 _treasuryFee,
        uint256 _burnFee
    ) external onlyOwner {
        buyTreasuryFee = _treasuryFee;
        buyBurnFee = _burnFee;
        buyTotalFees = buyTreasuryFee + buyBurnFee;
        require(buyTotalFees <= 20);
    }

    function updateSellFees(
        uint256 _treasuryFee,
        uint256 _burnFee
    ) external onlyOwner {
        sellTreasuryFee = _treasuryFee;
        sellBurnFee = _burnFee;
        sellTotalFees = sellTreasuryFee + sellBurnFee;
        require(sellTotalFees <= 32);
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateMarketingWallet(
        address newMarketingWallet
    ) external onlyOwner {
        emit MarketingWalletUpdated(newMarketingWallet, treasuryWallet);
        treasuryWallet = newMarketingWallet;
    }

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

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        uint256 blockNumber = block.number;

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

                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxTransactionAmount,
                        "Max wallet exceeded"
                    );
                }
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxTransactionAmount,
                        "Max wallet exceeded"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            !isSwapping &&
            (swapInBlock[blockNumber] <= 2) &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            isSwapping = true;

            swapBack();

            ++swapInBlock[blockNumber];

            isSwapping = false;
        }

        if (
            !isSwapping &&
            automatedMarketMakerPairs[to] &&
            !_isExcludedFromFees[from]
        ) {
            autoBurnLiquidityPairTokens();
        }

        bool takeFee = !isSwapping;

        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        uint256 toTreasury = 0;
        uint256 toBurn = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        // cause there are no decimals, fees will be taken only on txs of 50 tokens and more
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = (amount * sellTotalFees) / 100;
                toBurn = (fees * sellBurnFee) / sellTotalFees;
                toTreasury = fees - toBurn;

                // on every 2/4/8/16 sells, if LP balance is > 2048/1024/512/256, take 1 token as burn tax no matter the amount being sold
                // will be triggered only if burn amount from fees is 0 for the current trade and the trade is taxable
                sellCounter++;
                uint256 lpBalance = balanceOf(uniswapV2Pair);
                if (toBurn == 0) {
                    if (
                        (lpBalance > 2048 && sellCounter >= 2) ||
                        (lpBalance > 1024 && sellCounter >= 4) ||
                        (lpBalance > 512 && sellCounter >= 8) ||
                        (lpBalance > 256 && sellCounter >= 16)
                    ) {
                        sellCounter = 0;
                        toBurn = 1;
                        fees += 1;
                    }
                }

                sellAmountCounter += amount;
            }
            // on buy
            else if (buyTotalFees > 0 && automatedMarketMakerPairs[from]) {
                fees = (amount * buyTotalFees) / 100;
                toBurn = (fees * buyBurnFee) / buyTotalFees;
                toTreasury = fees - toBurn;
            }

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

            if (toBurn > 0) {
                super._transfer(from, address(0xdead), toBurn);
            }

            amount -= fees;
        }

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        bool success;

        if (contractBalance == 0) {
            return;
        }

        if (contractBalance > maxSwapTokens) {
            contractBalance = maxSwapTokens;
        }

        uint256 amountToSwapForETH = contractBalance;

        swapTokensForEth(amountToSwapForETH);

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

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

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function autoBurnLiquidityPairTokens() internal {
        uint256 liquidityPairBalance = balanceOf(uniswapV2Pair);

        if (liquidityPairBalance > 256) {
            if (sellAmountCounter < 1024) {
                if (block.timestamp < lastLpBurnTime + lpBurnFrequency) {
                    return;
                } else {
                    lastLpBurnTime = block.timestamp;
                }
            } else {
                sellAmountCounter = 0;
            }

            super._transfer(uniswapV2Pair, address(0xdead), 1);

            IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
            pair.sync();
            emit AutoNukeLP();
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"MarketingWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"excludedAddress","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellAmountCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateMaxSwapTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_whitelist","type":"address"},{"internalType":"bool","name":"isWL","type":"bool"}],"name":"wlContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052617080600b556001600d5f6101000a81548160ff0219169083151502179055505f600d60016101000a81548160ff0219169083151502179055503480156200004a575f80fd5b506040518060400160405280600581526020017f34323036390000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f34323036390000000000000000000000000000000000000000000000000000008152505f8260039081620000c99190620009db565b508160049081620000db9190620009db565b508060055f6101000a81548160ff021916908360ff160217905550505050620001196200010d620002ea60201b60201c565b620002f160201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d905062000144816001620003b660201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505f600a90505f600a90505f601090505f601090508360108190555082601181905550601154601054620001ac919062000aec565b600f819055508160138190555080601481905550601454601354620001d2919062000aec565b6012819055505f61a45590506103496008819055506002600981905550610349600a819055503360075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200025a6200024c6200049d60201b60201c565b6001620004c660201b60201c565b6200026d306001620004c660201b60201c565b6200028261dead6001620004c660201b60201c565b620002a4620002966200049d60201b60201c565b6001620003b660201b60201c565b620002b7306001620003b660201b60201c565b620002cc61dead6001620003b660201b60201c565b620002de3382620005fd60201b60201c565b50505050505062000c75565b5f33905090565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620003c6620002ea60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620003ec6200049d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000445576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200043c9062000b84565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620004d6620002ea60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620004fc6200049d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000555576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200054c9062000b84565b60405180910390fd5b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620005f1919062000bc0565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200066e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006659062000c29565b60405180910390fd5b620006815f83836200076d60201b60201c565b8060025f82825462000694919062000aec565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254620006e8919062000aec565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200074e919062000c5a565b60405180910390a3620007695f83836200077260201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620007f357607f821691505b602082108103620008095762000808620007ae565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200086d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000830565b62000879868362000830565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620008c3620008bd620008b78462000891565b6200089a565b62000891565b9050919050565b5f819050919050565b620008de83620008a3565b620008f6620008ed82620008ca565b8484546200083c565b825550505050565b5f90565b6200090c620008fe565b62000919818484620008d3565b505050565b5b818110156200094057620009345f8262000902565b6001810190506200091f565b5050565b601f8211156200098f5762000959816200080f565b620009648462000821565b8101602085101562000974578190505b6200098c620009838562000821565b8301826200091e565b50505b505050565b5f82821c905092915050565b5f620009b15f198460080262000994565b1980831691505092915050565b5f620009cb8383620009a0565b9150826002028217905092915050565b620009e68262000777565b67ffffffffffffffff81111562000a025762000a0162000781565b5b62000a0e8254620007db565b62000a1b82828562000944565b5f60209050601f83116001811462000a51575f841562000a3c578287015190505b62000a488582620009be565b86555062000ab7565b601f19841662000a61866200080f565b5f5b8281101562000a8a5784890151825560018201915060208501945060208101905062000a63565b8683101562000aaa578489015162000aa6601f891682620009a0565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000af88262000891565b915062000b058362000891565b925082820190508082111562000b205762000b1f62000abf565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000b6c60208362000b26565b915062000b798262000b36565b602082019050919050565b5f6020820190508181035f83015262000b9d8162000b5e565b9050919050565b5f8115159050919050565b62000bba8162000ba4565b82525050565b5f60208201905062000bd55f83018462000baf565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000c11601f8362000b26565b915062000c1e8262000bdb565b602082019050919050565b5f6020820190508181035f83015262000c428162000c03565b9050919050565b62000c548162000891565b82525050565b5f60208201905062000c6f5f83018462000c49565b92915050565b60805161450762000cbf5f395f8181610c0401528181611acf01528181611b7801528181612cc901528181612cf0015281816132da015281816133b901526133e001526145075ff3fe608060405260043610610280575f3560e01c80638a8c523c1161014e578063b431dd28116100c0578063d85ba06311610079578063d85ba06314610999578063dd62ed3e146109c3578063e2f45605146109ff578063e71dc3f514610a29578063e8078d9414610a53578063f2fde38b14610a5d57610287565b8063b431dd281461087d578063b62496f5146108a5578063bbc0c742146108e1578063c02466681461090b578063c8c8ebe414610933578063d257b34f1461095d57610287565b8063a457c2d711610112578063a457c2d71461075f578063a4c82a001461079b578063a4d0047d146107c5578063a9059cbb146107ef578063aacebbe31461082b578063adb873bd1461085357610287565b80638a8c523c146106915780638da5cb5b146106a757806395d89b41146106d15780639a7a23d6146106fb5780639b66731b1461072357610287565b806339509351116101f25780636b2fb124116101ab5780636b2fb1241461059957806370a08231146105c3578063715018a6146105ff578063751039fc146106155780637571336a1461063f57806378d527221461066757610287565b8063395093511461048d57806349bd5a5e146104c95780634a62bb65146104f35780635c068a8c1461051d57806366ca9b83146105475780636a486a8e1461056f57610287565b806318160ddd1161024457806318160ddd1461037f57806323b872dd146103a957806327c8f835146103e55780632c3e486c1461040f578063313ce5671461043957806336a1efe41461046357610287565b806302dbd8f81461028b57806306fdde03146102b3578063095ea7b3146102dd57806310d5de53146103195780631694505e1461035557610287565b3661028757005b5f80fd5b348015610296575f80fd5b506102b160048036038101906102ac91906134a7565b610a85565b005b3480156102be575f80fd5b506102c7610b38565b6040516102d4919061356f565b60405180910390f35b3480156102e8575f80fd5b5061030360048036038101906102fe91906135e9565b610bc8565b6040516103109190613641565b60405180910390f35b348015610324575f80fd5b5061033f600480360381019061033a919061365a565b610be5565b60405161034c9190613641565b60405180910390f35b348015610360575f80fd5b50610369610c02565b60405161037691906136e0565b60405180910390f35b34801561038a575f80fd5b50610393610c26565b6040516103a09190613708565b60405180910390f35b3480156103b4575f80fd5b506103cf60048036038101906103ca9190613721565b610c2f565b6040516103dc9190613641565b60405180910390f35b3480156103f0575f80fd5b506103f9610d21565b6040516104069190613780565b60405180910390f35b34801561041a575f80fd5b50610423610d27565b6040516104309190613708565b60405180910390f35b348015610444575f80fd5b5061044d610d2d565b60405161045a91906137b4565b60405180910390f35b34801561046e575f80fd5b50610477610d42565b6040516104849190613708565b60405180910390f35b348015610498575f80fd5b506104b360048036038101906104ae91906135e9565b610d48565b6040516104c09190613641565b60405180910390f35b3480156104d4575f80fd5b506104dd610def565b6040516104ea9190613780565b60405180910390f35b3480156104fe575f80fd5b50610507610e14565b6040516105149190613641565b60405180910390f35b348015610528575f80fd5b50610531610e26565b60405161053e9190613708565b60405180910390f35b348015610552575f80fd5b5061056d600480360381019061056891906134a7565b610e2c565b005b34801561057a575f80fd5b50610583610edf565b6040516105909190613708565b60405180910390f35b3480156105a4575f80fd5b506105ad610ee5565b6040516105ba9190613708565b60405180910390f35b3480156105ce575f80fd5b506105e960048036038101906105e4919061365a565b610eeb565b6040516105f69190613708565b60405180910390f35b34801561060a575f80fd5b50610613610f30565b005b348015610620575f80fd5b50610629610fb7565b6040516106369190613641565b60405180910390f35b34801561064a575f80fd5b50610665600480360381019061066091906137f7565b611054565b005b348015610672575f80fd5b5061067b611128565b6040516106889190613708565b60405180910390f35b34801561069c575f80fd5b506106a561112e565b005b3480156106b2575f80fd5b506106bb6111ce565b6040516106c89190613780565b60405180910390f35b3480156106dc575f80fd5b506106e56111f7565b6040516106f2919061356f565b60405180910390f35b348015610706575f80fd5b50610721600480360381019061071c91906137f7565b611287565b005b34801561072e575f80fd5b5061074960048036038101906107449190613835565b6113a0565b6040516107569190613641565b60405180910390f35b34801561076a575f80fd5b50610785600480360381019061078091906135e9565b611447565b6040516107929190613641565b60405180910390f35b3480156107a6575f80fd5b506107af61152d565b6040516107bc9190613708565b60405180910390f35b3480156107d0575f80fd5b506107d9611533565b6040516107e69190613708565b60405180910390f35b3480156107fa575f80fd5b50610815600480360381019061081091906135e9565b611539565b6040516108229190613641565b60405180910390f35b348015610836575f80fd5b50610851600480360381019061084c919061365a565b611556565b005b34801561085e575f80fd5b50610867611690565b6040516108749190613708565b60405180910390f35b348015610888575f80fd5b506108a3600480360381019061089e91906137f7565b611696565b005b3480156108b0575f80fd5b506108cb60048036038101906108c6919061365a565b6117be565b6040516108d89190613641565b60405180910390f35b3480156108ec575f80fd5b506108f56117db565b6040516109029190613641565b60405180910390f35b348015610916575f80fd5b50610931600480360381019061092c91906137f7565b6117ee565b005b34801561093e575f80fd5b50610947611910565b6040516109549190613708565b60405180910390f35b348015610968575f80fd5b50610983600480360381019061097e9190613835565b611916565b6040516109909190613641565b60405180910390f35b3480156109a4575f80fd5b506109ad6119bd565b6040516109ba9190613708565b60405180910390f35b3480156109ce575f80fd5b506109e960048036038101906109e49190613860565b6119c3565b6040516109f69190613708565b60405180910390f35b348015610a0a575f80fd5b50610a13611a45565b604051610a209190613708565b60405180910390f35b348015610a34575f80fd5b50610a3d611a4b565b604051610a4a9190613708565b60405180910390f35b610a5b611a51565b005b348015610a68575f80fd5b50610a836004803603810190610a7e919061365a565b611d0b565b005b610a8d611e01565b73ffffffffffffffffffffffffffffffffffffffff16610aab6111ce565b73ffffffffffffffffffffffffffffffffffffffff1614610b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af8906138e8565b60405180910390fd5b8160138190555080601481905550601454601354610b1f9190613933565b60128190555060206012541115610b34575f80fd5b5050565b606060038054610b4790613993565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7390613993565b8015610bbe5780601f10610b9557610100808354040283529160200191610bbe565b820191905f5260205f20905b815481529060010190602001808311610ba157829003601f168201915b5050505050905090565b5f610bdb610bd4611e01565b8484611e08565b6001905092915050565b6019602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b5f610c3b848484611fcb565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610c82611e01565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf890613a33565b60405180910390fd5b610d1585610d0d611e01565b858403611e08565b60019150509392505050565b61dead81565b600b5481565b5f60055f9054906101000a900460ff16905090565b600a5481565b5f610de5610d54611e01565b848460015f610d61611e01565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610de09190613933565b611e08565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5f9054906101000a900460ff1681565b60105481565b610e34611e01565b73ffffffffffffffffffffffffffffffffffffffff16610e526111ce565b73ffffffffffffffffffffffffffffffffffffffff1614610ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9f906138e8565b60405180910390fd5b8160108190555080601181905550601154601054610ec69190613933565b600f819055506014600f541115610edb575f80fd5b5050565b60125481565b60135481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610f38611e01565b73ffffffffffffffffffffffffffffffffffffffff16610f566111ce565b73ffffffffffffffffffffffffffffffffffffffff1614610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa3906138e8565b60405180910390fd5b610fb55f612b60565b565b5f610fc0611e01565b73ffffffffffffffffffffffffffffffffffffffff16610fde6111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102b906138e8565b60405180910390fd5b5f600d5f6101000a81548160ff0219169083151502179055506001905090565b61105c611e01565b73ffffffffffffffffffffffffffffffffffffffff1661107a6111ce565b73ffffffffffffffffffffffffffffffffffffffff16146110d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c7906138e8565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60165481565b611136611e01565b73ffffffffffffffffffffffffffffffffffffffff166111546111ce565b73ffffffffffffffffffffffffffffffffffffffff16146111aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a1906138e8565b60405180910390fd5b6001600d60016101000a81548160ff02191690831515021790555043600e81905550565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461120690613993565b80601f016020809104026020016040519081016040528092919081815260200182805461123290613993565b801561127d5780601f106112545761010080835404028352916020019161127d565b820191905f5260205f20905b81548152906001019060200180831161126057829003601f168201915b5050505050905090565b61128f611e01565b73ffffffffffffffffffffffffffffffffffffffff166112ad6111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fa906138e8565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138990613ac1565b60405180910390fd5b61139c8282612c25565b5050565b5f6113a9611e01565b73ffffffffffffffffffffffffffffffffffffffff166113c76111ce565b73ffffffffffffffffffffffffffffffffffffffff161461141d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611414906138e8565b60405180910390fd5b6001821015801561142f575060808211155b611437575f80fd5b81600a8190555060019050919050565b5f8060015f611454611e01565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561150e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150590613b4f565b60405180910390fd5b611522611519611e01565b85858403611e08565b600191505092915050565b600c5481565b60155481565b5f61154c611545611e01565b8484611fcb565b6001905092915050565b61155e611e01565b73ffffffffffffffffffffffffffffffffffffffff1661157c6111ce565b73ffffffffffffffffffffffffffffffffffffffff16146115d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c9906138e8565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6760405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b61169e611e01565b73ffffffffffffffffffffffffffffffffffffffff166116bc6111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611712576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611709906138e8565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b601a602052805f5260405f205f915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b6117f6611e01565b73ffffffffffffffffffffffffffffffffffffffff166118146111ce565b73ffffffffffffffffffffffffffffffffffffffff161461186a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611861906138e8565b60405180910390fd5b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516119049190613641565b60405180910390a25050565b60085481565b5f61191f611e01565b73ffffffffffffffffffffffffffffffffffffffff1661193d6111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198a906138e8565b60405180910390fd5b600182101580156119a5575060808211155b6119ad575f80fd5b8160098190555060019050919050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60095481565b60115481565b611a59611e01565b73ffffffffffffffffffffffffffffffffffffffff16611a776111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac4906138e8565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b36573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b5a9190613b81565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bdf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c039190613b81565b6040518363ffffffff1660e01b8152600401611c20929190613bac565b6020604051808303815f875af1158015611c3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c609190613b81565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611ccb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611054565b611cf760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612c25565b611d09611d0330610eeb565b34612cc3565b565b611d13611e01565b73ffffffffffffffffffffffffffffffffffffffff16611d316111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7e906138e8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dec90613c43565b60405180910390fd5b611dfe81612b60565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6d90613cd1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ee4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edb90613d5f565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fbe9190613708565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612039576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203090613ded565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209e90613e7b565b60405180910390fd5b5f81036120be576120b983835f612da1565b612b5b565b5f439050600d5f9054906101000a900460ff16156125a6576120de6111ce565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561214c575061211c6111ce565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561218457505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121be575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121d75750600660149054906101000a900460ff16155b156125a557600d60019054906101000a900460ff166122cb5760175f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061228b575060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6122ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c190613ee3565b60405180910390fd5b5b601a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612368575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561240f576008548211156123b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a990613f71565b60405180910390fd5b6008546123be84610eeb565b836123c99190613933565b111561240a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240190613fd9565b60405180910390fd5b6125a4565b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156124ac575060195f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156124fb576008548211156124f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ed90614067565b60405180910390fd5b6125a3565b60195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166125a25760085461255584610eeb565b836125609190613933565b11156125a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259890613fd9565b60405180910390fd5b5b5b5b5b5b5f6125b030610eeb565b90505f60095482101590508080156125d55750600660149054906101000a900460ff16155b80156125f35750600260185f8581526020019081526020015f205411155b80156126465750601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612699575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156126ec575060175f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612753576001600660146101000a81548160ff021916908315150217905550612714613016565b60185f8481526020019081526020015f205f815461273190614085565b919050819055505f600660146101000a81548160ff0219169083151502179055505b600660149054906101000a900460ff161580156127b65750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015612809575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612817576128166130de565b5b5f600660149054906101000a900460ff1615905060175f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806128c6575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156128cf575f90505b5f805f8315612b4857601a5f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561292f57505f601254115b15612a6a5760646012548961294491906140cc565b61294e919061413a565b92506012546014548461296191906140cc565b61296b919061413a565b90508083612979919061416a565b915060155f81548092919061298d90614085565b91905055505f6129bd60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610eeb565b90505f8203612a4c57610800811180156129da5750600260155410155b806129f55750610400811180156129f45750600460155410155b5b80612a10575061020081118015612a0f5750600860155410155b5b80612a2b575061010081118015612a2a5750601060155410155b5b15612a4b575f60158190555060019150600184612a489190613933565b93505b5b8860165f828254612a5d9190613933565b9250508190555050612b0f565b5f600f54118015612ac15750601a5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612b0e576064600f5489612ad691906140cc565b612ae0919061413a565b9250600f5460115484612af391906140cc565b612afd919061413a565b90508083612b0b919061416a565b91505b5b5f821115612b2357612b228a3084612da1565b5b5f811115612b3957612b388a61dead83612da1565b5b8288612b45919061416a565b97505b612b538a8a8a612da1565b505050505050505b505050565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b612cee307f000000000000000000000000000000000000000000000000000000000000000084611e08565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80612d376111ce565b426040518863ffffffff1660e01b8152600401612d59969594939291906141d6565b60606040518083038185885af1158015612d75573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612d9a9190614249565b5050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0690613ded565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7490613e7b565b60405180910390fd5b612e88838383613233565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0290614309565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612f999190613933565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ffd9190613708565b60405180910390a3613010848484613238565b50505050565b5f61302030610eeb565b90505f8082036130315750506130dc565b600a5482111561304157600a5491505b5f82905061304e8161323d565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161309390614354565b5f6040518083038185875af1925050503d805f81146130cd576040519150601f19603f3d011682016040523d82523d5f602084013e6130d2565b606091505b5050809250505050505b565b5f61310960065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610eeb565b905061010081111561322f57610400601654101561314a57600b54600c546131319190613933565b42101561313e5750613231565b42600c81905550613152565b5f6016819055505b61318160065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead6001612da1565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156131eb575f80fd5b505af11580156131fd573d5f803e3d5ffd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a1505b505b565b505050565b505050565b5f600267ffffffffffffffff81111561325957613258614368565b5b6040519080825280602002602001820160405280156132875781602001602082028036833780820191505090505b50905030815f8151811061329e5761329d614395565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613341573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133659190613b81565b8160018151811061337957613378614395565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506133de307f000000000000000000000000000000000000000000000000000000000000000084611e08565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161343f959493929190614479565b5f604051808303815f87803b158015613456575f80fd5b505af1158015613468573d5f803e3d5ffd5b505050505050565b5f80fd5b5f819050919050565b61348681613474565b8114613490575f80fd5b50565b5f813590506134a18161347d565b92915050565b5f80604083850312156134bd576134bc613470565b5b5f6134ca85828601613493565b92505060206134db85828601613493565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561351c578082015181840152602081019050613501565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613541826134e5565b61354b81856134ef565b935061355b8185602086016134ff565b61356481613527565b840191505092915050565b5f6020820190508181035f8301526135878184613537565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6135b88261358f565b9050919050565b6135c8816135ae565b81146135d2575f80fd5b50565b5f813590506135e3816135bf565b92915050565b5f80604083850312156135ff576135fe613470565b5b5f61360c858286016135d5565b925050602061361d85828601613493565b9150509250929050565b5f8115159050919050565b61363b81613627565b82525050565b5f6020820190506136545f830184613632565b92915050565b5f6020828403121561366f5761366e613470565b5b5f61367c848285016135d5565b91505092915050565b5f819050919050565b5f6136a86136a361369e8461358f565b613685565b61358f565b9050919050565b5f6136b98261368e565b9050919050565b5f6136ca826136af565b9050919050565b6136da816136c0565b82525050565b5f6020820190506136f35f8301846136d1565b92915050565b61370281613474565b82525050565b5f60208201905061371b5f8301846136f9565b92915050565b5f805f6060848603121561373857613737613470565b5b5f613745868287016135d5565b9350506020613756868287016135d5565b925050604061376786828701613493565b9150509250925092565b61377a816135ae565b82525050565b5f6020820190506137935f830184613771565b92915050565b5f60ff82169050919050565b6137ae81613799565b82525050565b5f6020820190506137c75f8301846137a5565b92915050565b6137d681613627565b81146137e0575f80fd5b50565b5f813590506137f1816137cd565b92915050565b5f806040838503121561380d5761380c613470565b5b5f61381a858286016135d5565b925050602061382b858286016137e3565b9150509250929050565b5f6020828403121561384a57613849613470565b5b5f61385784828501613493565b91505092915050565b5f806040838503121561387657613875613470565b5b5f613883858286016135d5565b9250506020613894858286016135d5565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6138d26020836134ef565b91506138dd8261389e565b602082019050919050565b5f6020820190508181035f8301526138ff816138c6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61393d82613474565b915061394883613474565b92508282019050808211156139605761395f613906565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806139aa57607f821691505b6020821081036139bd576139bc613966565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613a1d6028836134ef565b9150613a28826139c3565b604082019050919050565b5f6020820190508181035f830152613a4a81613a11565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613aab6039836134ef565b9150613ab682613a51565b604082019050919050565b5f6020820190508181035f830152613ad881613a9f565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613b396025836134ef565b9150613b4482613adf565b604082019050919050565b5f6020820190508181035f830152613b6681613b2d565b9050919050565b5f81519050613b7b816135bf565b92915050565b5f60208284031215613b9657613b95613470565b5b5f613ba384828501613b6d565b91505092915050565b5f604082019050613bbf5f830185613771565b613bcc6020830184613771565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613c2d6026836134ef565b9150613c3882613bd3565b604082019050919050565b5f6020820190508181035f830152613c5a81613c21565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613cbb6024836134ef565b9150613cc682613c61565b604082019050919050565b5f6020820190508181035f830152613ce881613caf565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d496022836134ef565b9150613d5482613cef565b604082019050919050565b5f6020820190508181035f830152613d7681613d3d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613dd76025836134ef565b9150613de282613d7d565b604082019050919050565b5f6020820190508181035f830152613e0481613dcb565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613e656023836134ef565b9150613e7082613e0b565b604082019050919050565b5f6020820190508181035f830152613e9281613e59565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f613ecd6016836134ef565b9150613ed882613e99565b602082019050919050565b5f6020820190508181035f830152613efa81613ec1565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f613f5b6035836134ef565b9150613f6682613f01565b604082019050919050565b5f6020820190508181035f830152613f8881613f4f565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f613fc36013836134ef565b9150613fce82613f8f565b602082019050919050565b5f6020820190508181035f830152613ff081613fb7565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6140516036836134ef565b915061405c82613ff7565b604082019050919050565b5f6020820190508181035f83015261407e81614045565b9050919050565b5f61408f82613474565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036140c1576140c0613906565b5b600182019050919050565b5f6140d682613474565b91506140e183613474565b92508282026140ef81613474565b9150828204841483151761410657614105613906565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61414482613474565b915061414f83613474565b92508261415f5761415e61410d565b5b828204905092915050565b5f61417482613474565b915061417f83613474565b925082820390508181111561419757614196613906565b5b92915050565b5f819050919050565b5f6141c06141bb6141b68461419d565b613685565b613474565b9050919050565b6141d0816141a6565b82525050565b5f60c0820190506141e95f830189613771565b6141f660208301886136f9565b61420360408301876141c7565b61421060608301866141c7565b61421d6080830185613771565b61422a60a08301846136f9565b979650505050505050565b5f815190506142438161347d565b92915050565b5f805f606084860312156142605761425f613470565b5b5f61426d86828701614235565b935050602061427e86828701614235565b925050604061428f86828701614235565b9150509250925092565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6142f36026836134ef565b91506142fe82614299565b604082019050919050565b5f6020820190508181035f830152614320816142e7565b9050919050565b5f81905092915050565b50565b5f61433f5f83614327565b915061434a82614331565b5f82019050919050565b5f61435e82614334565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6143f4816135ae565b82525050565b5f61440583836143eb565b60208301905092915050565b5f602082019050919050565b5f614427826143c2565b61443181856143cc565b935061443c836143dc565b805f5b8381101561446c57815161445388826143fa565b975061445e83614411565b92505060018101905061443f565b5085935050505092915050565b5f60a08201905061448c5f8301886136f9565b61449960208301876141c7565b81810360408301526144ab818661441d565b90506144ba6060830185613771565b6144c760808301846136f9565b969550505050505056fea26469706673582212201446944d4d5ed038eecaf803b432b3ffbbed0536306df235563aa4cc597bb62a64736f6c63430008170033

Deployed Bytecode

0x608060405260043610610280575f3560e01c80638a8c523c1161014e578063b431dd28116100c0578063d85ba06311610079578063d85ba06314610999578063dd62ed3e146109c3578063e2f45605146109ff578063e71dc3f514610a29578063e8078d9414610a53578063f2fde38b14610a5d57610287565b8063b431dd281461087d578063b62496f5146108a5578063bbc0c742146108e1578063c02466681461090b578063c8c8ebe414610933578063d257b34f1461095d57610287565b8063a457c2d711610112578063a457c2d71461075f578063a4c82a001461079b578063a4d0047d146107c5578063a9059cbb146107ef578063aacebbe31461082b578063adb873bd1461085357610287565b80638a8c523c146106915780638da5cb5b146106a757806395d89b41146106d15780639a7a23d6146106fb5780639b66731b1461072357610287565b806339509351116101f25780636b2fb124116101ab5780636b2fb1241461059957806370a08231146105c3578063715018a6146105ff578063751039fc146106155780637571336a1461063f57806378d527221461066757610287565b8063395093511461048d57806349bd5a5e146104c95780634a62bb65146104f35780635c068a8c1461051d57806366ca9b83146105475780636a486a8e1461056f57610287565b806318160ddd1161024457806318160ddd1461037f57806323b872dd146103a957806327c8f835146103e55780632c3e486c1461040f578063313ce5671461043957806336a1efe41461046357610287565b806302dbd8f81461028b57806306fdde03146102b3578063095ea7b3146102dd57806310d5de53146103195780631694505e1461035557610287565b3661028757005b5f80fd5b348015610296575f80fd5b506102b160048036038101906102ac91906134a7565b610a85565b005b3480156102be575f80fd5b506102c7610b38565b6040516102d4919061356f565b60405180910390f35b3480156102e8575f80fd5b5061030360048036038101906102fe91906135e9565b610bc8565b6040516103109190613641565b60405180910390f35b348015610324575f80fd5b5061033f600480360381019061033a919061365a565b610be5565b60405161034c9190613641565b60405180910390f35b348015610360575f80fd5b50610369610c02565b60405161037691906136e0565b60405180910390f35b34801561038a575f80fd5b50610393610c26565b6040516103a09190613708565b60405180910390f35b3480156103b4575f80fd5b506103cf60048036038101906103ca9190613721565b610c2f565b6040516103dc9190613641565b60405180910390f35b3480156103f0575f80fd5b506103f9610d21565b6040516104069190613780565b60405180910390f35b34801561041a575f80fd5b50610423610d27565b6040516104309190613708565b60405180910390f35b348015610444575f80fd5b5061044d610d2d565b60405161045a91906137b4565b60405180910390f35b34801561046e575f80fd5b50610477610d42565b6040516104849190613708565b60405180910390f35b348015610498575f80fd5b506104b360048036038101906104ae91906135e9565b610d48565b6040516104c09190613641565b60405180910390f35b3480156104d4575f80fd5b506104dd610def565b6040516104ea9190613780565b60405180910390f35b3480156104fe575f80fd5b50610507610e14565b6040516105149190613641565b60405180910390f35b348015610528575f80fd5b50610531610e26565b60405161053e9190613708565b60405180910390f35b348015610552575f80fd5b5061056d600480360381019061056891906134a7565b610e2c565b005b34801561057a575f80fd5b50610583610edf565b6040516105909190613708565b60405180910390f35b3480156105a4575f80fd5b506105ad610ee5565b6040516105ba9190613708565b60405180910390f35b3480156105ce575f80fd5b506105e960048036038101906105e4919061365a565b610eeb565b6040516105f69190613708565b60405180910390f35b34801561060a575f80fd5b50610613610f30565b005b348015610620575f80fd5b50610629610fb7565b6040516106369190613641565b60405180910390f35b34801561064a575f80fd5b50610665600480360381019061066091906137f7565b611054565b005b348015610672575f80fd5b5061067b611128565b6040516106889190613708565b60405180910390f35b34801561069c575f80fd5b506106a561112e565b005b3480156106b2575f80fd5b506106bb6111ce565b6040516106c89190613780565b60405180910390f35b3480156106dc575f80fd5b506106e56111f7565b6040516106f2919061356f565b60405180910390f35b348015610706575f80fd5b50610721600480360381019061071c91906137f7565b611287565b005b34801561072e575f80fd5b5061074960048036038101906107449190613835565b6113a0565b6040516107569190613641565b60405180910390f35b34801561076a575f80fd5b50610785600480360381019061078091906135e9565b611447565b6040516107929190613641565b60405180910390f35b3480156107a6575f80fd5b506107af61152d565b6040516107bc9190613708565b60405180910390f35b3480156107d0575f80fd5b506107d9611533565b6040516107e69190613708565b60405180910390f35b3480156107fa575f80fd5b50610815600480360381019061081091906135e9565b611539565b6040516108229190613641565b60405180910390f35b348015610836575f80fd5b50610851600480360381019061084c919061365a565b611556565b005b34801561085e575f80fd5b50610867611690565b6040516108749190613708565b60405180910390f35b348015610888575f80fd5b506108a3600480360381019061089e91906137f7565b611696565b005b3480156108b0575f80fd5b506108cb60048036038101906108c6919061365a565b6117be565b6040516108d89190613641565b60405180910390f35b3480156108ec575f80fd5b506108f56117db565b6040516109029190613641565b60405180910390f35b348015610916575f80fd5b50610931600480360381019061092c91906137f7565b6117ee565b005b34801561093e575f80fd5b50610947611910565b6040516109549190613708565b60405180910390f35b348015610968575f80fd5b50610983600480360381019061097e9190613835565b611916565b6040516109909190613641565b60405180910390f35b3480156109a4575f80fd5b506109ad6119bd565b6040516109ba9190613708565b60405180910390f35b3480156109ce575f80fd5b506109e960048036038101906109e49190613860565b6119c3565b6040516109f69190613708565b60405180910390f35b348015610a0a575f80fd5b50610a13611a45565b604051610a209190613708565b60405180910390f35b348015610a34575f80fd5b50610a3d611a4b565b604051610a4a9190613708565b60405180910390f35b610a5b611a51565b005b348015610a68575f80fd5b50610a836004803603810190610a7e919061365a565b611d0b565b005b610a8d611e01565b73ffffffffffffffffffffffffffffffffffffffff16610aab6111ce565b73ffffffffffffffffffffffffffffffffffffffff1614610b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af8906138e8565b60405180910390fd5b8160138190555080601481905550601454601354610b1f9190613933565b60128190555060206012541115610b34575f80fd5b5050565b606060038054610b4790613993565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7390613993565b8015610bbe5780601f10610b9557610100808354040283529160200191610bbe565b820191905f5260205f20905b815481529060010190602001808311610ba157829003601f168201915b5050505050905090565b5f610bdb610bd4611e01565b8484611e08565b6001905092915050565b6019602052805f5260405f205f915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b5f610c3b848484611fcb565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610c82611e01565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf890613a33565b60405180910390fd5b610d1585610d0d611e01565b858403611e08565b60019150509392505050565b61dead81565b600b5481565b5f60055f9054906101000a900460ff16905090565b600a5481565b5f610de5610d54611e01565b848460015f610d61611e01565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610de09190613933565b611e08565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5f9054906101000a900460ff1681565b60105481565b610e34611e01565b73ffffffffffffffffffffffffffffffffffffffff16610e526111ce565b73ffffffffffffffffffffffffffffffffffffffff1614610ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9f906138e8565b60405180910390fd5b8160108190555080601181905550601154601054610ec69190613933565b600f819055506014600f541115610edb575f80fd5b5050565b60125481565b60135481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610f38611e01565b73ffffffffffffffffffffffffffffffffffffffff16610f566111ce565b73ffffffffffffffffffffffffffffffffffffffff1614610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa3906138e8565b60405180910390fd5b610fb55f612b60565b565b5f610fc0611e01565b73ffffffffffffffffffffffffffffffffffffffff16610fde6111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102b906138e8565b60405180910390fd5b5f600d5f6101000a81548160ff0219169083151502179055506001905090565b61105c611e01565b73ffffffffffffffffffffffffffffffffffffffff1661107a6111ce565b73ffffffffffffffffffffffffffffffffffffffff16146110d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c7906138e8565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60165481565b611136611e01565b73ffffffffffffffffffffffffffffffffffffffff166111546111ce565b73ffffffffffffffffffffffffffffffffffffffff16146111aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a1906138e8565b60405180910390fd5b6001600d60016101000a81548160ff02191690831515021790555043600e81905550565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461120690613993565b80601f016020809104026020016040519081016040528092919081815260200182805461123290613993565b801561127d5780601f106112545761010080835404028352916020019161127d565b820191905f5260205f20905b81548152906001019060200180831161126057829003601f168201915b5050505050905090565b61128f611e01565b73ffffffffffffffffffffffffffffffffffffffff166112ad6111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fa906138e8565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138990613ac1565b60405180910390fd5b61139c8282612c25565b5050565b5f6113a9611e01565b73ffffffffffffffffffffffffffffffffffffffff166113c76111ce565b73ffffffffffffffffffffffffffffffffffffffff161461141d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611414906138e8565b60405180910390fd5b6001821015801561142f575060808211155b611437575f80fd5b81600a8190555060019050919050565b5f8060015f611454611e01565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561150e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150590613b4f565b60405180910390fd5b611522611519611e01565b85858403611e08565b600191505092915050565b600c5481565b60155481565b5f61154c611545611e01565b8484611fcb565b6001905092915050565b61155e611e01565b73ffffffffffffffffffffffffffffffffffffffff1661157c6111ce565b73ffffffffffffffffffffffffffffffffffffffff16146115d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c9906138e8565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6760405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b61169e611e01565b73ffffffffffffffffffffffffffffffffffffffff166116bc6111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611712576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611709906138e8565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b601a602052805f5260405f205f915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b6117f6611e01565b73ffffffffffffffffffffffffffffffffffffffff166118146111ce565b73ffffffffffffffffffffffffffffffffffffffff161461186a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611861906138e8565b60405180910390fd5b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516119049190613641565b60405180910390a25050565b60085481565b5f61191f611e01565b73ffffffffffffffffffffffffffffffffffffffff1661193d6111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198a906138e8565b60405180910390fd5b600182101580156119a5575060808211155b6119ad575f80fd5b8160098190555060019050919050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60095481565b60115481565b611a59611e01565b73ffffffffffffffffffffffffffffffffffffffff16611a776111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac4906138e8565b60405180910390fd5b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b36573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b5a9190613b81565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bdf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c039190613b81565b6040518363ffffffff1660e01b8152600401611c20929190613bac565b6020604051808303815f875af1158015611c3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c609190613b81565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611ccb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611054565b611cf760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612c25565b611d09611d0330610eeb565b34612cc3565b565b611d13611e01565b73ffffffffffffffffffffffffffffffffffffffff16611d316111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7e906138e8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dec90613c43565b60405180910390fd5b611dfe81612b60565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6d90613cd1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ee4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edb90613d5f565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fbe9190613708565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612039576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203090613ded565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209e90613e7b565b60405180910390fd5b5f81036120be576120b983835f612da1565b612b5b565b5f439050600d5f9054906101000a900460ff16156125a6576120de6111ce565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561214c575061211c6111ce565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561218457505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121be575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121d75750600660149054906101000a900460ff16155b156125a557600d60019054906101000a900460ff166122cb5760175f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061228b575060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6122ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c190613ee3565b60405180910390fd5b5b601a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612368575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561240f576008548211156123b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a990613f71565b60405180910390fd5b6008546123be84610eeb565b836123c99190613933565b111561240a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240190613fd9565b60405180910390fd5b6125a4565b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156124ac575060195f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156124fb576008548211156124f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ed90614067565b60405180910390fd5b6125a3565b60195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166125a25760085461255584610eeb565b836125609190613933565b11156125a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259890613fd9565b60405180910390fd5b5b5b5b5b5b5f6125b030610eeb565b90505f60095482101590508080156125d55750600660149054906101000a900460ff16155b80156125f35750600260185f8581526020019081526020015f205411155b80156126465750601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612699575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156126ec575060175f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612753576001600660146101000a81548160ff021916908315150217905550612714613016565b60185f8481526020019081526020015f205f815461273190614085565b919050819055505f600660146101000a81548160ff0219169083151502179055505b600660149054906101000a900460ff161580156127b65750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015612809575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612817576128166130de565b5b5f600660149054906101000a900460ff1615905060175f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806128c6575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156128cf575f90505b5f805f8315612b4857601a5f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561292f57505f601254115b15612a6a5760646012548961294491906140cc565b61294e919061413a565b92506012546014548461296191906140cc565b61296b919061413a565b90508083612979919061416a565b915060155f81548092919061298d90614085565b91905055505f6129bd60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610eeb565b90505f8203612a4c57610800811180156129da5750600260155410155b806129f55750610400811180156129f45750600460155410155b5b80612a10575061020081118015612a0f5750600860155410155b5b80612a2b575061010081118015612a2a5750601060155410155b5b15612a4b575f60158190555060019150600184612a489190613933565b93505b5b8860165f828254612a5d9190613933565b9250508190555050612b0f565b5f600f54118015612ac15750601a5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612b0e576064600f5489612ad691906140cc565b612ae0919061413a565b9250600f5460115484612af391906140cc565b612afd919061413a565b90508083612b0b919061416a565b91505b5b5f821115612b2357612b228a3084612da1565b5b5f811115612b3957612b388a61dead83612da1565b5b8288612b45919061416a565b97505b612b538a8a8a612da1565b505050505050505b505050565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b612cee307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611e08565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80612d376111ce565b426040518863ffffffff1660e01b8152600401612d59969594939291906141d6565b60606040518083038185885af1158015612d75573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612d9a9190614249565b5050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0690613ded565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7490613e7b565b60405180910390fd5b612e88838383613233565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0290614309565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612f999190613933565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ffd9190613708565b60405180910390a3613010848484613238565b50505050565b5f61302030610eeb565b90505f8082036130315750506130dc565b600a5482111561304157600a5491505b5f82905061304e8161323d565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161309390614354565b5f6040518083038185875af1925050503d805f81146130cd576040519150601f19603f3d011682016040523d82523d5f602084013e6130d2565b606091505b5050809250505050505b565b5f61310960065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610eeb565b905061010081111561322f57610400601654101561314a57600b54600c546131319190613933565b42101561313e5750613231565b42600c81905550613152565b5f6016819055505b61318160065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead6001612da1565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156131eb575f80fd5b505af11580156131fd573d5f803e3d5ffd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a1505b505b565b505050565b505050565b5f600267ffffffffffffffff81111561325957613258614368565b5b6040519080825280602002602001820160405280156132875781602001602082028036833780820191505090505b50905030815f8151811061329e5761329d614395565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613341573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133659190613b81565b8160018151811061337957613378614395565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506133de307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611e08565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161343f959493929190614479565b5f604051808303815f87803b158015613456575f80fd5b505af1158015613468573d5f803e3d5ffd5b505050505050565b5f80fd5b5f819050919050565b61348681613474565b8114613490575f80fd5b50565b5f813590506134a18161347d565b92915050565b5f80604083850312156134bd576134bc613470565b5b5f6134ca85828601613493565b92505060206134db85828601613493565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561351c578082015181840152602081019050613501565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613541826134e5565b61354b81856134ef565b935061355b8185602086016134ff565b61356481613527565b840191505092915050565b5f6020820190508181035f8301526135878184613537565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6135b88261358f565b9050919050565b6135c8816135ae565b81146135d2575f80fd5b50565b5f813590506135e3816135bf565b92915050565b5f80604083850312156135ff576135fe613470565b5b5f61360c858286016135d5565b925050602061361d85828601613493565b9150509250929050565b5f8115159050919050565b61363b81613627565b82525050565b5f6020820190506136545f830184613632565b92915050565b5f6020828403121561366f5761366e613470565b5b5f61367c848285016135d5565b91505092915050565b5f819050919050565b5f6136a86136a361369e8461358f565b613685565b61358f565b9050919050565b5f6136b98261368e565b9050919050565b5f6136ca826136af565b9050919050565b6136da816136c0565b82525050565b5f6020820190506136f35f8301846136d1565b92915050565b61370281613474565b82525050565b5f60208201905061371b5f8301846136f9565b92915050565b5f805f6060848603121561373857613737613470565b5b5f613745868287016135d5565b9350506020613756868287016135d5565b925050604061376786828701613493565b9150509250925092565b61377a816135ae565b82525050565b5f6020820190506137935f830184613771565b92915050565b5f60ff82169050919050565b6137ae81613799565b82525050565b5f6020820190506137c75f8301846137a5565b92915050565b6137d681613627565b81146137e0575f80fd5b50565b5f813590506137f1816137cd565b92915050565b5f806040838503121561380d5761380c613470565b5b5f61381a858286016135d5565b925050602061382b858286016137e3565b9150509250929050565b5f6020828403121561384a57613849613470565b5b5f61385784828501613493565b91505092915050565b5f806040838503121561387657613875613470565b5b5f613883858286016135d5565b9250506020613894858286016135d5565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6138d26020836134ef565b91506138dd8261389e565b602082019050919050565b5f6020820190508181035f8301526138ff816138c6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61393d82613474565b915061394883613474565b92508282019050808211156139605761395f613906565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806139aa57607f821691505b6020821081036139bd576139bc613966565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613a1d6028836134ef565b9150613a28826139c3565b604082019050919050565b5f6020820190508181035f830152613a4a81613a11565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613aab6039836134ef565b9150613ab682613a51565b604082019050919050565b5f6020820190508181035f830152613ad881613a9f565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613b396025836134ef565b9150613b4482613adf565b604082019050919050565b5f6020820190508181035f830152613b6681613b2d565b9050919050565b5f81519050613b7b816135bf565b92915050565b5f60208284031215613b9657613b95613470565b5b5f613ba384828501613b6d565b91505092915050565b5f604082019050613bbf5f830185613771565b613bcc6020830184613771565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613c2d6026836134ef565b9150613c3882613bd3565b604082019050919050565b5f6020820190508181035f830152613c5a81613c21565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613cbb6024836134ef565b9150613cc682613c61565b604082019050919050565b5f6020820190508181035f830152613ce881613caf565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d496022836134ef565b9150613d5482613cef565b604082019050919050565b5f6020820190508181035f830152613d7681613d3d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613dd76025836134ef565b9150613de282613d7d565b604082019050919050565b5f6020820190508181035f830152613e0481613dcb565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613e656023836134ef565b9150613e7082613e0b565b604082019050919050565b5f6020820190508181035f830152613e9281613e59565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f613ecd6016836134ef565b9150613ed882613e99565b602082019050919050565b5f6020820190508181035f830152613efa81613ec1565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f613f5b6035836134ef565b9150613f6682613f01565b604082019050919050565b5f6020820190508181035f830152613f8881613f4f565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f613fc36013836134ef565b9150613fce82613f8f565b602082019050919050565b5f6020820190508181035f830152613ff081613fb7565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6140516036836134ef565b915061405c82613ff7565b604082019050919050565b5f6020820190508181035f83015261407e81614045565b9050919050565b5f61408f82613474565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036140c1576140c0613906565b5b600182019050919050565b5f6140d682613474565b91506140e183613474565b92508282026140ef81613474565b9150828204841483151761410657614105613906565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61414482613474565b915061414f83613474565b92508261415f5761415e61410d565b5b828204905092915050565b5f61417482613474565b915061417f83613474565b925082820390508181111561419757614196613906565b5b92915050565b5f819050919050565b5f6141c06141bb6141b68461419d565b613685565b613474565b9050919050565b6141d0816141a6565b82525050565b5f60c0820190506141e95f830189613771565b6141f660208301886136f9565b61420360408301876141c7565b61421060608301866141c7565b61421d6080830185613771565b61422a60a08301846136f9565b979650505050505050565b5f815190506142438161347d565b92915050565b5f805f606084860312156142605761425f613470565b5b5f61426d86828701614235565b935050602061427e86828701614235565b925050604061428f86828701614235565b9150509250925092565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6142f36026836134ef565b91506142fe82614299565b604082019050919050565b5f6020820190508181035f830152614320816142e7565b9050919050565b5f81905092915050565b50565b5f61433f5f83614327565b915061434a82614331565b5f82019050919050565b5f61435e82614334565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6143f4816135ae565b82525050565b5f61440583836143eb565b60208301905092915050565b5f602082019050919050565b5f614427826143c2565b61443181856143cc565b935061443c836143dc565b805f5b8381101561446c57815161445388826143fa565b975061445e83614411565b92505060018101905061443f565b5085935050505092915050565b5f60a08201905061448c5f8301886136f9565b61449960208301876141c7565b81810360408301526144ab818661441d565b90506144ba6060830185613771565b6144c760808301846136f9565b969550505050505056fea26469706673582212201446944d4d5ed038eecaf803b432b3ffbbed0536306df235563aa4cc597bb62a64736f6c63430008170033

Deployed Bytecode Sourcemap

14163:12934:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19098:285;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9220:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10207:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15151:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14206:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9548:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10409:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14299:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14551:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9440:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14514:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10946:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14264:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14636:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14787:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18812:278;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14857:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14892:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9664:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8180:103;;;;;;;;;;;;;:::i;:::-;;17820:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18143:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14997:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17693:119;;;;;;;;;;;;;:::i;:::-;;7957:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9328:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19581:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18586:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11244:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14598:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14964:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9815:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20091:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14929:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17949:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15223:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14676:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19391:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14432:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18350:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14753:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10023:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14474:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14823:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16899:415;;;:::i;:::-;;8291:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19098:285;8103:12;:10;:12::i;:::-;8092:23;;:7;:5;:7::i;:::-;:23;;;8084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19235:12:::1;19217:15;:30;;;;19272:8;19258:11;:22;;;;19325:11;;19307:15;;:29;;;;:::i;:::-;19291:13;:45;;;;19372:2;19355:13;;:19;;19347:28;;;::::0;::::1;;19098:285:::0;;:::o;9220:100::-;9274:13;9307:5;9300:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9220:100;:::o;10207:194::-;10315:4;10332:39;10341:12;:10;:12::i;:::-;10355:7;10364:6;10332:8;:39::i;:::-;10389:4;10382:11;;10207:194;;;;:::o;15151:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;14206:51::-;;;:::o;9548:108::-;9609:7;9636:12;;9629:19;;9548:108;:::o;10409:529::-;10549:4;10566:36;10576:6;10584:9;10595:6;10566:9;:36::i;:::-;10615:24;10642:11;:19;10654:6;10642:19;;;;;;;;;;;;;;;:33;10662:12;:10;:12::i;:::-;10642:33;;;;;;;;;;;;;;;;10615:60;;10728:6;10708:16;:26;;10686:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;10838:57;10847:6;10855:12;:10;:12::i;:::-;10888:6;10869:16;:25;10838:8;:57::i;:::-;10926:4;10919:11;;;10409:529;;;;;:::o;14299:53::-;14345:6;14299:53;:::o;14551:40::-;;;;:::o;9440:100::-;9498:5;9523:9;;;;;;;;;;;9516:16;;9440:100;:::o;14514:28::-;;;;:::o;10946:290::-;11059:4;11076:130;11099:12;:10;:12::i;:::-;11126:7;11185:10;11148:11;:25;11160:12;:10;:12::i;:::-;11148:25;;;;;;;;;;;;;;;:34;11174:7;11148:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;11076:8;:130::i;:::-;11224:4;11217:11;;10946:290;;;;:::o;14264:28::-;;;;;;;;;;;;;:::o;14636:33::-;;;;;;;;;;;;;:::o;14787:29::-;;;;:::o;18812:278::-;8103:12;:10;:12::i;:::-;8092:23;;:7;:5;:7::i;:::-;:23;;;8084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18947:12:::1;18930:14;:29;;;;18983:8;18970:10;:21;;;;19034:10;;19017:14;;:27;;;;:::i;:::-;19002:12;:42;;;;19079:2;19063:12;;:18;;19055:27;;;::::0;::::1;;18812:278:::0;;:::o;14857:28::-;;;;:::o;14892:30::-;;;;:::o;9664:143::-;9754:7;9781:9;:18;9791:7;9781:18;;;;;;;;;;;;;;;;9774:25;;9664:143;;;:::o;8180:103::-;8103:12;:10;:12::i;:::-;8092:23;;:7;:5;:7::i;:::-;:23;;;8084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8245:30:::1;8272:1;8245:18;:30::i;:::-;8180:103::o:0;17820:121::-;17872:4;8103:12;:10;:12::i;:::-;8092:23;;:7;:5;:7::i;:::-;:23;;;8084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17906:5:::1;17889:14;;:22;;;;;;;;;;;;;;;;;;17929:4;17922:11;;17820:121:::0;:::o;18143:199::-;8103:12;:10;:12::i;:::-;8092:23;;:7;:5;:7::i;:::-;:23;;;8084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18324:10:::1;18273:31;:48;18305:15;18273:48;;;;;;;;;;;;;;;;:61;;;;;;;;;;;;;;;;;;18143:199:::0;;:::o;14997:32::-;;;;:::o;17693:119::-;8103:12;:10;:12::i;:::-;8092:23;;:7;:5;:7::i;:::-;:23;;;8084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17764:4:::1;17748:13;;:20;;;;;;;;;;;;;;;;;;17792:12;17779:10;:25;;;;17693:119::o:0;7957:87::-;8003:7;8030:6;;;;;;;;;;;8023:13;;7957:87;:::o;9328:104::-;9384:13;9417:7;9410:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9328:104;:::o;19581:306::-;8103:12;:10;:12::i;:::-;8092:23;;:7;:5;:7::i;:::-;:23;;;8084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19727:13:::1;;;;;;;;;;;19719:21;;:4;:21;;::::0;19697:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19838:41;19867:4;19873:5;19838:28;:41::i;:::-;19581:306:::0;;:::o;18586:218::-;18678:4;8103:12;:10;:12::i;:::-;8092:23;;:7;:5;:7::i;:::-;:23;;;8084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18716:1:::1;18703:9;:14;;:34;;;;;18734:3;18721:9;:16;;18703:34;18695:43;;;::::0;::::1;;18765:9;18749:13;:25;;;;18792:4;18785:11;;18586:218:::0;;;:::o;11244:475::-;11362:4;11379:24;11406:11;:25;11418:12;:10;:12::i;:::-;11406:25;;;;;;;;;;;;;;;:34;11432:7;11406:34;;;;;;;;;;;;;;;;11379:61;;11493:15;11473:16;:35;;11451:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;11609:67;11618:12;:10;:12::i;:::-;11632:7;11660:15;11641:16;:34;11609:8;:67::i;:::-;11707:4;11700:11;;;11244:475;;;;:::o;14598:29::-;;;;:::o;14964:26::-;;;;:::o;9815:200::-;9926:4;9943:42;9953:12;:10;:12::i;:::-;9967:9;9978:6;9943:9;:42::i;:::-;10003:4;9996:11;;9815:200;;;;:::o;20091:222::-;8103:12;:10;:12::i;:::-;8092:23;;:7;:5;:7::i;:::-;:23;;;8084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20244:14:::1;;;;;;;;;;;20201:58;;20224:18;20201:58;;;;;;;;;;;;20287:18;20270:14;;:35;;;;;;;;;;;;;;;;;;20091:222:::0;:::o;14929:26::-;;;;:::o;17949:186::-;8103:12;:10;:12::i;:::-;8092:23;;:7;:5;:7::i;:::-;:23;;;8084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18074:4:::1;18028:31;:43;18060:10;18028:43;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;18123:4;18089:19;:31;18109:10;18089:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;17949:186:::0;;:::o;15223:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;14676:33::-;;;;;;;;;;;;;:::o;19391:182::-;8103:12;:10;:12::i;:::-;8092:23;;:7;:5;:7::i;:::-;:23;;;8084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19507:8:::1;19476:19;:28;19496:7;19476:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19547:7;19531:34;;;19556:8;19531:34;;;;;;:::i;:::-;;;;;;;;19391:182:::0;;:::o;14432:35::-;;;;:::o;18350:228::-;18447:4;8103:12;:10;:12::i;:::-;8092:23;;:7;:5;:7::i;:::-;:23;;;8084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18485:1:::1;18472:9;:14;;:34;;;;;18503:3;18490:9;:16;;18472:34;18464:43;;;::::0;::::1;;18539:9;18518:18;:30;;;;18566:4;18559:11;;18350:228:::0;;;:::o;14753:27::-;;;;:::o;10023:176::-;10137:7;10164:11;:18;10176:5;10164:18;;;;;;;;;;;;;;;:27;10183:7;10164:27;;;;;;;;;;;;;;;;10157:34;;10023:176;;;;:::o;14474:33::-;;;;:::o;14823:25::-;;;;:::o;16899:415::-;8103:12;:10;:12::i;:::-;8092:23;;:7;:5;:7::i;:::-;:23;;;8084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16995:15:::1;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16977:55;;;17055:4;17075:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16977:131;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16961:13;;:147;;;;;;;;;;;;;;;;;;17119:55;17153:13;;;;;;;;;;;17169:4;17119:25;:55::i;:::-;17185:58;17222:13;;;;;;;;;;;17238:4;17185:28;:58::i;:::-;17256:50;17270:24;17288:4;17270:9;:24::i;:::-;17296:9;17256:13;:50::i;:::-;16899:415::o:0;8291:238::-;8103:12;:10;:12::i;:::-;8092:23;;:7;:5;:7::i;:::-;:23;;;8084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8414:1:::1;8394:22;;:8;:22;;::::0;8372:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8493:28;8512:8;8493:18;:28::i;:::-;8291:238:::0;:::o;7478:98::-;7531:7;7558:10;7551:17;;7478:98;:::o;13511:380::-;13664:1;13647:19;;:5;:19;;;13639:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13745:1;13726:21;;:7;:21;;;13718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13829:6;13799:11;:18;13811:5;13799:18;;;;;;;;;;;;;;;:27;13818:7;13799:27;;;;;;;;;;;;;;;:36;;;;13867:7;13851:32;;13860:5;13851:32;;;13876:6;13851:32;;;;;;:::i;:::-;;;;;;;;13511:380;;;:::o;20321:5060::-;20469:1;20453:18;;:4;:18;;;20445:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20546:1;20532:16;;:2;:16;;;20524:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20615:1;20605:6;:11;20601:93;;20633:28;20649:4;20655:2;20659:1;20633:15;:28::i;:::-;20676:7;;20601:93;20706:19;20728:12;20706:34;;20757:14;;;;;;;;;;;20753:1661;;;20818:7;:5;:7::i;:::-;20810:15;;:4;:15;;;;:49;;;;;20852:7;:5;:7::i;:::-;20846:13;;:2;:13;;;;20810:49;:86;;;;;20894:1;20880:16;;:2;:16;;;;20810:86;:128;;;;;20931:6;20917:21;;:2;:21;;;;20810:128;:160;;;;;20960:10;;;;;;;;;;;20959:11;20810:160;20788:1615;;;21010:13;;;;;;;;;;;21005:223;;21082:19;:25;21102:4;21082:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21111:19;:23;21131:2;21111:23;;;;;;;;;;;;;;;;;;;;;;;;;21082:52;21048:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;21005:223;21274:25;:31;21300:4;21274:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;21331:31;:35;21363:2;21331:35;;;;;;;;;;;;;;;;;;;;;;;;;21330:36;21274:92;21248:1140;;;21453:20;;21443:6;:30;;21409:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;21661:20;;21644:13;21654:2;21644:9;:13::i;:::-;21635:6;:22;;;;:::i;:::-;:46;;21601:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;21248:1140;;;21821:25;:29;21847:2;21821:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;21876:31;:37;21908:4;21876:37;;;;;;;;;;;;;;;;;;;;;;;;;21875:38;21821:92;21795:593;;;22000:20;;21990:6;:30;;21956:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;21795:593;;;22157:31;:35;22189:2;22157:35;;;;;;;;;;;;;;;;;;;;;;;;;22152:236;;22277:20;;22260:13;22270:2;22260:9;:13::i;:::-;22251:6;:22;;;;:::i;:::-;:46;;22217:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;22152:236;21795:593;21248:1140;20788:1615;20753:1661;22426:28;22457:24;22475:4;22457:9;:24::i;:::-;22426:55;;22492:12;22531:18;;22507:20;:42;;22492:57;;22580:7;:35;;;;;22605:10;;;;;;;;;;;22604:11;22580:35;:83;;;;;22661:1;22633:11;:24;22645:11;22633:24;;;;;;;;;;;;:29;;22580:83;:132;;;;;22681:25;:31;22707:4;22681:31;;;;;;;;;;;;;;;;;;;;;;;;;22680:32;22580:132;:175;;;;;22730:19;:25;22750:4;22730:25;;;;;;;;;;;;;;;;;;;;;;;;;22729:26;22580:175;:216;;;;;22773:19;:23;22793:2;22773:23;;;;;;;;;;;;;;;;;;;;;;;;;22772:24;22580:216;22562:395;;;22836:4;22823:10;;:17;;;;;;;;;;;;;;;;;;22857:10;:8;:10::i;:::-;22886:11;:24;22898:11;22886:24;;;;;;;;;;;;22884:26;;;;;:::i;:::-;;;;;;;;22940:5;22927:10;;:18;;;;;;;;;;;;;;;;;;22562:395;22988:10;;;;;;;;;;;22987:11;:57;;;;;23015:25;:29;23041:2;23015:29;;;;;;;;;;;;;;;;;;;;;;;;;22987:57;:100;;;;;23062:19;:25;23082:4;23062:25;;;;;;;;;;;;;;;;;;;;;;;;;23061:26;22987:100;22969:186;;;23114:29;:27;:29::i;:::-;22969:186;23167:12;23183:10;;;;;;;;;;;23182:11;23167:26;;23210:19;:25;23230:4;23210:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23239:19;:23;23259:2;23239:23;;;;;;;;;;;;;;;;;;;;;;;;;23210:52;23206:100;;;23289:5;23279:15;;23206:100;23318:12;23345:18;23378:14;23579:7;23575:1753;;;23631:25;:29;23657:2;23631:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;23680:1;23664:13;;:17;23631:50;23627:1427;;;23736:3;23719:13;;23710:6;:22;;;;:::i;:::-;23709:30;;;;:::i;:::-;23702:37;;23790:13;;23775:11;;23768:4;:18;;;;:::i;:::-;23767:36;;;;:::i;:::-;23758:45;;23842:6;23835:4;:13;;;;:::i;:::-;23822:26;;24129:11;;:13;;;;;;;;;:::i;:::-;;;;;;24161:17;24181:24;24191:13;;;;;;;;;;;24181:9;:24::i;:::-;24161:44;;24238:1;24228:6;:11;24224:490;;24307:4;24295:9;:16;:36;;;;;24330:1;24315:11;;:16;;24295:36;24294:105;;;;24374:4;24362:9;:16;:36;;;;;24397:1;24382:11;;:16;;24362:36;24294:105;:171;;;;24441:3;24429:9;:15;:35;;;;;24463:1;24448:11;;:16;;24429:35;24294:171;:238;;;;24507:3;24495:9;:15;:36;;;;;24529:2;24514:11;;:17;;24495:36;24294:238;24264:431;;;24597:1;24583:11;:15;;;;24634:1;24625:10;;24670:1;24662:9;;;;;:::i;:::-;;;24264:431;24224:490;24755:6;24734:17;;:27;;;;;;;:::i;:::-;;;;;;;;23683:1094;23627:1427;;;24838:1;24823:12;;:16;:51;;;;;24843:25;:31;24869:4;24843:31;;;;;;;;;;;;;;;;;;;;;;;;;24823:51;24819:235;;;24928:3;24912:12;;24903:6;:21;;;;:::i;:::-;24902:29;;;;:::i;:::-;24895:36;;24981:12;;24967:10;;24960:4;:17;;;;:::i;:::-;24959:34;;;;:::i;:::-;24950:43;;25032:6;25025:4;:13;;;;:::i;:::-;25012:26;;24819:235;23627:1427;25087:1;25074:10;:14;25070:103;;;25109:48;25125:4;25139;25146:10;25109:15;:48::i;:::-;25070:103;25202:1;25193:6;:10;25189:97;;;25224:46;25240:4;25254:6;25263;25224:15;:46::i;:::-;25189:97;25312:4;25302:14;;;;;:::i;:::-;;;23575:1753;25340:33;25356:4;25362:2;25366:6;25340:15;:33::i;:::-;20434:4947;;;;;;;20321:5060;;;;:::o;8537:191::-;8611:16;8630:6;;;;;;;;;;;8611:25;;8656:8;8647:6;;:17;;;;;;;;;;;;;;;;;;8711:8;8680:40;;8701:8;8680:40;;;;;;;;;;;;8600:128;8537:191;:::o;19895:188::-;20012:5;19978:25;:31;20004:4;19978:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20069:5;20035:40;;20063:4;20035:40;;;;;;;;;;;;19895:188;;:::o;17322:363::-;17404:62;17421:4;17436:15;17454:11;17404:8;:62::i;:::-;17479:15;:31;;;17518:9;17551:4;17571:11;17597:1;17613;17629:7;:5;:7::i;:::-;17651:15;17479:198;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17322:363;;:::o;11727:770::-;11885:1;11867:20;;:6;:20;;;11859:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11969:1;11948:23;;:9;:23;;;11940:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12024:47;12045:6;12053:9;12064:6;12024:20;:47::i;:::-;12084:21;12108:9;:17;12118:6;12108:17;;;;;;;;;;;;;;;;12084:41;;12175:6;12158:13;:23;;12136:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;12319:6;12303:13;:22;12283:9;:17;12293:6;12283:17;;;;;;;;;;;;;;;:42;;;;12371:6;12347:9;:20;12357:9;12347:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;12412:9;12395:35;;12404:6;12395:35;;;12423:6;12395:35;;;;;;:::i;:::-;;;;;;;;12443:46;12463:6;12471:9;12482:6;12443:19;:46::i;:::-;11848:649;11727:770;;;:::o;25389:517::-;25428:23;25454:24;25472:4;25454:9;:24::i;:::-;25428:50;;25489:12;25537:1;25518:15;:20;25514:59;;25555:7;;;;25514:59;25607:13;;25589:15;:31;25585:95;;;25655:13;;25637:31;;25585:95;25692:26;25721:15;25692:44;;25749:36;25766:18;25749:16;:36::i;:::-;25820:14;;;;;;;;;;;25812:28;;25862:21;25812:86;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25798:100;;;;;25417:489;;;25389:517;:::o;26397:697::-;26456:28;26487:24;26497:13;;;;;;;;;;;26487:9;:24::i;:::-;26456:55;;26551:3;26528:20;:26;26524:563;;;26595:4;26575:17;;:24;26571:312;;;26659:15;;26642:14;;:32;;;;:::i;:::-;26624:15;:50;26620:186;;;26699:7;;;26620:186;26771:15;26754:14;:32;;;;26571:312;;;26866:1;26846:17;:21;;;;26571:312;26899:50;26915:13;;;;;;;;;;;26938:6;26947:1;26899:15;:50::i;:::-;26966:19;27003:13;;;;;;;;;;;26966:51;;27032:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27063:12;;;;;;;;;;26556:531;26524:563;26445:649;26397:697;:::o;13899:125::-;;;;:::o;14032:124::-;;;;:::o;25914:475::-;25980:21;26018:1;26004:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25980:40;;26049:4;26031;26036:1;26031:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26075:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26065:4;26070:1;26065:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;26110:62;26127:4;26142:15;26160:11;26110:8;:62::i;:::-;26185:15;:66;;;26266:11;26292:1;26308:4;26335;26355:15;26185:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25969:420;25914:475;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:246::-;1531:1;1541:113;1555:6;1552:1;1549:13;1541:113;;;1640:1;1635:3;1631:11;1625:18;1621:1;1616:3;1612:11;1605:39;1577:2;1574:1;1570:10;1565:15;;1541:113;;;1688:1;1679:6;1674:3;1670:16;1663:27;1512:184;1450:246;;;:::o;1702:102::-;1743:6;1794:2;1790:7;1785:2;1778:5;1774:14;1770:28;1760:38;;1702:102;;;:::o;1810:377::-;1898:3;1926:39;1959:5;1926:39;:::i;:::-;1981:71;2045:6;2040:3;1981:71;:::i;:::-;1974:78;;2061:65;2119:6;2114:3;2107:4;2100:5;2096:16;2061:65;:::i;:::-;2151:29;2173:6;2151:29;:::i;:::-;2146:3;2142:39;2135:46;;1902:285;1810:377;;;;:::o;2193:313::-;2306:4;2344:2;2333:9;2329:18;2321:26;;2393:9;2387:4;2383:20;2379:1;2368:9;2364:17;2357:47;2421:78;2494:4;2485:6;2421:78;:::i;:::-;2413:86;;2193:313;;;;:::o;2512:126::-;2549:7;2589:42;2582:5;2578:54;2567:65;;2512:126;;;:::o;2644:96::-;2681:7;2710:24;2728:5;2710:24;:::i;:::-;2699:35;;2644:96;;;:::o;2746:122::-;2819:24;2837:5;2819:24;:::i;:::-;2812:5;2809:35;2799:63;;2858:1;2855;2848:12;2799:63;2746:122;:::o;2874:139::-;2920:5;2958:6;2945:20;2936:29;;2974:33;3001:5;2974:33;:::i;:::-;2874:139;;;;:::o;3019:474::-;3087:6;3095;3144:2;3132:9;3123:7;3119:23;3115:32;3112:119;;;3150:79;;:::i;:::-;3112:119;3270:1;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3241:117;3397:2;3423:53;3468:7;3459:6;3448:9;3444:22;3423:53;:::i;:::-;3413:63;;3368:118;3019:474;;;;;:::o;3499:90::-;3533:7;3576:5;3569:13;3562:21;3551:32;;3499:90;;;:::o;3595:109::-;3676:21;3691:5;3676:21;:::i;:::-;3671:3;3664:34;3595:109;;:::o;3710:210::-;3797:4;3835:2;3824:9;3820:18;3812:26;;3848:65;3910:1;3899:9;3895:17;3886:6;3848:65;:::i;:::-;3710:210;;;;:::o;3926:329::-;3985:6;4034:2;4022:9;4013:7;4009:23;4005:32;4002:119;;;4040:79;;:::i;:::-;4002:119;4160:1;4185:53;4230:7;4221:6;4210:9;4206:22;4185:53;:::i;:::-;4175:63;;4131:117;3926:329;;;;:::o;4261:60::-;4289:3;4310:5;4303:12;;4261:60;;;:::o;4327:142::-;4377:9;4410:53;4428:34;4437:24;4455:5;4437:24;:::i;:::-;4428:34;:::i;:::-;4410:53;:::i;:::-;4397:66;;4327:142;;;:::o;4475:126::-;4525:9;4558:37;4589:5;4558:37;:::i;:::-;4545:50;;4475:126;;;:::o;4607:152::-;4683:9;4716:37;4747:5;4716:37;:::i;:::-;4703:50;;4607:152;;;:::o;4765:183::-;4878:63;4935:5;4878:63;:::i;:::-;4873:3;4866:76;4765:183;;:::o;4954:274::-;5073:4;5111:2;5100:9;5096:18;5088:26;;5124:97;5218:1;5207:9;5203:17;5194:6;5124:97;:::i;:::-;4954:274;;;;:::o;5234:118::-;5321:24;5339:5;5321:24;:::i;:::-;5316:3;5309:37;5234:118;;:::o;5358:222::-;5451:4;5489:2;5478:9;5474:18;5466:26;;5502:71;5570:1;5559:9;5555:17;5546:6;5502:71;:::i;:::-;5358:222;;;;:::o;5586:619::-;5663:6;5671;5679;5728:2;5716:9;5707:7;5703:23;5699:32;5696:119;;;5734:79;;:::i;:::-;5696:119;5854:1;5879:53;5924:7;5915:6;5904:9;5900:22;5879:53;:::i;:::-;5869:63;;5825:117;5981:2;6007:53;6052:7;6043:6;6032:9;6028:22;6007:53;:::i;:::-;5997:63;;5952:118;6109:2;6135:53;6180:7;6171:6;6160:9;6156:22;6135:53;:::i;:::-;6125:63;;6080:118;5586:619;;;;;:::o;6211:118::-;6298:24;6316:5;6298:24;:::i;:::-;6293:3;6286:37;6211:118;;:::o;6335:222::-;6428:4;6466:2;6455:9;6451:18;6443:26;;6479:71;6547:1;6536:9;6532:17;6523:6;6479:71;:::i;:::-;6335:222;;;;:::o;6563:86::-;6598:7;6638:4;6631:5;6627:16;6616:27;;6563:86;;;:::o;6655:112::-;6738:22;6754:5;6738:22;:::i;:::-;6733:3;6726:35;6655:112;;:::o;6773:214::-;6862:4;6900:2;6889:9;6885:18;6877:26;;6913:67;6977:1;6966:9;6962:17;6953:6;6913:67;:::i;:::-;6773:214;;;;:::o;6993:116::-;7063:21;7078:5;7063:21;:::i;:::-;7056:5;7053:32;7043:60;;7099:1;7096;7089:12;7043:60;6993:116;:::o;7115:133::-;7158:5;7196:6;7183:20;7174:29;;7212:30;7236:5;7212:30;:::i;:::-;7115:133;;;;:::o;7254:468::-;7319:6;7327;7376:2;7364:9;7355:7;7351:23;7347:32;7344:119;;;7382:79;;:::i;:::-;7344:119;7502:1;7527:53;7572:7;7563:6;7552:9;7548:22;7527:53;:::i;:::-;7517:63;;7473:117;7629:2;7655:50;7697:7;7688:6;7677:9;7673:22;7655:50;:::i;:::-;7645:60;;7600:115;7254:468;;;;;:::o;7728:329::-;7787:6;7836:2;7824:9;7815:7;7811:23;7807:32;7804:119;;;7842:79;;:::i;:::-;7804:119;7962:1;7987:53;8032:7;8023:6;8012:9;8008:22;7987:53;:::i;:::-;7977:63;;7933:117;7728:329;;;;:::o;8063:474::-;8131:6;8139;8188:2;8176:9;8167:7;8163:23;8159:32;8156:119;;;8194:79;;:::i;:::-;8156:119;8314:1;8339:53;8384:7;8375:6;8364:9;8360:22;8339:53;:::i;:::-;8329:63;;8285:117;8441:2;8467:53;8512:7;8503:6;8492:9;8488:22;8467:53;:::i;:::-;8457:63;;8412:118;8063:474;;;;;:::o;8543:182::-;8683:34;8679:1;8671:6;8667:14;8660:58;8543:182;:::o;8731:366::-;8873:3;8894:67;8958:2;8953:3;8894:67;:::i;:::-;8887:74;;8970:93;9059:3;8970:93;:::i;:::-;9088:2;9083:3;9079:12;9072:19;;8731:366;;;:::o;9103:419::-;9269:4;9307:2;9296:9;9292:18;9284:26;;9356:9;9350:4;9346:20;9342:1;9331:9;9327:17;9320:47;9384:131;9510:4;9384:131;:::i;:::-;9376:139;;9103:419;;;:::o;9528:180::-;9576:77;9573:1;9566:88;9673:4;9670:1;9663:15;9697:4;9694:1;9687:15;9714:191;9754:3;9773:20;9791:1;9773:20;:::i;:::-;9768:25;;9807:20;9825:1;9807:20;:::i;:::-;9802:25;;9850:1;9847;9843:9;9836:16;;9871:3;9868:1;9865:10;9862:36;;;9878:18;;:::i;:::-;9862:36;9714:191;;;;:::o;9911:180::-;9959:77;9956:1;9949:88;10056:4;10053:1;10046:15;10080:4;10077:1;10070:15;10097:320;10141:6;10178:1;10172:4;10168:12;10158:22;;10225:1;10219:4;10215:12;10246:18;10236:81;;10302:4;10294:6;10290:17;10280:27;;10236:81;10364:2;10356:6;10353:14;10333:18;10330:38;10327:84;;10383:18;;:::i;:::-;10327:84;10148:269;10097:320;;;:::o;10423:227::-;10563:34;10559:1;10551:6;10547:14;10540:58;10632:10;10627:2;10619:6;10615:15;10608:35;10423:227;:::o;10656:366::-;10798:3;10819:67;10883:2;10878:3;10819:67;:::i;:::-;10812:74;;10895:93;10984:3;10895:93;:::i;:::-;11013:2;11008:3;11004:12;10997:19;;10656:366;;;:::o;11028:419::-;11194:4;11232:2;11221:9;11217:18;11209:26;;11281:9;11275:4;11271:20;11267:1;11256:9;11252:17;11245:47;11309:131;11435:4;11309:131;:::i;:::-;11301:139;;11028:419;;;:::o;11453:244::-;11593:34;11589:1;11581:6;11577:14;11570:58;11662:27;11657:2;11649:6;11645:15;11638:52;11453:244;:::o;11703:366::-;11845:3;11866:67;11930:2;11925:3;11866:67;:::i;:::-;11859:74;;11942:93;12031:3;11942:93;:::i;:::-;12060:2;12055:3;12051:12;12044:19;;11703:366;;;:::o;12075:419::-;12241:4;12279:2;12268:9;12264:18;12256:26;;12328:9;12322:4;12318:20;12314:1;12303:9;12299:17;12292:47;12356:131;12482:4;12356:131;:::i;:::-;12348:139;;12075:419;;;:::o;12500:224::-;12640:34;12636:1;12628:6;12624:14;12617:58;12709:7;12704:2;12696:6;12692:15;12685:32;12500:224;:::o;12730:366::-;12872:3;12893:67;12957:2;12952:3;12893:67;:::i;:::-;12886:74;;12969:93;13058:3;12969:93;:::i;:::-;13087:2;13082:3;13078:12;13071:19;;12730:366;;;:::o;13102:419::-;13268:4;13306:2;13295:9;13291:18;13283:26;;13355:9;13349:4;13345:20;13341:1;13330:9;13326:17;13319:47;13383:131;13509:4;13383:131;:::i;:::-;13375:139;;13102:419;;;:::o;13527:143::-;13584:5;13615:6;13609:13;13600:22;;13631:33;13658:5;13631:33;:::i;:::-;13527:143;;;;:::o;13676:351::-;13746:6;13795:2;13783:9;13774:7;13770:23;13766:32;13763:119;;;13801:79;;:::i;:::-;13763:119;13921:1;13946:64;14002:7;13993:6;13982:9;13978:22;13946:64;:::i;:::-;13936:74;;13892:128;13676:351;;;;:::o;14033:332::-;14154:4;14192:2;14181:9;14177:18;14169:26;;14205:71;14273:1;14262:9;14258:17;14249:6;14205:71;:::i;:::-;14286:72;14354:2;14343:9;14339:18;14330:6;14286:72;:::i;:::-;14033:332;;;;;:::o;14371:225::-;14511:34;14507:1;14499:6;14495:14;14488:58;14580:8;14575:2;14567:6;14563:15;14556:33;14371:225;:::o;14602:366::-;14744:3;14765:67;14829:2;14824:3;14765:67;:::i;:::-;14758:74;;14841:93;14930:3;14841:93;:::i;:::-;14959:2;14954:3;14950:12;14943:19;;14602:366;;;:::o;14974:419::-;15140:4;15178:2;15167:9;15163:18;15155:26;;15227:9;15221:4;15217:20;15213:1;15202:9;15198:17;15191:47;15255:131;15381:4;15255:131;:::i;:::-;15247:139;;14974:419;;;:::o;15399:223::-;15539:34;15535:1;15527:6;15523:14;15516:58;15608:6;15603:2;15595:6;15591:15;15584:31;15399:223;:::o;15628:366::-;15770:3;15791:67;15855:2;15850:3;15791:67;:::i;:::-;15784:74;;15867:93;15956:3;15867:93;:::i;:::-;15985:2;15980:3;15976:12;15969:19;;15628:366;;;:::o;16000:419::-;16166:4;16204:2;16193:9;16189:18;16181:26;;16253:9;16247:4;16243:20;16239:1;16228:9;16224:17;16217:47;16281:131;16407:4;16281:131;:::i;:::-;16273:139;;16000:419;;;:::o;16425:221::-;16565:34;16561:1;16553:6;16549:14;16542:58;16634:4;16629:2;16621:6;16617:15;16610:29;16425:221;:::o;16652:366::-;16794:3;16815:67;16879:2;16874:3;16815:67;:::i;:::-;16808:74;;16891:93;16980:3;16891:93;:::i;:::-;17009:2;17004:3;17000:12;16993:19;;16652:366;;;:::o;17024:419::-;17190:4;17228:2;17217:9;17213:18;17205:26;;17277:9;17271:4;17267:20;17263:1;17252:9;17248:17;17241:47;17305:131;17431:4;17305:131;:::i;:::-;17297:139;;17024:419;;;:::o;17449:224::-;17589:34;17585:1;17577:6;17573:14;17566:58;17658:7;17653:2;17645:6;17641:15;17634:32;17449:224;:::o;17679:366::-;17821:3;17842:67;17906:2;17901:3;17842:67;:::i;:::-;17835:74;;17918:93;18007:3;17918:93;:::i;:::-;18036:2;18031:3;18027:12;18020:19;;17679:366;;;:::o;18051:419::-;18217:4;18255:2;18244:9;18240:18;18232:26;;18304:9;18298:4;18294:20;18290:1;18279:9;18275:17;18268:47;18332:131;18458:4;18332:131;:::i;:::-;18324:139;;18051:419;;;:::o;18476:222::-;18616:34;18612:1;18604:6;18600:14;18593:58;18685:5;18680:2;18672:6;18668:15;18661:30;18476:222;:::o;18704:366::-;18846:3;18867:67;18931:2;18926:3;18867:67;:::i;:::-;18860:74;;18943:93;19032:3;18943:93;:::i;:::-;19061:2;19056:3;19052:12;19045:19;;18704:366;;;:::o;19076:419::-;19242:4;19280:2;19269:9;19265:18;19257:26;;19329:9;19323:4;19319:20;19315:1;19304:9;19300:17;19293:47;19357:131;19483:4;19357:131;:::i;:::-;19349:139;;19076:419;;;:::o;19501:172::-;19641:24;19637:1;19629:6;19625:14;19618:48;19501:172;:::o;19679:366::-;19821:3;19842:67;19906:2;19901:3;19842:67;:::i;:::-;19835:74;;19918:93;20007:3;19918:93;:::i;:::-;20036:2;20031:3;20027:12;20020:19;;19679:366;;;:::o;20051:419::-;20217:4;20255:2;20244:9;20240:18;20232:26;;20304:9;20298:4;20294:20;20290:1;20279:9;20275:17;20268:47;20332:131;20458:4;20332:131;:::i;:::-;20324:139;;20051:419;;;:::o;20476:240::-;20616:34;20612:1;20604:6;20600:14;20593:58;20685:23;20680:2;20672:6;20668:15;20661:48;20476:240;:::o;20722:366::-;20864:3;20885:67;20949:2;20944:3;20885:67;:::i;:::-;20878:74;;20961:93;21050:3;20961:93;:::i;:::-;21079:2;21074:3;21070:12;21063:19;;20722:366;;;:::o;21094:419::-;21260:4;21298:2;21287:9;21283:18;21275:26;;21347:9;21341:4;21337:20;21333:1;21322:9;21318:17;21311:47;21375:131;21501:4;21375:131;:::i;:::-;21367:139;;21094:419;;;:::o;21519:169::-;21659:21;21655:1;21647:6;21643:14;21636:45;21519:169;:::o;21694:366::-;21836:3;21857:67;21921:2;21916:3;21857:67;:::i;:::-;21850:74;;21933:93;22022:3;21933:93;:::i;:::-;22051:2;22046:3;22042:12;22035:19;;21694:366;;;:::o;22066:419::-;22232:4;22270:2;22259:9;22255:18;22247:26;;22319:9;22313:4;22309:20;22305:1;22294:9;22290:17;22283:47;22347:131;22473:4;22347:131;:::i;:::-;22339:139;;22066:419;;;:::o;22491:241::-;22631:34;22627:1;22619:6;22615:14;22608:58;22700:24;22695:2;22687:6;22683:15;22676:49;22491:241;:::o;22738:366::-;22880:3;22901:67;22965:2;22960:3;22901:67;:::i;:::-;22894:74;;22977:93;23066:3;22977:93;:::i;:::-;23095:2;23090:3;23086:12;23079:19;;22738:366;;;:::o;23110:419::-;23276:4;23314:2;23303:9;23299:18;23291:26;;23363:9;23357:4;23353:20;23349:1;23338:9;23334:17;23327:47;23391:131;23517:4;23391:131;:::i;:::-;23383:139;;23110:419;;;:::o;23535:233::-;23574:3;23597:24;23615:5;23597:24;:::i;:::-;23588:33;;23643:66;23636:5;23633:77;23630:103;;23713:18;;:::i;:::-;23630:103;23760:1;23753:5;23749:13;23742:20;;23535:233;;;:::o;23774:410::-;23814:7;23837:20;23855:1;23837:20;:::i;:::-;23832:25;;23871:20;23889:1;23871:20;:::i;:::-;23866:25;;23926:1;23923;23919:9;23948:30;23966:11;23948:30;:::i;:::-;23937:41;;24127:1;24118:7;24114:15;24111:1;24108:22;24088:1;24081:9;24061:83;24038:139;;24157:18;;:::i;:::-;24038:139;23822:362;23774:410;;;;:::o;24190:180::-;24238:77;24235:1;24228:88;24335:4;24332:1;24325:15;24359:4;24356:1;24349:15;24376:185;24416:1;24433:20;24451:1;24433:20;:::i;:::-;24428:25;;24467:20;24485:1;24467:20;:::i;:::-;24462:25;;24506:1;24496:35;;24511:18;;:::i;:::-;24496:35;24553:1;24550;24546:9;24541:14;;24376:185;;;;:::o;24567:194::-;24607:4;24627:20;24645:1;24627:20;:::i;:::-;24622:25;;24661:20;24679:1;24661:20;:::i;:::-;24656:25;;24705:1;24702;24698:9;24690:17;;24729:1;24723:4;24720:11;24717:37;;;24734:18;;:::i;:::-;24717:37;24567:194;;;;:::o;24767:85::-;24812:7;24841:5;24830:16;;24767:85;;;:::o;24858:158::-;24916:9;24949:61;24967:42;24976:32;25002:5;24976:32;:::i;:::-;24967:42;:::i;:::-;24949:61;:::i;:::-;24936:74;;24858:158;;;:::o;25022:147::-;25117:45;25156:5;25117:45;:::i;:::-;25112:3;25105:58;25022:147;;:::o;25175:807::-;25424:4;25462:3;25451:9;25447:19;25439:27;;25476:71;25544:1;25533:9;25529:17;25520:6;25476:71;:::i;:::-;25557:72;25625:2;25614:9;25610:18;25601:6;25557:72;:::i;:::-;25639:80;25715:2;25704:9;25700:18;25691:6;25639:80;:::i;:::-;25729;25805:2;25794:9;25790:18;25781:6;25729:80;:::i;:::-;25819:73;25887:3;25876:9;25872:19;25863:6;25819:73;:::i;:::-;25902;25970:3;25959:9;25955:19;25946:6;25902:73;:::i;:::-;25175:807;;;;;;;;;:::o;25988:143::-;26045:5;26076:6;26070:13;26061:22;;26092:33;26119:5;26092:33;:::i;:::-;25988:143;;;;:::o;26137:663::-;26225:6;26233;26241;26290:2;26278:9;26269:7;26265:23;26261:32;26258:119;;;26296:79;;:::i;:::-;26258:119;26416:1;26441:64;26497:7;26488:6;26477:9;26473:22;26441:64;:::i;:::-;26431:74;;26387:128;26554:2;26580:64;26636:7;26627:6;26616:9;26612:22;26580:64;:::i;:::-;26570:74;;26525:129;26693:2;26719:64;26775:7;26766:6;26755:9;26751:22;26719:64;:::i;:::-;26709:74;;26664:129;26137:663;;;;;:::o;26806:225::-;26946:34;26942:1;26934:6;26930:14;26923:58;27015:8;27010:2;27002:6;26998:15;26991:33;26806:225;:::o;27037:366::-;27179:3;27200:67;27264:2;27259:3;27200:67;:::i;:::-;27193:74;;27276:93;27365:3;27276:93;:::i;:::-;27394:2;27389:3;27385:12;27378:19;;27037:366;;;:::o;27409:419::-;27575:4;27613:2;27602:9;27598:18;27590:26;;27662:9;27656:4;27652:20;27648:1;27637:9;27633:17;27626:47;27690:131;27816:4;27690:131;:::i;:::-;27682:139;;27409:419;;;:::o;27834:147::-;27935:11;27972:3;27957:18;;27834:147;;;;:::o;27987:114::-;;:::o;28107:398::-;28266:3;28287:83;28368:1;28363:3;28287:83;:::i;:::-;28280:90;;28379:93;28468:3;28379:93;:::i;:::-;28497:1;28492:3;28488:11;28481:18;;28107:398;;;:::o;28511:379::-;28695:3;28717:147;28860:3;28717:147;:::i;:::-;28710:154;;28881:3;28874:10;;28511:379;;;:::o;28896:180::-;28944:77;28941:1;28934:88;29041:4;29038:1;29031:15;29065:4;29062:1;29055:15;29082:180;29130:77;29127:1;29120:88;29227:4;29224:1;29217:15;29251:4;29248:1;29241:15;29268:114;29335:6;29369:5;29363:12;29353:22;;29268:114;;;:::o;29388:184::-;29487:11;29521:6;29516:3;29509:19;29561:4;29556:3;29552:14;29537:29;;29388:184;;;;:::o;29578:132::-;29645:4;29668:3;29660:11;;29698:4;29693:3;29689:14;29681:22;;29578:132;;;:::o;29716:108::-;29793:24;29811:5;29793:24;:::i;:::-;29788:3;29781:37;29716:108;;:::o;29830:179::-;29899:10;29920:46;29962:3;29954:6;29920:46;:::i;:::-;29998:4;29993:3;29989:14;29975:28;;29830:179;;;;:::o;30015:113::-;30085:4;30117;30112:3;30108:14;30100:22;;30015:113;;;:::o;30164:732::-;30283:3;30312:54;30360:5;30312:54;:::i;:::-;30382:86;30461:6;30456:3;30382:86;:::i;:::-;30375:93;;30492:56;30542:5;30492:56;:::i;:::-;30571:7;30602:1;30587:284;30612:6;30609:1;30606:13;30587:284;;;30688:6;30682:13;30715:63;30774:3;30759:13;30715:63;:::i;:::-;30708:70;;30801:60;30854:6;30801:60;:::i;:::-;30791:70;;30647:224;30634:1;30631;30627:9;30622:14;;30587:284;;;30591:14;30887:3;30880:10;;30288:608;;;30164:732;;;;:::o;30902:831::-;31165:4;31203:3;31192:9;31188:19;31180:27;;31217:71;31285:1;31274:9;31270:17;31261:6;31217:71;:::i;:::-;31298:80;31374:2;31363:9;31359:18;31350:6;31298:80;:::i;:::-;31425:9;31419:4;31415:20;31410:2;31399:9;31395:18;31388:48;31453:108;31556:4;31547:6;31453:108;:::i;:::-;31445:116;;31571:72;31639:2;31628:9;31624:18;31615:6;31571:72;:::i;:::-;31653:73;31721:3;31710:9;31706:19;31697:6;31653:73;:::i;:::-;30902:831;;;;;;;;:::o

Swarm Source

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