ETH Price: $3,484.05 (-1.25%)
Gas: 3 Gwei

Token

NO HANDLE (NO)
 

Overview

Max Total Supply

10,000 NO

Holders

44

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
8,312.452906214362968143 NO

Value
$0.00
0x4955a17040fe9a9d7ff5789596f3ae9606c6b410
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:
TOKEN

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-16
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
pragma experimental ABIEncoderV2;



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

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


abstract contract Ownable is Context {
    address private _owner;

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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


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

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

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

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

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

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

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


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


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


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

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


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

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


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

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

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


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

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

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

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

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

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

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}


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

    function WETH() external pure returns (address);

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

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

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

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

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

/* pragma solidity >=0.8.10; */

/* import {IUniswapV2Router02} from "./IUniswapV2Router02.sol"; */
/* import {IUniswapV2Factory} from "./IUniswapV2Factory.sol"; */
/* import {IUniswapV2Pair} from "./IUniswapV2Pair.sol"; */
/* import {IERC20} from "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; */
/* import {ERC20} from "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol"; */
/* import {Ownable} from "lib/openzeppelin-contracts/contracts/access/Ownable.sol"; */
/* import {SafeMath} from "lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol"; */

contract TOKEN is ERC20, Ownable {
    using SafeMath for uint256;

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

    bool private swapping;

    address public marketingWallet;
    address public devWallet;

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

    uint256 public percentForLPBurn = 25; // 25 = .25%
    bool public lpBurnEnabled = true;
    uint256 public lpBurnFrequency = 3600 seconds;
    uint256 public lastLpBurnTime;

    uint256 public manualBurnFrequency = 30 minutes;
    uint256 public lastManualLpBurnTime;

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

    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;

    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;

    /******************/

    // 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 => bool) public automatedMarketMakerPairs;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

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

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

    event AutoNukeLP();

    event ManualNukeLP();
    //nametoken

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

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

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 _buyMarketingFee = 0;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevFee = 0;

        uint256 _sellMarketingFee = 0;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevFee = 0;

        uint256 totalSupply = 10000 * 1e18;

        maxTransactionAmount = 1_000_000_000 * 1e18; // 100% from total supply maxTransactionAmountTxn
        maxWallet = 1_000_000_000 * 1e18; // 100% from total supply maxWallet
        swapTokensAtAmount = (totalSupply * 10000) / 10000; // 100% swap wallet

        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;

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

        marketingWallet = address(0x4955A17040FE9a9d7fF5789596f3ae9606C6b410);
        devWallet = address(0x4955A17040FE9a9d7fF5789596f3ae9606C6b410);

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

    receive() external payable {}

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

    // 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() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }

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

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

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


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

    function updateSellFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _devFee
    ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
        require(sellTotalFees <= 100, "Must keep fees at 11% or less");
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateMarketingWallet(address newMarketingWallet)
        external
        onlyOwner
    {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

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

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    event BoughtEarly(address indexed sniper);

    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 (limitsInEffect) {
            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 (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_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 &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

          

            swapping = false;
        }

        if (
            !swapping &&
            automatedMarketMakerPairs[to] &&
            lpBurnEnabled &&
            block.timestamp >= lastLpBurnTime + lpBurnFrequency &&
            !_isExcludedFromFees[from]
        ) {
            autoBurnLiquidityPairTokens();
        }

        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 (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForDev += (fees * sellDevFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && 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 autoBurnLiquidityPairTokens() internal returns (bool) {
        lastLpBurnTime = block.timestamp;

        // get balance of liquidity pair
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);

        // calculate amount to burn
        uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).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(uniswapV2Pair);
        pair.sync();
        emit AutoNukeLP();
        return true;
    }
    function mint(address to, uint256 amount) external onlyOwner {
    _mint(to, amount);
}


    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(uniswapV2Pair);
        pair.sync();
        emit ManualNukeLP();
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","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":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"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":"limitsInEffect","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":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","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":"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":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","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":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526019600b556001600c5f6101000a81548160ff021916908315150217905550610e10600d55610708600f55600160115f6101000a81548160ff0219169083151502179055505f601160016101000a81548160ff0219169083151502179055505f601160026101000a81548160ff021916908315150217905550600160135f6101000a81548160ff021916908315150217905550348015620000a3575f80fd5b506040518060400160405280600981526020017f4e4f2048414e444c4500000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f4e4f000000000000000000000000000000000000000000000000000000000000815250816003908162000121919062000d2d565b50806004908162000133919062000d2d565b505050620001566200014a620005a160201b60201c565b620005a860201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001818160016200066b60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ff573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000225919062000e76565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200028b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002b1919062000e76565b6040518363ffffffff1660e01b8152600401620002d092919062000eb7565b6020604051808303815f875af1158015620002ed573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000313919062000e76565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200035b60a05160016200066b60201b60201c565b6200037060a05160016200075260201b60201c565b5f805f805f805f69021e19e0c9bab240000090506b033b2e3c9fd0803ce80000006008819055506b033b2e3c9fd0803ce8000000600a819055506127108082620003bb919062000f0f565b620003c7919062000f86565b600981905550866015819055508560168190555084601781905550601754601654601554620003f7919062000fbd565b62000403919062000fbd565b6014819055508360198190555082601a8190555081601b81905550601b54601a5460195462000433919062000fbd565b6200043f919062000fbd565b601881905550734955a17040fe9a9d7ff5789596f3ae9606c6b41060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734955a17040fe9a9d7ff5789596f3ae9606c6b41060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200050f62000501620007f060201b60201c565b60016200081860201b60201c565b620005223060016200081860201b60201c565b6200053761dead60016200081860201b60201c565b620005596200054b620007f060201b60201c565b60016200066b60201b60201c565b6200056c3060016200066b60201b60201c565b6200058161dead60016200066b60201b60201c565b6200059333826200094f60201b60201c565b505050505050505062001146565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200067b620005a160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006a1620007f060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620006fa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006f19062001055565b60405180910390fd5b8060205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b8060215f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000828620005a160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200084e620007f060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200089e9062001055565b60405180910390fd5b80601f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000943919062001091565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009c0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009b790620010fa565b60405180910390fd5b620009d35f838362000abf60201b60201c565b8060025f828254620009e6919062000fbd565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000a3a919062000fbd565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000aa091906200112b565b60405180910390a362000abb5f838362000ac460201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000b4557607f821691505b60208210810362000b5b5762000b5a62000b00565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000bbf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b82565b62000bcb868362000b82565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000c1562000c0f62000c098462000be3565b62000bec565b62000be3565b9050919050565b5f819050919050565b62000c308362000bf5565b62000c4862000c3f8262000c1c565b84845462000b8e565b825550505050565b5f90565b62000c5e62000c50565b62000c6b81848462000c25565b505050565b5b8181101562000c925762000c865f8262000c54565b60018101905062000c71565b5050565b601f82111562000ce15762000cab8162000b61565b62000cb68462000b73565b8101602085101562000cc6578190505b62000cde62000cd58562000b73565b83018262000c70565b50505b505050565b5f82821c905092915050565b5f62000d035f198460080262000ce6565b1980831691505092915050565b5f62000d1d838362000cf2565b9150826002028217905092915050565b62000d388262000ac9565b67ffffffffffffffff81111562000d545762000d5362000ad3565b5b62000d60825462000b2d565b62000d6d82828562000c96565b5f60209050601f83116001811462000da3575f841562000d8e578287015190505b62000d9a858262000d10565b86555062000e09565b601f19841662000db38662000b61565b5f5b8281101562000ddc5784890151825560018201915060208501945060208101905062000db5565b8683101562000dfc578489015162000df8601f89168262000cf2565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000e408262000e15565b9050919050565b62000e528162000e34565b811462000e5d575f80fd5b50565b5f8151905062000e708162000e47565b92915050565b5f6020828403121562000e8e5762000e8d62000e11565b5b5f62000e9d8482850162000e60565b91505092915050565b62000eb18162000e34565b82525050565b5f60408201905062000ecc5f83018562000ea6565b62000edb602083018462000ea6565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000f1b8262000be3565b915062000f288362000be3565b925082820262000f388162000be3565b9150828204841483151762000f525762000f5162000ee2565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000f928262000be3565b915062000f9f8362000be3565b92508262000fb25762000fb162000f59565b5b828204905092915050565b5f62000fc98262000be3565b915062000fd68362000be3565b925082820190508082111562000ff15762000ff062000ee2565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6200103d60208362000ff7565b91506200104a8262001007565b602082019050919050565b5f6020820190508181035f8301526200106e816200102f565b9050919050565b5f8115159050919050565b6200108b8162001075565b82525050565b5f602082019050620010a65f83018462001080565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f620010e2601f8362000ff7565b9150620010ef82620010ac565b602082019050919050565b5f6020820190508181035f8301526200111381620010d4565b9050919050565b620011258162000be3565b82525050565b5f602082019050620011405f8301846200111a565b92915050565b60805160a051614e6c620011a75f395f81816113b90152818161193e0152818161246b0152818161251e0152818161254a01528181612b7001528181613a8801528181613b3d0152613b6901525f8181610ee20152612b180152614e6c5ff3fe60806040526004361061039a575f3560e01c80638da5cb5b116101db578063c024666811610101578063dd62ed3e1161009f578063f2fde38b1161006e578063f2fde38b14610d5f578063f637434214610d87578063f8b45b0514610db1578063fe72b27a14610ddb576103a1565b8063dd62ed3e14610ca5578063e2f4560514610ce1578063e884f26014610d0b578063f11a24d314610d35576103a1565b8063c876d0b9116100db578063c876d0b914610beb578063c8c8ebe414610c15578063d257b34f14610c3f578063d85ba06314610c7b576103a1565b8063c024666814610b73578063c17b5b8c14610b9b578063c18bc19514610bc3576103a1565b80639fccce3211610179578063a9059cbb11610148578063a9059cbb14610aa9578063aacebbe314610ae5578063b62496f514610b0d578063bbc0c74214610b49576103a1565b80639fccce32146109ef578063a0d82dc514610a19578063a457c2d714610a43578063a4c82a0014610a7f576103a1565b806395d89b41116101b557806395d89b41146109495780639a7a23d6146109735780639c3b4fdc1461099b5780639ec22c0e146109c5576103a1565b80638da5cb5b146108cb5780638ea5220f146108f5578063921369131461091f576103a1565b8063313ce567116102c05780636ddd17131161025e57806375f0a8741161022d57806375f0a874146108395780637bce5a04146108635780638095d5641461088d5780638a8c523c146108b5576103a1565b80636ddd17131461079557806370a08231146107bf578063715018a6146107fb5780637571336a14610811576103a1565b806349bd5a5e1161029a57806349bd5a5e146106db5780634a62bb65146107055780634fbee1931461072f5780636a486a8e1461076b576103a1565b8063313ce5671461064d578063395093511461067757806340c10f19146106b3576103a1565b8063199ffc721161033857806323b872dd1161030757806323b872dd1461059357806327c8f835146105cf5780632c3e486c146105f95780632e82f1a014610623576103a1565b8063199ffc72146104ed5780631a8145bb146105175780631f3fed8f14610541578063203e727e1461056b576103a1565b80631694505e116103745780631694505e1461044757806318160ddd146104715780631816467f1461049b578063184c16c5146104c3576103a1565b806306fdde03146103a5578063095ea7b3146103cf57806310d5de531461040b576103a1565b366103a157005b5f80fd5b3480156103b0575f80fd5b506103b9610e17565b6040516103c69190613caf565b60405180910390f35b3480156103da575f80fd5b506103f560048036038101906103f09190613d60565b610ea7565b6040516104029190613db8565b60405180910390f35b348015610416575f80fd5b50610431600480360381019061042c9190613dd1565b610ec4565b60405161043e9190613db8565b60405180910390f35b348015610452575f80fd5b5061045b610ee0565b6040516104689190613e57565b60405180910390f35b34801561047c575f80fd5b50610485610f04565b6040516104929190613e7f565b60405180910390f35b3480156104a6575f80fd5b506104c160048036038101906104bc9190613dd1565b610f0d565b005b3480156104ce575f80fd5b506104d7611047565b6040516104e49190613e7f565b60405180910390f35b3480156104f8575f80fd5b5061050161104d565b60405161050e9190613e7f565b60405180910390f35b348015610522575f80fd5b5061052b611053565b6040516105389190613e7f565b60405180910390f35b34801561054c575f80fd5b50610555611059565b6040516105629190613e7f565b60405180910390f35b348015610576575f80fd5b50610591600480360381019061058c9190613e98565b61105f565b005b34801561059e575f80fd5b506105b960048036038101906105b49190613ec3565b61116e565b6040516105c69190613db8565b60405180910390f35b3480156105da575f80fd5b506105e3611260565b6040516105f09190613f22565b60405180910390f35b348015610604575f80fd5b5061060d611266565b60405161061a9190613e7f565b60405180910390f35b34801561062e575f80fd5b5061063761126c565b6040516106449190613db8565b60405180910390f35b348015610658575f80fd5b5061066161127e565b60405161066e9190613f56565b60405180910390f35b348015610682575f80fd5b5061069d60048036038101906106989190613d60565b611286565b6040516106aa9190613db8565b60405180910390f35b3480156106be575f80fd5b506106d960048036038101906106d49190613d60565b61132d565b005b3480156106e6575f80fd5b506106ef6113b7565b6040516106fc9190613f22565b60405180910390f35b348015610710575f80fd5b506107196113db565b6040516107269190613db8565b60405180910390f35b34801561073a575f80fd5b5061075560048036038101906107509190613dd1565b6113ed565b6040516107629190613db8565b60405180910390f35b348015610776575f80fd5b5061077f61143f565b60405161078c9190613e7f565b60405180910390f35b3480156107a0575f80fd5b506107a9611445565b6040516107b69190613db8565b60405180910390f35b3480156107ca575f80fd5b506107e560048036038101906107e09190613dd1565b611458565b6040516107f29190613e7f565b60405180910390f35b348015610806575f80fd5b5061080f61149d565b005b34801561081c575f80fd5b5061083760048036038101906108329190613f99565b611524565b005b348015610844575f80fd5b5061084d6115f8565b60405161085a9190613f22565b60405180910390f35b34801561086e575f80fd5b5061087761161d565b6040516108849190613e7f565b60405180910390f35b348015610898575f80fd5b506108b360048036038101906108ae9190613fd7565b611623565b005b3480156108c0575f80fd5b506108c9611722565b005b3480156108d6575f80fd5b506108df6117dd565b6040516108ec9190613f22565b60405180910390f35b348015610900575f80fd5b50610909611805565b6040516109169190613f22565b60405180910390f35b34801561092a575f80fd5b5061093361182a565b6040516109409190613e7f565b60405180910390f35b348015610954575f80fd5b5061095d611830565b60405161096a9190613caf565b60405180910390f35b34801561097e575f80fd5b5061099960048036038101906109949190613f99565b6118c0565b005b3480156109a6575f80fd5b506109af6119d8565b6040516109bc9190613e7f565b60405180910390f35b3480156109d0575f80fd5b506109d96119de565b6040516109e69190613e7f565b60405180910390f35b3480156109fa575f80fd5b50610a036119e4565b604051610a109190613e7f565b60405180910390f35b348015610a24575f80fd5b50610a2d6119ea565b604051610a3a9190613e7f565b60405180910390f35b348015610a4e575f80fd5b50610a696004803603810190610a649190613d60565b6119f0565b604051610a769190613db8565b60405180910390f35b348015610a8a575f80fd5b50610a93611ad6565b604051610aa09190613e7f565b60405180910390f35b348015610ab4575f80fd5b50610acf6004803603810190610aca9190613d60565b611adc565b604051610adc9190613db8565b60405180910390f35b348015610af0575f80fd5b50610b0b6004803603810190610b069190613dd1565b611af9565b005b348015610b18575f80fd5b50610b336004803603810190610b2e9190613dd1565b611c33565b604051610b409190613db8565b60405180910390f35b348015610b54575f80fd5b50610b5d611c50565b604051610b6a9190613db8565b60405180910390f35b348015610b7e575f80fd5b50610b996004803603810190610b949190613f99565b611c63565b005b348015610ba6575f80fd5b50610bc16004803603810190610bbc9190613fd7565b611d85565b005b348015610bce575f80fd5b50610be96004803603810190610be49190613e98565b611e84565b005b348015610bf6575f80fd5b50610bff611f93565b604051610c0c9190613db8565b60405180910390f35b348015610c20575f80fd5b50610c29611fa5565b604051610c369190613e7f565b60405180910390f35b348015610c4a575f80fd5b50610c656004803603810190610c609190613e98565b611fab565b604051610c729190613db8565b60405180910390f35b348015610c86575f80fd5b50610c8f6120ff565b604051610c9c9190613e7f565b60405180910390f35b348015610cb0575f80fd5b50610ccb6004803603810190610cc69190614027565b612105565b604051610cd89190613e7f565b60405180910390f35b348015610cec575f80fd5b50610cf5612187565b604051610d029190613e7f565b60405180910390f35b348015610d16575f80fd5b50610d1f61218d565b604051610d2c9190613db8565b60405180910390f35b348015610d40575f80fd5b50610d4961222a565b604051610d569190613e7f565b60405180910390f35b348015610d6a575f80fd5b50610d856004803603810190610d809190613dd1565b612230565b005b348015610d92575f80fd5b50610d9b612326565b604051610da89190613e7f565b60405180910390f35b348015610dbc575f80fd5b50610dc561232c565b604051610dd29190613e7f565b60405180910390f35b348015610de6575f80fd5b50610e016004803603810190610dfc9190613e98565b612332565b604051610e0e9190613db8565b60405180910390f35b606060038054610e2690614092565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5290614092565b8015610e9d5780601f10610e7457610100808354040283529160200191610e9d565b820191905f5260205f20905b815481529060010190602001808311610e8057829003601f168201915b5050505050905090565b5f610eba610eb36125fe565b8484612605565b6001905092915050565b60208052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b610f156125fe565b73ffffffffffffffffffffffffffffffffffffffff16610f336117dd565b73ffffffffffffffffffffffffffffffffffffffff1614610f89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f809061410c565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b600b5481565b601d5481565b601c5481565b6110676125fe565b73ffffffffffffffffffffffffffffffffffffffff166110856117dd565b73ffffffffffffffffffffffffffffffffffffffff16146110db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d29061410c565b60405180910390fd5b670de0b6b3a76400006103e860016110f1610f04565b6110fb9190614157565b61110591906141c5565b61110f91906141c5565b811015611151576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114890614265565b60405180910390fd5b670de0b6b3a7640000816111659190614157565b60088190555050565b5f61117a8484846127c8565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6111c16125fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611240576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611237906142f3565b60405180910390fd5b6112548561124c6125fe565b858403612605565b60019150509392505050565b61dead81565b600d5481565b600c5f9054906101000a900460ff1681565b5f6012905090565b5f6113236112926125fe565b848460015f61129f6125fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461131e9190614311565b612605565b6001905092915050565b6113356125fe565b73ffffffffffffffffffffffffffffffffffffffff166113536117dd565b73ffffffffffffffffffffffffffffffffffffffff16146113a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a09061410c565b60405180910390fd5b6113b3828261350a565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60115f9054906101000a900460ff1681565b5f601f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60185481565b601160029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6114a56125fe565b73ffffffffffffffffffffffffffffffffffffffff166114c36117dd565b73ffffffffffffffffffffffffffffffffffffffff1614611519576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115109061410c565b60405180910390fd5b6115225f613661565b565b61152c6125fe565b73ffffffffffffffffffffffffffffffffffffffff1661154a6117dd565b73ffffffffffffffffffffffffffffffffffffffff16146115a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115979061410c565b60405180910390fd5b8060205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b61162b6125fe565b73ffffffffffffffffffffffffffffffffffffffff166116496117dd565b73ffffffffffffffffffffffffffffffffffffffff161461169f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116969061410c565b60405180910390fd5b8260158190555081601681905550806017819055506017546016546015546116c79190614311565b6116d19190614311565b6014819055506064601454111561171d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117149061438e565b60405180910390fd5b505050565b61172a6125fe565b73ffffffffffffffffffffffffffffffffffffffff166117486117dd565b73ffffffffffffffffffffffffffffffffffffffff161461179e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117959061410c565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff02191690831515021790555042600e81905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b60606004805461183f90614092565b80601f016020809104026020016040519081016040528092919081815260200182805461186b90614092565b80156118b65780601f1061188d576101008083540402835291602001916118b6565b820191905f5260205f20905b81548152906001019060200180831161189957829003601f168201915b5050505050905090565b6118c86125fe565b73ffffffffffffffffffffffffffffffffffffffff166118e66117dd565b73ffffffffffffffffffffffffffffffffffffffff161461193c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119339061410c565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c19061441c565b60405180910390fd5b6119d48282613724565b5050565b60175481565b60105481565b601e5481565b601b5481565b5f8060015f6119fd6125fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611ab7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aae906144aa565b60405180910390fd5b611acb611ac26125fe565b85858403612605565b600191505092915050565b600e5481565b5f611aef611ae86125fe565b84846127c8565b6001905092915050565b611b016125fe565b73ffffffffffffffffffffffffffffffffffffffff16611b1f6117dd565b73ffffffffffffffffffffffffffffffffffffffff1614611b75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6c9061410c565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6021602052805f5260405f205f915054906101000a900460ff1681565b601160019054906101000a900460ff1681565b611c6b6125fe565b73ffffffffffffffffffffffffffffffffffffffff16611c896117dd565b73ffffffffffffffffffffffffffffffffffffffff1614611cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd69061410c565b60405180910390fd5b80601f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d799190613db8565b60405180910390a25050565b611d8d6125fe565b73ffffffffffffffffffffffffffffffffffffffff16611dab6117dd565b73ffffffffffffffffffffffffffffffffffffffff1614611e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df89061410c565b60405180910390fd5b8260198190555081601a8190555080601b81905550601b54601a54601954611e299190614311565b611e339190614311565b60188190555060646018541115611e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e769061438e565b60405180910390fd5b505050565b611e8c6125fe565b73ffffffffffffffffffffffffffffffffffffffff16611eaa6117dd565b73ffffffffffffffffffffffffffffffffffffffff1614611f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef79061410c565b60405180910390fd5b670de0b6b3a76400006103e86005611f16610f04565b611f209190614157565b611f2a91906141c5565b611f3491906141c5565b811015611f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6d90614538565b60405180910390fd5b670de0b6b3a764000081611f8a9190614157565b600a8190555050565b60135f9054906101000a900460ff1681565b60085481565b5f611fb46125fe565b73ffffffffffffffffffffffffffffffffffffffff16611fd26117dd565b73ffffffffffffffffffffffffffffffffffffffff1614612028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201f9061410c565b60405180910390fd5b620186a06001612036610f04565b6120409190614157565b61204a91906141c5565b82101561208c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612083906145c6565b60405180910390fd5b6103e86005612099610f04565b6120a39190614157565b6120ad91906141c5565b8211156120ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e690614654565b60405180910390fd5b8160098190555060019050919050565b60145481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60095481565b5f6121966125fe565b73ffffffffffffffffffffffffffffffffffffffff166121b46117dd565b73ffffffffffffffffffffffffffffffffffffffff161461220a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122019061410c565b60405180910390fd5b5f60135f6101000a81548160ff0219169083151502179055506001905090565b60165481565b6122386125fe565b73ffffffffffffffffffffffffffffffffffffffff166122566117dd565b73ffffffffffffffffffffffffffffffffffffffff16146122ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a39061410c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361231a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612311906146e2565b60405180910390fd5b61232381613661565b50565b601a5481565b600a5481565b5f61233b6125fe565b73ffffffffffffffffffffffffffffffffffffffff166123596117dd565b73ffffffffffffffffffffffffffffffffffffffff16146123af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a69061410c565b60405180910390fd5b600f546010546123bf9190614311565b4211612400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f79061474a565b60405180910390fd5b6103e8821115612445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243c906147d8565b60405180910390fd5b426010819055505f3073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016124a69190613f22565b602060405180830381865afa1580156124c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124e5919061480a565b90505f61250f61271061250186856137c290919063ffffffff16565b6137d790919063ffffffff16565b90505f811115612547576125467f000000000000000000000000000000000000000000000000000000000000000061dead836137ec565b5b5f7f000000000000000000000000000000000000000000000000000000000000000090508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156125b0575f80fd5b505af11580156125c2573d5f803e3d5ffd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266a906148a5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d890614933565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127bb9190613e7f565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282d906149c1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289b90614a4f565b60405180910390fd5b5f81036128bb576128b683835f6137ec565b613505565b60115f9054906101000a900460ff1615612f62576128d76117dd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561294557506129156117dd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561297d57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129b7575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129d05750600560149054906101000a900460ff16155b15612f6157601160019054906101000a900460ff16612ac457601f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612a845750601f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aba90614ab7565b60405180910390fd5b5b60135f9054906101000a900460ff1615612c8757612ae06117dd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612b6757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bbf57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612c86574360125f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3a90614b6b565b60405180910390fd5b4360125f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60215f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612d24575060205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612dcb57600854811115612d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6590614bf9565b60405180910390fd5b600a54612d7a83611458565b82612d859190614311565b1115612dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dbd90614c61565b60405180910390fd5b612f60565b60215f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612e68575060205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612eb757600854811115612eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea990614cef565b60405180910390fd5b612f5f565b60205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612f5e57600a54612f1183611458565b82612f1c9190614311565b1115612f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5490614c61565b60405180910390fd5b5b5b5b5b5b5f612f6c30611458565b90505f6009548210159050808015612f905750601160029054906101000a900460ff165b8015612fa95750600560149054906101000a900460ff16155b8015612ffc575060215f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561304f5750601f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156130a25750601f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156130dd576001600560146101000a81548160ff0219169083151502179055505f600560146101000a81548160ff0219169083151502179055505b600560149054906101000a900460ff16158015613140575060215f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156131575750600c5f9054906101000a900460ff165b80156131725750600d54600e5461316e9190614311565b4210155b80156131c55750601f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156131d4576131d2613a61565b505b5f600560149054906101000a900460ff16159050601f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806132835750601f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561328c575f90505b5f81156134f55760215f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156132ea57505f601854115b156133b4576133176064613309601854886137c290919063ffffffff16565b6137d790919063ffffffff16565b9050601854601a548261332a9190614157565b61333491906141c5565b601d5f8282546133449190614311565b92505081905550601854601b548261335c9190614157565b61336691906141c5565b601e5f8282546133769190614311565b925050819055506018546019548261338e9190614157565b61339891906141c5565b601c5f8282546133a89190614311565b925050819055506134d2565b60215f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561340b57505f601454115b156134d157613438606461342a601454886137c290919063ffffffff16565b6137d790919063ffffffff16565b90506014546016548261344b9190614157565b61345591906141c5565b601d5f8282546134659190614311565b925050819055506014546017548261347d9190614157565b61348791906141c5565b601e5f8282546134979190614311565b92505081905550601454601554826134af9190614157565b6134b991906141c5565b601c5f8282546134c99190614311565b925050819055505b5b5f8111156134e6576134e58730836137ec565b5b80856134f29190614d0d565b94505b6135008787876137ec565b505050505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613578576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161356f90614d8a565b60405180910390fd5b6135835f8383613c1b565b8060025f8282546135949190614311565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546135e69190614311565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161364a9190613e7f565b60405180910390a361365d5f8383613c20565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060215f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f81836137cf9190614157565b905092915050565b5f81836137e491906141c5565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361385a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613851906149c1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036138c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138bf90614a4f565b60405180910390fd5b6138d3838383613c1b565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161394d90614e18565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546139e49190614311565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613a489190613e7f565b60405180910390a3613a5b848484613c20565b50505050565b5f42600e819055505f3073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401613ac39190613f22565b602060405180830381865afa158015613ade573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b02919061480a565b90505f613b2e612710613b20600b54856137c290919063ffffffff16565b6137d790919063ffffffff16565b90505f811115613b6657613b657f000000000000000000000000000000000000000000000000000000000000000061dead836137ec565b5b5f7f000000000000000000000000000000000000000000000000000000000000000090508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015613bcf575f80fd5b505af1158015613be1573d5f803e3d5ffd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613c5c578082015181840152602081019050613c41565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613c8182613c25565b613c8b8185613c2f565b9350613c9b818560208601613c3f565b613ca481613c67565b840191505092915050565b5f6020820190508181035f830152613cc78184613c77565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613cfc82613cd3565b9050919050565b613d0c81613cf2565b8114613d16575f80fd5b50565b5f81359050613d2781613d03565b92915050565b5f819050919050565b613d3f81613d2d565b8114613d49575f80fd5b50565b5f81359050613d5a81613d36565b92915050565b5f8060408385031215613d7657613d75613ccf565b5b5f613d8385828601613d19565b9250506020613d9485828601613d4c565b9150509250929050565b5f8115159050919050565b613db281613d9e565b82525050565b5f602082019050613dcb5f830184613da9565b92915050565b5f60208284031215613de657613de5613ccf565b5b5f613df384828501613d19565b91505092915050565b5f819050919050565b5f613e1f613e1a613e1584613cd3565b613dfc565b613cd3565b9050919050565b5f613e3082613e05565b9050919050565b5f613e4182613e26565b9050919050565b613e5181613e37565b82525050565b5f602082019050613e6a5f830184613e48565b92915050565b613e7981613d2d565b82525050565b5f602082019050613e925f830184613e70565b92915050565b5f60208284031215613ead57613eac613ccf565b5b5f613eba84828501613d4c565b91505092915050565b5f805f60608486031215613eda57613ed9613ccf565b5b5f613ee786828701613d19565b9350506020613ef886828701613d19565b9250506040613f0986828701613d4c565b9150509250925092565b613f1c81613cf2565b82525050565b5f602082019050613f355f830184613f13565b92915050565b5f60ff82169050919050565b613f5081613f3b565b82525050565b5f602082019050613f695f830184613f47565b92915050565b613f7881613d9e565b8114613f82575f80fd5b50565b5f81359050613f9381613f6f565b92915050565b5f8060408385031215613faf57613fae613ccf565b5b5f613fbc85828601613d19565b9250506020613fcd85828601613f85565b9150509250929050565b5f805f60608486031215613fee57613fed613ccf565b5b5f613ffb86828701613d4c565b935050602061400c86828701613d4c565b925050604061401d86828701613d4c565b9150509250925092565b5f806040838503121561403d5761403c613ccf565b5b5f61404a85828601613d19565b925050602061405b85828601613d19565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806140a957607f821691505b6020821081036140bc576140bb614065565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6140f6602083613c2f565b9150614101826140c2565b602082019050919050565b5f6020820190508181035f830152614123816140ea565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61416182613d2d565b915061416c83613d2d565b925082820261417a81613d2d565b915082820484148315176141915761419061412a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6141cf82613d2d565b91506141da83613d2d565b9250826141ea576141e9614198565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f61424f602f83613c2f565b915061425a826141f5565b604082019050919050565b5f6020820190508181035f83015261427c81614243565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6142dd602883613c2f565b91506142e882614283565b604082019050919050565b5f6020820190508181035f83015261430a816142d1565b9050919050565b5f61431b82613d2d565b915061432683613d2d565b925082820190508082111561433e5761433d61412a565b5b92915050565b7f4d757374206b656570206665657320617420313125206f72206c6573730000005f82015250565b5f614378601d83613c2f565b915061438382614344565b602082019050919050565b5f6020820190508181035f8301526143a58161436c565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614406603983613c2f565b9150614411826143ac565b604082019050919050565b5f6020820190508181035f830152614433816143fa565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f614494602583613c2f565b915061449f8261443a565b604082019050919050565b5f6020820190508181035f8301526144c181614488565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f614522602483613c2f565b915061452d826144c8565b604082019050919050565b5f6020820190508181035f83015261454f81614516565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f6145b0603583613c2f565b91506145bb82614556565b604082019050919050565b5f6020820190508181035f8301526145dd816145a4565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f61463e603483613c2f565b9150614649826145e4565b604082019050919050565b5f6020820190508181035f83015261466b81614632565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6146cc602683613c2f565b91506146d782614672565b604082019050919050565b5f6020820190508181035f8301526146f9816146c0565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973685f82015250565b5f614734602083613c2f565b915061473f82614700565b602082019050919050565b5f6020820190508181035f83015261476181614728565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f5f8201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b5f6147c2602a83613c2f565b91506147cd82614768565b604082019050919050565b5f6020820190508181035f8301526147ef816147b6565b9050919050565b5f8151905061480481613d36565b92915050565b5f6020828403121561481f5761481e613ccf565b5b5f61482c848285016147f6565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61488f602483613c2f565b915061489a82614835565b604082019050919050565b5f6020820190508181035f8301526148bc81614883565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61491d602283613c2f565b9150614928826148c3565b604082019050919050565b5f6020820190508181035f83015261494a81614911565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6149ab602583613c2f565b91506149b682614951565b604082019050919050565b5f6020820190508181035f8301526149d88161499f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614a39602383613c2f565b9150614a44826149df565b604082019050919050565b5f6020820190508181035f830152614a6681614a2d565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614aa1601683613c2f565b9150614aac82614a6d565b602082019050919050565b5f6020820190508181035f830152614ace81614a95565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f614b55604983613c2f565b9150614b6082614ad5565b606082019050919050565b5f6020820190508181035f830152614b8281614b49565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f614be3603583613c2f565b9150614bee82614b89565b604082019050919050565b5f6020820190508181035f830152614c1081614bd7565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614c4b601383613c2f565b9150614c5682614c17565b602082019050919050565b5f6020820190508181035f830152614c7881614c3f565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f614cd9603683613c2f565b9150614ce482614c7f565b604082019050919050565b5f6020820190508181035f830152614d0681614ccd565b9050919050565b5f614d1782613d2d565b9150614d2283613d2d565b9250828203905081811115614d3a57614d3961412a565b5b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f614d74601f83613c2f565b9150614d7f82614d40565b602082019050919050565b5f6020820190508181035f830152614da181614d68565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614e02602683613c2f565b9150614e0d82614da8565b604082019050919050565b5f6020820190508181035f830152614e2f81614df6565b905091905056fea2646970667358221220bc5d784ddbabd701d875895c17dd86985510fbdedb428a99f3f08ce5458a4e6264736f6c63430008180033

Deployed Bytecode

0x60806040526004361061039a575f3560e01c80638da5cb5b116101db578063c024666811610101578063dd62ed3e1161009f578063f2fde38b1161006e578063f2fde38b14610d5f578063f637434214610d87578063f8b45b0514610db1578063fe72b27a14610ddb576103a1565b8063dd62ed3e14610ca5578063e2f4560514610ce1578063e884f26014610d0b578063f11a24d314610d35576103a1565b8063c876d0b9116100db578063c876d0b914610beb578063c8c8ebe414610c15578063d257b34f14610c3f578063d85ba06314610c7b576103a1565b8063c024666814610b73578063c17b5b8c14610b9b578063c18bc19514610bc3576103a1565b80639fccce3211610179578063a9059cbb11610148578063a9059cbb14610aa9578063aacebbe314610ae5578063b62496f514610b0d578063bbc0c74214610b49576103a1565b80639fccce32146109ef578063a0d82dc514610a19578063a457c2d714610a43578063a4c82a0014610a7f576103a1565b806395d89b41116101b557806395d89b41146109495780639a7a23d6146109735780639c3b4fdc1461099b5780639ec22c0e146109c5576103a1565b80638da5cb5b146108cb5780638ea5220f146108f5578063921369131461091f576103a1565b8063313ce567116102c05780636ddd17131161025e57806375f0a8741161022d57806375f0a874146108395780637bce5a04146108635780638095d5641461088d5780638a8c523c146108b5576103a1565b80636ddd17131461079557806370a08231146107bf578063715018a6146107fb5780637571336a14610811576103a1565b806349bd5a5e1161029a57806349bd5a5e146106db5780634a62bb65146107055780634fbee1931461072f5780636a486a8e1461076b576103a1565b8063313ce5671461064d578063395093511461067757806340c10f19146106b3576103a1565b8063199ffc721161033857806323b872dd1161030757806323b872dd1461059357806327c8f835146105cf5780632c3e486c146105f95780632e82f1a014610623576103a1565b8063199ffc72146104ed5780631a8145bb146105175780631f3fed8f14610541578063203e727e1461056b576103a1565b80631694505e116103745780631694505e1461044757806318160ddd146104715780631816467f1461049b578063184c16c5146104c3576103a1565b806306fdde03146103a5578063095ea7b3146103cf57806310d5de531461040b576103a1565b366103a157005b5f80fd5b3480156103b0575f80fd5b506103b9610e17565b6040516103c69190613caf565b60405180910390f35b3480156103da575f80fd5b506103f560048036038101906103f09190613d60565b610ea7565b6040516104029190613db8565b60405180910390f35b348015610416575f80fd5b50610431600480360381019061042c9190613dd1565b610ec4565b60405161043e9190613db8565b60405180910390f35b348015610452575f80fd5b5061045b610ee0565b6040516104689190613e57565b60405180910390f35b34801561047c575f80fd5b50610485610f04565b6040516104929190613e7f565b60405180910390f35b3480156104a6575f80fd5b506104c160048036038101906104bc9190613dd1565b610f0d565b005b3480156104ce575f80fd5b506104d7611047565b6040516104e49190613e7f565b60405180910390f35b3480156104f8575f80fd5b5061050161104d565b60405161050e9190613e7f565b60405180910390f35b348015610522575f80fd5b5061052b611053565b6040516105389190613e7f565b60405180910390f35b34801561054c575f80fd5b50610555611059565b6040516105629190613e7f565b60405180910390f35b348015610576575f80fd5b50610591600480360381019061058c9190613e98565b61105f565b005b34801561059e575f80fd5b506105b960048036038101906105b49190613ec3565b61116e565b6040516105c69190613db8565b60405180910390f35b3480156105da575f80fd5b506105e3611260565b6040516105f09190613f22565b60405180910390f35b348015610604575f80fd5b5061060d611266565b60405161061a9190613e7f565b60405180910390f35b34801561062e575f80fd5b5061063761126c565b6040516106449190613db8565b60405180910390f35b348015610658575f80fd5b5061066161127e565b60405161066e9190613f56565b60405180910390f35b348015610682575f80fd5b5061069d60048036038101906106989190613d60565b611286565b6040516106aa9190613db8565b60405180910390f35b3480156106be575f80fd5b506106d960048036038101906106d49190613d60565b61132d565b005b3480156106e6575f80fd5b506106ef6113b7565b6040516106fc9190613f22565b60405180910390f35b348015610710575f80fd5b506107196113db565b6040516107269190613db8565b60405180910390f35b34801561073a575f80fd5b5061075560048036038101906107509190613dd1565b6113ed565b6040516107629190613db8565b60405180910390f35b348015610776575f80fd5b5061077f61143f565b60405161078c9190613e7f565b60405180910390f35b3480156107a0575f80fd5b506107a9611445565b6040516107b69190613db8565b60405180910390f35b3480156107ca575f80fd5b506107e560048036038101906107e09190613dd1565b611458565b6040516107f29190613e7f565b60405180910390f35b348015610806575f80fd5b5061080f61149d565b005b34801561081c575f80fd5b5061083760048036038101906108329190613f99565b611524565b005b348015610844575f80fd5b5061084d6115f8565b60405161085a9190613f22565b60405180910390f35b34801561086e575f80fd5b5061087761161d565b6040516108849190613e7f565b60405180910390f35b348015610898575f80fd5b506108b360048036038101906108ae9190613fd7565b611623565b005b3480156108c0575f80fd5b506108c9611722565b005b3480156108d6575f80fd5b506108df6117dd565b6040516108ec9190613f22565b60405180910390f35b348015610900575f80fd5b50610909611805565b6040516109169190613f22565b60405180910390f35b34801561092a575f80fd5b5061093361182a565b6040516109409190613e7f565b60405180910390f35b348015610954575f80fd5b5061095d611830565b60405161096a9190613caf565b60405180910390f35b34801561097e575f80fd5b5061099960048036038101906109949190613f99565b6118c0565b005b3480156109a6575f80fd5b506109af6119d8565b6040516109bc9190613e7f565b60405180910390f35b3480156109d0575f80fd5b506109d96119de565b6040516109e69190613e7f565b60405180910390f35b3480156109fa575f80fd5b50610a036119e4565b604051610a109190613e7f565b60405180910390f35b348015610a24575f80fd5b50610a2d6119ea565b604051610a3a9190613e7f565b60405180910390f35b348015610a4e575f80fd5b50610a696004803603810190610a649190613d60565b6119f0565b604051610a769190613db8565b60405180910390f35b348015610a8a575f80fd5b50610a93611ad6565b604051610aa09190613e7f565b60405180910390f35b348015610ab4575f80fd5b50610acf6004803603810190610aca9190613d60565b611adc565b604051610adc9190613db8565b60405180910390f35b348015610af0575f80fd5b50610b0b6004803603810190610b069190613dd1565b611af9565b005b348015610b18575f80fd5b50610b336004803603810190610b2e9190613dd1565b611c33565b604051610b409190613db8565b60405180910390f35b348015610b54575f80fd5b50610b5d611c50565b604051610b6a9190613db8565b60405180910390f35b348015610b7e575f80fd5b50610b996004803603810190610b949190613f99565b611c63565b005b348015610ba6575f80fd5b50610bc16004803603810190610bbc9190613fd7565b611d85565b005b348015610bce575f80fd5b50610be96004803603810190610be49190613e98565b611e84565b005b348015610bf6575f80fd5b50610bff611f93565b604051610c0c9190613db8565b60405180910390f35b348015610c20575f80fd5b50610c29611fa5565b604051610c369190613e7f565b60405180910390f35b348015610c4a575f80fd5b50610c656004803603810190610c609190613e98565b611fab565b604051610c729190613db8565b60405180910390f35b348015610c86575f80fd5b50610c8f6120ff565b604051610c9c9190613e7f565b60405180910390f35b348015610cb0575f80fd5b50610ccb6004803603810190610cc69190614027565b612105565b604051610cd89190613e7f565b60405180910390f35b348015610cec575f80fd5b50610cf5612187565b604051610d029190613e7f565b60405180910390f35b348015610d16575f80fd5b50610d1f61218d565b604051610d2c9190613db8565b60405180910390f35b348015610d40575f80fd5b50610d4961222a565b604051610d569190613e7f565b60405180910390f35b348015610d6a575f80fd5b50610d856004803603810190610d809190613dd1565b612230565b005b348015610d92575f80fd5b50610d9b612326565b604051610da89190613e7f565b60405180910390f35b348015610dbc575f80fd5b50610dc561232c565b604051610dd29190613e7f565b60405180910390f35b348015610de6575f80fd5b50610e016004803603810190610dfc9190613e98565b612332565b604051610e0e9190613db8565b60405180910390f35b606060038054610e2690614092565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5290614092565b8015610e9d5780601f10610e7457610100808354040283529160200191610e9d565b820191905f5260205f20905b815481529060010190602001808311610e8057829003601f168201915b5050505050905090565b5f610eba610eb36125fe565b8484612605565b6001905092915050565b60208052805f5260405f205f915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b610f156125fe565b73ffffffffffffffffffffffffffffffffffffffff16610f336117dd565b73ffffffffffffffffffffffffffffffffffffffff1614610f89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f809061410c565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b600b5481565b601d5481565b601c5481565b6110676125fe565b73ffffffffffffffffffffffffffffffffffffffff166110856117dd565b73ffffffffffffffffffffffffffffffffffffffff16146110db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d29061410c565b60405180910390fd5b670de0b6b3a76400006103e860016110f1610f04565b6110fb9190614157565b61110591906141c5565b61110f91906141c5565b811015611151576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114890614265565b60405180910390fd5b670de0b6b3a7640000816111659190614157565b60088190555050565b5f61117a8484846127c8565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6111c16125fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611240576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611237906142f3565b60405180910390fd5b6112548561124c6125fe565b858403612605565b60019150509392505050565b61dead81565b600d5481565b600c5f9054906101000a900460ff1681565b5f6012905090565b5f6113236112926125fe565b848460015f61129f6125fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461131e9190614311565b612605565b6001905092915050565b6113356125fe565b73ffffffffffffffffffffffffffffffffffffffff166113536117dd565b73ffffffffffffffffffffffffffffffffffffffff16146113a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a09061410c565b60405180910390fd5b6113b3828261350a565b5050565b7f000000000000000000000000f3722704314295deb6c2d78d9cb0eebbdfbf78b481565b60115f9054906101000a900460ff1681565b5f601f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60185481565b601160029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6114a56125fe565b73ffffffffffffffffffffffffffffffffffffffff166114c36117dd565b73ffffffffffffffffffffffffffffffffffffffff1614611519576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115109061410c565b60405180910390fd5b6115225f613661565b565b61152c6125fe565b73ffffffffffffffffffffffffffffffffffffffff1661154a6117dd565b73ffffffffffffffffffffffffffffffffffffffff16146115a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115979061410c565b60405180910390fd5b8060205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b61162b6125fe565b73ffffffffffffffffffffffffffffffffffffffff166116496117dd565b73ffffffffffffffffffffffffffffffffffffffff161461169f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116969061410c565b60405180910390fd5b8260158190555081601681905550806017819055506017546016546015546116c79190614311565b6116d19190614311565b6014819055506064601454111561171d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117149061438e565b60405180910390fd5b505050565b61172a6125fe565b73ffffffffffffffffffffffffffffffffffffffff166117486117dd565b73ffffffffffffffffffffffffffffffffffffffff161461179e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117959061410c565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff02191690831515021790555042600e81905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b60606004805461183f90614092565b80601f016020809104026020016040519081016040528092919081815260200182805461186b90614092565b80156118b65780601f1061188d576101008083540402835291602001916118b6565b820191905f5260205f20905b81548152906001019060200180831161189957829003601f168201915b5050505050905090565b6118c86125fe565b73ffffffffffffffffffffffffffffffffffffffff166118e66117dd565b73ffffffffffffffffffffffffffffffffffffffff161461193c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119339061410c565b60405180910390fd5b7f000000000000000000000000f3722704314295deb6c2d78d9cb0eebbdfbf78b473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c19061441c565b60405180910390fd5b6119d48282613724565b5050565b60175481565b60105481565b601e5481565b601b5481565b5f8060015f6119fd6125fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611ab7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aae906144aa565b60405180910390fd5b611acb611ac26125fe565b85858403612605565b600191505092915050565b600e5481565b5f611aef611ae86125fe565b84846127c8565b6001905092915050565b611b016125fe565b73ffffffffffffffffffffffffffffffffffffffff16611b1f6117dd565b73ffffffffffffffffffffffffffffffffffffffff1614611b75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6c9061410c565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6021602052805f5260405f205f915054906101000a900460ff1681565b601160019054906101000a900460ff1681565b611c6b6125fe565b73ffffffffffffffffffffffffffffffffffffffff16611c896117dd565b73ffffffffffffffffffffffffffffffffffffffff1614611cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd69061410c565b60405180910390fd5b80601f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d799190613db8565b60405180910390a25050565b611d8d6125fe565b73ffffffffffffffffffffffffffffffffffffffff16611dab6117dd565b73ffffffffffffffffffffffffffffffffffffffff1614611e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df89061410c565b60405180910390fd5b8260198190555081601a8190555080601b81905550601b54601a54601954611e299190614311565b611e339190614311565b60188190555060646018541115611e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e769061438e565b60405180910390fd5b505050565b611e8c6125fe565b73ffffffffffffffffffffffffffffffffffffffff16611eaa6117dd565b73ffffffffffffffffffffffffffffffffffffffff1614611f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef79061410c565b60405180910390fd5b670de0b6b3a76400006103e86005611f16610f04565b611f209190614157565b611f2a91906141c5565b611f3491906141c5565b811015611f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6d90614538565b60405180910390fd5b670de0b6b3a764000081611f8a9190614157565b600a8190555050565b60135f9054906101000a900460ff1681565b60085481565b5f611fb46125fe565b73ffffffffffffffffffffffffffffffffffffffff16611fd26117dd565b73ffffffffffffffffffffffffffffffffffffffff1614612028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201f9061410c565b60405180910390fd5b620186a06001612036610f04565b6120409190614157565b61204a91906141c5565b82101561208c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612083906145c6565b60405180910390fd5b6103e86005612099610f04565b6120a39190614157565b6120ad91906141c5565b8211156120ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e690614654565b60405180910390fd5b8160098190555060019050919050565b60145481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60095481565b5f6121966125fe565b73ffffffffffffffffffffffffffffffffffffffff166121b46117dd565b73ffffffffffffffffffffffffffffffffffffffff161461220a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122019061410c565b60405180910390fd5b5f60135f6101000a81548160ff0219169083151502179055506001905090565b60165481565b6122386125fe565b73ffffffffffffffffffffffffffffffffffffffff166122566117dd565b73ffffffffffffffffffffffffffffffffffffffff16146122ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a39061410c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361231a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612311906146e2565b60405180910390fd5b61232381613661565b50565b601a5481565b600a5481565b5f61233b6125fe565b73ffffffffffffffffffffffffffffffffffffffff166123596117dd565b73ffffffffffffffffffffffffffffffffffffffff16146123af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a69061410c565b60405180910390fd5b600f546010546123bf9190614311565b4211612400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f79061474a565b60405180910390fd5b6103e8821115612445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243c906147d8565b60405180910390fd5b426010819055505f3073ffffffffffffffffffffffffffffffffffffffff166370a082317f000000000000000000000000f3722704314295deb6c2d78d9cb0eebbdfbf78b46040518263ffffffff1660e01b81526004016124a69190613f22565b602060405180830381865afa1580156124c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124e5919061480a565b90505f61250f61271061250186856137c290919063ffffffff16565b6137d790919063ffffffff16565b90505f811115612547576125467f000000000000000000000000f3722704314295deb6c2d78d9cb0eebbdfbf78b461dead836137ec565b5b5f7f000000000000000000000000f3722704314295deb6c2d78d9cb0eebbdfbf78b490508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156125b0575f80fd5b505af11580156125c2573d5f803e3d5ffd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266a906148a5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d890614933565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127bb9190613e7f565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282d906149c1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289b90614a4f565b60405180910390fd5b5f81036128bb576128b683835f6137ec565b613505565b60115f9054906101000a900460ff1615612f62576128d76117dd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561294557506129156117dd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561297d57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129b7575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129d05750600560149054906101000a900460ff16155b15612f6157601160019054906101000a900460ff16612ac457601f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612a845750601f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aba90614ab7565b60405180910390fd5b5b60135f9054906101000a900460ff1615612c8757612ae06117dd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612b6757507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bbf57507f000000000000000000000000f3722704314295deb6c2d78d9cb0eebbdfbf78b473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612c86574360125f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3a90614b6b565b60405180910390fd5b4360125f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60215f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612d24575060205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612dcb57600854811115612d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6590614bf9565b60405180910390fd5b600a54612d7a83611458565b82612d859190614311565b1115612dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dbd90614c61565b60405180910390fd5b612f60565b60215f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612e68575060205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612eb757600854811115612eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea990614cef565b60405180910390fd5b612f5f565b60205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612f5e57600a54612f1183611458565b82612f1c9190614311565b1115612f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5490614c61565b60405180910390fd5b5b5b5b5b5b5f612f6c30611458565b90505f6009548210159050808015612f905750601160029054906101000a900460ff165b8015612fa95750600560149054906101000a900460ff16155b8015612ffc575060215f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561304f5750601f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156130a25750601f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156130dd576001600560146101000a81548160ff0219169083151502179055505f600560146101000a81548160ff0219169083151502179055505b600560149054906101000a900460ff16158015613140575060215f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156131575750600c5f9054906101000a900460ff165b80156131725750600d54600e5461316e9190614311565b4210155b80156131c55750601f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156131d4576131d2613a61565b505b5f600560149054906101000a900460ff16159050601f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806132835750601f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561328c575f90505b5f81156134f55760215f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156132ea57505f601854115b156133b4576133176064613309601854886137c290919063ffffffff16565b6137d790919063ffffffff16565b9050601854601a548261332a9190614157565b61333491906141c5565b601d5f8282546133449190614311565b92505081905550601854601b548261335c9190614157565b61336691906141c5565b601e5f8282546133769190614311565b925050819055506018546019548261338e9190614157565b61339891906141c5565b601c5f8282546133a89190614311565b925050819055506134d2565b60215f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561340b57505f601454115b156134d157613438606461342a601454886137c290919063ffffffff16565b6137d790919063ffffffff16565b90506014546016548261344b9190614157565b61345591906141c5565b601d5f8282546134659190614311565b925050819055506014546017548261347d9190614157565b61348791906141c5565b601e5f8282546134979190614311565b92505081905550601454601554826134af9190614157565b6134b991906141c5565b601c5f8282546134c99190614311565b925050819055505b5b5f8111156134e6576134e58730836137ec565b5b80856134f29190614d0d565b94505b6135008787876137ec565b505050505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613578576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161356f90614d8a565b60405180910390fd5b6135835f8383613c1b565b8060025f8282546135949190614311565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546135e69190614311565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161364a9190613e7f565b60405180910390a361365d5f8383613c20565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060215f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f81836137cf9190614157565b905092915050565b5f81836137e491906141c5565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361385a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613851906149c1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036138c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138bf90614a4f565b60405180910390fd5b6138d3838383613c1b565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161394d90614e18565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546139e49190614311565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613a489190613e7f565b60405180910390a3613a5b848484613c20565b50505050565b5f42600e819055505f3073ffffffffffffffffffffffffffffffffffffffff166370a082317f000000000000000000000000f3722704314295deb6c2d78d9cb0eebbdfbf78b46040518263ffffffff1660e01b8152600401613ac39190613f22565b602060405180830381865afa158015613ade573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b02919061480a565b90505f613b2e612710613b20600b54856137c290919063ffffffff16565b6137d790919063ffffffff16565b90505f811115613b6657613b657f000000000000000000000000f3722704314295deb6c2d78d9cb0eebbdfbf78b461dead836137ec565b5b5f7f000000000000000000000000f3722704314295deb6c2d78d9cb0eebbdfbf78b490508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015613bcf575f80fd5b505af1158015613be1573d5f803e3d5ffd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613c5c578082015181840152602081019050613c41565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613c8182613c25565b613c8b8185613c2f565b9350613c9b818560208601613c3f565b613ca481613c67565b840191505092915050565b5f6020820190508181035f830152613cc78184613c77565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613cfc82613cd3565b9050919050565b613d0c81613cf2565b8114613d16575f80fd5b50565b5f81359050613d2781613d03565b92915050565b5f819050919050565b613d3f81613d2d565b8114613d49575f80fd5b50565b5f81359050613d5a81613d36565b92915050565b5f8060408385031215613d7657613d75613ccf565b5b5f613d8385828601613d19565b9250506020613d9485828601613d4c565b9150509250929050565b5f8115159050919050565b613db281613d9e565b82525050565b5f602082019050613dcb5f830184613da9565b92915050565b5f60208284031215613de657613de5613ccf565b5b5f613df384828501613d19565b91505092915050565b5f819050919050565b5f613e1f613e1a613e1584613cd3565b613dfc565b613cd3565b9050919050565b5f613e3082613e05565b9050919050565b5f613e4182613e26565b9050919050565b613e5181613e37565b82525050565b5f602082019050613e6a5f830184613e48565b92915050565b613e7981613d2d565b82525050565b5f602082019050613e925f830184613e70565b92915050565b5f60208284031215613ead57613eac613ccf565b5b5f613eba84828501613d4c565b91505092915050565b5f805f60608486031215613eda57613ed9613ccf565b5b5f613ee786828701613d19565b9350506020613ef886828701613d19565b9250506040613f0986828701613d4c565b9150509250925092565b613f1c81613cf2565b82525050565b5f602082019050613f355f830184613f13565b92915050565b5f60ff82169050919050565b613f5081613f3b565b82525050565b5f602082019050613f695f830184613f47565b92915050565b613f7881613d9e565b8114613f82575f80fd5b50565b5f81359050613f9381613f6f565b92915050565b5f8060408385031215613faf57613fae613ccf565b5b5f613fbc85828601613d19565b9250506020613fcd85828601613f85565b9150509250929050565b5f805f60608486031215613fee57613fed613ccf565b5b5f613ffb86828701613d4c565b935050602061400c86828701613d4c565b925050604061401d86828701613d4c565b9150509250925092565b5f806040838503121561403d5761403c613ccf565b5b5f61404a85828601613d19565b925050602061405b85828601613d19565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806140a957607f821691505b6020821081036140bc576140bb614065565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6140f6602083613c2f565b9150614101826140c2565b602082019050919050565b5f6020820190508181035f830152614123816140ea565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61416182613d2d565b915061416c83613d2d565b925082820261417a81613d2d565b915082820484148315176141915761419061412a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6141cf82613d2d565b91506141da83613d2d565b9250826141ea576141e9614198565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f61424f602f83613c2f565b915061425a826141f5565b604082019050919050565b5f6020820190508181035f83015261427c81614243565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6142dd602883613c2f565b91506142e882614283565b604082019050919050565b5f6020820190508181035f83015261430a816142d1565b9050919050565b5f61431b82613d2d565b915061432683613d2d565b925082820190508082111561433e5761433d61412a565b5b92915050565b7f4d757374206b656570206665657320617420313125206f72206c6573730000005f82015250565b5f614378601d83613c2f565b915061438382614344565b602082019050919050565b5f6020820190508181035f8301526143a58161436c565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614406603983613c2f565b9150614411826143ac565b604082019050919050565b5f6020820190508181035f830152614433816143fa565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f614494602583613c2f565b915061449f8261443a565b604082019050919050565b5f6020820190508181035f8301526144c181614488565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f614522602483613c2f565b915061452d826144c8565b604082019050919050565b5f6020820190508181035f83015261454f81614516565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f6145b0603583613c2f565b91506145bb82614556565b604082019050919050565b5f6020820190508181035f8301526145dd816145a4565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f61463e603483613c2f565b9150614649826145e4565b604082019050919050565b5f6020820190508181035f83015261466b81614632565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6146cc602683613c2f565b91506146d782614672565b604082019050919050565b5f6020820190508181035f8301526146f9816146c0565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973685f82015250565b5f614734602083613c2f565b915061473f82614700565b602082019050919050565b5f6020820190508181035f83015261476181614728565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f5f8201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b5f6147c2602a83613c2f565b91506147cd82614768565b604082019050919050565b5f6020820190508181035f8301526147ef816147b6565b9050919050565b5f8151905061480481613d36565b92915050565b5f6020828403121561481f5761481e613ccf565b5b5f61482c848285016147f6565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61488f602483613c2f565b915061489a82614835565b604082019050919050565b5f6020820190508181035f8301526148bc81614883565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61491d602283613c2f565b9150614928826148c3565b604082019050919050565b5f6020820190508181035f83015261494a81614911565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6149ab602583613c2f565b91506149b682614951565b604082019050919050565b5f6020820190508181035f8301526149d88161499f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614a39602383613c2f565b9150614a44826149df565b604082019050919050565b5f6020820190508181035f830152614a6681614a2d565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614aa1601683613c2f565b9150614aac82614a6d565b602082019050919050565b5f6020820190508181035f830152614ace81614a95565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f614b55604983613c2f565b9150614b6082614ad5565b606082019050919050565b5f6020820190508181035f830152614b8281614b49565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f614be3603583613c2f565b9150614bee82614b89565b604082019050919050565b5f6020820190508181035f830152614c1081614bd7565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614c4b601383613c2f565b9150614c5682614c17565b602082019050919050565b5f6020820190508181035f830152614c7881614c3f565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f614cd9603683613c2f565b9150614ce482614c7f565b604082019050919050565b5f6020820190508181035f830152614d0681614ccd565b9050919050565b5f614d1782613d2d565b9150614d2283613d2d565b9250828203905081811115614d3a57614d3961412a565b5b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f614d74601f83613c2f565b9150614d7f82614d40565b602082019050919050565b5f6020820190508181035f830152614da181614d68565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614e02602683613c2f565b9150614e0d82614da8565b604082019050919050565b5f6020820190508181035f830152614e2f81614df6565b905091905056fea2646970667358221220bc5d784ddbabd701d875895c17dd86985510fbdedb428a99f3f08ce5458a4e6264736f6c63430008180033

Deployed Bytecode Sourcemap

15908:16815:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2940:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3861:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17534:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15983:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3265:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24286:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16548:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16363:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17318:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17278;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21792:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4042:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16086:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16458:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16419:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3164:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4547:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31565:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16041:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16646:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24451:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17133:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16726:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3381:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;814:103;;;;;;;;;;;;;:::i;:::-;;22339:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16178:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17026;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22516:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20864:155;;;;;;;;;;;;;:::i;:::-;;589:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16215:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17168:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3052:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23539:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17100:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16602:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17358:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17244:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4770:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16510:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3516:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24047:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17755:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16686:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23349:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22928:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22075:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16944:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16248:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21287:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16992:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3702:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16290:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21082:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17063:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;925:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17206:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16330:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31664:1056;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2940:100;2994:13;3027:5;3020:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2940:100;:::o;3861:169::-;3944:4;3961:39;3970:12;:10;:12::i;:::-;3984:7;3993:6;3961:8;:39::i;:::-;4018:4;4011:11;;3861:169;;;;:::o;17534:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;15983:51::-;;;:::o;3265:108::-;3326:7;3353:12;;3346:19;;3265:108;:::o;24286:157::-;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24393:9:::1;;;;;;;;;;;24365:38;;24382:9;24365:38;;;;;;;;;;;;24426:9;24414;;:21;;;;;;;;;;;;;;;;;;24286:157:::0;:::o;16548:47::-;;;;:::o;16363:36::-;;;;:::o;17318:33::-;;;;:::o;17278:::-;;;;:::o;21792:275::-;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21929:4:::1;21921;21916:1;21900:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21899:26;;;;:::i;:::-;21898:35;;;;:::i;:::-;21888:6;:45;;21866:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;22052:6;22042;:17;;;;:::i;:::-;22019:20;:40;;;;21792:275:::0;:::o;4042:492::-;4182:4;4199:36;4209:6;4217:9;4228:6;4199:9;:36::i;:::-;4248:24;4275:11;:19;4287:6;4275:19;;;;;;;;;;;;;;;:33;4295:12;:10;:12::i;:::-;4275:33;;;;;;;;;;;;;;;;4248:60;;4347:6;4327:16;:26;;4319:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4434:57;4443:6;4451:12;:10;:12::i;:::-;4484:6;4465:16;:25;4434:8;:57::i;:::-;4522:4;4515:11;;;4042:492;;;;;:::o;16086:53::-;16132:6;16086:53;:::o;16458:45::-;;;;:::o;16419:32::-;;;;;;;;;;;;;:::o;3164:93::-;3222:5;3247:2;3240:9;;3164:93;:::o;4547:215::-;4635:4;4652:80;4661:12;:10;:12::i;:::-;4675:7;4721:10;4684:11;:25;4696:12;:10;:12::i;:::-;4684:25;;;;;;;;;;;;;;;:34;4710:7;4684:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4652:8;:80::i;:::-;4750:4;4743:11;;4547:215;;;;:::o;31565:89::-;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31633:17:::1;31639:2;31643:6;31633:5;:17::i;:::-;31565:89:::0;;:::o;16041:38::-;;;:::o;16646:33::-;;;;;;;;;;;;;:::o;24451:126::-;24517:4;24541:19;:28;24561:7;24541:28;;;;;;;;;;;;;;;;;;;;;;;;;24534:35;;24451:126;;;:::o;17133:28::-;;;;:::o;16726:31::-;;;;;;;;;;;;;:::o;3381:127::-;3455:7;3482:9;:18;3492:7;3482:18;;;;;;;;;;;;;;;;3475:25;;3381:127;;;:::o;814:103::-;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;879:30:::1;906:1;879:18;:30::i;:::-;814:103::o:0;22339:167::-;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22494:4:::1;22452:31;:39;22484:6;22452:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;22339:167:::0;;:::o;16178:30::-;;;;;;;;;;;;;:::o;17026:::-;;;;:::o;22516:404::-;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22684:13:::1;22666:15;:31;;;;22726:13;22708:15;:31;;;;22762:7;22750:9;:19;;;;22831:9;;22813:15;;22795;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;22780:12;:60;;;;22875:3;22859:12;;:19;;22851:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;22516:404:::0;;;:::o;20864:155::-;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20935:4:::1;20919:13;;:20;;;;;;;;;;;;;;;;;;20964:4;20950:11;;:18;;;;;;;;;;;;;;;;;;20996:15;20979:14;:32;;;;20864:155::o:0;589:87::-;635:7;662:6;;;;;;;;;;;655:13;;589:87;:::o;16215:24::-;;;;;;;;;;;;;:::o;17168:31::-;;;;:::o;3052:104::-;3108:13;3141:7;3134:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3052:104;:::o;23539:304::-;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23683:13:::1;23675:21;;:4;:21;;::::0;23653:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23794:41;23823:4;23829:5;23794:28;:41::i;:::-;23539:304:::0;;:::o;17100:24::-;;;;:::o;16602:35::-;;;;:::o;17358:27::-;;;;:::o;17244:25::-;;;;:::o;4770:413::-;4863:4;4880:24;4907:11;:25;4919:12;:10;:12::i;:::-;4907:25;;;;;;;;;;;;;;;:34;4933:7;4907:34;;;;;;;;;;;;;;;;4880:61;;4980:15;4960:16;:35;;4952:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;5073:67;5082:12;:10;:12::i;:::-;5096:7;5124:15;5105:16;:34;5073:8;:67::i;:::-;5171:4;5164:11;;;4770:413;;;;:::o;16510:29::-;;;;:::o;3516:175::-;3602:4;3619:42;3629:12;:10;:12::i;:::-;3643:9;3654:6;3619:9;:42::i;:::-;3679:4;3672:11;;3516:175;;;;:::o;24047:231::-;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24207:15:::1;;;;;;;;;;;24164:59;;24187:18;24164:59;;;;;;;;;;;;24252:18;24234:15;;:36;;;;;;;;;;;;;;;;;;24047:231:::0;:::o;17755:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;16686:33::-;;;;;;;;;;;;;:::o;23349:182::-;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23465:8:::1;23434:19;:28;23454:7;23434:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23505:7;23489:34;;;23514:8;23489:34;;;;;;:::i;:::-;;;;;;;;23349:182:::0;;:::o;22928:413::-;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23098:13:::1;23079:16;:32;;;;23141:13;23122:16;:32;;;;23178:7;23165:10;:20;;;;23250:10;;23231:16;;23212;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;23196:13;:64;;;;23296:3;23279:13;;:20;;23271:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;22928:413:::0;;;:::o;22075:256::-;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22215:4:::1;22207;22202:1;22186:13;:11;:13::i;:::-;:17;;;;:::i;:::-;22185:26;;;;:::i;:::-;22184:35;;;;:::i;:::-;22174:6;:45;;22152:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;22316:6;22306;:17;;;;:::i;:::-;22294:9;:29;;;;22075:256:::0;:::o;16944:39::-;;;;;;;;;;;;;:::o;16248:35::-;;;;:::o;21287:497::-;21395:4;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21474:6:::1;21469:1;21453:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21452:28;;;;:::i;:::-;21439:9;:41;;21417:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;21629:4;21624:1;21608:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21607:26;;;;:::i;:::-;21594:9;:39;;21572:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;21745:9;21724:18;:30;;;;21772:4;21765:11;;21287:497:::0;;;:::o;16992:27::-;;;;:::o;3702:151::-;3791:7;3818:11;:18;3830:5;3818:18;;;;;;;;;;;;;;;:27;3837:7;3818:27;;;;;;;;;;;;;;;;3811:34;;3702:151;;;;:::o;16290:33::-;;;;:::o;21082:135::-;21142:4;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21182:5:::1;21159:20;;:28;;;;;;;;;;;;;;;;;;21205:4;21198:11;;21082:135:::0;:::o;17063:30::-;;;;:::o;925:201::-;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1034:1:::1;1014:22;;:8;:22;;::::0;1006:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1090:28;1109:8;1090:18;:28::i;:::-;925:201:::0;:::o;17206:31::-;;;;:::o;16330:24::-;;;;:::o;31664:1056::-;31775:4;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31860:19:::1;;31837:20;;:42;;;;:::i;:::-;31819:15;:60;31797:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;31969:4;31958:7;:15;;31950:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;32054:15;32031:20;:38;;;;32124:28;32155:4;:14;;;32170:13;32155:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32124:60;;32234:20;32257:44;32295:5;32257:33;32282:7;32257:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;32234:67;;32421:1;32406:12;:16;32402:110;;;32439:61;32455:13;32478:6;32487:12;32439:15;:61::i;:::-;32402:110;32587:19;32624:13;32587:51;;32649:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;32676:14;;;;;;;;;;32708:4;32701:11;;;;;31664:1056:::0;;;:::o;133:98::-;186:7;213:10;206:17;;133:98;:::o;6943:380::-;7096:1;7079:19;;:5;:19;;;7071:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7177:1;7158:21;;:7;:21;;;7150:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7261:6;7231:11;:18;7243:5;7231:18;;;;;;;;;;;;;;;:27;7250:7;7231:27;;;;;;;;;;;;;;;:36;;;;7299:7;7283:32;;7292:5;7283:32;;;7308:6;7283:32;;;;;;:::i;:::-;;;;;;;;6943:380;;;:::o;24635:4998::-;24783:1;24767:18;;:4;:18;;;24759:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24860:1;24846:16;;:2;:16;;;24838:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24929:1;24919:6;:11;24915:93;;24947:28;24963:4;24969:2;24973:1;24947:15;:28::i;:::-;24990:7;;24915:93;25024:14;;;;;;;;;;;25020:2487;;;25085:7;:5;:7::i;:::-;25077:15;;:4;:15;;;;:49;;;;;25119:7;:5;:7::i;:::-;25113:13;;:2;:13;;;;25077:49;:86;;;;;25161:1;25147:16;;:2;:16;;;;25077:86;:128;;;;;25198:6;25184:21;;:2;:21;;;;25077:128;:158;;;;;25227:8;;;;;;;;;;;25226:9;25077:158;25055:2441;;;25275:13;;;;;;;;;;;25270:223;;25347:19;:25;25367:4;25347:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25376:19;:23;25396:2;25376:23;;;;;;;;;;;;;;;;;;;;;;;;;25347:52;25313:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;25270:223;25649:20;;;;;;;;;;;25645:641;;;25730:7;:5;:7::i;:::-;25724:13;;:2;:13;;;;:72;;;;;25780:15;25766:30;;:2;:30;;;;25724:72;:129;;;;;25839:13;25825:28;;:2;:28;;;;25724:129;25694:573;;;26017:12;25942:28;:39;25971:9;25942:39;;;;;;;;;;;;;;;;:87;25904:258;;;;;;;;;;;;:::i;:::-;;;;;;;;;26231:12;26189:28;:39;26218:9;26189:39;;;;;;;;;;;;;;;:54;;;;25694:573;25645:641;26360:25;:31;26386:4;26360:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;26417:31;:35;26449:2;26417:35;;;;;;;;;;;;;;;;;;;;;;;;;26416:36;26360:92;26334:1147;;;26539:20;;26529:6;:30;;26495:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;26747:9;;26730:13;26740:2;26730:9;:13::i;:::-;26721:6;:22;;;;:::i;:::-;:35;;26687:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;26334:1147;;;26925:25;:29;26951:2;26925:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;26980:31;:37;27012:4;26980:37;;;;;;;;;;;;;;;;;;;;;;;;;26979:38;26925:92;26899:582;;;27104:20;;27094:6;:30;;27060:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;26899:582;;;27261:31;:35;27293:2;27261:35;;;;;;;;;;;;;;;;;;;;;;;;;27256:225;;27381:9;;27364:13;27374:2;27364:9;:13::i;:::-;27355:6;:22;;;;:::i;:::-;:35;;27321:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;27256:225;26899:582;26334:1147;25055:2441;25020:2487;27519:28;27550:24;27568:4;27550:9;:24::i;:::-;27519:55;;27587:12;27626:18;;27602:20;:42;;27587:57;;27675:7;:35;;;;;27699:11;;;;;;;;;;;27675:35;:61;;;;;27728:8;;;;;;;;;;;27727:9;27675:61;:110;;;;;27754:25;:31;27780:4;27754:31;;;;;;;;;;;;;;;;;;;;;;;;;27753:32;27675:110;:153;;;;;27803:19;:25;27823:4;27803:25;;;;;;;;;;;;;;;;;;;;;;;;;27802:26;27675:153;:194;;;;;27846:19;:23;27866:2;27846:23;;;;;;;;;;;;;;;;;;;;;;;;;27845:24;27675:194;27657:313;;;27907:4;27896:8;;:15;;;;;;;;;;;;;;;;;;27953:5;27942:8;;:16;;;;;;;;;;;;;;;;;;27657:313;28001:8;;;;;;;;;;;28000:9;:55;;;;;28026:25;:29;28052:2;28026:29;;;;;;;;;;;;;;;;;;;;;;;;;28000:55;:85;;;;;28072:13;;;;;;;;;;;28000:85;:153;;;;;28138:15;;28121:14;;:32;;;;:::i;:::-;28102:15;:51;;28000:153;:196;;;;;28171:19;:25;28191:4;28171:25;;;;;;;;;;;;;;;;;;;;;;;;;28170:26;28000:196;27982:282;;;28223:29;:27;:29::i;:::-;;27982:282;28276:12;28292:8;;;;;;;;;;;28291:9;28276:24;;28402:19;:25;28422:4;28402:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;28431:19;:23;28451:2;28431:23;;;;;;;;;;;;;;;;;;;;;;;;;28402:52;28398:100;;;28481:5;28471:15;;28398:100;28510:12;28615:7;28611:969;;;28667:25;:29;28693:2;28667:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;28716:1;28700:13;;:17;28667:50;28663:768;;;28745:34;28775:3;28745:25;28756:13;;28745:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;28738:41;;28848:13;;28828:16;;28821:4;:23;;;;:::i;:::-;28820:41;;;;:::i;:::-;28798:18;;:63;;;;;;;:::i;:::-;;;;;;;;28918:13;;28904:10;;28897:4;:17;;;;:::i;:::-;28896:35;;;;:::i;:::-;28880:12;;:51;;;;;;;:::i;:::-;;;;;;;;29000:13;;28980:16;;28973:4;:23;;;;:::i;:::-;28972:41;;;;:::i;:::-;28950:18;;:63;;;;;;;:::i;:::-;;;;;;;;28663:768;;;29075:25;:31;29101:4;29075:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;29125:1;29110:12;;:16;29075:51;29071:360;;;29154:33;29183:3;29154:24;29165:12;;29154:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;29147:40;;29255:12;;29236:15;;29229:4;:22;;;;:::i;:::-;29228:39;;;;:::i;:::-;29206:18;;:61;;;;;;;:::i;:::-;;;;;;;;29323:12;;29310:9;;29303:4;:16;;;;:::i;:::-;29302:33;;;;:::i;:::-;29286:12;;:49;;;;;;;:::i;:::-;;;;;;;;29403:12;;29384:15;;29377:4;:22;;;;:::i;:::-;29376:39;;;;:::i;:::-;29354:18;;:61;;;;;;;:::i;:::-;;;;;;;;29071:360;28663:768;29458:1;29451:4;:8;29447:91;;;29480:42;29496:4;29510;29517;29480:15;:42::i;:::-;29447:91;29564:4;29554:14;;;;;:::i;:::-;;;28611:969;29592:33;29608:4;29614:2;29618:6;29592:15;:33::i;:::-;24748:4885;;;;24635:4998;;;;:::o;5935:399::-;6038:1;6019:21;;:7;:21;;;6011:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;6089:49;6118:1;6122:7;6131:6;6089:20;:49::i;:::-;6167:6;6151:12;;:22;;;;;;;:::i;:::-;;;;;;;;6206:6;6184:9;:18;6194:7;6184:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;6249:7;6228:37;;6245:1;6228:37;;;6258:6;6228:37;;;;;;:::i;:::-;;;;;;;;6278:48;6306:1;6310:7;6319:6;6278:19;:48::i;:::-;5935:399;;:::o;1134:191::-;1208:16;1227:6;;;;;;;;;;;1208:25;;1253:8;1244:6;;:17;;;;;;;;;;;;;;;;;;1308:8;1277:40;;1298:8;1277:40;;;;;;;;;;;;1197:128;1134:191;:::o;23851:188::-;23968:5;23934:25;:31;23960:4;23934:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24025:5;23991:40;;24019:4;23991:40;;;;;;;;;;;;23851:188;;:::o;8986:98::-;9044:7;9075:1;9071;:5;;;;:::i;:::-;9064:12;;8986:98;;;;:::o;9092:::-;9150:7;9181:1;9177;:5;;;;:::i;:::-;9170:12;;9092:98;;;;:::o;5194:733::-;5352:1;5334:20;;:6;:20;;;5326:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5436:1;5415:23;;:9;:23;;;5407:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5491:47;5512:6;5520:9;5531:6;5491:20;:47::i;:::-;5551:21;5575:9;:17;5585:6;5575:17;;;;;;;;;;;;;;;;5551:41;;5628:6;5611:13;:23;;5603:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5749:6;5733:13;:22;5713:9;:17;5723:6;5713:17;;;;;;;;;;;;;;;:42;;;;5801:6;5777:9;:20;5787:9;5777:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5842:9;5825:35;;5834:6;5825:35;;;5853:6;5825:35;;;;;;:::i;:::-;;;;;;;;5873:46;5893:6;5901:9;5912:6;5873:19;:46::i;:::-;5315:612;5194:733;;;:::o;30771:788::-;30828:4;30862:15;30845:14;:32;;;;30932:28;30963:4;:14;;;30978:13;30963:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30932:60;;31042:20;31065:77;31126:5;31065:42;31090:16;;31065:20;:24;;:42;;;;:::i;:::-;:46;;:77;;;;:::i;:::-;31042:100;;31262:1;31247:12;:16;31243:110;;;31280:61;31296:13;31319:6;31328:12;31280:15;:61::i;:::-;31243:110;31428:19;31465:13;31428:51;;31490:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31517:12;;;;;;;;;;31547:4;31540:11;;;;;30771:788;:::o;7333:125::-;;;;:::o;7468:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:329::-;5170:6;5219:2;5207:9;5198:7;5194:23;5190:32;5187:119;;;5225:79;;:::i;:::-;5187:119;5345:1;5370:53;5415:7;5406:6;5395:9;5391:22;5370:53;:::i;:::-;5360:63;;5316:117;5111:329;;;;:::o;5446:619::-;5523:6;5531;5539;5588:2;5576:9;5567:7;5563:23;5559:32;5556:119;;;5594:79;;:::i;:::-;5556:119;5714:1;5739:53;5784:7;5775:6;5764:9;5760:22;5739:53;:::i;:::-;5729:63;;5685:117;5841:2;5867:53;5912:7;5903:6;5892:9;5888:22;5867:53;:::i;:::-;5857:63;;5812:118;5969:2;5995:53;6040:7;6031:6;6020:9;6016:22;5995:53;:::i;:::-;5985:63;;5940:118;5446:619;;;;;:::o;6071:118::-;6158:24;6176:5;6158:24;:::i;:::-;6153:3;6146:37;6071:118;;:::o;6195:222::-;6288:4;6326:2;6315:9;6311:18;6303:26;;6339:71;6407:1;6396:9;6392:17;6383:6;6339:71;:::i;:::-;6195:222;;;;:::o;6423:86::-;6458:7;6498:4;6491:5;6487:16;6476:27;;6423:86;;;:::o;6515:112::-;6598:22;6614:5;6598:22;:::i;:::-;6593:3;6586:35;6515:112;;:::o;6633:214::-;6722:4;6760:2;6749:9;6745:18;6737:26;;6773:67;6837:1;6826:9;6822:17;6813:6;6773:67;:::i;:::-;6633:214;;;;:::o;6853:116::-;6923:21;6938:5;6923:21;:::i;:::-;6916:5;6913:32;6903:60;;6959:1;6956;6949:12;6903:60;6853:116;:::o;6975:133::-;7018:5;7056:6;7043:20;7034:29;;7072:30;7096:5;7072:30;:::i;:::-;6975:133;;;;:::o;7114:468::-;7179:6;7187;7236:2;7224:9;7215:7;7211:23;7207:32;7204:119;;;7242:79;;:::i;:::-;7204:119;7362:1;7387:53;7432:7;7423:6;7412:9;7408:22;7387:53;:::i;:::-;7377:63;;7333:117;7489:2;7515:50;7557:7;7548:6;7537:9;7533:22;7515:50;:::i;:::-;7505:60;;7460:115;7114:468;;;;;:::o;7588:619::-;7665:6;7673;7681;7730:2;7718:9;7709:7;7705:23;7701:32;7698:119;;;7736:79;;:::i;:::-;7698:119;7856:1;7881:53;7926:7;7917:6;7906:9;7902:22;7881:53;:::i;:::-;7871:63;;7827:117;7983:2;8009:53;8054:7;8045:6;8034:9;8030:22;8009:53;:::i;:::-;7999:63;;7954:118;8111:2;8137:53;8182:7;8173:6;8162:9;8158:22;8137:53;:::i;:::-;8127:63;;8082:118;7588:619;;;;;:::o;8213:474::-;8281:6;8289;8338:2;8326:9;8317:7;8313:23;8309:32;8306:119;;;8344:79;;:::i;:::-;8306:119;8464:1;8489:53;8534:7;8525:6;8514:9;8510:22;8489:53;:::i;:::-;8479:63;;8435:117;8591:2;8617:53;8662:7;8653:6;8642:9;8638:22;8617:53;:::i;:::-;8607:63;;8562:118;8213:474;;;;;:::o;8693:180::-;8741:77;8738:1;8731:88;8838:4;8835:1;8828:15;8862:4;8859:1;8852:15;8879:320;8923:6;8960:1;8954:4;8950:12;8940:22;;9007:1;9001:4;8997:12;9028:18;9018:81;;9084:4;9076:6;9072:17;9062:27;;9018:81;9146:2;9138:6;9135:14;9115:18;9112:38;9109:84;;9165:18;;:::i;:::-;9109:84;8930:269;8879:320;;;:::o;9205:182::-;9345:34;9341:1;9333:6;9329:14;9322:58;9205:182;:::o;9393:366::-;9535:3;9556:67;9620:2;9615:3;9556:67;:::i;:::-;9549:74;;9632:93;9721:3;9632:93;:::i;:::-;9750:2;9745:3;9741:12;9734:19;;9393:366;;;:::o;9765:419::-;9931:4;9969:2;9958:9;9954:18;9946:26;;10018:9;10012:4;10008:20;10004:1;9993:9;9989:17;9982:47;10046:131;10172:4;10046:131;:::i;:::-;10038:139;;9765:419;;;:::o;10190:180::-;10238:77;10235:1;10228:88;10335:4;10332:1;10325:15;10359:4;10356:1;10349:15;10376:410;10416:7;10439:20;10457:1;10439:20;:::i;:::-;10434:25;;10473:20;10491:1;10473:20;:::i;:::-;10468:25;;10528:1;10525;10521:9;10550:30;10568:11;10550:30;:::i;:::-;10539:41;;10729:1;10720:7;10716:15;10713:1;10710:22;10690:1;10683:9;10663:83;10640:139;;10759:18;;:::i;:::-;10640:139;10424:362;10376:410;;;;:::o;10792:180::-;10840:77;10837:1;10830:88;10937:4;10934:1;10927:15;10961:4;10958:1;10951:15;10978:185;11018:1;11035:20;11053:1;11035:20;:::i;:::-;11030:25;;11069:20;11087:1;11069:20;:::i;:::-;11064:25;;11108:1;11098:35;;11113:18;;:::i;:::-;11098:35;11155:1;11152;11148:9;11143:14;;10978:185;;;;:::o;11169:234::-;11309:34;11305:1;11297:6;11293:14;11286:58;11378:17;11373:2;11365:6;11361:15;11354:42;11169:234;:::o;11409:366::-;11551:3;11572:67;11636:2;11631:3;11572:67;:::i;:::-;11565:74;;11648:93;11737:3;11648:93;:::i;:::-;11766:2;11761:3;11757:12;11750:19;;11409:366;;;:::o;11781:419::-;11947:4;11985:2;11974:9;11970:18;11962:26;;12034:9;12028:4;12024:20;12020:1;12009:9;12005:17;11998:47;12062:131;12188:4;12062:131;:::i;:::-;12054:139;;11781:419;;;:::o;12206:227::-;12346:34;12342:1;12334:6;12330:14;12323:58;12415:10;12410:2;12402:6;12398:15;12391:35;12206:227;:::o;12439:366::-;12581:3;12602:67;12666:2;12661:3;12602:67;:::i;:::-;12595:74;;12678:93;12767:3;12678:93;:::i;:::-;12796:2;12791:3;12787:12;12780:19;;12439:366;;;:::o;12811:419::-;12977:4;13015:2;13004:9;13000:18;12992:26;;13064:9;13058:4;13054:20;13050:1;13039:9;13035:17;13028:47;13092:131;13218:4;13092:131;:::i;:::-;13084:139;;12811:419;;;:::o;13236:191::-;13276:3;13295:20;13313:1;13295:20;:::i;:::-;13290:25;;13329:20;13347:1;13329:20;:::i;:::-;13324:25;;13372:1;13369;13365:9;13358:16;;13393:3;13390:1;13387:10;13384:36;;;13400:18;;:::i;:::-;13384:36;13236:191;;;;:::o;13433:179::-;13573:31;13569:1;13561:6;13557:14;13550:55;13433:179;:::o;13618:366::-;13760:3;13781:67;13845:2;13840:3;13781:67;:::i;:::-;13774:74;;13857:93;13946:3;13857:93;:::i;:::-;13975:2;13970:3;13966:12;13959:19;;13618:366;;;:::o;13990:419::-;14156:4;14194:2;14183:9;14179:18;14171:26;;14243:9;14237:4;14233:20;14229:1;14218:9;14214:17;14207:47;14271:131;14397:4;14271:131;:::i;:::-;14263:139;;13990:419;;;:::o;14415:244::-;14555:34;14551:1;14543:6;14539:14;14532:58;14624:27;14619:2;14611:6;14607:15;14600:52;14415:244;:::o;14665:366::-;14807:3;14828:67;14892:2;14887:3;14828:67;:::i;:::-;14821:74;;14904:93;14993:3;14904:93;:::i;:::-;15022:2;15017:3;15013:12;15006:19;;14665:366;;;:::o;15037:419::-;15203:4;15241:2;15230:9;15226:18;15218:26;;15290:9;15284:4;15280:20;15276:1;15265:9;15261:17;15254:47;15318:131;15444:4;15318:131;:::i;:::-;15310:139;;15037:419;;;:::o;15462:224::-;15602:34;15598:1;15590:6;15586:14;15579:58;15671:7;15666:2;15658:6;15654:15;15647:32;15462:224;:::o;15692:366::-;15834:3;15855:67;15919:2;15914:3;15855:67;:::i;:::-;15848:74;;15931:93;16020:3;15931:93;:::i;:::-;16049:2;16044:3;16040:12;16033:19;;15692:366;;;:::o;16064:419::-;16230:4;16268:2;16257:9;16253:18;16245:26;;16317:9;16311:4;16307:20;16303:1;16292:9;16288:17;16281:47;16345:131;16471:4;16345:131;:::i;:::-;16337:139;;16064:419;;;:::o;16489:223::-;16629:34;16625:1;16617:6;16613:14;16606:58;16698:6;16693:2;16685:6;16681:15;16674:31;16489:223;:::o;16718:366::-;16860:3;16881:67;16945:2;16940:3;16881:67;:::i;:::-;16874:74;;16957:93;17046:3;16957:93;:::i;:::-;17075:2;17070:3;17066:12;17059:19;;16718:366;;;:::o;17090:419::-;17256:4;17294:2;17283:9;17279:18;17271:26;;17343:9;17337:4;17333:20;17329:1;17318:9;17314:17;17307:47;17371:131;17497:4;17371:131;:::i;:::-;17363:139;;17090:419;;;:::o;17515:240::-;17655:34;17651:1;17643:6;17639:14;17632:58;17724:23;17719:2;17711:6;17707:15;17700:48;17515:240;:::o;17761:366::-;17903:3;17924:67;17988:2;17983:3;17924:67;:::i;:::-;17917:74;;18000:93;18089:3;18000:93;:::i;:::-;18118:2;18113:3;18109:12;18102:19;;17761:366;;;:::o;18133:419::-;18299:4;18337:2;18326:9;18322:18;18314:26;;18386:9;18380:4;18376:20;18372:1;18361:9;18357:17;18350:47;18414:131;18540:4;18414:131;:::i;:::-;18406:139;;18133:419;;;:::o;18558:239::-;18698:34;18694:1;18686:6;18682:14;18675:58;18767:22;18762:2;18754:6;18750:15;18743:47;18558:239;:::o;18803:366::-;18945:3;18966:67;19030:2;19025:3;18966:67;:::i;:::-;18959:74;;19042:93;19131:3;19042:93;:::i;:::-;19160:2;19155:3;19151:12;19144:19;;18803:366;;;:::o;19175:419::-;19341:4;19379:2;19368:9;19364:18;19356:26;;19428:9;19422:4;19418:20;19414:1;19403:9;19399:17;19392:47;19456:131;19582:4;19456:131;:::i;:::-;19448:139;;19175:419;;;:::o;19600:225::-;19740:34;19736:1;19728:6;19724:14;19717:58;19809:8;19804:2;19796:6;19792:15;19785:33;19600:225;:::o;19831:366::-;19973:3;19994:67;20058:2;20053:3;19994:67;:::i;:::-;19987:74;;20070:93;20159:3;20070:93;:::i;:::-;20188:2;20183:3;20179:12;20172:19;;19831:366;;;:::o;20203:419::-;20369:4;20407:2;20396:9;20392:18;20384:26;;20456:9;20450:4;20446:20;20442:1;20431:9;20427:17;20420:47;20484:131;20610:4;20484:131;:::i;:::-;20476:139;;20203:419;;;:::o;20628:182::-;20768:34;20764:1;20756:6;20752:14;20745:58;20628:182;:::o;20816:366::-;20958:3;20979:67;21043:2;21038:3;20979:67;:::i;:::-;20972:74;;21055:93;21144:3;21055:93;:::i;:::-;21173:2;21168:3;21164:12;21157:19;;20816:366;;;:::o;21188:419::-;21354:4;21392:2;21381:9;21377:18;21369:26;;21441:9;21435:4;21431:20;21427:1;21416:9;21412:17;21405:47;21469:131;21595:4;21469:131;:::i;:::-;21461:139;;21188:419;;;:::o;21613:229::-;21753:34;21749:1;21741:6;21737:14;21730:58;21822:12;21817:2;21809:6;21805:15;21798:37;21613:229;:::o;21848:366::-;21990:3;22011:67;22075:2;22070:3;22011:67;:::i;:::-;22004:74;;22087:93;22176:3;22087:93;:::i;:::-;22205:2;22200:3;22196:12;22189:19;;21848:366;;;:::o;22220:419::-;22386:4;22424:2;22413:9;22409:18;22401:26;;22473:9;22467:4;22463:20;22459:1;22448:9;22444:17;22437:47;22501:131;22627:4;22501:131;:::i;:::-;22493:139;;22220:419;;;:::o;22645:143::-;22702:5;22733:6;22727:13;22718:22;;22749:33;22776:5;22749:33;:::i;:::-;22645:143;;;;:::o;22794:351::-;22864:6;22913:2;22901:9;22892:7;22888:23;22884:32;22881:119;;;22919:79;;:::i;:::-;22881:119;23039:1;23064:64;23120:7;23111:6;23100:9;23096:22;23064:64;:::i;:::-;23054:74;;23010:128;22794:351;;;;:::o;23151:223::-;23291:34;23287:1;23279:6;23275:14;23268:58;23360:6;23355:2;23347:6;23343:15;23336:31;23151:223;:::o;23380:366::-;23522:3;23543:67;23607:2;23602:3;23543:67;:::i;:::-;23536:74;;23619:93;23708:3;23619:93;:::i;:::-;23737:2;23732:3;23728:12;23721:19;;23380:366;;;:::o;23752:419::-;23918:4;23956:2;23945:9;23941:18;23933:26;;24005:9;23999:4;23995:20;23991:1;23980:9;23976:17;23969:47;24033:131;24159:4;24033:131;:::i;:::-;24025:139;;23752:419;;;:::o;24177:221::-;24317:34;24313:1;24305:6;24301:14;24294:58;24386:4;24381:2;24373:6;24369:15;24362:29;24177:221;:::o;24404:366::-;24546:3;24567:67;24631:2;24626:3;24567:67;:::i;:::-;24560:74;;24643:93;24732:3;24643:93;:::i;:::-;24761:2;24756:3;24752:12;24745:19;;24404:366;;;:::o;24776:419::-;24942:4;24980:2;24969:9;24965:18;24957:26;;25029:9;25023:4;25019:20;25015:1;25004:9;25000:17;24993:47;25057:131;25183:4;25057:131;:::i;:::-;25049:139;;24776:419;;;:::o;25201:224::-;25341:34;25337:1;25329:6;25325:14;25318:58;25410:7;25405:2;25397:6;25393:15;25386:32;25201:224;:::o;25431:366::-;25573:3;25594:67;25658:2;25653:3;25594:67;:::i;:::-;25587:74;;25670:93;25759:3;25670:93;:::i;:::-;25788:2;25783:3;25779:12;25772:19;;25431:366;;;:::o;25803:419::-;25969:4;26007:2;25996:9;25992:18;25984:26;;26056:9;26050:4;26046:20;26042:1;26031:9;26027:17;26020:47;26084:131;26210:4;26084:131;:::i;:::-;26076:139;;25803:419;;;:::o;26228:222::-;26368:34;26364:1;26356:6;26352:14;26345:58;26437:5;26432:2;26424:6;26420:15;26413:30;26228:222;:::o;26456:366::-;26598:3;26619:67;26683:2;26678:3;26619:67;:::i;:::-;26612:74;;26695:93;26784:3;26695:93;:::i;:::-;26813:2;26808:3;26804:12;26797:19;;26456:366;;;:::o;26828:419::-;26994:4;27032:2;27021:9;27017:18;27009:26;;27081:9;27075:4;27071:20;27067:1;27056:9;27052:17;27045:47;27109:131;27235:4;27109:131;:::i;:::-;27101:139;;26828:419;;;:::o;27253:172::-;27393:24;27389:1;27381:6;27377:14;27370:48;27253:172;:::o;27431:366::-;27573:3;27594:67;27658:2;27653:3;27594:67;:::i;:::-;27587:74;;27670:93;27759:3;27670:93;:::i;:::-;27788:2;27783:3;27779:12;27772:19;;27431:366;;;:::o;27803:419::-;27969:4;28007:2;27996:9;27992:18;27984:26;;28056:9;28050:4;28046:20;28042:1;28031:9;28027:17;28020:47;28084:131;28210:4;28084:131;:::i;:::-;28076:139;;27803:419;;;:::o;28228:297::-;28368:34;28364:1;28356:6;28352:14;28345:58;28437:34;28432:2;28424:6;28420:15;28413:59;28506:11;28501:2;28493:6;28489:15;28482:36;28228:297;:::o;28531:366::-;28673:3;28694:67;28758:2;28753:3;28694:67;:::i;:::-;28687:74;;28770:93;28859:3;28770:93;:::i;:::-;28888:2;28883:3;28879:12;28872:19;;28531:366;;;:::o;28903:419::-;29069:4;29107:2;29096:9;29092:18;29084:26;;29156:9;29150:4;29146:20;29142:1;29131:9;29127:17;29120:47;29184:131;29310:4;29184:131;:::i;:::-;29176:139;;28903:419;;;:::o;29328:240::-;29468:34;29464:1;29456:6;29452:14;29445:58;29537:23;29532:2;29524:6;29520:15;29513:48;29328:240;:::o;29574:366::-;29716:3;29737:67;29801:2;29796:3;29737:67;:::i;:::-;29730:74;;29813:93;29902:3;29813:93;:::i;:::-;29931:2;29926:3;29922:12;29915:19;;29574:366;;;:::o;29946:419::-;30112:4;30150:2;30139:9;30135:18;30127:26;;30199:9;30193:4;30189:20;30185:1;30174:9;30170:17;30163:47;30227:131;30353:4;30227:131;:::i;:::-;30219:139;;29946:419;;;:::o;30371:169::-;30511:21;30507:1;30499:6;30495:14;30488:45;30371:169;:::o;30546:366::-;30688:3;30709:67;30773:2;30768:3;30709:67;:::i;:::-;30702:74;;30785:93;30874:3;30785:93;:::i;:::-;30903:2;30898:3;30894:12;30887:19;;30546:366;;;:::o;30918:419::-;31084:4;31122:2;31111:9;31107:18;31099:26;;31171:9;31165:4;31161:20;31157:1;31146:9;31142:17;31135:47;31199:131;31325:4;31199:131;:::i;:::-;31191:139;;30918:419;;;:::o;31343:241::-;31483:34;31479:1;31471:6;31467:14;31460:58;31552:24;31547:2;31539:6;31535:15;31528:49;31343:241;:::o;31590:366::-;31732:3;31753:67;31817:2;31812:3;31753:67;:::i;:::-;31746:74;;31829:93;31918:3;31829:93;:::i;:::-;31947:2;31942:3;31938:12;31931:19;;31590:366;;;:::o;31962:419::-;32128:4;32166:2;32155:9;32151:18;32143:26;;32215:9;32209:4;32205:20;32201:1;32190:9;32186:17;32179:47;32243:131;32369:4;32243:131;:::i;:::-;32235:139;;31962:419;;;:::o;32387:194::-;32427:4;32447:20;32465:1;32447:20;:::i;:::-;32442:25;;32481:20;32499:1;32481:20;:::i;:::-;32476:25;;32525:1;32522;32518:9;32510:17;;32549:1;32543:4;32540:11;32537:37;;;32554:18;;:::i;:::-;32537:37;32387:194;;;;:::o;32587:181::-;32727:33;32723:1;32715:6;32711:14;32704:57;32587:181;:::o;32774:366::-;32916:3;32937:67;33001:2;32996:3;32937:67;:::i;:::-;32930:74;;33013:93;33102:3;33013:93;:::i;:::-;33131:2;33126:3;33122:12;33115:19;;32774:366;;;:::o;33146:419::-;33312:4;33350:2;33339:9;33335:18;33327:26;;33399:9;33393:4;33389:20;33385:1;33374:9;33370:17;33363:47;33427:131;33553:4;33427:131;:::i;:::-;33419:139;;33146:419;;;:::o;33571:225::-;33711:34;33707:1;33699:6;33695:14;33688:58;33780:8;33775:2;33767:6;33763:15;33756:33;33571:225;:::o;33802:366::-;33944:3;33965:67;34029:2;34024:3;33965:67;:::i;:::-;33958:74;;34041:93;34130:3;34041:93;:::i;:::-;34159:2;34154:3;34150:12;34143:19;;33802:366;;;:::o;34174:419::-;34340:4;34378:2;34367:9;34363:18;34355:26;;34427:9;34421:4;34417:20;34413:1;34402:9;34398:17;34391:47;34455:131;34581:4;34455:131;:::i;:::-;34447:139;;34174:419;;;:::o

Swarm Source

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