ETH Price: $2,608.99 (-1.45%)

Token

OUTREACH (REACH)
 

Overview

Max Total Supply

7,000,000,000 REACH

Holders

58

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
182,531,409.886263925265429962 REACH

Value
$0.00
0xd516955bdfd66e5f4aaec593e28001265f44bd1f
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:
REACH

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-05
*/

// www.outreach.space
// twitter.com/OUTREACH_ERC

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 {
  
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

////// lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol
// OpenZeppelin Contracts v4.4.0 (token/ERC20/extensions/IERC20Metadata.sol)

/* pragma solidity ^0.8.0; */

/* import "../IERC20.sol"; */

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

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

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

////// lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol
// OpenZeppelin Contracts v4.4.0 (token/ERC20/ERC20.sol)

/* pragma solidity ^0.8.0; */

/* import "./IERC20.sol"; */
/* import "./extensions/IERC20Metadata.sol"; */
/* import "../../utils/Context.sol"; */

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

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

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _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 {}
}

////// lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol
// OpenZeppelin Contracts v4.4.0 (utils/math/SafeMath.sol)

/* pragma solidity ^0.8.0; */

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

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 {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (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;
        }
    }
}

////// src/IUniswapV2Factory.sol
/* pragma solidity 0.8.10; */
/* pragma experimental ABIEncoderV2; */

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

////// src/IUniswapV2Pair.sol
/* pragma solidity 0.8.10; */
/* pragma experimental ABIEncoderV2; */

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

////// src/IUniswapV2Router02.sol
/* pragma solidity 0.8.10; */
/* pragma experimental ABIEncoderV2; */

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

    constructor() ERC20("OUTREACH", "REACH") {
        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 = 5;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevFee = 0;

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

        uint256 totalSupply = 7_000_000_000 * 1e18;

        maxTransactionAmount = 70_000_000 * 1e18; // 1% from total supply maxTransactionAmountTxn
        maxWallet = 70_000_000 * 1e18; // 1% from total supply maxWallet
        swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05% swap wallet

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

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

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

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

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

        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        lastLpBurnTime = block.timestamp;
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

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

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

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

    function updateSellFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _devFee
    ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
        require(sellTotalFees <= 25, "Must keep fees at 25% 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;

            swapBack();

            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 swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity +
            tokensForMarketing +
            tokensForDev;
        bool success;

        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

        if (contractBalance > swapTokensAtAmount * 20) {
            contractBalance = swapTokensAtAmount * 20;
        }

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(
            totalTokensToSwap
        );
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);

        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;

        (success, ) = address(devWallet).call{value: ethForDev}("");

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }

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

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

    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 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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"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":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526019600b556001600c5f6101000a81548160ff021916908315150217905550610e10600d55610708600f55600160115f6101000a81548160ff0219169083151502179055505f601160016101000a81548160ff0219169083151502179055505f601160026101000a81548160ff021916908315150217905550600160135f6101000a81548160ff021916908315150217905550348015620000a3575f80fd5b506040518060400160405280600881526020017f4f555452454143480000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f5245414348000000000000000000000000000000000000000000000000000000815250816003908162000121919062000d36565b50806004908162000133919062000d36565b505050620001566200014a620005aa60201b60201c565b620005b160201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001818160016200067460201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ff573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000225919062000e7f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200028b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002b1919062000e7f565b6040518363ffffffff1660e01b8152600401620002d092919062000ec0565b6020604051808303815f875af1158015620002ed573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000313919062000e7f565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200035b60a05160016200067460201b60201c565b6200037060a05160016200075b60201b60201c565b5f600590505f805f601690505f805f6b169e43a85eb381aa5800000090506a39e7139a8c08fa060000006008819055506a39e7139a8c08fa06000000600a81905550612710600582620003c4919062000f18565b620003d0919062000f8f565b60098190555086601581905550856016819055508460178190555060175460165460155462000400919062000fc6565b6200040c919062000fc6565b6014819055508360198190555082601a8190555081601b81905550601b54601a546019546200043c919062000fc6565b62000448919062000fc6565b6018819055507307516888fb6fdecca5978708e0cfe75fd050a8ff60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507307516888fb6fdecca5978708e0cfe75fd050a8ff60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005186200050a620007f960201b60201c565b60016200082160201b60201c565b6200052b3060016200082160201b60201c565b6200054061dead60016200082160201b60201c565b6200056262000554620007f960201b60201c565b60016200067460201b60201c565b620005753060016200067460201b60201c565b6200058a61dead60016200067460201b60201c565b6200059c33826200095860201b60201c565b50505050505050506200114f565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b62000684620005aa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006aa620007f960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000703576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006fa906200105e565b60405180910390fd5b8060205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b8060215f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000831620005aa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000857620007f960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008b0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008a7906200105e565b60405180910390fd5b80601f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200094c91906200109a565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009c9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009c09062001103565b60405180910390fd5b620009dc5f838362000ac860201b60201c565b8060025f828254620009ef919062000fc6565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000a43919062000fc6565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000aa9919062001134565b60405180910390a362000ac45f838362000acd60201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000b4e57607f821691505b60208210810362000b645762000b6362000b09565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000bc87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b8b565b62000bd4868362000b8b565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000c1e62000c1862000c128462000bec565b62000bf5565b62000bec565b9050919050565b5f819050919050565b62000c398362000bfe565b62000c5162000c488262000c25565b84845462000b97565b825550505050565b5f90565b62000c6762000c59565b62000c7481848462000c2e565b505050565b5b8181101562000c9b5762000c8f5f8262000c5d565b60018101905062000c7a565b5050565b601f82111562000cea5762000cb48162000b6a565b62000cbf8462000b7c565b8101602085101562000ccf578190505b62000ce762000cde8562000b7c565b83018262000c79565b50505b505050565b5f82821c905092915050565b5f62000d0c5f198460080262000cef565b1980831691505092915050565b5f62000d26838362000cfb565b9150826002028217905092915050565b62000d418262000ad2565b67ffffffffffffffff81111562000d5d5762000d5c62000adc565b5b62000d69825462000b36565b62000d7682828562000c9f565b5f60209050601f83116001811462000dac575f841562000d97578287015190505b62000da3858262000d19565b86555062000e12565b601f19841662000dbc8662000b6a565b5f5b8281101562000de55784890151825560018201915060208501945060208101905062000dbe565b8683101562000e05578489015162000e01601f89168262000cfb565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000e498262000e1e565b9050919050565b62000e5b8162000e3d565b811462000e66575f80fd5b50565b5f8151905062000e798162000e50565b92915050565b5f6020828403121562000e975762000e9662000e1a565b5b5f62000ea68482850162000e69565b91505092915050565b62000eba8162000e3d565b82525050565b5f60408201905062000ed55f83018562000eaf565b62000ee4602083018462000eaf565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000f248262000bec565b915062000f318362000bec565b925082820262000f418162000bec565b9150828204841483151762000f5b5762000f5a62000eeb565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000f9b8262000bec565b915062000fa88362000bec565b92508262000fbb5762000fba62000f62565b5b828204905092915050565b5f62000fd28262000bec565b915062000fdf8362000bec565b925082820190508082111562000ffa5762000ff962000eeb565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6200104660208362001000565b9150620010538262001010565b602082019050919050565b5f6020820190508181035f830152620010778162001038565b9050919050565b5f8115159050919050565b62001094816200107e565b82525050565b5f602082019050620010af5f83018462001089565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f620010eb601f8362001000565b9150620010f882620010b5565b602082019050919050565b5f6020820190508181035f8301526200111c81620010dd565b9050919050565b6200112e8162000bec565b82525050565b5f602082019050620011495f83018462001123565b92915050565b60805160a0516159fb620011d35f395f818161139701528181611b8f015281816126bc0152818161276f0152818161279b01528181612dc101528181613e5901528181613f0e0152613f3a01525f8181610f4a01528181612d69015281816140a801528181614187015281816141ae01528181614244015261426b01526159fb5ff3fe6080604052600436106103b0575f3560e01c80638da5cb5b116101e6578063bbc0c7421161010c578063dd62ed3e1161009f578063f2fde38b1161006e578063f2fde38b14610dc7578063f637434214610def578063f8b45b0514610e19578063fe72b27a14610e43576103b7565b8063dd62ed3e14610d0d578063e2f4560514610d49578063e884f26014610d73578063f11a24d314610d9d576103b7565b8063c876d0b9116100db578063c876d0b914610c53578063c8c8ebe414610c7d578063d257b34f14610ca7578063d85ba06314610ce3576103b7565b8063bbc0c74214610bb1578063c024666814610bdb578063c17b5b8c14610c03578063c18bc19514610c2b576103b7565b80639ec22c0e11610184578063a4c82a0011610153578063a4c82a0014610ae7578063a9059cbb14610b11578063aacebbe314610b4d578063b62496f514610b75576103b7565b80639ec22c0e14610a2d5780639fccce3214610a57578063a0d82dc514610a81578063a457c2d714610aab576103b7565b8063924de9b7116101c0578063924de9b71461098957806395d89b41146109b15780639a7a23d6146109db5780639c3b4fdc14610a03576103b7565b80638da5cb5b1461090b5780638ea5220f14610935578063921369131461095f576103b7565b8063313ce567116102d6578063715018a61161026957806375f0a8741161023857806375f0a874146108795780637bce5a04146108a35780638095d564146108cd5780638a8c523c146108f5576103b7565b8063715018a6146107e9578063730c1888146107ff578063751039fc146108275780637571336a14610851576103b7565b80634fbee193116102a55780634fbee1931461071d5780636a486a8e146107595780636ddd17131461078357806370a08231146107ad576103b7565b8063313ce56714610663578063395093511461068d57806349bd5a5e146106c95780634a62bb65146106f3576103b7565b8063199ffc721161034e57806323b872dd1161031d57806323b872dd146105a957806327c8f835146105e55780632c3e486c1461060f5780632e82f1a014610639576103b7565b8063199ffc72146105035780631a8145bb1461052d5780631f3fed8f14610557578063203e727e14610581576103b7565b80631694505e1161038a5780631694505e1461045d57806318160ddd146104875780631816467f146104b1578063184c16c5146104d9576103b7565b806306fdde03146103bb578063095ea7b3146103e557806310d5de5314610421576103b7565b366103b757005b5f80fd5b3480156103c6575f80fd5b506103cf610e7f565b6040516103dc91906143a1565b60405180910390f35b3480156103f0575f80fd5b5061040b60048036038101906104069190614452565b610f0f565b60405161041891906144aa565b60405180910390f35b34801561042c575f80fd5b50610447600480360381019061044291906144c3565b610f2c565b60405161045491906144aa565b60405180910390f35b348015610468575f80fd5b50610471610f48565b60405161047e9190614549565b60405180910390f35b348015610492575f80fd5b5061049b610f6c565b6040516104a89190614571565b60405180910390f35b3480156104bc575f80fd5b506104d760048036038101906104d291906144c3565b610f75565b005b3480156104e4575f80fd5b506104ed6110af565b6040516104fa9190614571565b60405180910390f35b34801561050e575f80fd5b506105176110b5565b6040516105249190614571565b60405180910390f35b348015610538575f80fd5b506105416110bb565b60405161054e9190614571565b60405180910390f35b348015610562575f80fd5b5061056b6110c1565b6040516105789190614571565b60405180910390f35b34801561058c575f80fd5b506105a760048036038101906105a2919061458a565b6110c7565b005b3480156105b4575f80fd5b506105cf60048036038101906105ca91906145b5565b6111d6565b6040516105dc91906144aa565b60405180910390f35b3480156105f0575f80fd5b506105f96112c8565b6040516106069190614614565b60405180910390f35b34801561061a575f80fd5b506106236112ce565b6040516106309190614571565b60405180910390f35b348015610644575f80fd5b5061064d6112d4565b60405161065a91906144aa565b60405180910390f35b34801561066e575f80fd5b506106776112e6565b6040516106849190614648565b60405180910390f35b348015610698575f80fd5b506106b360048036038101906106ae9190614452565b6112ee565b6040516106c091906144aa565b60405180910390f35b3480156106d4575f80fd5b506106dd611395565b6040516106ea9190614614565b60405180910390f35b3480156106fe575f80fd5b506107076113b9565b60405161071491906144aa565b60405180910390f35b348015610728575f80fd5b50610743600480360381019061073e91906144c3565b6113cb565b60405161075091906144aa565b60405180910390f35b348015610764575f80fd5b5061076d61141d565b60405161077a9190614571565b60405180910390f35b34801561078e575f80fd5b50610797611423565b6040516107a491906144aa565b60405180910390f35b3480156107b8575f80fd5b506107d360048036038101906107ce91906144c3565b611436565b6040516107e09190614571565b60405180910390f35b3480156107f4575f80fd5b506107fd61147b565b005b34801561080a575f80fd5b506108256004803603810190610820919061468b565b611502565b005b348015610832575f80fd5b5061083b611640565b60405161084891906144aa565b60405180910390f35b34801561085c575f80fd5b50610877600480360381019061087291906146db565b6116dd565b005b348015610884575f80fd5b5061088d6117b1565b60405161089a9190614614565b60405180910390f35b3480156108ae575f80fd5b506108b76117d6565b6040516108c49190614571565b60405180910390f35b3480156108d8575f80fd5b506108f360048036038101906108ee9190614719565b6117dc565b005b348015610900575f80fd5b506109096118da565b005b348015610916575f80fd5b5061091f611995565b60405161092c9190614614565b60405180910390f35b348015610940575f80fd5b506109496119bd565b6040516109569190614614565b60405180910390f35b34801561096a575f80fd5b506109736119e2565b6040516109809190614571565b60405180910390f35b348015610994575f80fd5b506109af60048036038101906109aa9190614769565b6119e8565b005b3480156109bc575f80fd5b506109c5611a81565b6040516109d291906143a1565b60405180910390f35b3480156109e6575f80fd5b50610a0160048036038101906109fc91906146db565b611b11565b005b348015610a0e575f80fd5b50610a17611c29565b604051610a249190614571565b60405180910390f35b348015610a38575f80fd5b50610a41611c2f565b604051610a4e9190614571565b60405180910390f35b348015610a62575f80fd5b50610a6b611c35565b604051610a789190614571565b60405180910390f35b348015610a8c575f80fd5b50610a95611c3b565b604051610aa29190614571565b60405180910390f35b348015610ab6575f80fd5b50610ad16004803603810190610acc9190614452565b611c41565b604051610ade91906144aa565b60405180910390f35b348015610af2575f80fd5b50610afb611d27565b604051610b089190614571565b60405180910390f35b348015610b1c575f80fd5b50610b376004803603810190610b329190614452565b611d2d565b604051610b4491906144aa565b60405180910390f35b348015610b58575f80fd5b50610b736004803603810190610b6e91906144c3565b611d4a565b005b348015610b80575f80fd5b50610b9b6004803603810190610b9691906144c3565b611e84565b604051610ba891906144aa565b60405180910390f35b348015610bbc575f80fd5b50610bc5611ea1565b604051610bd291906144aa565b60405180910390f35b348015610be6575f80fd5b50610c016004803603810190610bfc91906146db565b611eb4565b005b348015610c0e575f80fd5b50610c296004803603810190610c249190614719565b611fd6565b005b348015610c36575f80fd5b50610c516004803603810190610c4c919061458a565b6120d5565b005b348015610c5e575f80fd5b50610c676121e4565b604051610c7491906144aa565b60405180910390f35b348015610c88575f80fd5b50610c916121f6565b604051610c9e9190614571565b60405180910390f35b348015610cb2575f80fd5b50610ccd6004803603810190610cc8919061458a565b6121fc565b604051610cda91906144aa565b60405180910390f35b348015610cee575f80fd5b50610cf7612350565b604051610d049190614571565b60405180910390f35b348015610d18575f80fd5b50610d336004803603810190610d2e9190614794565b612356565b604051610d409190614571565b60405180910390f35b348015610d54575f80fd5b50610d5d6123d8565b604051610d6a9190614571565b60405180910390f35b348015610d7e575f80fd5b50610d876123de565b604051610d9491906144aa565b60405180910390f35b348015610da8575f80fd5b50610db161247b565b604051610dbe9190614571565b60405180910390f35b348015610dd2575f80fd5b50610ded6004803603810190610de891906144c3565b612481565b005b348015610dfa575f80fd5b50610e03612577565b604051610e109190614571565b60405180910390f35b348015610e24575f80fd5b50610e2d61257d565b604051610e3a9190614571565b60405180910390f35b348015610e4e575f80fd5b50610e696004803603810190610e64919061458a565b612583565b604051610e7691906144aa565b60405180910390f35b606060038054610e8e906147ff565b80601f0160208091040260200160405190810160405280929190818152602001828054610eba906147ff565b8015610f055780601f10610edc57610100808354040283529160200191610f05565b820191905f5260205f20905b815481529060010190602001808311610ee857829003601f168201915b5050505050905090565b5f610f22610f1b61284f565b8484612856565b6001905092915050565b60208052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b610f7d61284f565b73ffffffffffffffffffffffffffffffffffffffff16610f9b611995565b73ffffffffffffffffffffffffffffffffffffffff1614610ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe890614879565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b600b5481565b601d5481565b601c5481565b6110cf61284f565b73ffffffffffffffffffffffffffffffffffffffff166110ed611995565b73ffffffffffffffffffffffffffffffffffffffff1614611143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113a90614879565b60405180910390fd5b670de0b6b3a76400006103e86001611159610f6c565b61116391906148c4565b61116d9190614932565b6111779190614932565b8110156111b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b0906149d2565b60405180910390fd5b670de0b6b3a7640000816111cd91906148c4565b60088190555050565b5f6111e2848484612a19565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61122961284f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156112a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129f90614a60565b60405180910390fd5b6112bc856112b461284f565b858403612856565b60019150509392505050565b61dead81565b600d5481565b600c5f9054906101000a900460ff1681565b5f6012905090565b5f61138b6112fa61284f565b848460015f61130761284f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546113869190614a7e565b612856565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60115f9054906101000a900460ff1681565b5f601f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60185481565b601160029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61148361284f565b73ffffffffffffffffffffffffffffffffffffffff166114a1611995565b73ffffffffffffffffffffffffffffffffffffffff16146114f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ee90614879565b60405180910390fd5b6115005f613763565b565b61150a61284f565b73ffffffffffffffffffffffffffffffffffffffff16611528611995565b73ffffffffffffffffffffffffffffffffffffffff161461157e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157590614879565b60405180910390fd5b6102588310156115c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ba90614b21565b60405180910390fd5b6103e882111580156115d557505f8210155b611614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160b90614baf565b60405180910390fd5b82600d8190555081600b8190555080600c5f6101000a81548160ff021916908315150217905550505050565b5f61164961284f565b73ffffffffffffffffffffffffffffffffffffffff16611667611995565b73ffffffffffffffffffffffffffffffffffffffff16146116bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b490614879565b60405180910390fd5b5f60115f6101000a81548160ff0219169083151502179055506001905090565b6116e561284f565b73ffffffffffffffffffffffffffffffffffffffff16611703611995565b73ffffffffffffffffffffffffffffffffffffffff1614611759576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175090614879565b60405180910390fd5b8060205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b6117e461284f565b73ffffffffffffffffffffffffffffffffffffffff16611802611995565b73ffffffffffffffffffffffffffffffffffffffff1614611858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184f90614879565b60405180910390fd5b8260158190555081601681905550806017819055506017546016546015546118809190614a7e565b61188a9190614a7e565b6014819055506014805411156118d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cc90614c17565b60405180910390fd5b505050565b6118e261284f565b73ffffffffffffffffffffffffffffffffffffffff16611900611995565b73ffffffffffffffffffffffffffffffffffffffff1614611956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194d90614879565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff02191690831515021790555042600e81905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b6119f061284f565b73ffffffffffffffffffffffffffffffffffffffff16611a0e611995565b73ffffffffffffffffffffffffffffffffffffffff1614611a64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5b90614879565b60405180910390fd5b80601160026101000a81548160ff02191690831515021790555050565b606060048054611a90906147ff565b80601f0160208091040260200160405190810160405280929190818152602001828054611abc906147ff565b8015611b075780601f10611ade57610100808354040283529160200191611b07565b820191905f5260205f20905b815481529060010190602001808311611aea57829003601f168201915b5050505050905090565b611b1961284f565b73ffffffffffffffffffffffffffffffffffffffff16611b37611995565b73ffffffffffffffffffffffffffffffffffffffff1614611b8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8490614879565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1290614ca5565b60405180910390fd5b611c258282613826565b5050565b60175481565b60105481565b601e5481565b601b5481565b5f8060015f611c4e61284f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611d08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cff90614d33565b60405180910390fd5b611d1c611d1361284f565b85858403612856565b600191505092915050565b600e5481565b5f611d40611d3961284f565b8484612a19565b6001905092915050565b611d5261284f565b73ffffffffffffffffffffffffffffffffffffffff16611d70611995565b73ffffffffffffffffffffffffffffffffffffffff1614611dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbd90614879565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6021602052805f5260405f205f915054906101000a900460ff1681565b601160019054906101000a900460ff1681565b611ebc61284f565b73ffffffffffffffffffffffffffffffffffffffff16611eda611995565b73ffffffffffffffffffffffffffffffffffffffff1614611f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2790614879565b60405180910390fd5b80601f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611fca91906144aa565b60405180910390a25050565b611fde61284f565b73ffffffffffffffffffffffffffffffffffffffff16611ffc611995565b73ffffffffffffffffffffffffffffffffffffffff1614612052576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204990614879565b60405180910390fd5b8260198190555081601a8190555080601b81905550601b54601a5460195461207a9190614a7e565b6120849190614a7e565b601881905550601960185411156120d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c790614d9b565b60405180910390fd5b505050565b6120dd61284f565b73ffffffffffffffffffffffffffffffffffffffff166120fb611995565b73ffffffffffffffffffffffffffffffffffffffff1614612151576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214890614879565b60405180910390fd5b670de0b6b3a76400006103e86005612167610f6c565b61217191906148c4565b61217b9190614932565b6121859190614932565b8110156121c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121be90614e29565b60405180910390fd5b670de0b6b3a7640000816121db91906148c4565b600a8190555050565b60135f9054906101000a900460ff1681565b60085481565b5f61220561284f565b73ffffffffffffffffffffffffffffffffffffffff16612223611995565b73ffffffffffffffffffffffffffffffffffffffff1614612279576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227090614879565b60405180910390fd5b620186a06001612287610f6c565b61229191906148c4565b61229b9190614932565b8210156122dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d490614eb7565b60405180910390fd5b6103e860056122ea610f6c565b6122f491906148c4565b6122fe9190614932565b821115612340576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233790614f45565b60405180910390fd5b8160098190555060019050919050565b60145481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60095481565b5f6123e761284f565b73ffffffffffffffffffffffffffffffffffffffff16612405611995565b73ffffffffffffffffffffffffffffffffffffffff161461245b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245290614879565b60405180910390fd5b5f60135f6101000a81548160ff0219169083151502179055506001905090565b60165481565b61248961284f565b73ffffffffffffffffffffffffffffffffffffffff166124a7611995565b73ffffffffffffffffffffffffffffffffffffffff16146124fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f490614879565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361256b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256290614fd3565b60405180910390fd5b61257481613763565b50565b601a5481565b600a5481565b5f61258c61284f565b73ffffffffffffffffffffffffffffffffffffffff166125aa611995565b73ffffffffffffffffffffffffffffffffffffffff1614612600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f790614879565b60405180910390fd5b600f546010546126109190614a7e565b4211612651576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126489061503b565b60405180910390fd5b6103e8821115612696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268d906150c9565b60405180910390fd5b426010819055505f3073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016126f79190614614565b602060405180830381865afa158015612712573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061273691906150fb565b90505f61276061271061275286856138c490919063ffffffff16565b6138d990919063ffffffff16565b90505f811115612798576127977f000000000000000000000000000000000000000000000000000000000000000061dead836138ee565b5b5f7f000000000000000000000000000000000000000000000000000000000000000090508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612801575f80fd5b505af1158015612813573d5f803e3d5ffd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128bb90615196565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292990615224565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612a0c9190614571565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7e906152b2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612af5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aec90615340565b60405180910390fd5b5f8103612b0c57612b0783835f6138ee565b61375e565b60115f9054906101000a900460ff16156131b357612b28611995565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612b965750612b66611995565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bce57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c08575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c215750600560149054906101000a900460ff16155b156131b257601160019054906101000a900460ff16612d1557601f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612cd55750601f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612d14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0b906153a8565b60405180910390fd5b5b60135f9054906101000a900460ff1615612ed857612d31611995565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612db857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e1057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612ed7574360125f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8b9061545c565b60405180910390fd5b4360125f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60215f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612f75575060205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561301c57600854811115612fbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb6906154ea565b60405180910390fd5b600a54612fcb83611436565b82612fd69190614a7e565b1115613017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300e90615552565b60405180910390fd5b6131b1565b60215f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156130b9575060205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561310857600854811115613103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130fa906155e0565b60405180910390fd5b6131b0565b60205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166131af57600a5461316283611436565b8261316d9190614a7e565b11156131ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a590615552565b60405180910390fd5b5b5b5b5b5b5f6131bd30611436565b90505f60095482101590508080156131e15750601160029054906101000a900460ff165b80156131fa5750600560149054906101000a900460ff16155b801561324d575060215f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156132a05750601f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156132f35750601f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15613336576001600560146101000a81548160ff02191690831515021790555061331b613b63565b5f600560146101000a81548160ff0219169083151502179055505b600560149054906101000a900460ff16158015613399575060215f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156133b05750600c5f9054906101000a900460ff165b80156133cb5750600d54600e546133c79190614a7e565b4210155b801561341e5750601f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561342d5761342b613e32565b505b5f600560149054906101000a900460ff16159050601f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806134dc5750601f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156134e5575f90505b5f811561374e5760215f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561354357505f601854115b1561360d576135706064613562601854886138c490919063ffffffff16565b6138d990919063ffffffff16565b9050601854601a548261358391906148c4565b61358d9190614932565b601d5f82825461359d9190614a7e565b92505081905550601854601b54826135b591906148c4565b6135bf9190614932565b601e5f8282546135cf9190614a7e565b92505081905550601854601954826135e791906148c4565b6135f19190614932565b601c5f8282546136019190614a7e565b9250508190555061372b565b60215f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561366457505f601454115b1561372a576136916064613683601454886138c490919063ffffffff16565b6138d990919063ffffffff16565b9050601454601654826136a491906148c4565b6136ae9190614932565b601d5f8282546136be9190614a7e565b92505081905550601454601754826136d691906148c4565b6136e09190614932565b601e5f8282546136f09190614a7e565b925050819055506014546015548261370891906148c4565b6137129190614932565b601c5f8282546137229190614a7e565b925050819055505b5b5f81111561373f5761373e8730836138ee565b5b808561374b91906155fe565b94505b6137598787876138ee565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060215f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f81836138d191906148c4565b905092915050565b5f81836138e69190614932565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361395c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613953906152b2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036139ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139c190615340565b60405180910390fd5b6139d5838383613fec565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a4f906156a1565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254613ae69190614a7e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613b4a9190614571565b60405180910390a3613b5d848484613ff1565b50505050565b5f613b6d30611436565b90505f601e54601c54601d54613b839190614a7e565b613b8d9190614a7e565b90505f80831480613b9d57505f82145b15613baa57505050613e30565b6014600954613bb991906148c4565b831115613bd2576014600954613bcf91906148c4565b92505b5f600283601d5486613be491906148c4565b613bee9190614932565b613bf89190614932565b90505f613c0e8286613ff690919063ffffffff16565b90505f479050613c1d8261400b565b5f613c318247613ff690919063ffffffff16565b90505f613c5b87613c4d601c54856138c490919063ffffffff16565b6138d990919063ffffffff16565b90505f613c8588613c77601e54866138c490919063ffffffff16565b6138d990919063ffffffff16565b90505f818385613c9591906155fe565b613c9f91906155fe565b90505f601d819055505f601c819055505f601e8190555060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613cfb906156ec565b5f6040518083038185875af1925050503d805f8114613d35576040519150601f19603f3d011682016040523d82523d5f602084013e613d3a565b606091505b5050809850505f87118015613d4e57505f81115b15613d9b57613d5d878261423e565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601d54604051613d9293929190615700565b60405180910390a15b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613de0906156ec565b5f6040518083038185875af1925050503d805f8114613e1a576040519150601f19603f3d011682016040523d82523d5f602084013e613e1f565b606091505b505080985050505050505050505050505b565b5f42600e819055505f3073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401613e949190614614565b602060405180830381865afa158015613eaf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ed391906150fb565b90505f613eff612710613ef1600b54856138c490919063ffffffff16565b6138d990919063ffffffff16565b90505f811115613f3757613f367f000000000000000000000000000000000000000000000000000000000000000061dead836138ee565b5b5f7f000000000000000000000000000000000000000000000000000000000000000090508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015613fa0575f80fd5b505af1158015613fb2573d5f803e3d5ffd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b505050565b505050565b5f818361400391906155fe565b905092915050565b5f600267ffffffffffffffff81111561402757614026615735565b5b6040519080825280602002602001820160405280156140555781602001602082028036833780820191505090505b50905030815f8151811061406c5761406b615762565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561410f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061413391906157a3565b8160018151811061414757614146615762565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506141ac307f000000000000000000000000000000000000000000000000000000000000000084612856565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161420d9594939291906158be565b5f604051808303815f87803b158015614224575f80fd5b505af1158015614236573d5f803e3d5ffd5b505050505050565b614269307f000000000000000000000000000000000000000000000000000000000000000084612856565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8061dead426040518863ffffffff1660e01b81526004016142cf96959493929190615916565b60606040518083038185885af11580156142eb573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906143109190615975565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561434e578082015181840152602081019050614333565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61437382614317565b61437d8185614321565b935061438d818560208601614331565b61439681614359565b840191505092915050565b5f6020820190508181035f8301526143b98184614369565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6143ee826143c5565b9050919050565b6143fe816143e4565b8114614408575f80fd5b50565b5f81359050614419816143f5565b92915050565b5f819050919050565b6144318161441f565b811461443b575f80fd5b50565b5f8135905061444c81614428565b92915050565b5f8060408385031215614468576144676143c1565b5b5f6144758582860161440b565b92505060206144868582860161443e565b9150509250929050565b5f8115159050919050565b6144a481614490565b82525050565b5f6020820190506144bd5f83018461449b565b92915050565b5f602082840312156144d8576144d76143c1565b5b5f6144e58482850161440b565b91505092915050565b5f819050919050565b5f61451161450c614507846143c5565b6144ee565b6143c5565b9050919050565b5f614522826144f7565b9050919050565b5f61453382614518565b9050919050565b61454381614529565b82525050565b5f60208201905061455c5f83018461453a565b92915050565b61456b8161441f565b82525050565b5f6020820190506145845f830184614562565b92915050565b5f6020828403121561459f5761459e6143c1565b5b5f6145ac8482850161443e565b91505092915050565b5f805f606084860312156145cc576145cb6143c1565b5b5f6145d98682870161440b565b93505060206145ea8682870161440b565b92505060406145fb8682870161443e565b9150509250925092565b61460e816143e4565b82525050565b5f6020820190506146275f830184614605565b92915050565b5f60ff82169050919050565b6146428161462d565b82525050565b5f60208201905061465b5f830184614639565b92915050565b61466a81614490565b8114614674575f80fd5b50565b5f8135905061468581614661565b92915050565b5f805f606084860312156146a2576146a16143c1565b5b5f6146af8682870161443e565b93505060206146c08682870161443e565b92505060406146d186828701614677565b9150509250925092565b5f80604083850312156146f1576146f06143c1565b5b5f6146fe8582860161440b565b925050602061470f85828601614677565b9150509250929050565b5f805f606084860312156147305761472f6143c1565b5b5f61473d8682870161443e565b935050602061474e8682870161443e565b925050604061475f8682870161443e565b9150509250925092565b5f6020828403121561477e5761477d6143c1565b5b5f61478b84828501614677565b91505092915050565b5f80604083850312156147aa576147a96143c1565b5b5f6147b78582860161440b565b92505060206147c88582860161440b565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061481657607f821691505b602082108103614829576148286147d2565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614863602083614321565b915061486e8261482f565b602082019050919050565b5f6020820190508181035f83015261489081614857565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6148ce8261441f565b91506148d98361441f565b92508282026148e78161441f565b915082820484148315176148fe576148fd614897565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61493c8261441f565b91506149478361441f565b92508261495757614956614905565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f6149bc602f83614321565b91506149c782614962565b604082019050919050565b5f6020820190508181035f8301526149e9816149b0565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f614a4a602883614321565b9150614a55826149f0565b604082019050919050565b5f6020820190508181035f830152614a7781614a3e565b9050919050565b5f614a888261441f565b9150614a938361441f565b9250828201905080821115614aab57614aaa614897565b5b92915050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e2074685f8201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b5f614b0b603383614321565b9150614b1682614ab1565b604082019050919050565b5f6020820190508181035f830152614b3881614aff565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e742062655f8201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b5f614b99603083614321565b9150614ba482614b3f565b604082019050919050565b5f6020820190508181035f830152614bc681614b8d565b9050919050565b7f4d757374206b656570206665657320617420323025206f72206c6573730000005f82015250565b5f614c01601d83614321565b9150614c0c82614bcd565b602082019050919050565b5f6020820190508181035f830152614c2e81614bf5565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614c8f603983614321565b9150614c9a82614c35565b604082019050919050565b5f6020820190508181035f830152614cbc81614c83565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f614d1d602583614321565b9150614d2882614cc3565b604082019050919050565b5f6020820190508181035f830152614d4a81614d11565b9050919050565b7f4d757374206b656570206665657320617420323525206f72206c6573730000005f82015250565b5f614d85601d83614321565b9150614d9082614d51565b602082019050919050565b5f6020820190508181035f830152614db281614d79565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f614e13602483614321565b9150614e1e82614db9565b604082019050919050565b5f6020820190508181035f830152614e4081614e07565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f614ea1603583614321565b9150614eac82614e47565b604082019050919050565b5f6020820190508181035f830152614ece81614e95565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f614f2f603483614321565b9150614f3a82614ed5565b604082019050919050565b5f6020820190508181035f830152614f5c81614f23565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614fbd602683614321565b9150614fc882614f63565b604082019050919050565b5f6020820190508181035f830152614fea81614fb1565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973685f82015250565b5f615025602083614321565b915061503082614ff1565b602082019050919050565b5f6020820190508181035f83015261505281615019565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f5f8201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b5f6150b3602a83614321565b91506150be82615059565b604082019050919050565b5f6020820190508181035f8301526150e0816150a7565b9050919050565b5f815190506150f581614428565b92915050565b5f602082840312156151105761510f6143c1565b5b5f61511d848285016150e7565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f615180602483614321565b915061518b82615126565b604082019050919050565b5f6020820190508181035f8301526151ad81615174565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61520e602283614321565b9150615219826151b4565b604082019050919050565b5f6020820190508181035f83015261523b81615202565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61529c602583614321565b91506152a782615242565b604082019050919050565b5f6020820190508181035f8301526152c981615290565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61532a602383614321565b9150615335826152d0565b604082019050919050565b5f6020820190508181035f8301526153578161531e565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f615392601683614321565b915061539d8261535e565b602082019050919050565b5f6020820190508181035f8301526153bf81615386565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f615446604983614321565b9150615451826153c6565b606082019050919050565b5f6020820190508181035f8301526154738161543a565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6154d4603583614321565b91506154df8261547a565b604082019050919050565b5f6020820190508181035f830152615501816154c8565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f61553c601383614321565b915061554782615508565b602082019050919050565b5f6020820190508181035f83015261556981615530565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6155ca603683614321565b91506155d582615570565b604082019050919050565b5f6020820190508181035f8301526155f7816155be565b9050919050565b5f6156088261441f565b91506156138361441f565b925082820390508181111561562b5761562a614897565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61568b602683614321565b915061569682615631565b604082019050919050565b5f6020820190508181035f8301526156b88161567f565b9050919050565b5f81905092915050565b50565b5f6156d75f836156bf565b91506156e2826156c9565b5f82019050919050565b5f6156f6826156cc565b9150819050919050565b5f6060820190506157135f830186614562565b6157206020830185614562565b61572d6040830184614562565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061579d816143f5565b92915050565b5f602082840312156157b8576157b76143c1565b5b5f6157c58482850161578f565b91505092915050565b5f819050919050565b5f6157f16157ec6157e7846157ce565b6144ee565b61441f565b9050919050565b615801816157d7565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b615839816143e4565b82525050565b5f61584a8383615830565b60208301905092915050565b5f602082019050919050565b5f61586c82615807565b6158768185615811565b935061588183615821565b805f5b838110156158b1578151615898888261583f565b97506158a383615856565b925050600181019050615884565b5085935050505092915050565b5f60a0820190506158d15f830188614562565b6158de60208301876157f8565b81810360408301526158f08186615862565b90506158ff6060830185614605565b61590c6080830184614562565b9695505050505050565b5f60c0820190506159295f830189614605565b6159366020830188614562565b61594360408301876157f8565b61595060608301866157f8565b61595d6080830185614605565b61596a60a0830184614562565b979650505050505050565b5f805f6060848603121561598c5761598b6143c1565b5b5f615999868287016150e7565b93505060206159aa868287016150e7565b92505060406159bb868287016150e7565b915050925092509256fea26469706673582212200d83ee446be1443d32669cb78c2622d33fa38a1865febba7a82b64ae7adcebd064736f6c63430008140033

Deployed Bytecode

0x6080604052600436106103b0575f3560e01c80638da5cb5b116101e6578063bbc0c7421161010c578063dd62ed3e1161009f578063f2fde38b1161006e578063f2fde38b14610dc7578063f637434214610def578063f8b45b0514610e19578063fe72b27a14610e43576103b7565b8063dd62ed3e14610d0d578063e2f4560514610d49578063e884f26014610d73578063f11a24d314610d9d576103b7565b8063c876d0b9116100db578063c876d0b914610c53578063c8c8ebe414610c7d578063d257b34f14610ca7578063d85ba06314610ce3576103b7565b8063bbc0c74214610bb1578063c024666814610bdb578063c17b5b8c14610c03578063c18bc19514610c2b576103b7565b80639ec22c0e11610184578063a4c82a0011610153578063a4c82a0014610ae7578063a9059cbb14610b11578063aacebbe314610b4d578063b62496f514610b75576103b7565b80639ec22c0e14610a2d5780639fccce3214610a57578063a0d82dc514610a81578063a457c2d714610aab576103b7565b8063924de9b7116101c0578063924de9b71461098957806395d89b41146109b15780639a7a23d6146109db5780639c3b4fdc14610a03576103b7565b80638da5cb5b1461090b5780638ea5220f14610935578063921369131461095f576103b7565b8063313ce567116102d6578063715018a61161026957806375f0a8741161023857806375f0a874146108795780637bce5a04146108a35780638095d564146108cd5780638a8c523c146108f5576103b7565b8063715018a6146107e9578063730c1888146107ff578063751039fc146108275780637571336a14610851576103b7565b80634fbee193116102a55780634fbee1931461071d5780636a486a8e146107595780636ddd17131461078357806370a08231146107ad576103b7565b8063313ce56714610663578063395093511461068d57806349bd5a5e146106c95780634a62bb65146106f3576103b7565b8063199ffc721161034e57806323b872dd1161031d57806323b872dd146105a957806327c8f835146105e55780632c3e486c1461060f5780632e82f1a014610639576103b7565b8063199ffc72146105035780631a8145bb1461052d5780631f3fed8f14610557578063203e727e14610581576103b7565b80631694505e1161038a5780631694505e1461045d57806318160ddd146104875780631816467f146104b1578063184c16c5146104d9576103b7565b806306fdde03146103bb578063095ea7b3146103e557806310d5de5314610421576103b7565b366103b757005b5f80fd5b3480156103c6575f80fd5b506103cf610e7f565b6040516103dc91906143a1565b60405180910390f35b3480156103f0575f80fd5b5061040b60048036038101906104069190614452565b610f0f565b60405161041891906144aa565b60405180910390f35b34801561042c575f80fd5b50610447600480360381019061044291906144c3565b610f2c565b60405161045491906144aa565b60405180910390f35b348015610468575f80fd5b50610471610f48565b60405161047e9190614549565b60405180910390f35b348015610492575f80fd5b5061049b610f6c565b6040516104a89190614571565b60405180910390f35b3480156104bc575f80fd5b506104d760048036038101906104d291906144c3565b610f75565b005b3480156104e4575f80fd5b506104ed6110af565b6040516104fa9190614571565b60405180910390f35b34801561050e575f80fd5b506105176110b5565b6040516105249190614571565b60405180910390f35b348015610538575f80fd5b506105416110bb565b60405161054e9190614571565b60405180910390f35b348015610562575f80fd5b5061056b6110c1565b6040516105789190614571565b60405180910390f35b34801561058c575f80fd5b506105a760048036038101906105a2919061458a565b6110c7565b005b3480156105b4575f80fd5b506105cf60048036038101906105ca91906145b5565b6111d6565b6040516105dc91906144aa565b60405180910390f35b3480156105f0575f80fd5b506105f96112c8565b6040516106069190614614565b60405180910390f35b34801561061a575f80fd5b506106236112ce565b6040516106309190614571565b60405180910390f35b348015610644575f80fd5b5061064d6112d4565b60405161065a91906144aa565b60405180910390f35b34801561066e575f80fd5b506106776112e6565b6040516106849190614648565b60405180910390f35b348015610698575f80fd5b506106b360048036038101906106ae9190614452565b6112ee565b6040516106c091906144aa565b60405180910390f35b3480156106d4575f80fd5b506106dd611395565b6040516106ea9190614614565b60405180910390f35b3480156106fe575f80fd5b506107076113b9565b60405161071491906144aa565b60405180910390f35b348015610728575f80fd5b50610743600480360381019061073e91906144c3565b6113cb565b60405161075091906144aa565b60405180910390f35b348015610764575f80fd5b5061076d61141d565b60405161077a9190614571565b60405180910390f35b34801561078e575f80fd5b50610797611423565b6040516107a491906144aa565b60405180910390f35b3480156107b8575f80fd5b506107d360048036038101906107ce91906144c3565b611436565b6040516107e09190614571565b60405180910390f35b3480156107f4575f80fd5b506107fd61147b565b005b34801561080a575f80fd5b506108256004803603810190610820919061468b565b611502565b005b348015610832575f80fd5b5061083b611640565b60405161084891906144aa565b60405180910390f35b34801561085c575f80fd5b50610877600480360381019061087291906146db565b6116dd565b005b348015610884575f80fd5b5061088d6117b1565b60405161089a9190614614565b60405180910390f35b3480156108ae575f80fd5b506108b76117d6565b6040516108c49190614571565b60405180910390f35b3480156108d8575f80fd5b506108f360048036038101906108ee9190614719565b6117dc565b005b348015610900575f80fd5b506109096118da565b005b348015610916575f80fd5b5061091f611995565b60405161092c9190614614565b60405180910390f35b348015610940575f80fd5b506109496119bd565b6040516109569190614614565b60405180910390f35b34801561096a575f80fd5b506109736119e2565b6040516109809190614571565b60405180910390f35b348015610994575f80fd5b506109af60048036038101906109aa9190614769565b6119e8565b005b3480156109bc575f80fd5b506109c5611a81565b6040516109d291906143a1565b60405180910390f35b3480156109e6575f80fd5b50610a0160048036038101906109fc91906146db565b611b11565b005b348015610a0e575f80fd5b50610a17611c29565b604051610a249190614571565b60405180910390f35b348015610a38575f80fd5b50610a41611c2f565b604051610a4e9190614571565b60405180910390f35b348015610a62575f80fd5b50610a6b611c35565b604051610a789190614571565b60405180910390f35b348015610a8c575f80fd5b50610a95611c3b565b604051610aa29190614571565b60405180910390f35b348015610ab6575f80fd5b50610ad16004803603810190610acc9190614452565b611c41565b604051610ade91906144aa565b60405180910390f35b348015610af2575f80fd5b50610afb611d27565b604051610b089190614571565b60405180910390f35b348015610b1c575f80fd5b50610b376004803603810190610b329190614452565b611d2d565b604051610b4491906144aa565b60405180910390f35b348015610b58575f80fd5b50610b736004803603810190610b6e91906144c3565b611d4a565b005b348015610b80575f80fd5b50610b9b6004803603810190610b9691906144c3565b611e84565b604051610ba891906144aa565b60405180910390f35b348015610bbc575f80fd5b50610bc5611ea1565b604051610bd291906144aa565b60405180910390f35b348015610be6575f80fd5b50610c016004803603810190610bfc91906146db565b611eb4565b005b348015610c0e575f80fd5b50610c296004803603810190610c249190614719565b611fd6565b005b348015610c36575f80fd5b50610c516004803603810190610c4c919061458a565b6120d5565b005b348015610c5e575f80fd5b50610c676121e4565b604051610c7491906144aa565b60405180910390f35b348015610c88575f80fd5b50610c916121f6565b604051610c9e9190614571565b60405180910390f35b348015610cb2575f80fd5b50610ccd6004803603810190610cc8919061458a565b6121fc565b604051610cda91906144aa565b60405180910390f35b348015610cee575f80fd5b50610cf7612350565b604051610d049190614571565b60405180910390f35b348015610d18575f80fd5b50610d336004803603810190610d2e9190614794565b612356565b604051610d409190614571565b60405180910390f35b348015610d54575f80fd5b50610d5d6123d8565b604051610d6a9190614571565b60405180910390f35b348015610d7e575f80fd5b50610d876123de565b604051610d9491906144aa565b60405180910390f35b348015610da8575f80fd5b50610db161247b565b604051610dbe9190614571565b60405180910390f35b348015610dd2575f80fd5b50610ded6004803603810190610de891906144c3565b612481565b005b348015610dfa575f80fd5b50610e03612577565b604051610e109190614571565b60405180910390f35b348015610e24575f80fd5b50610e2d61257d565b604051610e3a9190614571565b60405180910390f35b348015610e4e575f80fd5b50610e696004803603810190610e64919061458a565b612583565b604051610e7691906144aa565b60405180910390f35b606060038054610e8e906147ff565b80601f0160208091040260200160405190810160405280929190818152602001828054610eba906147ff565b8015610f055780601f10610edc57610100808354040283529160200191610f05565b820191905f5260205f20905b815481529060010190602001808311610ee857829003601f168201915b5050505050905090565b5f610f22610f1b61284f565b8484612856565b6001905092915050565b60208052805f5260405f205f915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b610f7d61284f565b73ffffffffffffffffffffffffffffffffffffffff16610f9b611995565b73ffffffffffffffffffffffffffffffffffffffff1614610ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe890614879565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b600b5481565b601d5481565b601c5481565b6110cf61284f565b73ffffffffffffffffffffffffffffffffffffffff166110ed611995565b73ffffffffffffffffffffffffffffffffffffffff1614611143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113a90614879565b60405180910390fd5b670de0b6b3a76400006103e86001611159610f6c565b61116391906148c4565b61116d9190614932565b6111779190614932565b8110156111b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b0906149d2565b60405180910390fd5b670de0b6b3a7640000816111cd91906148c4565b60088190555050565b5f6111e2848484612a19565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61122961284f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156112a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129f90614a60565b60405180910390fd5b6112bc856112b461284f565b858403612856565b60019150509392505050565b61dead81565b600d5481565b600c5f9054906101000a900460ff1681565b5f6012905090565b5f61138b6112fa61284f565b848460015f61130761284f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546113869190614a7e565b612856565b6001905092915050565b7f000000000000000000000000243563bfe2e19809eafae8df67e255b8f198428b81565b60115f9054906101000a900460ff1681565b5f601f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60185481565b601160029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61148361284f565b73ffffffffffffffffffffffffffffffffffffffff166114a1611995565b73ffffffffffffffffffffffffffffffffffffffff16146114f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ee90614879565b60405180910390fd5b6115005f613763565b565b61150a61284f565b73ffffffffffffffffffffffffffffffffffffffff16611528611995565b73ffffffffffffffffffffffffffffffffffffffff161461157e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157590614879565b60405180910390fd5b6102588310156115c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ba90614b21565b60405180910390fd5b6103e882111580156115d557505f8210155b611614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160b90614baf565b60405180910390fd5b82600d8190555081600b8190555080600c5f6101000a81548160ff021916908315150217905550505050565b5f61164961284f565b73ffffffffffffffffffffffffffffffffffffffff16611667611995565b73ffffffffffffffffffffffffffffffffffffffff16146116bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b490614879565b60405180910390fd5b5f60115f6101000a81548160ff0219169083151502179055506001905090565b6116e561284f565b73ffffffffffffffffffffffffffffffffffffffff16611703611995565b73ffffffffffffffffffffffffffffffffffffffff1614611759576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175090614879565b60405180910390fd5b8060205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b6117e461284f565b73ffffffffffffffffffffffffffffffffffffffff16611802611995565b73ffffffffffffffffffffffffffffffffffffffff1614611858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184f90614879565b60405180910390fd5b8260158190555081601681905550806017819055506017546016546015546118809190614a7e565b61188a9190614a7e565b6014819055506014805411156118d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cc90614c17565b60405180910390fd5b505050565b6118e261284f565b73ffffffffffffffffffffffffffffffffffffffff16611900611995565b73ffffffffffffffffffffffffffffffffffffffff1614611956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194d90614879565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff02191690831515021790555042600e81905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b6119f061284f565b73ffffffffffffffffffffffffffffffffffffffff16611a0e611995565b73ffffffffffffffffffffffffffffffffffffffff1614611a64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5b90614879565b60405180910390fd5b80601160026101000a81548160ff02191690831515021790555050565b606060048054611a90906147ff565b80601f0160208091040260200160405190810160405280929190818152602001828054611abc906147ff565b8015611b075780601f10611ade57610100808354040283529160200191611b07565b820191905f5260205f20905b815481529060010190602001808311611aea57829003601f168201915b5050505050905090565b611b1961284f565b73ffffffffffffffffffffffffffffffffffffffff16611b37611995565b73ffffffffffffffffffffffffffffffffffffffff1614611b8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8490614879565b60405180910390fd5b7f000000000000000000000000243563bfe2e19809eafae8df67e255b8f198428b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1290614ca5565b60405180910390fd5b611c258282613826565b5050565b60175481565b60105481565b601e5481565b601b5481565b5f8060015f611c4e61284f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611d08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cff90614d33565b60405180910390fd5b611d1c611d1361284f565b85858403612856565b600191505092915050565b600e5481565b5f611d40611d3961284f565b8484612a19565b6001905092915050565b611d5261284f565b73ffffffffffffffffffffffffffffffffffffffff16611d70611995565b73ffffffffffffffffffffffffffffffffffffffff1614611dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbd90614879565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6021602052805f5260405f205f915054906101000a900460ff1681565b601160019054906101000a900460ff1681565b611ebc61284f565b73ffffffffffffffffffffffffffffffffffffffff16611eda611995565b73ffffffffffffffffffffffffffffffffffffffff1614611f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2790614879565b60405180910390fd5b80601f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611fca91906144aa565b60405180910390a25050565b611fde61284f565b73ffffffffffffffffffffffffffffffffffffffff16611ffc611995565b73ffffffffffffffffffffffffffffffffffffffff1614612052576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204990614879565b60405180910390fd5b8260198190555081601a8190555080601b81905550601b54601a5460195461207a9190614a7e565b6120849190614a7e565b601881905550601960185411156120d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c790614d9b565b60405180910390fd5b505050565b6120dd61284f565b73ffffffffffffffffffffffffffffffffffffffff166120fb611995565b73ffffffffffffffffffffffffffffffffffffffff1614612151576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214890614879565b60405180910390fd5b670de0b6b3a76400006103e86005612167610f6c565b61217191906148c4565b61217b9190614932565b6121859190614932565b8110156121c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121be90614e29565b60405180910390fd5b670de0b6b3a7640000816121db91906148c4565b600a8190555050565b60135f9054906101000a900460ff1681565b60085481565b5f61220561284f565b73ffffffffffffffffffffffffffffffffffffffff16612223611995565b73ffffffffffffffffffffffffffffffffffffffff1614612279576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227090614879565b60405180910390fd5b620186a06001612287610f6c565b61229191906148c4565b61229b9190614932565b8210156122dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d490614eb7565b60405180910390fd5b6103e860056122ea610f6c565b6122f491906148c4565b6122fe9190614932565b821115612340576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233790614f45565b60405180910390fd5b8160098190555060019050919050565b60145481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60095481565b5f6123e761284f565b73ffffffffffffffffffffffffffffffffffffffff16612405611995565b73ffffffffffffffffffffffffffffffffffffffff161461245b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245290614879565b60405180910390fd5b5f60135f6101000a81548160ff0219169083151502179055506001905090565b60165481565b61248961284f565b73ffffffffffffffffffffffffffffffffffffffff166124a7611995565b73ffffffffffffffffffffffffffffffffffffffff16146124fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f490614879565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361256b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256290614fd3565b60405180910390fd5b61257481613763565b50565b601a5481565b600a5481565b5f61258c61284f565b73ffffffffffffffffffffffffffffffffffffffff166125aa611995565b73ffffffffffffffffffffffffffffffffffffffff1614612600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f790614879565b60405180910390fd5b600f546010546126109190614a7e565b4211612651576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126489061503b565b60405180910390fd5b6103e8821115612696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268d906150c9565b60405180910390fd5b426010819055505f3073ffffffffffffffffffffffffffffffffffffffff166370a082317f000000000000000000000000243563bfe2e19809eafae8df67e255b8f198428b6040518263ffffffff1660e01b81526004016126f79190614614565b602060405180830381865afa158015612712573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061273691906150fb565b90505f61276061271061275286856138c490919063ffffffff16565b6138d990919063ffffffff16565b90505f811115612798576127977f000000000000000000000000243563bfe2e19809eafae8df67e255b8f198428b61dead836138ee565b5b5f7f000000000000000000000000243563bfe2e19809eafae8df67e255b8f198428b90508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612801575f80fd5b505af1158015612813573d5f803e3d5ffd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128bb90615196565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292990615224565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612a0c9190614571565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7e906152b2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612af5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aec90615340565b60405180910390fd5b5f8103612b0c57612b0783835f6138ee565b61375e565b60115f9054906101000a900460ff16156131b357612b28611995565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612b965750612b66611995565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bce57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c08575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c215750600560149054906101000a900460ff16155b156131b257601160019054906101000a900460ff16612d1557601f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612cd55750601f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612d14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0b906153a8565b60405180910390fd5b5b60135f9054906101000a900460ff1615612ed857612d31611995565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612db857507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e1057507f000000000000000000000000243563bfe2e19809eafae8df67e255b8f198428b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612ed7574360125f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8b9061545c565b60405180910390fd5b4360125f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60215f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612f75575060205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561301c57600854811115612fbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb6906154ea565b60405180910390fd5b600a54612fcb83611436565b82612fd69190614a7e565b1115613017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300e90615552565b60405180910390fd5b6131b1565b60215f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156130b9575060205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561310857600854811115613103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130fa906155e0565b60405180910390fd5b6131b0565b60205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166131af57600a5461316283611436565b8261316d9190614a7e565b11156131ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a590615552565b60405180910390fd5b5b5b5b5b5b5f6131bd30611436565b90505f60095482101590508080156131e15750601160029054906101000a900460ff165b80156131fa5750600560149054906101000a900460ff16155b801561324d575060215f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156132a05750601f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156132f35750601f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15613336576001600560146101000a81548160ff02191690831515021790555061331b613b63565b5f600560146101000a81548160ff0219169083151502179055505b600560149054906101000a900460ff16158015613399575060215f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156133b05750600c5f9054906101000a900460ff165b80156133cb5750600d54600e546133c79190614a7e565b4210155b801561341e5750601f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561342d5761342b613e32565b505b5f600560149054906101000a900460ff16159050601f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806134dc5750601f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156134e5575f90505b5f811561374e5760215f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561354357505f601854115b1561360d576135706064613562601854886138c490919063ffffffff16565b6138d990919063ffffffff16565b9050601854601a548261358391906148c4565b61358d9190614932565b601d5f82825461359d9190614a7e565b92505081905550601854601b54826135b591906148c4565b6135bf9190614932565b601e5f8282546135cf9190614a7e565b92505081905550601854601954826135e791906148c4565b6135f19190614932565b601c5f8282546136019190614a7e565b9250508190555061372b565b60215f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561366457505f601454115b1561372a576136916064613683601454886138c490919063ffffffff16565b6138d990919063ffffffff16565b9050601454601654826136a491906148c4565b6136ae9190614932565b601d5f8282546136be9190614a7e565b92505081905550601454601754826136d691906148c4565b6136e09190614932565b601e5f8282546136f09190614a7e565b925050819055506014546015548261370891906148c4565b6137129190614932565b601c5f8282546137229190614a7e565b925050819055505b5b5f81111561373f5761373e8730836138ee565b5b808561374b91906155fe565b94505b6137598787876138ee565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060215f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f81836138d191906148c4565b905092915050565b5f81836138e69190614932565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361395c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613953906152b2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036139ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139c190615340565b60405180910390fd5b6139d5838383613fec565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a4f906156a1565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254613ae69190614a7e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613b4a9190614571565b60405180910390a3613b5d848484613ff1565b50505050565b5f613b6d30611436565b90505f601e54601c54601d54613b839190614a7e565b613b8d9190614a7e565b90505f80831480613b9d57505f82145b15613baa57505050613e30565b6014600954613bb991906148c4565b831115613bd2576014600954613bcf91906148c4565b92505b5f600283601d5486613be491906148c4565b613bee9190614932565b613bf89190614932565b90505f613c0e8286613ff690919063ffffffff16565b90505f479050613c1d8261400b565b5f613c318247613ff690919063ffffffff16565b90505f613c5b87613c4d601c54856138c490919063ffffffff16565b6138d990919063ffffffff16565b90505f613c8588613c77601e54866138c490919063ffffffff16565b6138d990919063ffffffff16565b90505f818385613c9591906155fe565b613c9f91906155fe565b90505f601d819055505f601c819055505f601e8190555060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613cfb906156ec565b5f6040518083038185875af1925050503d805f8114613d35576040519150601f19603f3d011682016040523d82523d5f602084013e613d3a565b606091505b5050809850505f87118015613d4e57505f81115b15613d9b57613d5d878261423e565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601d54604051613d9293929190615700565b60405180910390a15b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613de0906156ec565b5f6040518083038185875af1925050503d805f8114613e1a576040519150601f19603f3d011682016040523d82523d5f602084013e613e1f565b606091505b505080985050505050505050505050505b565b5f42600e819055505f3073ffffffffffffffffffffffffffffffffffffffff166370a082317f000000000000000000000000243563bfe2e19809eafae8df67e255b8f198428b6040518263ffffffff1660e01b8152600401613e949190614614565b602060405180830381865afa158015613eaf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ed391906150fb565b90505f613eff612710613ef1600b54856138c490919063ffffffff16565b6138d990919063ffffffff16565b90505f811115613f3757613f367f000000000000000000000000243563bfe2e19809eafae8df67e255b8f198428b61dead836138ee565b5b5f7f000000000000000000000000243563bfe2e19809eafae8df67e255b8f198428b90508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015613fa0575f80fd5b505af1158015613fb2573d5f803e3d5ffd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b505050565b505050565b5f818361400391906155fe565b905092915050565b5f600267ffffffffffffffff81111561402757614026615735565b5b6040519080825280602002602001820160405280156140555781602001602082028036833780820191505090505b50905030815f8151811061406c5761406b615762565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561410f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061413391906157a3565b8160018151811061414757614146615762565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506141ac307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612856565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161420d9594939291906158be565b5f604051808303815f87803b158015614224575f80fd5b505af1158015614236573d5f803e3d5ffd5b505050505050565b614269307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612856565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8061dead426040518863ffffffff1660e01b81526004016142cf96959493929190615916565b60606040518083038185885af11580156142eb573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906143109190615975565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561434e578082015181840152602081019050614333565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61437382614317565b61437d8185614321565b935061438d818560208601614331565b61439681614359565b840191505092915050565b5f6020820190508181035f8301526143b98184614369565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6143ee826143c5565b9050919050565b6143fe816143e4565b8114614408575f80fd5b50565b5f81359050614419816143f5565b92915050565b5f819050919050565b6144318161441f565b811461443b575f80fd5b50565b5f8135905061444c81614428565b92915050565b5f8060408385031215614468576144676143c1565b5b5f6144758582860161440b565b92505060206144868582860161443e565b9150509250929050565b5f8115159050919050565b6144a481614490565b82525050565b5f6020820190506144bd5f83018461449b565b92915050565b5f602082840312156144d8576144d76143c1565b5b5f6144e58482850161440b565b91505092915050565b5f819050919050565b5f61451161450c614507846143c5565b6144ee565b6143c5565b9050919050565b5f614522826144f7565b9050919050565b5f61453382614518565b9050919050565b61454381614529565b82525050565b5f60208201905061455c5f83018461453a565b92915050565b61456b8161441f565b82525050565b5f6020820190506145845f830184614562565b92915050565b5f6020828403121561459f5761459e6143c1565b5b5f6145ac8482850161443e565b91505092915050565b5f805f606084860312156145cc576145cb6143c1565b5b5f6145d98682870161440b565b93505060206145ea8682870161440b565b92505060406145fb8682870161443e565b9150509250925092565b61460e816143e4565b82525050565b5f6020820190506146275f830184614605565b92915050565b5f60ff82169050919050565b6146428161462d565b82525050565b5f60208201905061465b5f830184614639565b92915050565b61466a81614490565b8114614674575f80fd5b50565b5f8135905061468581614661565b92915050565b5f805f606084860312156146a2576146a16143c1565b5b5f6146af8682870161443e565b93505060206146c08682870161443e565b92505060406146d186828701614677565b9150509250925092565b5f80604083850312156146f1576146f06143c1565b5b5f6146fe8582860161440b565b925050602061470f85828601614677565b9150509250929050565b5f805f606084860312156147305761472f6143c1565b5b5f61473d8682870161443e565b935050602061474e8682870161443e565b925050604061475f8682870161443e565b9150509250925092565b5f6020828403121561477e5761477d6143c1565b5b5f61478b84828501614677565b91505092915050565b5f80604083850312156147aa576147a96143c1565b5b5f6147b78582860161440b565b92505060206147c88582860161440b565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061481657607f821691505b602082108103614829576148286147d2565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614863602083614321565b915061486e8261482f565b602082019050919050565b5f6020820190508181035f83015261489081614857565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6148ce8261441f565b91506148d98361441f565b92508282026148e78161441f565b915082820484148315176148fe576148fd614897565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61493c8261441f565b91506149478361441f565b92508261495757614956614905565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f6149bc602f83614321565b91506149c782614962565b604082019050919050565b5f6020820190508181035f8301526149e9816149b0565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f614a4a602883614321565b9150614a55826149f0565b604082019050919050565b5f6020820190508181035f830152614a7781614a3e565b9050919050565b5f614a888261441f565b9150614a938361441f565b9250828201905080821115614aab57614aaa614897565b5b92915050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e2074685f8201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b5f614b0b603383614321565b9150614b1682614ab1565b604082019050919050565b5f6020820190508181035f830152614b3881614aff565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e742062655f8201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b5f614b99603083614321565b9150614ba482614b3f565b604082019050919050565b5f6020820190508181035f830152614bc681614b8d565b9050919050565b7f4d757374206b656570206665657320617420323025206f72206c6573730000005f82015250565b5f614c01601d83614321565b9150614c0c82614bcd565b602082019050919050565b5f6020820190508181035f830152614c2e81614bf5565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614c8f603983614321565b9150614c9a82614c35565b604082019050919050565b5f6020820190508181035f830152614cbc81614c83565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f614d1d602583614321565b9150614d2882614cc3565b604082019050919050565b5f6020820190508181035f830152614d4a81614d11565b9050919050565b7f4d757374206b656570206665657320617420323525206f72206c6573730000005f82015250565b5f614d85601d83614321565b9150614d9082614d51565b602082019050919050565b5f6020820190508181035f830152614db281614d79565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f614e13602483614321565b9150614e1e82614db9565b604082019050919050565b5f6020820190508181035f830152614e4081614e07565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f614ea1603583614321565b9150614eac82614e47565b604082019050919050565b5f6020820190508181035f830152614ece81614e95565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f614f2f603483614321565b9150614f3a82614ed5565b604082019050919050565b5f6020820190508181035f830152614f5c81614f23565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614fbd602683614321565b9150614fc882614f63565b604082019050919050565b5f6020820190508181035f830152614fea81614fb1565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973685f82015250565b5f615025602083614321565b915061503082614ff1565b602082019050919050565b5f6020820190508181035f83015261505281615019565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f5f8201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b5f6150b3602a83614321565b91506150be82615059565b604082019050919050565b5f6020820190508181035f8301526150e0816150a7565b9050919050565b5f815190506150f581614428565b92915050565b5f602082840312156151105761510f6143c1565b5b5f61511d848285016150e7565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f615180602483614321565b915061518b82615126565b604082019050919050565b5f6020820190508181035f8301526151ad81615174565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61520e602283614321565b9150615219826151b4565b604082019050919050565b5f6020820190508181035f83015261523b81615202565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61529c602583614321565b91506152a782615242565b604082019050919050565b5f6020820190508181035f8301526152c981615290565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61532a602383614321565b9150615335826152d0565b604082019050919050565b5f6020820190508181035f8301526153578161531e565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f615392601683614321565b915061539d8261535e565b602082019050919050565b5f6020820190508181035f8301526153bf81615386565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f615446604983614321565b9150615451826153c6565b606082019050919050565b5f6020820190508181035f8301526154738161543a565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6154d4603583614321565b91506154df8261547a565b604082019050919050565b5f6020820190508181035f830152615501816154c8565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f61553c601383614321565b915061554782615508565b602082019050919050565b5f6020820190508181035f83015261556981615530565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6155ca603683614321565b91506155d582615570565b604082019050919050565b5f6020820190508181035f8301526155f7816155be565b9050919050565b5f6156088261441f565b91506156138361441f565b925082820390508181111561562b5761562a614897565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61568b602683614321565b915061569682615631565b604082019050919050565b5f6020820190508181035f8301526156b88161567f565b9050919050565b5f81905092915050565b50565b5f6156d75f836156bf565b91506156e2826156c9565b5f82019050919050565b5f6156f6826156cc565b9150819050919050565b5f6060820190506157135f830186614562565b6157206020830185614562565b61572d6040830184614562565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061579d816143f5565b92915050565b5f602082840312156157b8576157b76143c1565b5b5f6157c58482850161578f565b91505092915050565b5f819050919050565b5f6157f16157ec6157e7846157ce565b6144ee565b61441f565b9050919050565b615801816157d7565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b615839816143e4565b82525050565b5f61584a8383615830565b60208301905092915050565b5f602082019050919050565b5f61586c82615807565b6158768185615811565b935061588183615821565b805f5b838110156158b1578151615898888261583f565b97506158a383615856565b925050600181019050615884565b5085935050505092915050565b5f60a0820190506158d15f830188614562565b6158de60208301876157f8565b81810360408301526158f08186615862565b90506158ff6060830185614605565b61590c6080830184614562565b9695505050505050565b5f60c0820190506159295f830189614605565b6159366020830188614562565b61594360408301876157f8565b61595060608301866157f8565b61595d6080830185614605565b61596a60a0830184614562565b979650505050505050565b5f805f6060848603121561598c5761598b6143c1565b5b5f615999868287016150e7565b93505060206159aa868287016150e7565b92505060406159bb868287016150e7565b915050925092509256fea26469706673582212200d83ee446be1443d32669cb78c2622d33fa38a1865febba7a82b64ae7adcebd064736f6c63430008140033

Deployed Bytecode Sourcemap

17257:19443:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3160:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4074:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18884:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17333:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3481:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26028:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17898:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17713:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18668:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18628;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23342:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4251:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17436:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17808:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17769:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3380:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4751:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17391:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17996:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26193:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18483:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18076:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3597:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;764:103;;;;;;;;;;;;;:::i;:::-;;34282:555;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22450:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23889:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17528:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18376;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24260:403;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22243:155;;;;;;;;;;;;;:::i;:::-;;541:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17565:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18518:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24152:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3268:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25281:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18450:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17952:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18708:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18594:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4974:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17860:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3732:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25789:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19105:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18036:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25091:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24671:412;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23625:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18294:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17598:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22837:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18342:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3915:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17640:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22632:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18413:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;875:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18556:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17680:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35641:1056;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3160:100;3214:13;3247:5;3240:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3160:100;:::o;4074:169::-;4157:4;4174:39;4183:12;:10;:12::i;:::-;4197:7;4206:6;4174:8;:39::i;:::-;4231:4;4224:11;;4074:169;;;;:::o;18884:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;17333:51::-;;;:::o;3481:108::-;3542:7;3569:12;;3562:19;;3481:108;:::o;26028:157::-;687:12;:10;:12::i;:::-;676:23;;:7;:5;:7::i;:::-;:23;;;668:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26135:9:::1;;;;;;;;;;;26107:38;;26124:9;26107:38;;;;;;;;;;;;26168:9;26156;;:21;;;;;;;;;;;;;;;;;;26028:157:::0;:::o;17898:47::-;;;;:::o;17713:36::-;;;;:::o;18668:33::-;;;;:::o;18628:::-;;;;:::o;23342:275::-;687:12;:10;:12::i;:::-;676:23;;:7;:5;:7::i;:::-;:23;;;668:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23479:4:::1;23471;23466:1;23450:13;:11;:13::i;:::-;:17;;;;:::i;:::-;23449:26;;;;:::i;:::-;23448:35;;;;:::i;:::-;23438:6;:45;;23416:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;23602:6;23592;:17;;;;:::i;:::-;23569:20;:40;;;;23342:275:::0;:::o;4251:492::-;4391:4;4408:36;4418:6;4426:9;4437:6;4408:9;:36::i;:::-;4457:24;4484:11;:19;4496:6;4484:19;;;;;;;;;;;;;;;:33;4504:12;:10;:12::i;:::-;4484:33;;;;;;;;;;;;;;;;4457:60;;4556:6;4536:16;:26;;4528:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4643:57;4652:6;4660:12;:10;:12::i;:::-;4693:6;4674:16;:25;4643:8;:57::i;:::-;4731:4;4724:11;;;4251:492;;;;;:::o;17436:53::-;17482:6;17436:53;:::o;17808:45::-;;;;:::o;17769:32::-;;;;;;;;;;;;;:::o;3380:93::-;3438:5;3463:2;3456:9;;3380:93;:::o;4751:215::-;4839:4;4856:80;4865:12;:10;:12::i;:::-;4879:7;4925:10;4888:11;:25;4900:12;:10;:12::i;:::-;4888:25;;;;;;;;;;;;;;;:34;4914:7;4888:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4856:8;:80::i;:::-;4954:4;4947:11;;4751:215;;;;:::o;17391:38::-;;;:::o;17996:33::-;;;;;;;;;;;;;:::o;26193:126::-;26259:4;26283:19;:28;26303:7;26283:28;;;;;;;;;;;;;;;;;;;;;;;;;26276:35;;26193:126;;;:::o;18483:28::-;;;;:::o;18076:31::-;;;;;;;;;;;;;:::o;3597:127::-;3671:7;3698:9;:18;3708:7;3698:18;;;;;;;;;;;;;;;;3691:25;;3597:127;;;:::o;764:103::-;687:12;:10;:12::i;:::-;676:23;;:7;:5;:7::i;:::-;:23;;;668:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;829:30:::1;856:1;829:18;:30::i;:::-;764:103::o:0;34282:555::-;687:12;:10;:12::i;:::-;676:23;;:7;:5;:7::i;:::-;:23;;;668:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34484:3:::1;34461:19;:26;;34439:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;34611:4;34599:8;:16;;:33;;;;;34631:1;34619:8;:13;;34599:33;34577:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;34737:19;34719:15;:37;;;;34786:8;34767:16;:27;;;;34821:8;34805:13;;:24;;;;;;;;;;;;;;;;;;34282:555:::0;;;:::o;22450:121::-;22502:4;687:12;:10;:12::i;:::-;676:23;;:7;:5;:7::i;:::-;:23;;;668:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22536:5:::1;22519:14;;:22;;;;;;;;;;;;;;;;;;22559:4;22552:11;;22450:121:::0;:::o;23889:167::-;687:12;:10;:12::i;:::-;676:23;;:7;:5;:7::i;:::-;:23;;;668:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24044:4:::1;24002:31;:39;24034:6;24002:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;23889:167:::0;;:::o;17528:30::-;;;;;;;;;;;;;:::o;18376:::-;;;;:::o;24260:403::-;687:12;:10;:12::i;:::-;676:23;;:7;:5;:7::i;:::-;:23;;;668:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24428:13:::1;24410:15;:31;;;;24470:13;24452:15;:31;;;;24506:7;24494:9;:19;;;;24575:9;;24557:15;;24539;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;24524:12;:60;;;;24619:2;24603:12:::0;::::1;:18;;24595:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;24260:403:::0;;;:::o;22243:155::-;687:12;:10;:12::i;:::-;676:23;;:7;:5;:7::i;:::-;:23;;;668:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22314:4:::1;22298:13;;:20;;;;;;;;;;;;;;;;;;22343:4;22329:11;;:18;;;;;;;;;;;;;;;;;;22375:15;22358:14;:32;;;;22243:155::o:0;541:87::-;587:7;614:6;;;;;;;;;;;607:13;;541:87;:::o;17565:24::-;;;;;;;;;;;;;:::o;18518:31::-;;;;:::o;24152:100::-;687:12;:10;:12::i;:::-;676:23;;:7;:5;:7::i;:::-;:23;;;668:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24237:7:::1;24223:11;;:21;;;;;;;;;;;;;;;;;;24152:100:::0;:::o;3268:104::-;3324:13;3357:7;3350:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3268:104;:::o;25281:304::-;687:12;:10;:12::i;:::-;676:23;;:7;:5;:7::i;:::-;:23;;;668:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25425:13:::1;25417:21;;:4;:21;;::::0;25395:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;25536:41;25565:4;25571:5;25536:28;:41::i;:::-;25281:304:::0;;:::o;18450:24::-;;;;:::o;17952:35::-;;;;:::o;18708:27::-;;;;:::o;18594:25::-;;;;:::o;4974:413::-;5067:4;5084:24;5111:11;:25;5123:12;:10;:12::i;:::-;5111:25;;;;;;;;;;;;;;;:34;5137:7;5111:34;;;;;;;;;;;;;;;;5084:61;;5184:15;5164:16;:35;;5156:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;5277:67;5286:12;:10;:12::i;:::-;5300:7;5328:15;5309:16;:34;5277:8;:67::i;:::-;5375:4;5368:11;;;4974:413;;;;:::o;17860:29::-;;;;:::o;3732:175::-;3818:4;3835:42;3845:12;:10;:12::i;:::-;3859:9;3870:6;3835:9;:42::i;:::-;3895:4;3888:11;;3732:175;;;;:::o;25789:231::-;687:12;:10;:12::i;:::-;676:23;;:7;:5;:7::i;:::-;:23;;;668:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25949:15:::1;;;;;;;;;;;25906:59;;25929:18;25906:59;;;;;;;;;;;;25994:18;25976:15;;:36;;;;;;;;;;;;;;;;;;25789:231:::0;:::o;19105:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;18036:33::-;;;;;;;;;;;;;:::o;25091:182::-;687:12;:10;:12::i;:::-;676:23;;:7;:5;:7::i;:::-;:23;;;668:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25207:8:::1;25176:19;:28;25196:7;25176:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;25247:7;25231:34;;;25256:8;25231:34;;;;;;:::i;:::-;;;;;;;;25091:182:::0;;:::o;24671:412::-;687:12;:10;:12::i;:::-;676:23;;:7;:5;:7::i;:::-;:23;;;668:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24841:13:::1;24822:16;:32;;;;24884:13;24865:16;:32;;;;24921:7;24908:10;:20;;;;24993:10;;24974:16;;24955;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;24939:13;:64;;;;25039:2;25022:13;;:19;;25014:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;24671:412:::0;;;:::o;23625:256::-;687:12;:10;:12::i;:::-;676:23;;:7;:5;:7::i;:::-;:23;;;668:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23765:4:::1;23757;23752:1;23736:13;:11;:13::i;:::-;:17;;;;:::i;:::-;23735:26;;;;:::i;:::-;23734:35;;;;:::i;:::-;23724:6;:45;;23702:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;23866:6;23856;:17;;;;:::i;:::-;23844:9;:29;;;;23625:256:::0;:::o;18294:39::-;;;;;;;;;;;;;:::o;17598:35::-;;;;:::o;22837:497::-;22945:4;687:12;:10;:12::i;:::-;676:23;;:7;:5;:7::i;:::-;:23;;;668:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23024:6:::1;23019:1;23003:13;:11;:13::i;:::-;:17;;;;:::i;:::-;23002:28;;;;:::i;:::-;22989:9;:41;;22967:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;23179:4;23174:1;23158:13;:11;:13::i;:::-;:17;;;;:::i;:::-;23157:26;;;;:::i;:::-;23144:9;:39;;23122:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;23295:9;23274:18;:30;;;;23322:4;23315:11;;22837:497:::0;;;:::o;18342:27::-;;;;:::o;3915:151::-;4004:7;4031:11;:18;4043:5;4031:18;;;;;;;;;;;;;;;:27;4050:7;4031:27;;;;;;;;;;;;;;;;4024:34;;3915:151;;;;:::o;17640:33::-;;;;:::o;22632:135::-;22692:4;687:12;:10;:12::i;:::-;676:23;;:7;:5;:7::i;:::-;:23;;;668:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22732:5:::1;22709:20;;:28;;;;;;;;;;;;;;;;;;22755:4;22748:11;;22632:135:::0;:::o;18413:30::-;;;;:::o;875:201::-;687:12;:10;:12::i;:::-;676:23;;:7;:5;:7::i;:::-;:23;;;668:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;984:1:::1;964:22;;:8;:22;;::::0;956:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1040:28;1059:8;1040:18;:28::i;:::-;875:201:::0;:::o;18556:31::-;;;;:::o;17680:24::-;;;;:::o;35641:1056::-;35752:4;687:12;:10;:12::i;:::-;676:23;;:7;:5;:7::i;:::-;:23;;;668:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35837:19:::1;;35814:20;;:42;;;;:::i;:::-;35796:15;:60;35774:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;35946:4;35935:7;:15;;35927:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;36031:15;36008:20;:38;;;;36101:28;36132:4;:14;;;36147:13;36132:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36101:60;;36211:20;36234:44;36272:5;36234:33;36259:7;36234:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;36211:67;;36398:1;36383:12;:16;36379:110;;;36416:61;36432:13;36455:6;36464:12;36416:15;:61::i;:::-;36379:110;36564:19;36601:13;36564:51;;36626:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;36653:14;;;;;;;;;;36685:4;36678:11;;;;;35641:1056:::0;;;:::o;87:98::-;140:7;167:10;160:17;;87:98;:::o;7467:380::-;7620:1;7603:19;;:5;:19;;;7595:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7701:1;7682:21;;:7;:21;;;7674:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7785:6;7755:11;:18;7767:5;7755:18;;;;;;;;;;;;;;;:27;7774:7;7755:27;;;;;;;;;;;;;;;:36;;;;7823:7;7807:32;;7816:5;7807:32;;;7832:6;7807:32;;;;;;:::i;:::-;;;;;;;;7467:380;;;:::o;26377:5011::-;26525:1;26509:18;;:4;:18;;;26501:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26602:1;26588:16;;:2;:16;;;26580:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26671:1;26661:6;:11;26657:93;;26689:28;26705:4;26711:2;26715:1;26689:15;:28::i;:::-;26732:7;;26657:93;26766:14;;;;;;;;;;;26762:2487;;;26827:7;:5;:7::i;:::-;26819:15;;:4;:15;;;;:49;;;;;26861:7;:5;:7::i;:::-;26855:13;;:2;:13;;;;26819:49;:86;;;;;26903:1;26889:16;;:2;:16;;;;26819:86;:128;;;;;26940:6;26926:21;;:2;:21;;;;26819:128;:158;;;;;26969:8;;;;;;;;;;;26968:9;26819:158;26797:2441;;;27017:13;;;;;;;;;;;27012:223;;27089:19;:25;27109:4;27089:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;27118:19;:23;27138:2;27118:23;;;;;;;;;;;;;;;;;;;;;;;;;27089:52;27055:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;27012:223;27391:20;;;;;;;;;;;27387:641;;;27472:7;:5;:7::i;:::-;27466:13;;:2;:13;;;;:72;;;;;27522:15;27508:30;;:2;:30;;;;27466:72;:129;;;;;27581:13;27567:28;;:2;:28;;;;27466:129;27436:573;;;27759:12;27684:28;:39;27713:9;27684:39;;;;;;;;;;;;;;;;:87;27646:258;;;;;;;;;;;;:::i;:::-;;;;;;;;;27973:12;27931:28;:39;27960:9;27931:39;;;;;;;;;;;;;;;:54;;;;27436:573;27387:641;28102:25;:31;28128:4;28102:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;28159:31;:35;28191:2;28159:35;;;;;;;;;;;;;;;;;;;;;;;;;28158:36;28102:92;28076:1147;;;28281:20;;28271:6;:30;;28237:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;28489:9;;28472:13;28482:2;28472:9;:13::i;:::-;28463:6;:22;;;;:::i;:::-;:35;;28429:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;28076:1147;;;28667:25;:29;28693:2;28667:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;28722:31;:37;28754:4;28722:37;;;;;;;;;;;;;;;;;;;;;;;;;28721:38;28667:92;28641:582;;;28846:20;;28836:6;:30;;28802:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;28641:582;;;29003:31;:35;29035:2;29003:35;;;;;;;;;;;;;;;;;;;;;;;;;28998:225;;29123:9;;29106:13;29116:2;29106:9;:13::i;:::-;29097:6;:22;;;;:::i;:::-;:35;;29063:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;28998:225;28641:582;28076:1147;26797:2441;26762:2487;29261:28;29292:24;29310:4;29292:9;:24::i;:::-;29261:55;;29329:12;29368:18;;29344:20;:42;;29329:57;;29417:7;:35;;;;;29441:11;;;;;;;;;;;29417:35;:61;;;;;29470:8;;;;;;;;;;;29469:9;29417:61;:110;;;;;29496:25;:31;29522:4;29496:31;;;;;;;;;;;;;;;;;;;;;;;;;29495:32;29417:110;:153;;;;;29545:19;:25;29565:4;29545:25;;;;;;;;;;;;;;;;;;;;;;;;;29544:26;29417:153;:194;;;;;29588:19;:23;29608:2;29588:23;;;;;;;;;;;;;;;;;;;;;;;;;29587:24;29417:194;29399:326;;;29649:4;29638:8;;:15;;;;;;;;;;;;;;;;;;29670:10;:8;:10::i;:::-;29708:5;29697:8;;:16;;;;;;;;;;;;;;;;;;29399:326;29756:8;;;;;;;;;;;29755:9;:55;;;;;29781:25;:29;29807:2;29781:29;;;;;;;;;;;;;;;;;;;;;;;;;29755:55;:85;;;;;29827:13;;;;;;;;;;;29755:85;:153;;;;;29893:15;;29876:14;;:32;;;;:::i;:::-;29857:15;:51;;29755:153;:196;;;;;29926:19;:25;29946:4;29926:25;;;;;;;;;;;;;;;;;;;;;;;;;29925:26;29755:196;29737:282;;;29978:29;:27;:29::i;:::-;;29737:282;30031:12;30047:8;;;;;;;;;;;30046:9;30031:24;;30157:19;:25;30177:4;30157:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;30186:19;:23;30206:2;30186:23;;;;;;;;;;;;;;;;;;;;;;;;;30157:52;30153:100;;;30236:5;30226:15;;30153:100;30265:12;30370:7;30366:969;;;30422:25;:29;30448:2;30422:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;30471:1;30455:13;;:17;30422:50;30418:768;;;30500:34;30530:3;30500:25;30511:13;;30500:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;30493:41;;30603:13;;30583:16;;30576:4;:23;;;;:::i;:::-;30575:41;;;;:::i;:::-;30553:18;;:63;;;;;;;:::i;:::-;;;;;;;;30673:13;;30659:10;;30652:4;:17;;;;:::i;:::-;30651:35;;;;:::i;:::-;30635:12;;:51;;;;;;;:::i;:::-;;;;;;;;30755:13;;30735:16;;30728:4;:23;;;;:::i;:::-;30727:41;;;;:::i;:::-;30705:18;;:63;;;;;;;:::i;:::-;;;;;;;;30418:768;;;30830:25;:31;30856:4;30830:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;30880:1;30865:12;;:16;30830:51;30826:360;;;30909:33;30938:3;30909:24;30920:12;;30909:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;30902:40;;31010:12;;30991:15;;30984:4;:22;;;;:::i;:::-;30983:39;;;;:::i;:::-;30961:18;;:61;;;;;;;:::i;:::-;;;;;;;;31078:12;;31065:9;;31058:4;:16;;;;:::i;:::-;31057:33;;;;:::i;:::-;31041:12;;:49;;;;;;;:::i;:::-;;;;;;;;31158:12;;31139:15;;31132:4;:22;;;;:::i;:::-;31131:39;;;;:::i;:::-;31109:18;;:61;;;;;;;:::i;:::-;;;;;;;;30826:360;30418:768;31213:1;31206:4;:8;31202:91;;;31235:42;31251:4;31265;31272;31235:15;:42::i;:::-;31202:91;31319:4;31309:14;;;;;:::i;:::-;;;30366:969;31347:33;31363:4;31369:2;31373:6;31347:15;:33::i;:::-;26490:4898;;;;26377:5011;;;;:::o;1084:191::-;1158:16;1177:6;;;;;;;;;;;1158:25;;1203:8;1194:6;;:17;;;;;;;;;;;;;;;;;;1258:8;1227:40;;1248:8;1227:40;;;;;;;;;;;;1147:128;1084:191;:::o;25593:188::-;25710:5;25676:25;:31;25702:4;25676:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;25767:5;25733:40;;25761:4;25733:40;;;;;;;;;;;;25593:188;;:::o;10027:98::-;10085:7;10116:1;10112;:5;;;;:::i;:::-;10105:12;;10027:98;;;;:::o;10133:::-;10191:7;10222:1;10218;:5;;;;:::i;:::-;10211:12;;10133:98;;;;:::o;5395:733::-;5553:1;5535:20;;:6;:20;;;5527:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5637:1;5616:23;;:9;:23;;;5608:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5692:47;5713:6;5721:9;5732:6;5692:20;:47::i;:::-;5752:21;5776:9;:17;5786:6;5776:17;;;;;;;;;;;;;;;;5752:41;;5829:6;5812:13;:23;;5804:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5950:6;5934:13;:22;5914:9;:17;5924:6;5914:17;;;;;;;;;;;;;;;:42;;;;6002:6;5978:9;:20;5988:9;5978:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;6043:9;6026:35;;6035:6;6026:35;;;6054:6;6026:35;;;;;;:::i;:::-;;;;;;;;6074:46;6094:6;6102:9;6113:6;6074:19;:46::i;:::-;5516:612;5395:733;;;:::o;32518:1756::-;32557:23;32583:24;32601:4;32583:9;:24::i;:::-;32557:50;;32618:25;32714:12;;32680:18;;32646;;:52;;;;:::i;:::-;:80;;;;:::i;:::-;32618:108;;32737:12;32785:1;32766:15;:20;:46;;;;32811:1;32790:17;:22;32766:46;32762:85;;;32829:7;;;;;32762:85;32902:2;32881:18;;:23;;;;:::i;:::-;32863:15;:41;32859:115;;;32960:2;32939:18;;:23;;;;:::i;:::-;32921:41;;32859:115;33035:23;33148:1;33115:17;33080:18;;33062:15;:36;;;;:::i;:::-;33061:71;;;;:::i;:::-;:88;;;;:::i;:::-;33035:114;;33160:26;33189:36;33209:15;33189;:19;;:36;;;;:::i;:::-;33160:65;;33238:25;33266:21;33238:49;;33300:36;33317:18;33300:16;:36::i;:::-;33349:18;33370:44;33396:17;33370:21;:25;;:44;;;;:::i;:::-;33349:65;;33427:23;33453:81;33506:17;33453:34;33468:18;;33453:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;33427:107;;33545:17;33565:51;33598:17;33565:28;33580:12;;33565:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;33545:71;;33629:23;33686:9;33668:15;33655:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;33629:66;;33729:1;33708:18;:22;;;;33762:1;33741:18;:22;;;;33789:1;33774:12;:16;;;;33825:9;;;;;;;;;;;33817:23;;33848:9;33817:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33803:59;;;;;33897:1;33879:15;:19;:42;;;;;33920:1;33902:15;:19;33879:42;33875:278;;;33938:46;33951:15;33968;33938:12;:46::i;:::-;34004:137;34037:18;34074:15;34108:18;;34004:137;;;;;;;;:::i;:::-;;;;;;;;33875:278;34187:15;;;;;;;;;;;34179:29;;34230:21;34179:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34165:101;;;;;32546:1728;;;;;;;;;;32518:1756;:::o;34845:788::-;34902:4;34936:15;34919:14;:32;;;;35006:28;35037:4;:14;;;35052:13;35037:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35006:60;;35116:20;35139:77;35200:5;35139:42;35164:16;;35139:20;:24;;:42;;;;:::i;:::-;:46;;:77;;;;:::i;:::-;35116:100;;35336:1;35321:12;:16;35317:110;;;35354:61;35370:13;35393:6;35402:12;35354:15;:61::i;:::-;35317:110;35502:19;35539:13;35502:51;;35564:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35591:12;;;;;;;;;;35621:4;35614:11;;;;;34845:788;:::o;7855:125::-;;;;:::o;7988:124::-;;;;:::o;9921:98::-;9979:7;10010:1;10006;:5;;;;:::i;:::-;9999:12;;9921:98;;;;:::o;31396:589::-;31522:21;31560:1;31546:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31522:40;;31591:4;31573;31578:1;31573:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;31617:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31607:4;31612:1;31607:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;31652:62;31669:4;31684:15;31702:11;31652:8;:62::i;:::-;31753:15;:66;;;31834:11;31860:1;31904:4;31931;31951:15;31753:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31451:534;31396:589;:::o;31993:517::-;32141:62;32158:4;32173:15;32191:11;32141:8;:62::i;:::-;32246:15;:31;;;32285:9;32318:4;32338:11;32364:1;32407;17482:6;32476:15;32246:256;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;31993:517;;:::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:613::-;7188:6;7196;7204;7253:2;7241:9;7232:7;7228:23;7224:32;7221:119;;;7259:79;;:::i;:::-;7221:119;7379:1;7404:53;7449:7;7440:6;7429:9;7425:22;7404:53;:::i;:::-;7394:63;;7350:117;7506:2;7532:53;7577:7;7568:6;7557:9;7553:22;7532:53;:::i;:::-;7522:63;;7477:118;7634:2;7660:50;7702:7;7693:6;7682:9;7678:22;7660:50;:::i;:::-;7650:60;;7605:115;7114:613;;;;;:::o;7733:468::-;7798:6;7806;7855:2;7843:9;7834:7;7830:23;7826:32;7823:119;;;7861:79;;:::i;:::-;7823:119;7981:1;8006:53;8051:7;8042:6;8031:9;8027:22;8006:53;:::i;:::-;7996:63;;7952:117;8108:2;8134:50;8176:7;8167:6;8156:9;8152:22;8134:50;:::i;:::-;8124:60;;8079:115;7733:468;;;;;:::o;8207:619::-;8284:6;8292;8300;8349:2;8337:9;8328:7;8324:23;8320:32;8317:119;;;8355:79;;:::i;:::-;8317:119;8475:1;8500:53;8545:7;8536:6;8525:9;8521:22;8500:53;:::i;:::-;8490:63;;8446:117;8602:2;8628:53;8673:7;8664:6;8653:9;8649:22;8628:53;:::i;:::-;8618:63;;8573:118;8730:2;8756:53;8801:7;8792:6;8781:9;8777:22;8756:53;:::i;:::-;8746:63;;8701:118;8207:619;;;;;:::o;8832:323::-;8888:6;8937:2;8925:9;8916:7;8912:23;8908:32;8905:119;;;8943:79;;:::i;:::-;8905:119;9063:1;9088:50;9130:7;9121:6;9110:9;9106:22;9088:50;:::i;:::-;9078:60;;9034:114;8832:323;;;;:::o;9161:474::-;9229:6;9237;9286:2;9274:9;9265:7;9261:23;9257:32;9254:119;;;9292:79;;:::i;:::-;9254:119;9412:1;9437:53;9482:7;9473:6;9462:9;9458:22;9437:53;:::i;:::-;9427:63;;9383:117;9539:2;9565:53;9610:7;9601:6;9590:9;9586:22;9565:53;:::i;:::-;9555:63;;9510:118;9161:474;;;;;:::o;9641:180::-;9689:77;9686:1;9679:88;9786:4;9783:1;9776:15;9810:4;9807:1;9800:15;9827:320;9871:6;9908:1;9902:4;9898:12;9888:22;;9955:1;9949:4;9945:12;9976:18;9966:81;;10032:4;10024:6;10020:17;10010:27;;9966:81;10094:2;10086:6;10083:14;10063:18;10060:38;10057:84;;10113:18;;:::i;:::-;10057:84;9878:269;9827:320;;;:::o;10153:182::-;10293:34;10289:1;10281:6;10277:14;10270:58;10153:182;:::o;10341:366::-;10483:3;10504:67;10568:2;10563:3;10504:67;:::i;:::-;10497:74;;10580:93;10669:3;10580:93;:::i;:::-;10698:2;10693:3;10689:12;10682:19;;10341:366;;;:::o;10713:419::-;10879:4;10917:2;10906:9;10902:18;10894:26;;10966:9;10960:4;10956:20;10952:1;10941:9;10937:17;10930:47;10994:131;11120:4;10994:131;:::i;:::-;10986:139;;10713:419;;;:::o;11138:180::-;11186:77;11183:1;11176:88;11283:4;11280:1;11273:15;11307:4;11304:1;11297:15;11324:410;11364:7;11387:20;11405:1;11387:20;:::i;:::-;11382:25;;11421:20;11439:1;11421:20;:::i;:::-;11416:25;;11476:1;11473;11469:9;11498:30;11516:11;11498:30;:::i;:::-;11487:41;;11677:1;11668:7;11664:15;11661:1;11658:22;11638:1;11631:9;11611:83;11588:139;;11707:18;;:::i;:::-;11588:139;11372:362;11324:410;;;;:::o;11740:180::-;11788:77;11785:1;11778:88;11885:4;11882:1;11875:15;11909:4;11906:1;11899:15;11926:185;11966:1;11983:20;12001:1;11983:20;:::i;:::-;11978:25;;12017:20;12035:1;12017:20;:::i;:::-;12012:25;;12056:1;12046:35;;12061:18;;:::i;:::-;12046:35;12103:1;12100;12096:9;12091:14;;11926:185;;;;:::o;12117:234::-;12257:34;12253:1;12245:6;12241:14;12234:58;12326:17;12321:2;12313:6;12309:15;12302:42;12117:234;:::o;12357:366::-;12499:3;12520:67;12584:2;12579:3;12520:67;:::i;:::-;12513:74;;12596:93;12685:3;12596:93;:::i;:::-;12714:2;12709:3;12705:12;12698:19;;12357:366;;;:::o;12729:419::-;12895:4;12933:2;12922:9;12918:18;12910:26;;12982:9;12976:4;12972:20;12968:1;12957:9;12953:17;12946:47;13010:131;13136:4;13010:131;:::i;:::-;13002:139;;12729:419;;;:::o;13154:227::-;13294:34;13290:1;13282:6;13278:14;13271:58;13363:10;13358:2;13350:6;13346:15;13339:35;13154:227;:::o;13387:366::-;13529:3;13550:67;13614:2;13609:3;13550:67;:::i;:::-;13543:74;;13626:93;13715:3;13626:93;:::i;:::-;13744:2;13739:3;13735:12;13728:19;;13387:366;;;:::o;13759:419::-;13925:4;13963:2;13952:9;13948:18;13940:26;;14012:9;14006:4;14002:20;13998:1;13987:9;13983:17;13976:47;14040:131;14166:4;14040:131;:::i;:::-;14032:139;;13759:419;;;:::o;14184:191::-;14224:3;14243:20;14261:1;14243:20;:::i;:::-;14238:25;;14277:20;14295:1;14277:20;:::i;:::-;14272:25;;14320:1;14317;14313:9;14306:16;;14341:3;14338:1;14335:10;14332:36;;;14348:18;;:::i;:::-;14332:36;14184:191;;;;:::o;14381:238::-;14521:34;14517:1;14509:6;14505:14;14498:58;14590:21;14585:2;14577:6;14573:15;14566:46;14381:238;:::o;14625:366::-;14767:3;14788:67;14852:2;14847:3;14788:67;:::i;:::-;14781:74;;14864:93;14953:3;14864:93;:::i;:::-;14982:2;14977:3;14973:12;14966:19;;14625:366;;;:::o;14997:419::-;15163:4;15201:2;15190:9;15186:18;15178:26;;15250:9;15244:4;15240:20;15236:1;15225:9;15221:17;15214:47;15278:131;15404:4;15278:131;:::i;:::-;15270:139;;14997:419;;;:::o;15422:235::-;15562:34;15558:1;15550:6;15546:14;15539:58;15631:18;15626:2;15618:6;15614:15;15607:43;15422:235;:::o;15663:366::-;15805:3;15826:67;15890:2;15885:3;15826:67;:::i;:::-;15819:74;;15902:93;15991:3;15902:93;:::i;:::-;16020:2;16015:3;16011:12;16004:19;;15663:366;;;:::o;16035:419::-;16201:4;16239:2;16228:9;16224:18;16216:26;;16288:9;16282:4;16278:20;16274:1;16263:9;16259:17;16252:47;16316:131;16442:4;16316:131;:::i;:::-;16308:139;;16035:419;;;:::o;16460:179::-;16600:31;16596:1;16588:6;16584:14;16577:55;16460:179;:::o;16645:366::-;16787:3;16808:67;16872:2;16867:3;16808:67;:::i;:::-;16801:74;;16884:93;16973:3;16884:93;:::i;:::-;17002:2;16997:3;16993:12;16986:19;;16645:366;;;:::o;17017:419::-;17183:4;17221:2;17210:9;17206:18;17198:26;;17270:9;17264:4;17260:20;17256:1;17245:9;17241:17;17234:47;17298:131;17424:4;17298:131;:::i;:::-;17290:139;;17017:419;;;:::o;17442:244::-;17582:34;17578:1;17570:6;17566:14;17559:58;17651:27;17646:2;17638:6;17634:15;17627:52;17442:244;:::o;17692:366::-;17834:3;17855:67;17919:2;17914:3;17855:67;:::i;:::-;17848:74;;17931:93;18020:3;17931:93;:::i;:::-;18049:2;18044:3;18040:12;18033:19;;17692:366;;;:::o;18064:419::-;18230:4;18268:2;18257:9;18253:18;18245:26;;18317:9;18311:4;18307:20;18303:1;18292:9;18288:17;18281:47;18345:131;18471:4;18345:131;:::i;:::-;18337:139;;18064:419;;;:::o;18489:224::-;18629:34;18625:1;18617:6;18613:14;18606:58;18698:7;18693:2;18685:6;18681:15;18674:32;18489:224;:::o;18719:366::-;18861:3;18882:67;18946:2;18941:3;18882:67;:::i;:::-;18875:74;;18958:93;19047:3;18958:93;:::i;:::-;19076:2;19071:3;19067:12;19060:19;;18719:366;;;:::o;19091:419::-;19257:4;19295:2;19284:9;19280:18;19272:26;;19344:9;19338:4;19334:20;19330:1;19319:9;19315:17;19308:47;19372:131;19498:4;19372:131;:::i;:::-;19364:139;;19091:419;;;:::o;19516:179::-;19656:31;19652:1;19644:6;19640:14;19633:55;19516:179;:::o;19701:366::-;19843:3;19864:67;19928:2;19923:3;19864:67;:::i;:::-;19857:74;;19940:93;20029:3;19940:93;:::i;:::-;20058:2;20053:3;20049:12;20042:19;;19701:366;;;:::o;20073:419::-;20239:4;20277:2;20266:9;20262:18;20254:26;;20326:9;20320:4;20316:20;20312:1;20301:9;20297:17;20290:47;20354:131;20480:4;20354:131;:::i;:::-;20346:139;;20073:419;;;:::o;20498:223::-;20638:34;20634:1;20626:6;20622:14;20615:58;20707:6;20702:2;20694:6;20690:15;20683:31;20498:223;:::o;20727:366::-;20869:3;20890:67;20954:2;20949:3;20890:67;:::i;:::-;20883:74;;20966:93;21055:3;20966:93;:::i;:::-;21084:2;21079:3;21075:12;21068:19;;20727:366;;;:::o;21099:419::-;21265:4;21303:2;21292:9;21288:18;21280:26;;21352:9;21346:4;21342:20;21338:1;21327:9;21323:17;21316:47;21380:131;21506:4;21380:131;:::i;:::-;21372:139;;21099:419;;;:::o;21524:240::-;21664:34;21660:1;21652:6;21648:14;21641:58;21733:23;21728:2;21720:6;21716:15;21709:48;21524:240;:::o;21770:366::-;21912:3;21933:67;21997:2;21992:3;21933:67;:::i;:::-;21926:74;;22009:93;22098:3;22009:93;:::i;:::-;22127:2;22122:3;22118:12;22111:19;;21770:366;;;:::o;22142:419::-;22308:4;22346:2;22335:9;22331:18;22323:26;;22395:9;22389:4;22385:20;22381:1;22370:9;22366:17;22359:47;22423:131;22549:4;22423:131;:::i;:::-;22415:139;;22142:419;;;:::o;22567:239::-;22707:34;22703:1;22695:6;22691:14;22684:58;22776:22;22771:2;22763:6;22759:15;22752:47;22567:239;:::o;22812:366::-;22954:3;22975:67;23039:2;23034:3;22975:67;:::i;:::-;22968:74;;23051:93;23140:3;23051:93;:::i;:::-;23169:2;23164:3;23160:12;23153:19;;22812:366;;;:::o;23184:419::-;23350:4;23388:2;23377:9;23373:18;23365:26;;23437:9;23431:4;23427:20;23423:1;23412:9;23408:17;23401:47;23465:131;23591:4;23465:131;:::i;:::-;23457:139;;23184:419;;;:::o;23609:225::-;23749:34;23745:1;23737:6;23733:14;23726:58;23818:8;23813:2;23805:6;23801:15;23794:33;23609:225;:::o;23840:366::-;23982:3;24003:67;24067:2;24062:3;24003:67;:::i;:::-;23996:74;;24079:93;24168:3;24079:93;:::i;:::-;24197:2;24192:3;24188:12;24181:19;;23840:366;;;:::o;24212:419::-;24378:4;24416:2;24405:9;24401:18;24393:26;;24465:9;24459:4;24455:20;24451:1;24440:9;24436:17;24429:47;24493:131;24619:4;24493:131;:::i;:::-;24485:139;;24212:419;;;:::o;24637:182::-;24777:34;24773:1;24765:6;24761:14;24754:58;24637:182;:::o;24825:366::-;24967:3;24988:67;25052:2;25047:3;24988:67;:::i;:::-;24981:74;;25064:93;25153:3;25064:93;:::i;:::-;25182:2;25177:3;25173:12;25166:19;;24825:366;;;:::o;25197:419::-;25363:4;25401:2;25390:9;25386:18;25378:26;;25450:9;25444:4;25440:20;25436:1;25425:9;25421:17;25414:47;25478:131;25604:4;25478:131;:::i;:::-;25470:139;;25197:419;;;:::o;25622:229::-;25762:34;25758:1;25750:6;25746:14;25739:58;25831:12;25826:2;25818:6;25814:15;25807:37;25622:229;:::o;25857:366::-;25999:3;26020:67;26084:2;26079:3;26020:67;:::i;:::-;26013:74;;26096:93;26185:3;26096:93;:::i;:::-;26214:2;26209:3;26205:12;26198:19;;25857:366;;;:::o;26229:419::-;26395:4;26433:2;26422:9;26418:18;26410:26;;26482:9;26476:4;26472:20;26468:1;26457:9;26453:17;26446:47;26510:131;26636:4;26510:131;:::i;:::-;26502:139;;26229:419;;;:::o;26654:143::-;26711:5;26742:6;26736:13;26727:22;;26758:33;26785:5;26758:33;:::i;:::-;26654:143;;;;:::o;26803:351::-;26873:6;26922:2;26910:9;26901:7;26897:23;26893:32;26890:119;;;26928:79;;:::i;:::-;26890:119;27048:1;27073:64;27129:7;27120:6;27109:9;27105:22;27073:64;:::i;:::-;27063:74;;27019:128;26803:351;;;;:::o;27160:223::-;27300:34;27296:1;27288:6;27284:14;27277:58;27369:6;27364:2;27356:6;27352:15;27345:31;27160:223;:::o;27389:366::-;27531:3;27552:67;27616:2;27611:3;27552:67;:::i;:::-;27545:74;;27628:93;27717:3;27628:93;:::i;:::-;27746:2;27741:3;27737:12;27730:19;;27389:366;;;:::o;27761:419::-;27927:4;27965:2;27954:9;27950:18;27942:26;;28014:9;28008:4;28004:20;28000:1;27989:9;27985:17;27978:47;28042:131;28168:4;28042:131;:::i;:::-;28034:139;;27761:419;;;:::o;28186:221::-;28326:34;28322:1;28314:6;28310:14;28303:58;28395:4;28390:2;28382:6;28378:15;28371:29;28186:221;:::o;28413:366::-;28555:3;28576:67;28640:2;28635:3;28576:67;:::i;:::-;28569:74;;28652:93;28741:3;28652:93;:::i;:::-;28770:2;28765:3;28761:12;28754:19;;28413:366;;;:::o;28785:419::-;28951:4;28989:2;28978:9;28974:18;28966:26;;29038:9;29032:4;29028:20;29024:1;29013:9;29009:17;29002:47;29066:131;29192:4;29066:131;:::i;:::-;29058:139;;28785:419;;;:::o;29210:224::-;29350:34;29346:1;29338:6;29334:14;29327:58;29419:7;29414:2;29406:6;29402:15;29395:32;29210:224;:::o;29440:366::-;29582:3;29603:67;29667:2;29662:3;29603:67;:::i;:::-;29596:74;;29679:93;29768:3;29679:93;:::i;:::-;29797:2;29792:3;29788:12;29781:19;;29440:366;;;:::o;29812:419::-;29978:4;30016:2;30005:9;30001:18;29993:26;;30065:9;30059:4;30055:20;30051:1;30040:9;30036:17;30029:47;30093:131;30219:4;30093:131;:::i;:::-;30085:139;;29812:419;;;:::o;30237:222::-;30377:34;30373:1;30365:6;30361:14;30354:58;30446:5;30441:2;30433:6;30429:15;30422:30;30237:222;:::o;30465:366::-;30607:3;30628:67;30692:2;30687:3;30628:67;:::i;:::-;30621:74;;30704:93;30793:3;30704:93;:::i;:::-;30822:2;30817:3;30813:12;30806:19;;30465:366;;;:::o;30837:419::-;31003:4;31041:2;31030:9;31026:18;31018:26;;31090:9;31084:4;31080:20;31076:1;31065:9;31061:17;31054:47;31118:131;31244:4;31118:131;:::i;:::-;31110:139;;30837:419;;;:::o;31262:172::-;31402:24;31398:1;31390:6;31386:14;31379:48;31262:172;:::o;31440:366::-;31582:3;31603:67;31667:2;31662:3;31603:67;:::i;:::-;31596:74;;31679:93;31768:3;31679:93;:::i;:::-;31797:2;31792:3;31788:12;31781:19;;31440:366;;;:::o;31812:419::-;31978:4;32016:2;32005:9;32001:18;31993:26;;32065:9;32059:4;32055:20;32051:1;32040:9;32036:17;32029:47;32093:131;32219:4;32093:131;:::i;:::-;32085:139;;31812:419;;;:::o;32237:297::-;32377:34;32373:1;32365:6;32361:14;32354:58;32446:34;32441:2;32433:6;32429:15;32422:59;32515:11;32510:2;32502:6;32498:15;32491:36;32237:297;:::o;32540:366::-;32682:3;32703:67;32767:2;32762:3;32703:67;:::i;:::-;32696:74;;32779:93;32868:3;32779:93;:::i;:::-;32897:2;32892:3;32888:12;32881:19;;32540:366;;;:::o;32912:419::-;33078:4;33116:2;33105:9;33101:18;33093:26;;33165:9;33159:4;33155:20;33151:1;33140:9;33136:17;33129:47;33193:131;33319:4;33193:131;:::i;:::-;33185:139;;32912:419;;;:::o;33337:240::-;33477:34;33473:1;33465:6;33461:14;33454:58;33546:23;33541:2;33533:6;33529:15;33522:48;33337:240;:::o;33583:366::-;33725:3;33746:67;33810:2;33805:3;33746:67;:::i;:::-;33739:74;;33822:93;33911:3;33822:93;:::i;:::-;33940:2;33935:3;33931:12;33924:19;;33583:366;;;:::o;33955:419::-;34121:4;34159:2;34148:9;34144:18;34136:26;;34208:9;34202:4;34198:20;34194:1;34183:9;34179:17;34172:47;34236:131;34362:4;34236:131;:::i;:::-;34228:139;;33955:419;;;:::o;34380:169::-;34520:21;34516:1;34508:6;34504:14;34497:45;34380:169;:::o;34555:366::-;34697:3;34718:67;34782:2;34777:3;34718:67;:::i;:::-;34711:74;;34794:93;34883:3;34794:93;:::i;:::-;34912:2;34907:3;34903:12;34896:19;;34555:366;;;:::o;34927:419::-;35093:4;35131:2;35120:9;35116:18;35108:26;;35180:9;35174:4;35170:20;35166:1;35155:9;35151:17;35144:47;35208:131;35334:4;35208:131;:::i;:::-;35200:139;;34927:419;;;:::o;35352:241::-;35492:34;35488:1;35480:6;35476:14;35469:58;35561:24;35556:2;35548:6;35544:15;35537:49;35352:241;:::o;35599:366::-;35741:3;35762:67;35826:2;35821:3;35762:67;:::i;:::-;35755:74;;35838:93;35927:3;35838:93;:::i;:::-;35956:2;35951:3;35947:12;35940:19;;35599:366;;;:::o;35971:419::-;36137:4;36175:2;36164:9;36160:18;36152:26;;36224:9;36218:4;36214:20;36210:1;36199:9;36195:17;36188:47;36252:131;36378:4;36252:131;:::i;:::-;36244:139;;35971:419;;;:::o;36396:194::-;36436:4;36456:20;36474:1;36456:20;:::i;:::-;36451:25;;36490:20;36508:1;36490:20;:::i;:::-;36485:25;;36534:1;36531;36527:9;36519:17;;36558:1;36552:4;36549:11;36546:37;;;36563:18;;:::i;:::-;36546:37;36396:194;;;;:::o;36596:225::-;36736:34;36732:1;36724:6;36720:14;36713:58;36805:8;36800:2;36792:6;36788:15;36781:33;36596:225;:::o;36827:366::-;36969:3;36990:67;37054:2;37049:3;36990:67;:::i;:::-;36983:74;;37066:93;37155:3;37066:93;:::i;:::-;37184:2;37179:3;37175:12;37168:19;;36827:366;;;:::o;37199:419::-;37365:4;37403:2;37392:9;37388:18;37380:26;;37452:9;37446:4;37442:20;37438:1;37427:9;37423:17;37416:47;37480:131;37606:4;37480:131;:::i;:::-;37472:139;;37199:419;;;:::o;37624:147::-;37725:11;37762:3;37747:18;;37624:147;;;;:::o;37777:114::-;;:::o;37897:398::-;38056:3;38077:83;38158:1;38153:3;38077:83;:::i;:::-;38070:90;;38169:93;38258:3;38169:93;:::i;:::-;38287:1;38282:3;38278:11;38271:18;;37897:398;;;:::o;38301:379::-;38485:3;38507:147;38650:3;38507:147;:::i;:::-;38500:154;;38671:3;38664:10;;38301:379;;;:::o;38686:442::-;38835:4;38873:2;38862:9;38858:18;38850:26;;38886:71;38954:1;38943:9;38939:17;38930:6;38886:71;:::i;:::-;38967:72;39035:2;39024:9;39020:18;39011:6;38967:72;:::i;:::-;39049;39117:2;39106:9;39102:18;39093:6;39049:72;:::i;:::-;38686:442;;;;;;:::o;39134:180::-;39182:77;39179:1;39172:88;39279:4;39276:1;39269:15;39303:4;39300:1;39293:15;39320:180;39368:77;39365:1;39358:88;39465:4;39462:1;39455:15;39489:4;39486:1;39479:15;39506:143;39563:5;39594:6;39588:13;39579:22;;39610:33;39637:5;39610:33;:::i;:::-;39506:143;;;;:::o;39655:351::-;39725:6;39774:2;39762:9;39753:7;39749:23;39745:32;39742:119;;;39780:79;;:::i;:::-;39742:119;39900:1;39925:64;39981:7;39972:6;39961:9;39957:22;39925:64;:::i;:::-;39915:74;;39871:128;39655:351;;;;:::o;40012:85::-;40057:7;40086:5;40075:16;;40012:85;;;:::o;40103:158::-;40161:9;40194:61;40212:42;40221:32;40247:5;40221:32;:::i;:::-;40212:42;:::i;:::-;40194:61;:::i;:::-;40181:74;;40103:158;;;:::o;40267:147::-;40362:45;40401:5;40362:45;:::i;:::-;40357:3;40350:58;40267:147;;:::o;40420:114::-;40487:6;40521:5;40515:12;40505:22;;40420:114;;;:::o;40540:184::-;40639:11;40673:6;40668:3;40661:19;40713:4;40708:3;40704:14;40689:29;;40540:184;;;;:::o;40730:132::-;40797:4;40820:3;40812:11;;40850:4;40845:3;40841:14;40833:22;;40730:132;;;:::o;40868:108::-;40945:24;40963:5;40945:24;:::i;:::-;40940:3;40933:37;40868:108;;:::o;40982:179::-;41051:10;41072:46;41114:3;41106:6;41072:46;:::i;:::-;41150:4;41145:3;41141:14;41127:28;;40982:179;;;;:::o;41167:113::-;41237:4;41269;41264:3;41260:14;41252:22;;41167:113;;;:::o;41316:732::-;41435:3;41464:54;41512:5;41464:54;:::i;:::-;41534:86;41613:6;41608:3;41534:86;:::i;:::-;41527:93;;41644:56;41694:5;41644:56;:::i;:::-;41723:7;41754:1;41739:284;41764:6;41761:1;41758:13;41739:284;;;41840:6;41834:13;41867:63;41926:3;41911:13;41867:63;:::i;:::-;41860:70;;41953:60;42006:6;41953:60;:::i;:::-;41943:70;;41799:224;41786:1;41783;41779:9;41774:14;;41739:284;;;41743:14;42039:3;42032:10;;41440:608;;;41316:732;;;;:::o;42054:831::-;42317:4;42355:3;42344:9;42340:19;42332:27;;42369:71;42437:1;42426:9;42422:17;42413:6;42369:71;:::i;:::-;42450:80;42526:2;42515:9;42511:18;42502:6;42450:80;:::i;:::-;42577:9;42571:4;42567:20;42562:2;42551:9;42547:18;42540:48;42605:108;42708:4;42699:6;42605:108;:::i;:::-;42597:116;;42723:72;42791:2;42780:9;42776:18;42767:6;42723:72;:::i;:::-;42805:73;42873:3;42862:9;42858:19;42849:6;42805:73;:::i;:::-;42054:831;;;;;;;;:::o;42891:807::-;43140:4;43178:3;43167:9;43163:19;43155:27;;43192:71;43260:1;43249:9;43245:17;43236:6;43192:71;:::i;:::-;43273:72;43341:2;43330:9;43326:18;43317:6;43273:72;:::i;:::-;43355:80;43431:2;43420:9;43416:18;43407:6;43355:80;:::i;:::-;43445;43521:2;43510:9;43506:18;43497:6;43445:80;:::i;:::-;43535:73;43603:3;43592:9;43588:19;43579:6;43535:73;:::i;:::-;43618;43686:3;43675:9;43671:19;43662:6;43618:73;:::i;:::-;42891:807;;;;;;;;;:::o;43704:663::-;43792:6;43800;43808;43857:2;43845:9;43836:7;43832:23;43828:32;43825:119;;;43863:79;;:::i;:::-;43825:119;43983:1;44008:64;44064:7;44055:6;44044:9;44040:22;44008:64;:::i;:::-;43998:74;;43954:128;44121:2;44147:64;44203:7;44194:6;44183:9;44179:22;44147:64;:::i;:::-;44137:74;;44092:129;44260:2;44286:64;44342:7;44333:6;44322:9;44318:22;44286:64;:::i;:::-;44276:74;;44231:129;43704:663;;;;;:::o

Swarm Source

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