ETH Price: $3,509.52 (+2.59%)
Gas: 4 Gwei

Token

Jeet Repellent (JEETREPEL)
 

Overview

Max Total Supply

1,000,000 JEETREPEL

Holders

48

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
3,797.513805118233766997 JEETREPEL

Value
$0.00
0xda43faa4e11e99b30bcd64a80c69b9809f03ce1f
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:
JeetRepellent

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-31
*/

/**
Tired of every project dying within the first 60 minutes? Get yourself some $JEETREPEL,
a revolutionary coin designed to combat early profit taking. Jeet Repellent features a 
time degrading sell tax that promotes holding and stops jeeting in its tracks.

https://www.jeetrepellent.com/

https://t.me/jeetrepellent

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.13;

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

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

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

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

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

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

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

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

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

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

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

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

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;

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

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

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

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

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

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

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

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

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, amount);

        return true;
    }

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

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

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

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

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

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

        _totalSupply += 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);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

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

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

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

    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(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint 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 (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint 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 (uint);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    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 (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract JeetRepellent is ERC20, Ownable {

    IUniswapV2Router02 public uniswapV2Router;
    address public  uniswapV2Pair;

    bool private swapping;

    address public deadWallet = 0x000000000000000000000000000000000000dEaD;
    address public marketingWallet = 0xFDAeF35DFC30c9F6c2bDC0c271d0897C51cdF18E;

    uint256 public swapTokensAtAmount = 200 * (10**18);

    uint256 public liquidityFee = 0;
    uint256 public marketingFee = 32;
    uint256 public buybackFee = 0;
    uint256 public totalFees = liquidityFee + marketingFee + buybackFee;

    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public automatedMarketMakerPairs;

    mapping (address => uint256) public lastBuy;

    uint public accumulatedBuybackETH = 0;
    uint public ethValueForBuyBurn = 15 * (10**16); // 0.15 ETH

    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    constructor (address _newOwner) ERC20("Jeet Repellent", "JEETREPEL") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
         // Create a uniswap pair for this new token
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = _uniswapV2Pair;

        _setAutomatedMarketMakerPair(_uniswapV2Pair, true);

        excludeFromFees(_newOwner, true);
        excludeFromFees(address(this), true);
        
        _isExcludedFromMaxWalletLimit[_newOwner] = true;
        _isExcludedFromMaxWalletLimit[address(0)] = true;
        _isExcludedFromMaxWalletLimit[address(this)] = true;
        _isExcludedFromMaxWalletLimit[deadWallet] = true;

        _isExcludedFromMaxTxLimit[_newOwner] = true;
        _isExcludedFromMaxTxLimit[address(0)] = true;
        _isExcludedFromMaxTxLimit[address(this)] = true;
        _isExcludedFromMaxTxLimit[deadWallet] = true;

        _mint(_newOwner, 1_000_000 * (10**18));
        transferOwnership(_newOwner);
    }

    receive() external payable {

  	}
      
    function updateUniswapV2Router(address newAddress) public onlyOwner {
        require(newAddress != address(uniswapV2Router), "The router already has that address");
        emit UpdateUniswapV2Router(newAddress, address(uniswapV2Router));
        uniswapV2Router = IUniswapV2Router02(newAddress);
        address _uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory())
            .createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Pair = _uniswapV2Pair;
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        require(_isExcludedFromFees[account] != excluded, "Account is already the value of 'excluded'");
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

    function setSwapTokensAtAmount(uint256 amount) external onlyOwner{
        require(amount > totalSupply() / 100000, "Amount must be greater than 0.001% of total supply");
        swapTokensAtAmount = amount;
    }

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

        _setAutomatedMarketMakerPair(pair, value);
    }
 
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        require(automatedMarketMakerPairs[pair] != value, "Automated market maker pair is already set to that value");
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function setFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _buybackFee) external onlyOwner {
        marketingFee = _marketingFee;
        liquidityFee = _liquidityFee;
        buybackFee = _buybackFee;
        totalFees = marketingFee + liquidityFee + buybackFee;
        require(totalFees <= 3, "Total fees must be lower than 36%");
    }

    function setMarketingWallet(address _marketingWallet) external onlyOwner {
        marketingWallet = _marketingWallet;
    }

    function claimStuckTokens(address token) external onlyOwner {
        require(token != address(this), "Owner cannot claim native tokens");
        if (token == address(0x0)) {
            payable(msg.sender).transfer(address(this).balance);
            return;
        }
        IERC20 ERC20token = IERC20(token);
        uint256 balance = ERC20token.balanceOf(address(this));
        ERC20token.transfer(msg.sender, balance);
    }

    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 (maxWalletLimitEnabled) {
            if (_isExcludedFromMaxWalletLimit[from] == false
                && _isExcludedFromMaxWalletLimit[to] == false &&
                to != uniswapV2Pair
            ) {
                uint balance  = balanceOf(to);
                require(balance + amount <= maxWalletAmount(), "MaxWallet: Transfer amount exceeds the maxWalletAmount");
            }
        }

        if (maxTransactionLimitEnabled) {
            if (_isExcludedFromMaxTxLimit[from] == false
                && _isExcludedFromMaxTxLimit[to] == false
            ) {
                if (from == uniswapV2Pair) {
                    require(amount <= maxTransferAmountBuy(), "AntiWhale: Transfer amount exceeds the maxTransferAmount");
                }else{
                    require(amount <= maxTransferAmountSell(), "AntiWhale: Transfer amount exceeds the maxTransferAmount");
                }
            }
        }
        

		uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if( canSwap &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            from != owner() &&
            to != owner() &&
            totalFees != 0
        ) {
            swapping = true;

            uint256 liqTokensToAdd = contractTokenBalance * liquidityFee / 2 / totalFees;
            contractTokenBalance -= liqTokensToAdd;

            uint initBalance = address(this).balance;
            swapTokensForEth(contractTokenBalance);
            uint finalBalance = address(this).balance - (initBalance);
            uint ethFee = totalFees * 2 - liquidityFee;


            if(marketingFee > 0) {
                uint256 marketingETH = finalBalance * (2 * marketingFee) / ethFee;
                payable(marketingWallet).transfer(marketingETH);
            }

            if(liquidityFee > 0) {
                uint256 liqETH = finalBalance * liquidityFee / ethFee;
                addLiquidity(liqTokensToAdd, liqETH);
            }

            if(buybackFee > 0) {
                uint256 buybackETH = finalBalance * (2 * buybackFee) / ethFee;
                accumulatedBuybackETH += buybackETH;
                if (accumulatedBuybackETH > ethValueForBuyBurn) {
                    if(address(this).balance >= accumulatedBuybackETH) {
                        buyBackAndBurn(accumulatedBuybackETH);
                    }else{
                        buyBackAndBurn(address(this).balance);
                    }
                    accumulatedBuybackETH = 0;
                }
            }       

            swapping = false;
        }

        bool takeFee = !swapping;

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

        if(from == uniswapV2Pair) {
            takeFee = false;      
        }
        
        if(block.timestamp - lastBuy[from] > 660 minutes) {
            takeFee = false;
        }

        if(takeFee) {                                       
        	uint256 fees = (amount * totalFees) / 100;
            uint256 minutesSinceBuy = (block.timestamp - lastBuy[from]) / 1200;
            uint256 feePercentage = 32 - minutesSinceBuy;
            fees = (amount * feePercentage) / 100;

        	amount = amount - fees;

            super._transfer(from, address(this), fees);
        }
        
        if(from == uniswapV2Pair) {
            lastBuy[to] = block.timestamp;
        }  

        super._transfer(from, to, amount);

    }

    function checkMyFees(address checkAddress) public view returns (uint256 currentTax) {
        currentTax = (block.timestamp - lastBuy[checkAddress]) / 1200;
        if ((32 - currentTax) <= 0) {
            return 0;
        }
        return 32 - currentTax;
    }      

    function startBuyback(uint valETH) public payable onlyOwner {
        require(msg.value >= valETH, "eth invalid");
        buyBackAndBurn(msg.value);
    }

    function setETHValueForBuyBurn(uint value) public onlyOwner {
        ethValueForBuyBurn = value;
    }

    function buyBackAndBurn(uint256 amount) internal {
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = address(this);

        uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{ value: amount }(
        0, 
        path, 
        deadWallet, 
        block.timestamp);
    }



    function swapAndLiquify(uint256 tokens) private {
       // split the contract balance into halves
        uint256 half = tokens / 2;
        uint256 otherHalf = tokens - half;

        // capture the contract's current ETH balance.
        // this is so that we can capture exactly the amount of ETH that the
        // swap creates, and not make the liquidity event include any ETH that
        // has been manually sent to the contract
        uint256 initialBalance = address(this).balance;

        // swap tokens for ETH
        swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        // how much ETH did we just swap into?
        uint256 newBalance = address(this).balance - initialBalance;

        // add liquidity to uniswap
        addLiquidity(otherHalf, newBalance);

        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

    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
            deadWallet,
            block.timestamp
        );
    }
    //=======MaxWallet=======//
    mapping(address => bool) private _isExcludedFromMaxWalletLimit;
    bool public maxWalletLimitEnabled = true;
    uint256 private maxWalletLimitRate = 30;

    function setEnableMaxWallet(bool enable) public onlyOwner {
        require(enable != maxWalletLimitEnabled, "Max wallet limit is already that state");
        maxWalletLimitEnabled = enable;
    }

    function isExcludedFromMaxWallet(address account) public view returns(bool) {
        return _isExcludedFromMaxWalletLimit[account];
    }

    function maxWalletAmount() public view returns (uint256) {
        return totalSupply() * maxWalletLimitRate / 1000;
    }

    function setMaxWalletRate_Denominator1000(uint256 _val) public onlyOwner {
        require(_val >= 10, "Max wallet percentage cannot be lower than 1%");
        maxWalletLimitRate = _val;
    }

    function setExcludeFromMaxWallet(address account, bool exclude) public onlyOwner {
        require(_isExcludedFromMaxWalletLimit[account] != exclude, "Account is already set to that state");
        _isExcludedFromMaxWalletLimit[account] = exclude;
    }

    //=======MaxTransaction=======//
    mapping(address => bool) private _isExcludedFromMaxTxLimit;
    bool public maxTransactionLimitEnabled = true;
    uint256 private maxTransactionRateBuy = 15;   
    uint256 private maxTransactionRateSell = 15;

    function setEnableMaxTransactionLimit(bool enable) public onlyOwner {
        require(enable != maxTransactionLimitEnabled, "Max transaction limit is already that state");
        maxTransactionLimitEnabled = enable;
    }

    function isExcludedFromMaxTransaction(address account) public view returns(bool) {
        return _isExcludedFromMaxTxLimit[account];
    }
    
    function maxTransferAmountBuy() public view returns (uint256) {
        return totalSupply() * maxTransactionRateBuy / 1000;
    }

    function maxTransferAmountSell() public view returns (uint256) {
        return totalSupply() * maxTransactionRateSell / 1000;
    }

    function setMaxTransferRates_Denominator1000(uint256 _maxTransferRateBuy, uint256 _maxTransferRateSell) public onlyOwner {
        require(_maxTransferRateSell >= 1 && _maxTransferRateBuy >= 1, "Max Transaction limit cannot be lower than 0.1% of total supply"); 
        maxTransactionRateBuy  = _maxTransferRateBuy;
        maxTransactionRateSell = _maxTransferRateSell;
    }

    function setExcludedFromMaxTransactionLimit(address account, bool exclude) public onlyOwner {
        require(_isExcludedFromMaxTxLimit[account] != exclude, "Account is already set to that state");
        _isExcludedFromMaxTxLimit[account] = exclude;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"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"},{"inputs":[],"name":"accumulatedBuybackETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"buybackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"checkAddress","type":"address"}],"name":"checkMyFees","outputs":[{"internalType":"uint256","name":"currentTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadWallet","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":"ethValueForBuyBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"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":"isExcludedFromMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferAmountBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferAmountSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"renounceOwnership","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":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setETHValueForBuyBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"setExcludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"setExcludedFromMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_buybackFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTransferRateBuy","type":"uint256"},{"internalType":"uint256","name":"_maxTransferRateSell","type":"uint256"}],"name":"setMaxTransferRates_Denominator1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_val","type":"uint256"}],"name":"setMaxWalletRate_Denominator1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"valETH","type":"uint256"}],"name":"startBuyback","outputs":[],"stateMutability":"payable","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":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateUniswapV2Router","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073fdaef35dfc30c9f6c2bdc0c271d0897c51cdf18e600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550680ad78ebc5ac6200000600a556000600b556020600c556000600d55600d54600c54600b54620000cd919062000f8c565b620000d9919062000f8c565b600e556000601255670214e8348c4f00006013556001601560006101000a81548160ff021916908315150217905550601e6016556001601860006101000a81548160ff021916908315150217905550600f601955600f601a553480156200013f57600080fd5b5060405162006d8138038062006d81833981810160405281019062000165919062001053565b6040518060400160405280600e81526020017f4a65657420526570656c6c656e740000000000000000000000000000000000008152506040518060400160405280600981526020017f4a454554524550454c00000000000000000000000000000000000000000000008152508160039080519060200190620001e992919062000ea3565b5080600490805190602001906200020292919062000ea3565b5050506000620002176200082d60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000343919062001053565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d1919062001053565b6040518363ffffffff1660e01b8152600401620003f092919062001096565b6020604051808303816000875af115801562000410573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000436919062001053565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004cd8160016200083560201b60201c565b620004e08360016200096b60201b60201c565b620004f33060016200096b60201b60201c565b6001601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601460008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160146000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620008138369d3c21bcecceda100000062000b4d60201b60201c565b620008248362000cc560201b60201c565b5050506200144c565b600033905090565b801515601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503620008ca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008c1906200114a565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6200097b6200082d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a0490620011bc565b60405180910390fd5b801515600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150362000aa2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a999062001254565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000b41919062001293565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000bbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bb69062001300565b60405180910390fd5b62000bd36000838362000e9960201b60201c565b806002600082825462000be7919062000f8c565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000c3e919062000f8c565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000ca5919062001333565b60405180910390a362000cc16000838362000e9e60201b60201c565b5050565b62000cd56200082d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000d67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d5e90620011bc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000dd9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000dd090620013c6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b505050565b505050565b82805462000eb19062001417565b90600052602060002090601f01602090048101928262000ed5576000855562000f21565b82601f1062000ef057805160ff191683800117855562000f21565b8280016001018555821562000f21579182015b8281111562000f2057825182559160200191906001019062000f03565b5b50905062000f30919062000f34565b5090565b5b8082111562000f4f57600081600090555060010162000f35565b5090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000f998262000f53565b915062000fa68362000f53565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000fde5762000fdd62000f5d565b5b828201905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200101b8262000fee565b9050919050565b6200102d816200100e565b81146200103957600080fd5b50565b6000815190506200104d8162001022565b92915050565b6000602082840312156200106c576200106b62000fe9565b5b60006200107c848285016200103c565b91505092915050565b62001090816200100e565b82525050565b6000604082019050620010ad600083018562001085565b620010bc602083018462001085565b9392505050565b600082825260208201905092915050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b600062001132603883620010c3565b91506200113f82620010d4565b604082019050919050565b60006020820190508181036000830152620011658162001123565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620011a4602083620010c3565b9150620011b1826200116c565b602082019050919050565b60006020820190508181036000830152620011d78162001195565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b60006200123c602a83620010c3565b91506200124982620011de565b604082019050919050565b600060208201905081810360008301526200126f816200122d565b9050919050565b60008115159050919050565b6200128d8162001276565b82525050565b6000602082019050620012aa600083018462001282565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620012e8601f83620010c3565b9150620012f582620012b0565b602082019050919050565b600060208201905081810360008301526200131b81620012d9565b9050919050565b6200132d8162000f53565b82525050565b60006020820190506200134a600083018462001322565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000620013ae602683620010c3565b9150620013bb8262001350565b604082019050919050565b60006020820190508181036000830152620013e1816200139f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200143057607f821691505b602082108103620014465762001445620013e8565b5b50919050565b615925806200145c6000396000f3fe6080604052600436106102cd5760003560e01c8063715018a611610175578063afa4f3b2116100dc578063c5bb51bf11610095578063e2f456051161006f578063e2f4560514610b3d578063e700b14014610b68578063f2fde38b14610b84578063f9d0831a14610bad576102d4565b8063c5bb51bf14610aae578063cec10c1114610ad7578063dd62ed3e14610b00576102d4565b8063afa4f3b214610990578063b083296f146109b9578063b62496f5146109e2578063bc90aa0914610a1f578063c024666814610a48578063c1adf7bc14610a71576102d4565b806395d89b411161012e57806395d89b411461086c57806398118cb4146108975780639a7a23d6146108c2578063a457c2d7146108eb578063a9059cbb14610928578063aa4bde2814610965576102d4565b8063715018a61461078257806375f0a8741461079957806385141a77146107c45780638da5cb5b146107ef578063929f13601461081a578063940c0e2a14610843576102d4565b8063395093511161023457806356a6cabf116101ed57806365b8dbc0116101c757806365b8dbc0146106b45780636b67c4df146106dd5780636dd3d39f1461070857806370a0823114610745576102d4565b806356a6cabf1461063757806358093604146106605780635d098b381461068b576102d4565b806339509351146105115780633a3229121461054e5780633b2d081c1461058b5780633d161d0f146105b65780633f7d65f9146105e157806349bd5a5e1461060c576102d4565b806318160ddd1161028657806318160ddd146103eb57806318d9ceae1461041657806321a9d82a1461045357806323b872dd1461047e5780632ba86bf2146104bb578063313ce567146104e6576102d4565b806306fdde03146102d95780630795895314610304578063095ea7b31461032f5780630ebaaa7e1461036c57806313114a9d146103955780631694505e146103c0576102d4565b366102d457005b600080fd5b3480156102e557600080fd5b506102ee610bd6565b6040516102fb91906141a0565b60405180910390f35b34801561031057600080fd5b50610319610c68565b60405161032691906141db565b60405180910390f35b34801561033b57600080fd5b5061035660048036038101906103519190614285565b610c91565b60405161036391906142e0565b60405180910390f35b34801561037857600080fd5b50610393600480360381019061038e9190614327565b610caf565b005b3480156103a157600080fd5b506103aa610e33565b6040516103b791906141db565b60405180910390f35b3480156103cc57600080fd5b506103d5610e39565b6040516103e291906143c6565b60405180910390f35b3480156103f757600080fd5b50610400610e5f565b60405161040d91906141db565b60405180910390f35b34801561042257600080fd5b5061043d600480360381019061043891906143e1565b610e69565b60405161044a91906142e0565b60405180910390f35b34801561045f57600080fd5b50610468610ebf565b60405161047591906142e0565b60405180910390f35b34801561048a57600080fd5b506104a560048036038101906104a0919061440e565b610ed2565b6040516104b291906142e0565b60405180910390f35b3480156104c757600080fd5b506104d0610ff1565b6040516104dd91906142e0565b60405180910390f35b3480156104f257600080fd5b506104fb611004565b604051610508919061447d565b60405180910390f35b34801561051d57600080fd5b5061053860048036038101906105339190614285565b61100d565b60405161054591906142e0565b60405180910390f35b34801561055a57600080fd5b50610575600480360381019061057091906143e1565b6110b9565b60405161058291906141db565b60405180910390f35b34801561059757600080fd5b506105a0611147565b6040516105ad91906141db565b60405180910390f35b3480156105c257600080fd5b506105cb61114d565b6040516105d891906141db565b60405180910390f35b3480156105ed57600080fd5b506105f6611176565b60405161060391906141db565b60405180910390f35b34801561061857600080fd5b5061062161117c565b60405161062e91906144a7565b60405180910390f35b34801561064357600080fd5b5061065e600480360381019061065991906144c2565b6111a2565b005b34801561066c57600080fd5b506106756112ab565b60405161068291906141db565b60405180910390f35b34801561069757600080fd5b506106b260048036038101906106ad91906143e1565b6112b1565b005b3480156106c057600080fd5b506106db60048036038101906106d691906143e1565b61138c565b005b3480156106e957600080fd5b506106f2611757565b6040516106ff91906141db565b60405180910390f35b34801561071457600080fd5b5061072f600480360381019061072a91906143e1565b61175d565b60405161073c91906142e0565b60405180910390f35b34801561075157600080fd5b5061076c600480360381019061076791906143e1565b6117b3565b60405161077991906141db565b60405180910390f35b34801561078e57600080fd5b506107976117fb565b005b3480156107a557600080fd5b506107ae611953565b6040516107bb91906144a7565b60405180910390f35b3480156107d057600080fd5b506107d9611979565b6040516107e691906144a7565b60405180910390f35b3480156107fb57600080fd5b5061080461199f565b60405161081191906144a7565b60405180910390f35b34801561082657600080fd5b50610841600480360381019061083c9190614327565b6119c9565b005b34801561084f57600080fd5b5061086a600480360381019061086591906144ef565b611b4d565b005b34801561087857600080fd5b50610881611c32565b60405161088e91906141a0565b60405180910390f35b3480156108a357600080fd5b506108ac611cc4565b6040516108b991906141db565b60405180910390f35b3480156108ce57600080fd5b506108e960048036038101906108e49190614327565b611cca565b005b3480156108f757600080fd5b50610912600480360381019061090d9190614285565b611dff565b60405161091f91906142e0565b60405180910390f35b34801561093457600080fd5b5061094f600480360381019061094a9190614285565b611eea565b60405161095c91906142e0565b60405180910390f35b34801561097157600080fd5b5061097a611f08565b60405161098791906141db565b60405180910390f35b34801561099c57600080fd5b506109b760048036038101906109b291906144ef565b611f31565b005b3480156109c557600080fd5b506109e060048036038101906109db919061451c565b612029565b005b3480156109ee57600080fd5b50610a096004803603810190610a0491906143e1565b612123565b604051610a1691906142e0565b60405180910390f35b348015610a2b57600080fd5b50610a466004803603810190610a4191906144ef565b612143565b005b348015610a5457600080fd5b50610a6f6004803603810190610a6a9190614327565b6121e4565b005b348015610a7d57600080fd5b50610a986004803603810190610a9391906143e1565b6123b6565b604051610aa591906141db565b60405180910390f35b348015610aba57600080fd5b50610ad56004803603810190610ad091906144c2565b6123ce565b005b348015610ae357600080fd5b50610afe6004803603810190610af9919061455c565b6124d7565b005b348015610b0c57600080fd5b50610b276004803603810190610b2291906145af565b6125f1565b604051610b3491906141db565b60405180910390f35b348015610b4957600080fd5b50610b52612678565b604051610b5f91906141db565b60405180910390f35b610b826004803603810190610b7d91906144ef565b61267e565b005b348015610b9057600080fd5b50610bab6004803603810190610ba691906143e1565b612764565b005b348015610bb957600080fd5b50610bd46004803603810190610bcf91906143e1565b61292a565b005b606060038054610be59061461e565b80601f0160208091040260200160405190810160405280929190818152602001828054610c119061461e565b8015610c5e5780601f10610c3357610100808354040283529160200191610c5e565b820191906000526020600020905b815481529060010190602001808311610c4157829003601f168201915b5050505050905090565b60006103e8601a54610c78610e5f565b610c82919061467e565b610c8c9190614707565b905090565b6000610ca5610c9e612bb7565b8484612bbf565b6001905092915050565b610cb7612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3d90614784565b60405180910390fd5b801515601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610dd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcf90614816565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601560009054906101000a900460ff1681565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f1e612bb7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610fda5782811015610fc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbc906148a8565b60405180910390fd5b610fd985610fd1612bb7565b858403612bbf565b5b610fe5858585612d88565b60019150509392505050565b601860009054906101000a900460ff1681565b60006012905090565b60006110af61101a612bb7565b848460016000611028612bb7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110aa91906148c8565b612bbf565b6001905092915050565b60006104b0601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442611109919061491e565b6111139190614707565b90506000816020611124919061491e565b116111325760009050611142565b80602061113f919061491e565b90505b919050565b600d5481565b60006103e860195461115d610e5f565b611167919061467e565b6111719190614707565b905090565b60125481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111aa612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611239576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123090614784565b60405180910390fd5b601860009054906101000a900460ff1615158115150361128e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611285906149c4565b60405180910390fd5b80601860006101000a81548160ff02191690831515021790555050565b60135481565b6112b9612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133f90614784565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611394612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141a90614784565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114aa90614a56565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e60405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116039190614a8b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561168c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b09190614a8b565b6040518363ffffffff1660e01b81526004016116cd929190614ab8565b6020604051808303816000875af11580156116ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117109190614a8b565b905080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600c5481565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611803612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188990614784565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119d1612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5790614784565b60405180910390fd5b801515601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae990614816565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611b55612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdb90614784565b60405180910390fd5b600a811015611c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1f90614b53565b60405180910390fd5b8060168190555050565b606060048054611c419061461e565b80601f0160208091040260200160405190810160405280929190818152602001828054611c6d9061461e565b8015611cba5780601f10611c8f57610100808354040283529160200191611cba565b820191906000526020600020905b815481529060010190602001808311611c9d57829003601f168201915b5050505050905090565b600b5481565b611cd2612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5890614784565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611df1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de890614c0b565b60405180910390fd5b611dfb82826137d1565b5050565b60008060016000611e0e612bb7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec290614c9d565b60405180910390fd5b611edf611ed6612bb7565b85858403612bbf565b600191505092915050565b6000611efe611ef7612bb7565b8484612d88565b6001905092915050565b60006103e8601654611f18610e5f565b611f22919061467e565b611f2c9190614707565b905090565b611f39612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbf90614784565b60405180910390fd5b620186a0611fd4610e5f565b611fde9190614707565b811161201f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201690614d2f565b60405180910390fd5b80600a8190555050565b612031612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b790614784565b60405180910390fd5b600181101580156120d2575060018210155b612111576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210890614dc1565b60405180910390fd5b8160198190555080601a819055505050565b60106020528060005260406000206000915054906101000a900460ff1681565b61214b612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d190614784565b60405180910390fd5b8060138190555050565b6121ec612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461227b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227290614784565b60405180910390fd5b801515600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150361230d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230490614e53565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516123aa91906142e0565b60405180910390a25050565b60116020528060005260406000206000915090505481565b6123d6612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245c90614784565b60405180910390fd5b601560009054906101000a900460ff161515811515036124ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b190614ee5565b60405180910390fd5b80601560006101000a81548160ff02191690831515021790555050565b6124df612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461256e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256590614784565b60405180910390fd5b82600c8190555081600b8190555080600d81905550600d54600b54600c5461259691906148c8565b6125a091906148c8565b600e819055506003600e5411156125ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e390614f77565b60405180910390fd5b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b612686612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270c90614784565b60405180910390fd5b80341015612758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274f90614fe3565b60405180910390fd5b61276134613904565b50565b61276c612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f290614784565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361286a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286190615075565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612932612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b890614784565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a26906150e1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612aaf573373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612aa9573d6000803e3d6000fd5b50612bb4565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612aef91906144a7565b602060405180830381865afa158015612b0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b309190615116565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612b6d929190615143565b6020604051808303816000875af1158015612b8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb09190615181565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2590615220565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c94906152b2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612d7b91906141db565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dee90615344565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5d906153d6565b60405180910390fd5b60008103612e7f57612e7a83836000613b3b565b6137cc565b601560009054906101000a900460ff16156130085760001515601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515148015612f44575060001515601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b8015612f9e5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613007576000612fae836117b3565b9050612fb8611f08565b8282612fc491906148c8565b1115613005576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ffc90615468565b60405180910390fd5b505b5b601860009054906101000a900460ff16156131c35760001515601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480156130cd575060001515601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b156131c257600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036131765761312f61114d565b811115613171576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613168906154fa565b60405180910390fd5b6131c1565b61317e610c68565b8111156131c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131b7906154fa565b60405180910390fd5b5b5b5b60006131ce306117b3565b90506000600a5482101590508080156131f45750600760149054906101000a900460ff16155b801561324a5750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613289575061325961199f565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156132c8575061329861199f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156132d757506000600e5414155b156134e8576001600760146101000a81548160ff0219169083151502179055506000600e546002600b548561330c919061467e565b6133169190614707565b6133209190614707565b9050808361332e919061491e565b9250600047905061333e84613dba565b6000814761334c919061491e565b90506000600b546002600e54613362919061467e565b61336c919061491e565b90506000600c54111561340d57600081600c54600261338b919061467e565b84613396919061467e565b6133a09190614707565b9050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561340a573d6000803e3d6000fd5b50505b6000600b54111561344157600081600b5484613429919061467e565b6134339190614707565b905061343f8582613ffd565b505b6000600d5411156134c857600081600d54600261345e919061467e565b84613469919061467e565b6134739190614707565b9050806012600082825461348791906148c8565b9250508190555060135460125411156134c65760125447106134b3576134ae601254613904565b6134bd565b6134bc47613904565b5b60006012819055505b505b6000600760146101000a81548160ff021916908315150217905550505050505b6000600760149054906101000a900460ff16159050600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061359e5750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156135a857600090505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361360257600090505b619ab0601160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442613650919061491e565b111561365b57600090505b80156137235760006064600e5486613673919061467e565b61367d9190614707565b905060006104b0601160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054426136cf919061491e565b6136d99190614707565b905060008160206136ea919061491e565b9050606481886136fa919061467e565b6137049190614707565b92508287613712919061491e565b965061371f893085613b3b565b5050505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036137bd5742601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6137c8868686613b3b565b5050505b505050565b801515601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503613863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161385a9061558c565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600267ffffffffffffffff811115613921576139206155ac565b5b60405190808252806020026020018201604052801561394f5781602001602082028036833780820191505090505b509050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139e39190614a8b565b816000815181106139f7576139f66155db565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110613a4657613a456155db565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de9583600084600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401613b059493929190615703565b6000604051808303818588803b158015613b1e57600080fd5b505af1158015613b32573d6000803e3d6000fd5b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ba190615344565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c10906153d6565b60405180910390fd5b613c248383836140fd565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ca1906157c1565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613d3d91906148c8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613da191906141db565b60405180910390a3613db4848484614102565b50505050565b6000600267ffffffffffffffff811115613dd757613dd66155ac565b5b604051908082528060200260200182016040528015613e055781602001602082028036833780820191505090505b5090503081600081518110613e1d57613e1c6155db565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ec4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ee89190614a8b565b81600181518110613efc57613efb6155db565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f6330600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612bbf565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fc79594939291906157e1565b600060405180830381600087803b158015613fe157600080fd5b505af1158015613ff5573d6000803e3d6000fd5b505050505050565b61402a30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612bbf565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016140b39695949392919061583b565b60606040518083038185885af11580156140d1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906140f6919061589c565b5050505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614141578082015181840152602081019050614126565b83811115614150576000848401525b50505050565b6000601f19601f8301169050919050565b600061417282614107565b61417c8185614112565b935061418c818560208601614123565b61419581614156565b840191505092915050565b600060208201905081810360008301526141ba8184614167565b905092915050565b6000819050919050565b6141d5816141c2565b82525050565b60006020820190506141f060008301846141cc565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614226826141fb565b9050919050565b6142368161421b565b811461424157600080fd5b50565b6000813590506142538161422d565b92915050565b614262816141c2565b811461426d57600080fd5b50565b60008135905061427f81614259565b92915050565b6000806040838503121561429c5761429b6141f6565b5b60006142aa85828601614244565b92505060206142bb85828601614270565b9150509250929050565b60008115159050919050565b6142da816142c5565b82525050565b60006020820190506142f560008301846142d1565b92915050565b614304816142c5565b811461430f57600080fd5b50565b600081359050614321816142fb565b92915050565b6000806040838503121561433e5761433d6141f6565b5b600061434c85828601614244565b925050602061435d85828601614312565b9150509250929050565b6000819050919050565b600061438c614387614382846141fb565b614367565b6141fb565b9050919050565b600061439e82614371565b9050919050565b60006143b082614393565b9050919050565b6143c0816143a5565b82525050565b60006020820190506143db60008301846143b7565b92915050565b6000602082840312156143f7576143f66141f6565b5b600061440584828501614244565b91505092915050565b600080600060608486031215614427576144266141f6565b5b600061443586828701614244565b935050602061444686828701614244565b925050604061445786828701614270565b9150509250925092565b600060ff82169050919050565b61447781614461565b82525050565b6000602082019050614492600083018461446e565b92915050565b6144a18161421b565b82525050565b60006020820190506144bc6000830184614498565b92915050565b6000602082840312156144d8576144d76141f6565b5b60006144e684828501614312565b91505092915050565b600060208284031215614505576145046141f6565b5b600061451384828501614270565b91505092915050565b60008060408385031215614533576145326141f6565b5b600061454185828601614270565b925050602061455285828601614270565b9150509250929050565b600080600060608486031215614575576145746141f6565b5b600061458386828701614270565b935050602061459486828701614270565b92505060406145a586828701614270565b9150509250925092565b600080604083850312156145c6576145c56141f6565b5b60006145d485828601614244565b92505060206145e585828601614244565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061463657607f821691505b602082108103614649576146486145ef565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614689826141c2565b9150614694836141c2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146cd576146cc61464f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614712826141c2565b915061471d836141c2565b92508261472d5761472c6146d8565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061476e602083614112565b915061477982614738565b602082019050919050565b6000602082019050818103600083015261479d81614761565b9050919050565b7f4163636f756e7420697320616c72656164792073657420746f2074686174207360008201527f7461746500000000000000000000000000000000000000000000000000000000602082015250565b6000614800602483614112565b915061480b826147a4565b604082019050919050565b6000602082019050818103600083015261482f816147f3565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614892602883614112565b915061489d82614836565b604082019050919050565b600060208201905081810360008301526148c181614885565b9050919050565b60006148d3826141c2565b91506148de836141c2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156149135761491261464f565b5b828201905092915050565b6000614929826141c2565b9150614934836141c2565b9250828210156149475761494661464f565b5b828203905092915050565b7f4d6178207472616e73616374696f6e206c696d697420697320616c726561647960008201527f2074686174207374617465000000000000000000000000000000000000000000602082015250565b60006149ae602b83614112565b91506149b982614952565b604082019050919050565b600060208201905081810360008301526149dd816149a1565b9050919050565b7f54686520726f7574657220616c7265616479206861732074686174206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614a40602383614112565b9150614a4b826149e4565b604082019050919050565b60006020820190508181036000830152614a6f81614a33565b9050919050565b600081519050614a858161422d565b92915050565b600060208284031215614aa157614aa06141f6565b5b6000614aaf84828501614a76565b91505092915050565b6000604082019050614acd6000830185614498565b614ada6020830184614498565b9392505050565b7f4d61782077616c6c65742070657263656e746167652063616e6e6f742062652060008201527f6c6f776572207468616e20312500000000000000000000000000000000000000602082015250565b6000614b3d602d83614112565b9150614b4882614ae1565b604082019050919050565b60006020820190508181036000830152614b6c81614b30565b9050919050565b7f54686520556e697377617020706169722063616e6e6f742062652072656d6f7660008201527f65642066726f6d206175746f6d617465644d61726b65744d616b65725061697260208201527f7300000000000000000000000000000000000000000000000000000000000000604082015250565b6000614bf5604183614112565b9150614c0082614b73565b606082019050919050565b60006020820190508181036000830152614c2481614be8565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614c87602583614112565b9150614c9282614c2b565b604082019050919050565b60006020820190508181036000830152614cb681614c7a565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e20302e303060008201527f3125206f6620746f74616c20737570706c790000000000000000000000000000602082015250565b6000614d19603283614112565b9150614d2482614cbd565b604082019050919050565b60006020820190508181036000830152614d4881614d0c565b9050919050565b7f4d6178205472616e73616374696f6e206c696d69742063616e6e6f742062652060008201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c7900602082015250565b6000614dab603f83614112565b9150614db682614d4f565b604082019050919050565b60006020820190508181036000830152614dda81614d9e565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000614e3d602a83614112565b9150614e4882614de1565b604082019050919050565b60006020820190508181036000830152614e6c81614e30565b9050919050565b7f4d61782077616c6c6574206c696d697420697320616c7265616479207468617460008201527f2073746174650000000000000000000000000000000000000000000000000000602082015250565b6000614ecf602683614112565b9150614eda82614e73565b604082019050919050565b60006020820190508181036000830152614efe81614ec2565b9050919050565b7f546f74616c2066656573206d757374206265206c6f776572207468616e20333660008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b6000614f61602183614112565b9150614f6c82614f05565b604082019050919050565b60006020820190508181036000830152614f9081614f54565b9050919050565b7f65746820696e76616c6964000000000000000000000000000000000000000000600082015250565b6000614fcd600b83614112565b9150614fd882614f97565b602082019050919050565b60006020820190508181036000830152614ffc81614fc0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061505f602683614112565b915061506a82615003565b604082019050919050565b6000602082019050818103600083015261508e81615052565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e73600082015250565b60006150cb602083614112565b91506150d682615095565b602082019050919050565b600060208201905081810360008301526150fa816150be565b9050919050565b60008151905061511081614259565b92915050565b60006020828403121561512c5761512b6141f6565b5b600061513a84828501615101565b91505092915050565b60006040820190506151586000830185614498565b61516560208301846141cc565b9392505050565b60008151905061517b816142fb565b92915050565b600060208284031215615197576151966141f6565b5b60006151a58482850161516c565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061520a602483614112565b9150615215826151ae565b604082019050919050565b60006020820190508181036000830152615239816151fd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061529c602283614112565b91506152a782615240565b604082019050919050565b600060208201905081810360008301526152cb8161528f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061532e602583614112565b9150615339826152d2565b604082019050919050565b6000602082019050818103600083015261535d81615321565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006153c0602383614112565b91506153cb82615364565b604082019050919050565b600060208201905081810360008301526153ef816153b3565b9050919050565b7f4d617857616c6c65743a205472616e7366657220616d6f756e7420657863656560008201527f647320746865206d617857616c6c6574416d6f756e7400000000000000000000602082015250565b6000615452603683614112565b915061545d826153f6565b604082019050919050565b6000602082019050818103600083015261548181615445565b9050919050565b7f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560008201527f647320746865206d61785472616e73666572416d6f756e740000000000000000602082015250565b60006154e4603883614112565b91506154ef82615488565b604082019050919050565b60006020820190508181036000830152615513816154d7565b9050919050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b6000615576603883614112565b91506155818261551a565b604082019050919050565b600060208201905081810360008301526155a581615569565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061562f61562a6156258461560a565b614367565b6141c2565b9050919050565b61563f81615614565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61567a8161421b565b82525050565b600061568c8383615671565b60208301905092915050565b6000602082019050919050565b60006156b082615645565b6156ba8185615650565b93506156c583615661565b8060005b838110156156f65781516156dd8882615680565b97506156e883615698565b9250506001810190506156c9565b5085935050505092915050565b60006080820190506157186000830187615636565b818103602083015261572a81866156a5565b90506157396040830185614498565b61574660608301846141cc565b95945050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006157ab602683614112565b91506157b68261574f565b604082019050919050565b600060208201905081810360008301526157da8161579e565b9050919050565b600060a0820190506157f660008301886141cc565b6158036020830187615636565b818103604083015261581581866156a5565b90506158246060830185614498565b61583160808301846141cc565b9695505050505050565b600060c0820190506158506000830189614498565b61585d60208301886141cc565b61586a6040830187615636565b6158776060830186615636565b6158846080830185614498565b61589160a08301846141cc565b979650505050505050565b6000806000606084860312156158b5576158b46141f6565b5b60006158c386828701615101565b93505060206158d486828701615101565b92505060406158e586828701615101565b915050925092509256fea2646970667358221220ded2f8edfcea7d23f5ac989f221cafa6e0e8cdb58966f2cc5fa896849dd1e1b064736f6c634300080d00330000000000000000000000008b28a94b5d75fbfc8dfcc18c77932da38b1f8a2b

Deployed Bytecode

0x6080604052600436106102cd5760003560e01c8063715018a611610175578063afa4f3b2116100dc578063c5bb51bf11610095578063e2f456051161006f578063e2f4560514610b3d578063e700b14014610b68578063f2fde38b14610b84578063f9d0831a14610bad576102d4565b8063c5bb51bf14610aae578063cec10c1114610ad7578063dd62ed3e14610b00576102d4565b8063afa4f3b214610990578063b083296f146109b9578063b62496f5146109e2578063bc90aa0914610a1f578063c024666814610a48578063c1adf7bc14610a71576102d4565b806395d89b411161012e57806395d89b411461086c57806398118cb4146108975780639a7a23d6146108c2578063a457c2d7146108eb578063a9059cbb14610928578063aa4bde2814610965576102d4565b8063715018a61461078257806375f0a8741461079957806385141a77146107c45780638da5cb5b146107ef578063929f13601461081a578063940c0e2a14610843576102d4565b8063395093511161023457806356a6cabf116101ed57806365b8dbc0116101c757806365b8dbc0146106b45780636b67c4df146106dd5780636dd3d39f1461070857806370a0823114610745576102d4565b806356a6cabf1461063757806358093604146106605780635d098b381461068b576102d4565b806339509351146105115780633a3229121461054e5780633b2d081c1461058b5780633d161d0f146105b65780633f7d65f9146105e157806349bd5a5e1461060c576102d4565b806318160ddd1161028657806318160ddd146103eb57806318d9ceae1461041657806321a9d82a1461045357806323b872dd1461047e5780632ba86bf2146104bb578063313ce567146104e6576102d4565b806306fdde03146102d95780630795895314610304578063095ea7b31461032f5780630ebaaa7e1461036c57806313114a9d146103955780631694505e146103c0576102d4565b366102d457005b600080fd5b3480156102e557600080fd5b506102ee610bd6565b6040516102fb91906141a0565b60405180910390f35b34801561031057600080fd5b50610319610c68565b60405161032691906141db565b60405180910390f35b34801561033b57600080fd5b5061035660048036038101906103519190614285565b610c91565b60405161036391906142e0565b60405180910390f35b34801561037857600080fd5b50610393600480360381019061038e9190614327565b610caf565b005b3480156103a157600080fd5b506103aa610e33565b6040516103b791906141db565b60405180910390f35b3480156103cc57600080fd5b506103d5610e39565b6040516103e291906143c6565b60405180910390f35b3480156103f757600080fd5b50610400610e5f565b60405161040d91906141db565b60405180910390f35b34801561042257600080fd5b5061043d600480360381019061043891906143e1565b610e69565b60405161044a91906142e0565b60405180910390f35b34801561045f57600080fd5b50610468610ebf565b60405161047591906142e0565b60405180910390f35b34801561048a57600080fd5b506104a560048036038101906104a0919061440e565b610ed2565b6040516104b291906142e0565b60405180910390f35b3480156104c757600080fd5b506104d0610ff1565b6040516104dd91906142e0565b60405180910390f35b3480156104f257600080fd5b506104fb611004565b604051610508919061447d565b60405180910390f35b34801561051d57600080fd5b5061053860048036038101906105339190614285565b61100d565b60405161054591906142e0565b60405180910390f35b34801561055a57600080fd5b50610575600480360381019061057091906143e1565b6110b9565b60405161058291906141db565b60405180910390f35b34801561059757600080fd5b506105a0611147565b6040516105ad91906141db565b60405180910390f35b3480156105c257600080fd5b506105cb61114d565b6040516105d891906141db565b60405180910390f35b3480156105ed57600080fd5b506105f6611176565b60405161060391906141db565b60405180910390f35b34801561061857600080fd5b5061062161117c565b60405161062e91906144a7565b60405180910390f35b34801561064357600080fd5b5061065e600480360381019061065991906144c2565b6111a2565b005b34801561066c57600080fd5b506106756112ab565b60405161068291906141db565b60405180910390f35b34801561069757600080fd5b506106b260048036038101906106ad91906143e1565b6112b1565b005b3480156106c057600080fd5b506106db60048036038101906106d691906143e1565b61138c565b005b3480156106e957600080fd5b506106f2611757565b6040516106ff91906141db565b60405180910390f35b34801561071457600080fd5b5061072f600480360381019061072a91906143e1565b61175d565b60405161073c91906142e0565b60405180910390f35b34801561075157600080fd5b5061076c600480360381019061076791906143e1565b6117b3565b60405161077991906141db565b60405180910390f35b34801561078e57600080fd5b506107976117fb565b005b3480156107a557600080fd5b506107ae611953565b6040516107bb91906144a7565b60405180910390f35b3480156107d057600080fd5b506107d9611979565b6040516107e691906144a7565b60405180910390f35b3480156107fb57600080fd5b5061080461199f565b60405161081191906144a7565b60405180910390f35b34801561082657600080fd5b50610841600480360381019061083c9190614327565b6119c9565b005b34801561084f57600080fd5b5061086a600480360381019061086591906144ef565b611b4d565b005b34801561087857600080fd5b50610881611c32565b60405161088e91906141a0565b60405180910390f35b3480156108a357600080fd5b506108ac611cc4565b6040516108b991906141db565b60405180910390f35b3480156108ce57600080fd5b506108e960048036038101906108e49190614327565b611cca565b005b3480156108f757600080fd5b50610912600480360381019061090d9190614285565b611dff565b60405161091f91906142e0565b60405180910390f35b34801561093457600080fd5b5061094f600480360381019061094a9190614285565b611eea565b60405161095c91906142e0565b60405180910390f35b34801561097157600080fd5b5061097a611f08565b60405161098791906141db565b60405180910390f35b34801561099c57600080fd5b506109b760048036038101906109b291906144ef565b611f31565b005b3480156109c557600080fd5b506109e060048036038101906109db919061451c565b612029565b005b3480156109ee57600080fd5b50610a096004803603810190610a0491906143e1565b612123565b604051610a1691906142e0565b60405180910390f35b348015610a2b57600080fd5b50610a466004803603810190610a4191906144ef565b612143565b005b348015610a5457600080fd5b50610a6f6004803603810190610a6a9190614327565b6121e4565b005b348015610a7d57600080fd5b50610a986004803603810190610a9391906143e1565b6123b6565b604051610aa591906141db565b60405180910390f35b348015610aba57600080fd5b50610ad56004803603810190610ad091906144c2565b6123ce565b005b348015610ae357600080fd5b50610afe6004803603810190610af9919061455c565b6124d7565b005b348015610b0c57600080fd5b50610b276004803603810190610b2291906145af565b6125f1565b604051610b3491906141db565b60405180910390f35b348015610b4957600080fd5b50610b52612678565b604051610b5f91906141db565b60405180910390f35b610b826004803603810190610b7d91906144ef565b61267e565b005b348015610b9057600080fd5b50610bab6004803603810190610ba691906143e1565b612764565b005b348015610bb957600080fd5b50610bd46004803603810190610bcf91906143e1565b61292a565b005b606060038054610be59061461e565b80601f0160208091040260200160405190810160405280929190818152602001828054610c119061461e565b8015610c5e5780601f10610c3357610100808354040283529160200191610c5e565b820191906000526020600020905b815481529060010190602001808311610c4157829003601f168201915b5050505050905090565b60006103e8601a54610c78610e5f565b610c82919061467e565b610c8c9190614707565b905090565b6000610ca5610c9e612bb7565b8484612bbf565b6001905092915050565b610cb7612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3d90614784565b60405180910390fd5b801515601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610dd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcf90614816565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601560009054906101000a900460ff1681565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f1e612bb7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610fda5782811015610fc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbc906148a8565b60405180910390fd5b610fd985610fd1612bb7565b858403612bbf565b5b610fe5858585612d88565b60019150509392505050565b601860009054906101000a900460ff1681565b60006012905090565b60006110af61101a612bb7565b848460016000611028612bb7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110aa91906148c8565b612bbf565b6001905092915050565b60006104b0601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442611109919061491e565b6111139190614707565b90506000816020611124919061491e565b116111325760009050611142565b80602061113f919061491e565b90505b919050565b600d5481565b60006103e860195461115d610e5f565b611167919061467e565b6111719190614707565b905090565b60125481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111aa612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611239576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123090614784565b60405180910390fd5b601860009054906101000a900460ff1615158115150361128e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611285906149c4565b60405180910390fd5b80601860006101000a81548160ff02191690831515021790555050565b60135481565b6112b9612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133f90614784565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611394612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141a90614784565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114aa90614a56565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e60405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116039190614a8b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561168c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b09190614a8b565b6040518363ffffffff1660e01b81526004016116cd929190614ab8565b6020604051808303816000875af11580156116ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117109190614a8b565b905080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600c5481565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611803612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188990614784565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119d1612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5790614784565b60405180910390fd5b801515601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae990614816565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611b55612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdb90614784565b60405180910390fd5b600a811015611c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1f90614b53565b60405180910390fd5b8060168190555050565b606060048054611c419061461e565b80601f0160208091040260200160405190810160405280929190818152602001828054611c6d9061461e565b8015611cba5780601f10611c8f57610100808354040283529160200191611cba565b820191906000526020600020905b815481529060010190602001808311611c9d57829003601f168201915b5050505050905090565b600b5481565b611cd2612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5890614784565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611df1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de890614c0b565b60405180910390fd5b611dfb82826137d1565b5050565b60008060016000611e0e612bb7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec290614c9d565b60405180910390fd5b611edf611ed6612bb7565b85858403612bbf565b600191505092915050565b6000611efe611ef7612bb7565b8484612d88565b6001905092915050565b60006103e8601654611f18610e5f565b611f22919061467e565b611f2c9190614707565b905090565b611f39612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbf90614784565b60405180910390fd5b620186a0611fd4610e5f565b611fde9190614707565b811161201f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201690614d2f565b60405180910390fd5b80600a8190555050565b612031612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b790614784565b60405180910390fd5b600181101580156120d2575060018210155b612111576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210890614dc1565b60405180910390fd5b8160198190555080601a819055505050565b60106020528060005260406000206000915054906101000a900460ff1681565b61214b612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d190614784565b60405180910390fd5b8060138190555050565b6121ec612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461227b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227290614784565b60405180910390fd5b801515600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150361230d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230490614e53565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516123aa91906142e0565b60405180910390a25050565b60116020528060005260406000206000915090505481565b6123d6612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245c90614784565b60405180910390fd5b601560009054906101000a900460ff161515811515036124ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b190614ee5565b60405180910390fd5b80601560006101000a81548160ff02191690831515021790555050565b6124df612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461256e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256590614784565b60405180910390fd5b82600c8190555081600b8190555080600d81905550600d54600b54600c5461259691906148c8565b6125a091906148c8565b600e819055506003600e5411156125ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e390614f77565b60405180910390fd5b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b612686612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270c90614784565b60405180910390fd5b80341015612758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274f90614fe3565b60405180910390fd5b61276134613904565b50565b61276c612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f290614784565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361286a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286190615075565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612932612bb7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b890614784565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a26906150e1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612aaf573373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612aa9573d6000803e3d6000fd5b50612bb4565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612aef91906144a7565b602060405180830381865afa158015612b0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b309190615116565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612b6d929190615143565b6020604051808303816000875af1158015612b8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb09190615181565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2590615220565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c94906152b2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612d7b91906141db565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dee90615344565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5d906153d6565b60405180910390fd5b60008103612e7f57612e7a83836000613b3b565b6137cc565b601560009054906101000a900460ff16156130085760001515601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515148015612f44575060001515601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b8015612f9e5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613007576000612fae836117b3565b9050612fb8611f08565b8282612fc491906148c8565b1115613005576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ffc90615468565b60405180910390fd5b505b5b601860009054906101000a900460ff16156131c35760001515601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480156130cd575060001515601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b156131c257600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036131765761312f61114d565b811115613171576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613168906154fa565b60405180910390fd5b6131c1565b61317e610c68565b8111156131c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131b7906154fa565b60405180910390fd5b5b5b5b60006131ce306117b3565b90506000600a5482101590508080156131f45750600760149054906101000a900460ff16155b801561324a5750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613289575061325961199f565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156132c8575061329861199f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156132d757506000600e5414155b156134e8576001600760146101000a81548160ff0219169083151502179055506000600e546002600b548561330c919061467e565b6133169190614707565b6133209190614707565b9050808361332e919061491e565b9250600047905061333e84613dba565b6000814761334c919061491e565b90506000600b546002600e54613362919061467e565b61336c919061491e565b90506000600c54111561340d57600081600c54600261338b919061467e565b84613396919061467e565b6133a09190614707565b9050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561340a573d6000803e3d6000fd5b50505b6000600b54111561344157600081600b5484613429919061467e565b6134339190614707565b905061343f8582613ffd565b505b6000600d5411156134c857600081600d54600261345e919061467e565b84613469919061467e565b6134739190614707565b9050806012600082825461348791906148c8565b9250508190555060135460125411156134c65760125447106134b3576134ae601254613904565b6134bd565b6134bc47613904565b5b60006012819055505b505b6000600760146101000a81548160ff021916908315150217905550505050505b6000600760149054906101000a900460ff16159050600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061359e5750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156135a857600090505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361360257600090505b619ab0601160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442613650919061491e565b111561365b57600090505b80156137235760006064600e5486613673919061467e565b61367d9190614707565b905060006104b0601160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054426136cf919061491e565b6136d99190614707565b905060008160206136ea919061491e565b9050606481886136fa919061467e565b6137049190614707565b92508287613712919061491e565b965061371f893085613b3b565b5050505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036137bd5742601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6137c8868686613b3b565b5050505b505050565b801515601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503613863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161385a9061558c565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600267ffffffffffffffff811115613921576139206155ac565b5b60405190808252806020026020018201604052801561394f5781602001602082028036833780820191505090505b509050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139e39190614a8b565b816000815181106139f7576139f66155db565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110613a4657613a456155db565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de9583600084600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401613b059493929190615703565b6000604051808303818588803b158015613b1e57600080fd5b505af1158015613b32573d6000803e3d6000fd5b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ba190615344565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c10906153d6565b60405180910390fd5b613c248383836140fd565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ca1906157c1565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613d3d91906148c8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613da191906141db565b60405180910390a3613db4848484614102565b50505050565b6000600267ffffffffffffffff811115613dd757613dd66155ac565b5b604051908082528060200260200182016040528015613e055781602001602082028036833780820191505090505b5090503081600081518110613e1d57613e1c6155db565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ec4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ee89190614a8b565b81600181518110613efc57613efb6155db565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f6330600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612bbf565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fc79594939291906157e1565b600060405180830381600087803b158015613fe157600080fd5b505af1158015613ff5573d6000803e3d6000fd5b505050505050565b61402a30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612bbf565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016140b39695949392919061583b565b60606040518083038185885af11580156140d1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906140f6919061589c565b5050505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614141578082015181840152602081019050614126565b83811115614150576000848401525b50505050565b6000601f19601f8301169050919050565b600061417282614107565b61417c8185614112565b935061418c818560208601614123565b61419581614156565b840191505092915050565b600060208201905081810360008301526141ba8184614167565b905092915050565b6000819050919050565b6141d5816141c2565b82525050565b60006020820190506141f060008301846141cc565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614226826141fb565b9050919050565b6142368161421b565b811461424157600080fd5b50565b6000813590506142538161422d565b92915050565b614262816141c2565b811461426d57600080fd5b50565b60008135905061427f81614259565b92915050565b6000806040838503121561429c5761429b6141f6565b5b60006142aa85828601614244565b92505060206142bb85828601614270565b9150509250929050565b60008115159050919050565b6142da816142c5565b82525050565b60006020820190506142f560008301846142d1565b92915050565b614304816142c5565b811461430f57600080fd5b50565b600081359050614321816142fb565b92915050565b6000806040838503121561433e5761433d6141f6565b5b600061434c85828601614244565b925050602061435d85828601614312565b9150509250929050565b6000819050919050565b600061438c614387614382846141fb565b614367565b6141fb565b9050919050565b600061439e82614371565b9050919050565b60006143b082614393565b9050919050565b6143c0816143a5565b82525050565b60006020820190506143db60008301846143b7565b92915050565b6000602082840312156143f7576143f66141f6565b5b600061440584828501614244565b91505092915050565b600080600060608486031215614427576144266141f6565b5b600061443586828701614244565b935050602061444686828701614244565b925050604061445786828701614270565b9150509250925092565b600060ff82169050919050565b61447781614461565b82525050565b6000602082019050614492600083018461446e565b92915050565b6144a18161421b565b82525050565b60006020820190506144bc6000830184614498565b92915050565b6000602082840312156144d8576144d76141f6565b5b60006144e684828501614312565b91505092915050565b600060208284031215614505576145046141f6565b5b600061451384828501614270565b91505092915050565b60008060408385031215614533576145326141f6565b5b600061454185828601614270565b925050602061455285828601614270565b9150509250929050565b600080600060608486031215614575576145746141f6565b5b600061458386828701614270565b935050602061459486828701614270565b92505060406145a586828701614270565b9150509250925092565b600080604083850312156145c6576145c56141f6565b5b60006145d485828601614244565b92505060206145e585828601614244565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061463657607f821691505b602082108103614649576146486145ef565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614689826141c2565b9150614694836141c2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146cd576146cc61464f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614712826141c2565b915061471d836141c2565b92508261472d5761472c6146d8565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061476e602083614112565b915061477982614738565b602082019050919050565b6000602082019050818103600083015261479d81614761565b9050919050565b7f4163636f756e7420697320616c72656164792073657420746f2074686174207360008201527f7461746500000000000000000000000000000000000000000000000000000000602082015250565b6000614800602483614112565b915061480b826147a4565b604082019050919050565b6000602082019050818103600083015261482f816147f3565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614892602883614112565b915061489d82614836565b604082019050919050565b600060208201905081810360008301526148c181614885565b9050919050565b60006148d3826141c2565b91506148de836141c2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156149135761491261464f565b5b828201905092915050565b6000614929826141c2565b9150614934836141c2565b9250828210156149475761494661464f565b5b828203905092915050565b7f4d6178207472616e73616374696f6e206c696d697420697320616c726561647960008201527f2074686174207374617465000000000000000000000000000000000000000000602082015250565b60006149ae602b83614112565b91506149b982614952565b604082019050919050565b600060208201905081810360008301526149dd816149a1565b9050919050565b7f54686520726f7574657220616c7265616479206861732074686174206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614a40602383614112565b9150614a4b826149e4565b604082019050919050565b60006020820190508181036000830152614a6f81614a33565b9050919050565b600081519050614a858161422d565b92915050565b600060208284031215614aa157614aa06141f6565b5b6000614aaf84828501614a76565b91505092915050565b6000604082019050614acd6000830185614498565b614ada6020830184614498565b9392505050565b7f4d61782077616c6c65742070657263656e746167652063616e6e6f742062652060008201527f6c6f776572207468616e20312500000000000000000000000000000000000000602082015250565b6000614b3d602d83614112565b9150614b4882614ae1565b604082019050919050565b60006020820190508181036000830152614b6c81614b30565b9050919050565b7f54686520556e697377617020706169722063616e6e6f742062652072656d6f7660008201527f65642066726f6d206175746f6d617465644d61726b65744d616b65725061697260208201527f7300000000000000000000000000000000000000000000000000000000000000604082015250565b6000614bf5604183614112565b9150614c0082614b73565b606082019050919050565b60006020820190508181036000830152614c2481614be8565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614c87602583614112565b9150614c9282614c2b565b604082019050919050565b60006020820190508181036000830152614cb681614c7a565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e20302e303060008201527f3125206f6620746f74616c20737570706c790000000000000000000000000000602082015250565b6000614d19603283614112565b9150614d2482614cbd565b604082019050919050565b60006020820190508181036000830152614d4881614d0c565b9050919050565b7f4d6178205472616e73616374696f6e206c696d69742063616e6e6f742062652060008201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c7900602082015250565b6000614dab603f83614112565b9150614db682614d4f565b604082019050919050565b60006020820190508181036000830152614dda81614d9e565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000614e3d602a83614112565b9150614e4882614de1565b604082019050919050565b60006020820190508181036000830152614e6c81614e30565b9050919050565b7f4d61782077616c6c6574206c696d697420697320616c7265616479207468617460008201527f2073746174650000000000000000000000000000000000000000000000000000602082015250565b6000614ecf602683614112565b9150614eda82614e73565b604082019050919050565b60006020820190508181036000830152614efe81614ec2565b9050919050565b7f546f74616c2066656573206d757374206265206c6f776572207468616e20333660008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b6000614f61602183614112565b9150614f6c82614f05565b604082019050919050565b60006020820190508181036000830152614f9081614f54565b9050919050565b7f65746820696e76616c6964000000000000000000000000000000000000000000600082015250565b6000614fcd600b83614112565b9150614fd882614f97565b602082019050919050565b60006020820190508181036000830152614ffc81614fc0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061505f602683614112565b915061506a82615003565b604082019050919050565b6000602082019050818103600083015261508e81615052565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e73600082015250565b60006150cb602083614112565b91506150d682615095565b602082019050919050565b600060208201905081810360008301526150fa816150be565b9050919050565b60008151905061511081614259565b92915050565b60006020828403121561512c5761512b6141f6565b5b600061513a84828501615101565b91505092915050565b60006040820190506151586000830185614498565b61516560208301846141cc565b9392505050565b60008151905061517b816142fb565b92915050565b600060208284031215615197576151966141f6565b5b60006151a58482850161516c565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061520a602483614112565b9150615215826151ae565b604082019050919050565b60006020820190508181036000830152615239816151fd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061529c602283614112565b91506152a782615240565b604082019050919050565b600060208201905081810360008301526152cb8161528f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061532e602583614112565b9150615339826152d2565b604082019050919050565b6000602082019050818103600083015261535d81615321565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006153c0602383614112565b91506153cb82615364565b604082019050919050565b600060208201905081810360008301526153ef816153b3565b9050919050565b7f4d617857616c6c65743a205472616e7366657220616d6f756e7420657863656560008201527f647320746865206d617857616c6c6574416d6f756e7400000000000000000000602082015250565b6000615452603683614112565b915061545d826153f6565b604082019050919050565b6000602082019050818103600083015261548181615445565b9050919050565b7f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560008201527f647320746865206d61785472616e73666572416d6f756e740000000000000000602082015250565b60006154e4603883614112565b91506154ef82615488565b604082019050919050565b60006020820190508181036000830152615513816154d7565b9050919050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b6000615576603883614112565b91506155818261551a565b604082019050919050565b600060208201905081810360008301526155a581615569565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061562f61562a6156258461560a565b614367565b6141c2565b9050919050565b61563f81615614565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61567a8161421b565b82525050565b600061568c8383615671565b60208301905092915050565b6000602082019050919050565b60006156b082615645565b6156ba8185615650565b93506156c583615661565b8060005b838110156156f65781516156dd8882615680565b97506156e883615698565b9250506001810190506156c9565b5085935050505092915050565b60006080820190506157186000830187615636565b818103602083015261572a81866156a5565b90506157396040830185614498565b61574660608301846141cc565b95945050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006157ab602683614112565b91506157b68261574f565b604082019050919050565b600060208201905081810360008301526157da8161579e565b9050919050565b600060a0820190506157f660008301886141cc565b6158036020830187615636565b818103604083015261581581866156a5565b90506158246060830185614498565b61583160808301846141cc565b9695505050505050565b600060c0820190506158506000830189614498565b61585d60208301886141cc565b61586a6040830187615636565b6158776060830186615636565b6158846080830185614498565b61589160a08301846141cc565b979650505050505050565b6000806000606084860312156158b5576158b46141f6565b5b60006158c386828701615101565b93505060206158d486828701615101565b92505060406158e586828701615101565b915050925092509256fea2646970667358221220ded2f8edfcea7d23f5ac989f221cafa6e0e8cdb58966f2cc5fa896849dd1e1b064736f6c634300080d0033

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

0000000000000000000000008b28a94b5d75fbfc8dfcc18c77932da38b1f8a2b

-----Decoded View---------------
Arg [0] : _newOwner (address): 0x8B28a94B5D75fBFc8dFCc18c77932da38B1f8a2b

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000008b28a94b5d75fbfc8dfcc18c77932da38b1f8a2b


Deployed Bytecode Sourcemap

24641:14798:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6352:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38643:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8692:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39174:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25140:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24691:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7472:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38350:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36806:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9454:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37961:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7314:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10436:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33728:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25104:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38503:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25395:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24739:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38117:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25439:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29100:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27135:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25065:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37109:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7643:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5018:148;;;;;;;;;;;;;:::i;:::-;;24884:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24807:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4376:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37593:257;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37389:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6571:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25027:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28157:252;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11154:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7983:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37257:124;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27933:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38785:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25276:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34178:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27635:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25343:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36901:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28734:358;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8221:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24968:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34012:158;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5321:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29234:441;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6352:100;6406:13;6439:5;6432:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6352:100;:::o;38643:134::-;38697:7;38765:4;38740:22;;38724:13;:11;:13::i;:::-;:38;;;;:::i;:::-;:45;;;;:::i;:::-;38717:52;;38643:134;:::o;8692:169::-;8775:4;8792:39;8801:12;:10;:12::i;:::-;8815:7;8824:6;8792:8;:39::i;:::-;8849:4;8842:11;;8692:169;;;;:::o;39174:260::-;4598:12;:10;:12::i;:::-;4588:22;;:6;;;;;;;;;;;:22;;;4580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;39323:7:::1;39285:45;;:25;:34;39311:7;39285:34;;;;;;;;;;;;;;;;;;;;;;;;;:45;;::::0;39277:94:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;39419:7;39382:25;:34;39408:7;39382:34;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;39174:260:::0;;:::o;25140:67::-;;;;:::o;24691:41::-;;;;;;;;;;;;;:::o;7472:108::-;7533:7;7560:12;;7553:19;;7472:108;:::o;38350:141::-;38425:4;38449:25;:34;38475:7;38449:34;;;;;;;;;;;;;;;;;;;;;;;;;38442:41;;38350:141;;;:::o;36806:40::-;;;;;;;;;;;;;:::o;9454:573::-;9594:4;9611:24;9638:11;:19;9650:6;9638:19;;;;;;;;;;;;;;;:33;9658:12;:10;:12::i;:::-;9638:33;;;;;;;;;;;;;;;;9611:60;;9706:17;9686:16;:37;9682:265;;9768:6;9748:16;:26;;9740:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9863:57;9872:6;9880:12;:10;:12::i;:::-;9913:6;9894:16;:25;9863:8;:57::i;:::-;9682:265;9959:36;9969:6;9977:9;9988:6;9959:9;:36::i;:::-;10015:4;10008:11;;;9454:573;;;;;:::o;37961:45::-;;;;;;;;;;;;;:::o;7314:93::-;7372:5;7397:2;7390:9;;7314:93;:::o;10436:215::-;10524:4;10541:80;10550:12;:10;:12::i;:::-;10564:7;10610:10;10573:11;:25;10585:12;:10;:12::i;:::-;10573:25;;;;;;;;;;;;;;;:34;10599:7;10573:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;10541:8;:80::i;:::-;10639:4;10632:11;;10436:215;;;;:::o;33728:270::-;33792:18;33880:4;33855:7;:21;33863:12;33855:21;;;;;;;;;;;;;;;;33837:15;:39;;;;:::i;:::-;33836:48;;;;:::i;:::-;33823:61;;33920:1;33905:10;33900:2;:15;;;;:::i;:::-;33899:22;33895:63;;33945:1;33938:8;;;;33895:63;33980:10;33975:2;:15;;;;:::i;:::-;33968:22;;33728:270;;;;:::o;25104:29::-;;;;:::o;38503:132::-;38556:7;38623:4;38599:21;;38583:13;:11;:13::i;:::-;:37;;;;:::i;:::-;:44;;;;:::i;:::-;38576:51;;38503:132;:::o;25395:37::-;;;;:::o;24739:29::-;;;;;;;;;;;;;:::o;38117:225::-;4598:12;:10;:12::i;:::-;4588:22;;:6;;;;;;;;;;;:22;;;4580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;38214:26:::1;;;;;;;;;;;38204:36;;:6;:36;;::::0;38196:92:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;38328:6;38299:26;;:35;;;;;;;;;;;;;;;;;;38117:225:::0;:::o;25439:46::-;;;;:::o;29100:126::-;4598:12;:10;:12::i;:::-;4588:22;;:6;;;;;;;;;;;:22;;;4580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29202:16:::1;29184:15;;:34;;;;;;;;;;;;;;;;;;29100:126:::0;:::o;27135:492::-;4598:12;:10;:12::i;:::-;4588:22;;:6;;;;;;;;;;;:22;;;4580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27244:15:::1;;;;;;;;;;;27222:38;;:10;:38;;::::0;27214:86:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;27358:15;;;;;;;;;;;27316:59;;27338:10;27316:59;;;;;;;;;;;;27423:10;27386:15;;:48;;;;;;;;;;;;;;;;;;27445:22;27488:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27470:69;;;27548:4;27555:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27470:108;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27445:133;;27605:14;27589:13;;:30;;;;;;;;;;;;;;;;;;27203:424;27135:492:::0;:::o;25065:32::-;;;;:::o;37109:140::-;37179:4;37203:29;:38;37233:7;37203:38;;;;;;;;;;;;;;;;;;;;;;;;;37196:45;;37109:140;;;:::o;7643:127::-;7717:7;7744:9;:18;7754:7;7744:18;;;;;;;;;;;;;;;;7737:25;;7643:127;;;:::o;5018:148::-;4598:12;:10;:12::i;:::-;4588:22;;:6;;;;;;;;;;;:22;;;4580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5125:1:::1;5088:40;;5109:6;;;;;;;;;;;5088:40;;;;;;;;;;;;5156:1;5139:6;;:19;;;;;;;;;;;;;;;;;;5018:148::o:0;24884:75::-;;;;;;;;;;;;;:::o;24807:70::-;;;;;;;;;;;;;:::o;4376:79::-;4414:7;4441:6;;;;;;;;;;;4434:13;;4376:79;:::o;37593:257::-;4598:12;:10;:12::i;:::-;4588:22;;:6;;;;;;;;;;;:22;;;4580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37735:7:::1;37693:49;;:29;:38;37723:7;37693:38;;;;;;;;;;;;;;;;;;;;;;;;;:49;;::::0;37685:98:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;37835:7;37794:29;:38;37824:7;37794:38;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;37593:257:::0;;:::o;37389:196::-;4598:12;:10;:12::i;:::-;4588:22;;:6;;;;;;;;;;;:22;;;4580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37489:2:::1;37481:4;:10;;37473:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37573:4;37552:18;:25;;;;37389:196:::0;:::o;6571:104::-;6627:13;6660:7;6653:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6571:104;:::o;25027:31::-;;;;:::o;28157:252::-;4598:12;:10;:12::i;:::-;4588:22;;:6;;;;;;;;;;;:22;;;4580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28264:13:::1;;;;;;;;;;;28256:21;;:4;:21;;::::0;28248:99:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;28360:41;28389:4;28395:5;28360:28;:41::i;:::-;28157:252:::0;;:::o;11154:413::-;11247:4;11264:24;11291:11;:25;11303:12;:10;:12::i;:::-;11291:25;;;;;;;;;;;;;;;:34;11317:7;11291:34;;;;;;;;;;;;;;;;11264:61;;11364:15;11344:16;:35;;11336:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11457:67;11466:12;:10;:12::i;:::-;11480:7;11508:15;11489:16;:34;11457:8;:67::i;:::-;11555:4;11548:11;;;11154:413;;;;:::o;7983:175::-;8069:4;8086:42;8096:12;:10;:12::i;:::-;8110:9;8121:6;8086:9;:42::i;:::-;8146:4;8139:11;;7983:175;;;;:::o;37257:124::-;37305:7;37369:4;37348:18;;37332:13;:11;:13::i;:::-;:34;;;;:::i;:::-;:41;;;;:::i;:::-;37325:48;;37257:124;:::o;27933:216::-;4598:12;:10;:12::i;:::-;4588:22;;:6;;;;;;;;;;;:22;;;4580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28042:6:::1;28026:13;:11;:13::i;:::-;:22;;;;:::i;:::-;28017:6;:31;28009:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;28135:6;28114:18;:27;;;;27933:216:::0;:::o;38785:381::-;4598:12;:10;:12::i;:::-;4588:22;;:6;;;;;;;;;;;:22;;;4580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;38949:1:::1;38925:20;:25;;:53;;;;;38977:1;38954:19;:24;;38925:53;38917:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;39083:19;39058:21;:44;;;;39138:20;39113:22;:45;;;;38785:381:::0;;:::o;25276:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;34178:105::-;4598:12;:10;:12::i;:::-;4588:22;;:6;;;;;;;;;;;:22;;;4580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34270:5:::1;34249:18;:26;;;;34178:105:::0;:::o;27635:290::-;4598:12;:10;:12::i;:::-;4588:22;;:6;;;;;;;;;;;:22;;;4580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27760:8:::1;27728:40;;:19;:28;27748:7;27728:28;;;;;;;;;;;;;;;;;;;;;;;;;:40;;::::0;27720:95:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;27857:8;27826:19;:28;27846:7;27826:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;27899:7;27883:34;;;27908:8;27883:34;;;;;;:::i;:::-;;;;;;;;27635:290:::0;;:::o;25343:43::-;;;;;;;;;;;;;;;;;:::o;36901:200::-;4598:12;:10;:12::i;:::-;4588:22;;:6;;;;;;;;;;;:22;;;4580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36988:21:::1;;;;;;;;;;;36978:31;;:6;:31;;::::0;36970:82:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;37087:6;37063:21;;:30;;;;;;;;;;;;;;;;;;36901:200:::0;:::o;28734:358::-;4598:12;:10;:12::i;:::-;4588:22;;:6;;;;;;;;;;;:22;;;4580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28863:13:::1;28848:12;:28;;;;28902:13;28887:12;:28;;;;28939:11;28926:10;:24;;;;29003:10;;28988:12;;28973;;:27;;;;:::i;:::-;:40;;;;:::i;:::-;28961:9;:52;;;;29045:1;29032:9;;:14;;29024:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;28734:358:::0;;;:::o;8221:151::-;8310:7;8337:11;:18;8349:5;8337:18;;;;;;;;;;;;;;;:27;8356:7;8337:27;;;;;;;;;;;;;;;;8330:34;;8221:151;;;;:::o;24968:50::-;;;;:::o;34012:158::-;4598:12;:10;:12::i;:::-;4588:22;;:6;;;;;;;;;;;:22;;;4580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34104:6:::1;34091:9;:19;;34083:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;34137:25;34152:9;34137:14;:25::i;:::-;34012:158:::0;:::o;5321:244::-;4598:12;:10;:12::i;:::-;4588:22;;:6;;;;;;;;;;;:22;;;4580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5430:1:::1;5410:22;;:8;:22;;::::0;5402:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;5520:8;5491:38;;5512:6;;;;;;;;;;;5491:38;;;;;;;;;;;;5549:8;5540:6;;:17;;;;;;;;;;;;;;;;;;5321:244:::0;:::o;29234:441::-;4598:12;:10;:12::i;:::-;4588:22;;:6;;;;;;;;;;;:22;;;4580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29330:4:::1;29313:22;;:5;:22;;::::0;29305:67:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;29404:3;29387:21;;:5;:21;;::::0;29383:126:::1;;29433:10;29425:28;;:51;29454:21;29425:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;29491:7;;29383:126;29519:17;29546:5;29519:33;;29563:15;29581:10;:20;;;29610:4;29581:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29563:53;;29627:10;:19;;;29647:10;29659:7;29627:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29294:381;;4658:1;29234:441:::0;:::o;3527:98::-;3580:7;3607:10;3600:17;;3527:98;:::o;14838:380::-;14991:1;14974:19;;:5;:19;;;14966:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15072:1;15053:21;;:7;:21;;;15045:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15156:6;15126:11;:18;15138:5;15126:18;;;;;;;;;;;;;;;:27;15145:7;15126:27;;;;;;;;;;;;;;;:36;;;;15194:7;15178:32;;15187:5;15178:32;;;15203:6;15178:32;;;;;;:::i;:::-;;;;;;;;14838:380;;;:::o;29683:4037::-;29832:1;29816:18;;:4;:18;;;29808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29909:1;29895:16;;:2;:16;;;29887:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;29981:1;29971:6;:11;29968:92;;29999:28;30015:4;30021:2;30025:1;29999:15;:28::i;:::-;30042:7;;29968:92;30084:21;;;;;;;;;;;30080:407;;;30165:5;30126:44;;:29;:35;30156:4;30126:35;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;:107;;;;;30228:5;30191:42;;:29;:33;30221:2;30191:33;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;30126:107;:147;;;;;30260:13;;;;;;;;;;;30254:19;;:2;:19;;;;30126:147;30122:354;;;30308:12;30324:13;30334:2;30324:9;:13::i;:::-;30308:29;;30384:17;:15;:17::i;:::-;30374:6;30364:7;:16;;;;:::i;:::-;:37;;30356:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;30289:187;30122:354;30080:407;30503:26;;;;;;;;;;;30499:531;;;30585:5;30550:40;;:25;:31;30576:4;30550:31;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;:99;;;;;30644:5;30611:38;;:25;:29;30637:2;30611:29;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;30550:99;30546:473;;;30696:13;;;;;;;;;;;30688:21;;:4;:21;;;30684:320;;30752:22;:20;:22::i;:::-;30742:6;:32;;30734:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;30684:320;;;30900:23;:21;:23::i;:::-;30890:6;:33;;30882:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;30684:320;30546:473;30499:531;31046:28;31077:24;31095:4;31077:9;:24::i;:::-;31046:55;;31114:12;31153:18;;31129:20;:42;;31114:57;;31188:7;:33;;;;;31213:8;;;;;;;;;;;31212:9;31188:33;:82;;;;;31239:25;:31;31265:4;31239:31;;;;;;;;;;;;;;;;;;;;;;;;;31238:32;31188:82;:114;;;;;31295:7;:5;:7::i;:::-;31287:15;;:4;:15;;;;31188:114;:144;;;;;31325:7;:5;:7::i;:::-;31319:13;;:2;:13;;;;31188:144;:175;;;;;31362:1;31349:9;;:14;;31188:175;31184:1615;;;31401:4;31390:8;;:15;;;;;;;;;;;;;;;;;;31422:22;31489:9;;31485:1;31470:12;;31447:20;:35;;;;:::i;:::-;:39;;;;:::i;:::-;:51;;;;:::i;:::-;31422:76;;31537:14;31513:38;;;;;:::i;:::-;;;31568:16;31587:21;31568:40;;31623:38;31640:20;31623:16;:38::i;:::-;31676:17;31721:11;31696:21;:37;;;;:::i;:::-;31676:57;;31748:11;31778:12;;31774:1;31762:9;;:13;;;;:::i;:::-;:28;;;;:::i;:::-;31748:42;;31827:1;31812:12;;:16;31809:187;;;31849:20;31908:6;31892:12;;31888:1;:16;;;;:::i;:::-;31872:12;:33;;;;:::i;:::-;:42;;;;:::i;:::-;31849:65;;31941:15;;;;;;;;;;;31933:33;;:47;31967:12;31933:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31830:166;31809:187;32030:1;32015:12;;:16;32012:164;;;32052:14;32099:6;32084:12;;32069;:27;;;;:::i;:::-;:36;;;;:::i;:::-;32052:53;;32124:36;32137:14;32153:6;32124:12;:36::i;:::-;32033:143;32012:164;32208:1;32195:10;;:14;32192:556;;;32230:18;32285:6;32271:10;;32267:1;:14;;;;:::i;:::-;32251:12;:31;;;;:::i;:::-;:40;;;;:::i;:::-;32230:61;;32335:10;32310:21;;:35;;;;;;;:::i;:::-;;;;;;;;32392:18;;32368:21;;:42;32364:369;;;32463:21;;32438;:46;32435:231;;32513:37;32528:21;;32513:14;:37::i;:::-;32435:231;;;32605:37;32620:21;32605:14;:37::i;:::-;32435:231;32712:1;32688:21;:25;;;;32364:369;32211:537;32192:556;32782:5;32771:8;;:16;;;;;;;;;;;;;;;;;;31375:1424;;;;31184:1615;32811:12;32827:8;;;;;;;;;;;32826:9;32811:24;;32851:19;:25;32871:4;32851:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;32880:19;:23;32900:2;32880:23;;;;;;;;;;;;;;;;;;;;;;;;;32851:52;32848:99;;;32930:5;32920:15;;32848:99;32971:13;;;;;;;;;;;32963:21;;:4;:21;;;32960:74;;33011:5;33001:15;;32960:74;33091:11;33075:7;:13;33083:4;33075:13;;;;;;;;;;;;;;;;33057:15;:31;;;;:::i;:::-;:45;33054:92;;;33129:5;33119:15;;33054:92;33161:7;33158:403;;;33221:12;33259:3;33246:9;;33237:6;:18;;;;:::i;:::-;33236:26;;;;:::i;:::-;33221:41;;33277:23;33339:4;33322:7;:13;33330:4;33322:13;;;;;;;;;;;;;;;;33304:15;:31;;;;:::i;:::-;33303:40;;;;:::i;:::-;33277:66;;33358:21;33387:15;33382:2;:20;;;;:::i;:::-;33358:44;;33451:3;33434:13;33425:6;:22;;;;:::i;:::-;33424:30;;;;:::i;:::-;33417:37;;33486:4;33477:6;:13;;;;:::i;:::-;33468:22;;33507:42;33523:4;33537;33544;33507:15;:42::i;:::-;33170:391;;;33158:403;33592:13;;;;;;;;;;;33584:21;;:4;:21;;;33581:82;;33636:15;33622:7;:11;33630:2;33622:11;;;;;;;;;;;;;;;:29;;;;33581:82;33677:33;33693:4;33699:2;33703:6;33677:15;:33::i;:::-;29797:3923;;;29683:4037;;;;:::o;28418:308::-;28544:5;28509:40;;:25;:31;28535:4;28509:31;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;28501:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;28655:5;28621:25;:31;28647:4;28621:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;28712:5;28678:40;;28706:4;28678:40;;;;;;;;;;;;28418:308;;:::o;34291:359::-;34351:21;34389:1;34375:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34351:40;;34412:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34402:4;34407:1;34402:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;34463:4;34445;34450:1;34445:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;34481:15;;;;;;;;;;;:66;;;34556:6;34575:1;34588:4;34604:10;;;;;;;;;;;34626:15;34481:161;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34340:310;34291:359;:::o;12057:733::-;12215:1;12197:20;;:6;:20;;;12189:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12299:1;12278:23;;:9;:23;;;12270:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12354:47;12375:6;12383:9;12394:6;12354:20;:47::i;:::-;12414:21;12438:9;:17;12448:6;12438:17;;;;;;;;;;;;;;;;12414:41;;12491:6;12474:13;:23;;12466:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12612:6;12596:13;:22;12576:9;:17;12586:6;12576:17;;;;;;;;;;;;;;;:42;;;;12664:6;12640:9;:20;12650:9;12640:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;12705:9;12688:35;;12697:6;12688:35;;;12716:6;12688:35;;;;;;:::i;:::-;;;;;;;;12736:46;12756:6;12764:9;12775:6;12736:19;:46::i;:::-;12178:612;12057:733;;;:::o;35583:589::-;35709:21;35747:1;35733:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35709:40;;35778:4;35760;35765:1;35760:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;35804:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35794:4;35799:1;35794:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;35839:62;35856:4;35871:15;;;;;;;;;;;35889:11;35839:8;:62::i;:::-;35940:15;;;;;;;;;;;:66;;;36021:11;36047:1;36091:4;36118;36138:15;35940:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35638:534;35583:589;:::o;36180:518::-;36330:62;36347:4;36362:15;;;;;;;;;;;36380:11;36330:8;:62::i;:::-;36435:15;;;;;;;;;;;:31;;;36474:9;36507:4;36527:11;36553:1;36596;36639:10;;;;;;;;;;;36664:15;36435:255;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;36180:518;;:::o;15818:125::-;;;;:::o;16547:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:77::-;1434:7;1463:5;1452:16;;1397:77;;;:::o;1480:118::-;1567:24;1585:5;1567:24;:::i;:::-;1562:3;1555:37;1480:118;;:::o;1604:222::-;1697:4;1735:2;1724:9;1720:18;1712:26;;1748:71;1816:1;1805:9;1801:17;1792:6;1748:71;:::i;:::-;1604:222;;;;:::o;1913:117::-;2022:1;2019;2012:12;2159:126;2196:7;2236:42;2229:5;2225:54;2214:65;;2159:126;;;:::o;2291:96::-;2328:7;2357:24;2375:5;2357:24;:::i;:::-;2346:35;;2291:96;;;:::o;2393:122::-;2466:24;2484:5;2466:24;:::i;:::-;2459:5;2456:35;2446:63;;2505:1;2502;2495:12;2446:63;2393:122;:::o;2521:139::-;2567:5;2605:6;2592:20;2583:29;;2621:33;2648:5;2621:33;:::i;:::-;2521:139;;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:116::-;3916:21;3931:5;3916:21;:::i;:::-;3909:5;3906:32;3896:60;;3952:1;3949;3942:12;3896:60;3846:116;:::o;3968:133::-;4011:5;4049:6;4036:20;4027:29;;4065:30;4089:5;4065:30;:::i;:::-;3968:133;;;;:::o;4107:468::-;4172:6;4180;4229:2;4217:9;4208:7;4204:23;4200:32;4197:119;;;4235:79;;:::i;:::-;4197:119;4355:1;4380:53;4425:7;4416:6;4405:9;4401:22;4380:53;:::i;:::-;4370:63;;4326:117;4482:2;4508:50;4550:7;4541:6;4530:9;4526:22;4508:50;:::i;:::-;4498:60;;4453:115;4107:468;;;;;:::o;4581:60::-;4609:3;4630:5;4623:12;;4581:60;;;:::o;4647:142::-;4697:9;4730:53;4748:34;4757:24;4775:5;4757:24;:::i;:::-;4748:34;:::i;:::-;4730:53;:::i;:::-;4717:66;;4647:142;;;:::o;4795:126::-;4845:9;4878:37;4909:5;4878:37;:::i;:::-;4865:50;;4795:126;;;:::o;4927:153::-;5004:9;5037:37;5068:5;5037:37;:::i;:::-;5024:50;;4927:153;;;:::o;5086:185::-;5200:64;5258:5;5200:64;:::i;:::-;5195:3;5188:77;5086:185;;:::o;5277:276::-;5397:4;5435:2;5424:9;5420:18;5412:26;;5448:98;5543:1;5532:9;5528:17;5519:6;5448:98;:::i;:::-;5277:276;;;;:::o;5559:329::-;5618:6;5667:2;5655:9;5646:7;5642:23;5638:32;5635:119;;;5673:79;;:::i;:::-;5635:119;5793:1;5818:53;5863:7;5854:6;5843:9;5839:22;5818:53;:::i;:::-;5808:63;;5764:117;5559:329;;;;:::o;5894:619::-;5971:6;5979;5987;6036:2;6024:9;6015:7;6011:23;6007:32;6004:119;;;6042:79;;:::i;:::-;6004:119;6162:1;6187:53;6232:7;6223:6;6212:9;6208:22;6187:53;:::i;:::-;6177:63;;6133:117;6289:2;6315:53;6360:7;6351:6;6340:9;6336:22;6315:53;:::i;:::-;6305:63;;6260:118;6417:2;6443:53;6488:7;6479:6;6468:9;6464:22;6443:53;:::i;:::-;6433:63;;6388:118;5894:619;;;;;:::o;6519:86::-;6554:7;6594:4;6587:5;6583:16;6572:27;;6519:86;;;:::o;6611:112::-;6694:22;6710:5;6694:22;:::i;:::-;6689:3;6682:35;6611:112;;:::o;6729:214::-;6818:4;6856:2;6845:9;6841:18;6833:26;;6869:67;6933:1;6922:9;6918:17;6909:6;6869:67;:::i;:::-;6729:214;;;;:::o;6949:118::-;7036:24;7054:5;7036:24;:::i;:::-;7031:3;7024:37;6949:118;;:::o;7073:222::-;7166:4;7204:2;7193:9;7189:18;7181:26;;7217:71;7285:1;7274:9;7270:17;7261:6;7217:71;:::i;:::-;7073:222;;;;:::o;7301:323::-;7357:6;7406:2;7394:9;7385:7;7381:23;7377:32;7374:119;;;7412:79;;:::i;:::-;7374:119;7532:1;7557:50;7599:7;7590:6;7579:9;7575:22;7557:50;:::i;:::-;7547:60;;7503:114;7301:323;;;;:::o;7630:329::-;7689:6;7738:2;7726:9;7717:7;7713:23;7709:32;7706:119;;;7744:79;;:::i;:::-;7706:119;7864:1;7889:53;7934:7;7925:6;7914:9;7910:22;7889:53;:::i;:::-;7879:63;;7835:117;7630:329;;;;:::o;7965:474::-;8033:6;8041;8090:2;8078:9;8069:7;8065:23;8061:32;8058:119;;;8096:79;;:::i;:::-;8058:119;8216:1;8241:53;8286:7;8277:6;8266:9;8262:22;8241:53;:::i;:::-;8231:63;;8187:117;8343:2;8369:53;8414:7;8405:6;8394:9;8390:22;8369:53;:::i;:::-;8359:63;;8314:118;7965:474;;;;;:::o;8445:619::-;8522:6;8530;8538;8587:2;8575:9;8566:7;8562:23;8558:32;8555:119;;;8593:79;;:::i;:::-;8555:119;8713:1;8738:53;8783:7;8774:6;8763:9;8759:22;8738:53;:::i;:::-;8728:63;;8684:117;8840:2;8866:53;8911:7;8902:6;8891:9;8887:22;8866:53;:::i;:::-;8856:63;;8811:118;8968:2;8994:53;9039:7;9030:6;9019:9;9015:22;8994:53;:::i;:::-;8984:63;;8939:118;8445:619;;;;;:::o;9070:474::-;9138:6;9146;9195:2;9183:9;9174:7;9170:23;9166:32;9163:119;;;9201:79;;:::i;:::-;9163:119;9321:1;9346:53;9391:7;9382:6;9371:9;9367:22;9346:53;:::i;:::-;9336:63;;9292:117;9448:2;9474:53;9519:7;9510:6;9499:9;9495:22;9474:53;:::i;:::-;9464:63;;9419:118;9070:474;;;;;:::o;9550:180::-;9598:77;9595:1;9588:88;9695:4;9692:1;9685:15;9719:4;9716:1;9709:15;9736:320;9780:6;9817:1;9811:4;9807:12;9797:22;;9864:1;9858:4;9854:12;9885:18;9875:81;;9941:4;9933:6;9929:17;9919:27;;9875:81;10003:2;9995:6;9992:14;9972:18;9969:38;9966:84;;10022:18;;:::i;:::-;9966:84;9787:269;9736:320;;;:::o;10062:180::-;10110:77;10107:1;10100:88;10207:4;10204:1;10197:15;10231:4;10228:1;10221:15;10248:348;10288:7;10311:20;10329:1;10311:20;:::i;:::-;10306:25;;10345:20;10363:1;10345:20;:::i;:::-;10340:25;;10533:1;10465:66;10461:74;10458:1;10455:81;10450:1;10443:9;10436:17;10432:105;10429:131;;;10540:18;;:::i;:::-;10429:131;10588:1;10585;10581:9;10570:20;;10248:348;;;;:::o;10602:180::-;10650:77;10647:1;10640:88;10747:4;10744:1;10737:15;10771:4;10768:1;10761:15;10788:185;10828:1;10845:20;10863:1;10845:20;:::i;:::-;10840:25;;10879:20;10897:1;10879:20;:::i;:::-;10874:25;;10918:1;10908:35;;10923:18;;:::i;:::-;10908:35;10965:1;10962;10958:9;10953:14;;10788:185;;;;:::o;10979:182::-;11119:34;11115:1;11107:6;11103:14;11096:58;10979:182;:::o;11167:366::-;11309:3;11330:67;11394:2;11389:3;11330:67;:::i;:::-;11323:74;;11406:93;11495:3;11406:93;:::i;:::-;11524:2;11519:3;11515:12;11508:19;;11167:366;;;:::o;11539:419::-;11705:4;11743:2;11732:9;11728:18;11720:26;;11792:9;11786:4;11782:20;11778:1;11767:9;11763:17;11756:47;11820:131;11946:4;11820:131;:::i;:::-;11812:139;;11539:419;;;:::o;11964:223::-;12104:34;12100:1;12092:6;12088:14;12081:58;12173:6;12168:2;12160:6;12156:15;12149:31;11964:223;:::o;12193:366::-;12335:3;12356:67;12420:2;12415:3;12356:67;:::i;:::-;12349:74;;12432:93;12521:3;12432:93;:::i;:::-;12550:2;12545:3;12541:12;12534:19;;12193:366;;;:::o;12565:419::-;12731:4;12769:2;12758:9;12754:18;12746:26;;12818:9;12812:4;12808:20;12804:1;12793:9;12789:17;12782:47;12846:131;12972:4;12846:131;:::i;:::-;12838:139;;12565:419;;;:::o;12990:227::-;13130:34;13126:1;13118:6;13114:14;13107:58;13199:10;13194:2;13186:6;13182:15;13175:35;12990:227;:::o;13223:366::-;13365:3;13386:67;13450:2;13445:3;13386:67;:::i;:::-;13379:74;;13462:93;13551:3;13462:93;:::i;:::-;13580:2;13575:3;13571:12;13564:19;;13223:366;;;:::o;13595:419::-;13761:4;13799:2;13788:9;13784:18;13776:26;;13848:9;13842:4;13838:20;13834:1;13823:9;13819:17;13812:47;13876:131;14002:4;13876:131;:::i;:::-;13868:139;;13595:419;;;:::o;14020:305::-;14060:3;14079:20;14097:1;14079:20;:::i;:::-;14074:25;;14113:20;14131:1;14113:20;:::i;:::-;14108:25;;14267:1;14199:66;14195:74;14192:1;14189:81;14186:107;;;14273:18;;:::i;:::-;14186:107;14317:1;14314;14310:9;14303:16;;14020:305;;;;:::o;14331:191::-;14371:4;14391:20;14409:1;14391:20;:::i;:::-;14386:25;;14425:20;14443:1;14425:20;:::i;:::-;14420:25;;14464:1;14461;14458:8;14455:34;;;14469:18;;:::i;:::-;14455:34;14514:1;14511;14507:9;14499:17;;14331:191;;;;:::o;14528:230::-;14668:34;14664:1;14656:6;14652:14;14645:58;14737:13;14732:2;14724:6;14720:15;14713:38;14528:230;:::o;14764:366::-;14906:3;14927:67;14991:2;14986:3;14927:67;:::i;:::-;14920:74;;15003:93;15092:3;15003:93;:::i;:::-;15121:2;15116:3;15112:12;15105:19;;14764:366;;;:::o;15136:419::-;15302:4;15340:2;15329:9;15325:18;15317:26;;15389:9;15383:4;15379:20;15375:1;15364:9;15360:17;15353:47;15417:131;15543:4;15417:131;:::i;:::-;15409:139;;15136:419;;;:::o;15561:222::-;15701:34;15697:1;15689:6;15685:14;15678:58;15770:5;15765:2;15757:6;15753:15;15746:30;15561:222;:::o;15789:366::-;15931:3;15952:67;16016:2;16011:3;15952:67;:::i;:::-;15945:74;;16028:93;16117:3;16028:93;:::i;:::-;16146:2;16141:3;16137:12;16130:19;;15789:366;;;:::o;16161:419::-;16327:4;16365:2;16354:9;16350:18;16342:26;;16414:9;16408:4;16404:20;16400:1;16389:9;16385:17;16378:47;16442:131;16568:4;16442:131;:::i;:::-;16434:139;;16161:419;;;:::o;16586:143::-;16643:5;16674:6;16668:13;16659:22;;16690:33;16717:5;16690:33;:::i;:::-;16586:143;;;;:::o;16735:351::-;16805:6;16854:2;16842:9;16833:7;16829:23;16825:32;16822:119;;;16860:79;;:::i;:::-;16822:119;16980:1;17005:64;17061:7;17052:6;17041:9;17037:22;17005:64;:::i;:::-;16995:74;;16951:128;16735:351;;;;:::o;17092:332::-;17213:4;17251:2;17240:9;17236:18;17228:26;;17264:71;17332:1;17321:9;17317:17;17308:6;17264:71;:::i;:::-;17345:72;17413:2;17402:9;17398:18;17389:6;17345:72;:::i;:::-;17092:332;;;;;:::o;17430:232::-;17570:34;17566:1;17558:6;17554:14;17547:58;17639:15;17634:2;17626:6;17622:15;17615:40;17430:232;:::o;17668:366::-;17810:3;17831:67;17895:2;17890:3;17831:67;:::i;:::-;17824:74;;17907:93;17996:3;17907:93;:::i;:::-;18025:2;18020:3;18016:12;18009:19;;17668:366;;;:::o;18040:419::-;18206:4;18244:2;18233:9;18229:18;18221:26;;18293:9;18287:4;18283:20;18279:1;18268:9;18264:17;18257:47;18321:131;18447:4;18321:131;:::i;:::-;18313:139;;18040:419;;;:::o;18465:289::-;18605:34;18601:1;18593:6;18589:14;18582:58;18674:34;18669:2;18661:6;18657:15;18650:59;18743:3;18738:2;18730:6;18726:15;18719:28;18465:289;:::o;18760:366::-;18902:3;18923:67;18987:2;18982:3;18923:67;:::i;:::-;18916:74;;18999:93;19088:3;18999:93;:::i;:::-;19117:2;19112:3;19108:12;19101:19;;18760:366;;;:::o;19132:419::-;19298:4;19336:2;19325:9;19321:18;19313:26;;19385:9;19379:4;19375:20;19371:1;19360:9;19356:17;19349:47;19413:131;19539:4;19413:131;:::i;:::-;19405:139;;19132:419;;;:::o;19557:224::-;19697:34;19693:1;19685:6;19681:14;19674:58;19766:7;19761:2;19753:6;19749:15;19742:32;19557:224;:::o;19787:366::-;19929:3;19950:67;20014:2;20009:3;19950:67;:::i;:::-;19943:74;;20026:93;20115:3;20026:93;:::i;:::-;20144:2;20139:3;20135:12;20128:19;;19787:366;;;:::o;20159:419::-;20325:4;20363:2;20352:9;20348:18;20340:26;;20412:9;20406:4;20402:20;20398:1;20387:9;20383:17;20376:47;20440:131;20566:4;20440:131;:::i;:::-;20432:139;;20159:419;;;:::o;20584:237::-;20724:34;20720:1;20712:6;20708:14;20701:58;20793:20;20788:2;20780:6;20776:15;20769:45;20584:237;:::o;20827:366::-;20969:3;20990:67;21054:2;21049:3;20990:67;:::i;:::-;20983:74;;21066:93;21155:3;21066:93;:::i;:::-;21184:2;21179:3;21175:12;21168:19;;20827:366;;;:::o;21199:419::-;21365:4;21403:2;21392:9;21388:18;21380:26;;21452:9;21446:4;21442:20;21438:1;21427:9;21423:17;21416:47;21480:131;21606:4;21480:131;:::i;:::-;21472:139;;21199:419;;;:::o;21624:250::-;21764:34;21760:1;21752:6;21748:14;21741:58;21833:33;21828:2;21820:6;21816:15;21809:58;21624:250;:::o;21880:366::-;22022:3;22043:67;22107:2;22102:3;22043:67;:::i;:::-;22036:74;;22119:93;22208:3;22119:93;:::i;:::-;22237:2;22232:3;22228:12;22221:19;;21880:366;;;:::o;22252:419::-;22418:4;22456:2;22445:9;22441:18;22433:26;;22505:9;22499:4;22495:20;22491:1;22480:9;22476:17;22469:47;22533:131;22659:4;22533:131;:::i;:::-;22525:139;;22252:419;;;:::o;22677:229::-;22817:34;22813:1;22805:6;22801:14;22794:58;22886:12;22881:2;22873:6;22869:15;22862:37;22677:229;:::o;22912:366::-;23054:3;23075:67;23139:2;23134:3;23075:67;:::i;:::-;23068:74;;23151:93;23240:3;23151:93;:::i;:::-;23269:2;23264:3;23260:12;23253:19;;22912:366;;;:::o;23284:419::-;23450:4;23488:2;23477:9;23473:18;23465:26;;23537:9;23531:4;23527:20;23523:1;23512:9;23508:17;23501:47;23565:131;23691:4;23565:131;:::i;:::-;23557:139;;23284:419;;;:::o;23709:225::-;23849:34;23845:1;23837:6;23833:14;23826:58;23918:8;23913:2;23905:6;23901:15;23894:33;23709:225;:::o;23940:366::-;24082:3;24103:67;24167:2;24162:3;24103:67;:::i;:::-;24096:74;;24179:93;24268:3;24179:93;:::i;:::-;24297:2;24292:3;24288:12;24281:19;;23940:366;;;:::o;24312:419::-;24478:4;24516:2;24505:9;24501:18;24493:26;;24565:9;24559:4;24555:20;24551:1;24540:9;24536:17;24529:47;24593:131;24719:4;24593:131;:::i;:::-;24585:139;;24312:419;;;:::o;24737:220::-;24877:34;24873:1;24865:6;24861:14;24854:58;24946:3;24941:2;24933:6;24929:15;24922:28;24737:220;:::o;24963:366::-;25105:3;25126:67;25190:2;25185:3;25126:67;:::i;:::-;25119:74;;25202:93;25291:3;25202:93;:::i;:::-;25320:2;25315:3;25311:12;25304:19;;24963:366;;;:::o;25335:419::-;25501:4;25539:2;25528:9;25524:18;25516:26;;25588:9;25582:4;25578:20;25574:1;25563:9;25559:17;25552:47;25616:131;25742:4;25616:131;:::i;:::-;25608:139;;25335:419;;;:::o;25760:161::-;25900:13;25896:1;25888:6;25884:14;25877:37;25760:161;:::o;25927:366::-;26069:3;26090:67;26154:2;26149:3;26090:67;:::i;:::-;26083:74;;26166:93;26255:3;26166:93;:::i;:::-;26284:2;26279:3;26275:12;26268:19;;25927:366;;;:::o;26299:419::-;26465:4;26503:2;26492:9;26488:18;26480:26;;26552:9;26546:4;26542:20;26538:1;26527:9;26523:17;26516:47;26580:131;26706:4;26580:131;:::i;:::-;26572:139;;26299:419;;;:::o;26724:225::-;26864:34;26860:1;26852:6;26848:14;26841:58;26933:8;26928:2;26920:6;26916:15;26909:33;26724:225;:::o;26955:366::-;27097:3;27118:67;27182:2;27177:3;27118:67;:::i;:::-;27111:74;;27194:93;27283:3;27194:93;:::i;:::-;27312:2;27307:3;27303:12;27296:19;;26955:366;;;:::o;27327:419::-;27493:4;27531:2;27520:9;27516:18;27508:26;;27580:9;27574:4;27570:20;27566:1;27555:9;27551:17;27544:47;27608:131;27734:4;27608:131;:::i;:::-;27600:139;;27327:419;;;:::o;27752:182::-;27892:34;27888:1;27880:6;27876:14;27869:58;27752:182;:::o;27940:366::-;28082:3;28103:67;28167:2;28162:3;28103:67;:::i;:::-;28096:74;;28179:93;28268:3;28179:93;:::i;:::-;28297:2;28292:3;28288:12;28281:19;;27940:366;;;:::o;28312:419::-;28478:4;28516:2;28505:9;28501:18;28493:26;;28565:9;28559:4;28555:20;28551:1;28540:9;28536:17;28529:47;28593:131;28719:4;28593:131;:::i;:::-;28585:139;;28312:419;;;:::o;28737:143::-;28794:5;28825:6;28819:13;28810:22;;28841:33;28868:5;28841:33;:::i;:::-;28737:143;;;;:::o;28886:351::-;28956:6;29005:2;28993:9;28984:7;28980:23;28976:32;28973:119;;;29011:79;;:::i;:::-;28973:119;29131:1;29156:64;29212:7;29203:6;29192:9;29188:22;29156:64;:::i;:::-;29146:74;;29102:128;28886:351;;;;:::o;29243:332::-;29364:4;29402:2;29391:9;29387:18;29379:26;;29415:71;29483:1;29472:9;29468:17;29459:6;29415:71;:::i;:::-;29496:72;29564:2;29553:9;29549:18;29540:6;29496:72;:::i;:::-;29243:332;;;;;:::o;29581:137::-;29635:5;29666:6;29660:13;29651:22;;29682:30;29706:5;29682:30;:::i;:::-;29581:137;;;;:::o;29724:345::-;29791:6;29840:2;29828:9;29819:7;29815:23;29811:32;29808:119;;;29846:79;;:::i;:::-;29808:119;29966:1;29991:61;30044:7;30035:6;30024:9;30020:22;29991:61;:::i;:::-;29981:71;;29937:125;29724:345;;;;:::o;30075:223::-;30215:34;30211:1;30203:6;30199:14;30192:58;30284:6;30279:2;30271:6;30267:15;30260:31;30075:223;:::o;30304:366::-;30446:3;30467:67;30531:2;30526:3;30467:67;:::i;:::-;30460:74;;30543:93;30632:3;30543:93;:::i;:::-;30661:2;30656:3;30652:12;30645:19;;30304:366;;;:::o;30676:419::-;30842:4;30880:2;30869:9;30865:18;30857:26;;30929:9;30923:4;30919:20;30915:1;30904:9;30900:17;30893:47;30957:131;31083:4;30957:131;:::i;:::-;30949:139;;30676:419;;;:::o;31101:221::-;31241:34;31237:1;31229:6;31225:14;31218:58;31310:4;31305:2;31297:6;31293:15;31286:29;31101:221;:::o;31328:366::-;31470:3;31491:67;31555:2;31550:3;31491:67;:::i;:::-;31484:74;;31567:93;31656:3;31567:93;:::i;:::-;31685:2;31680:3;31676:12;31669:19;;31328:366;;;:::o;31700:419::-;31866:4;31904:2;31893:9;31889:18;31881:26;;31953:9;31947:4;31943:20;31939:1;31928:9;31924:17;31917:47;31981:131;32107:4;31981:131;:::i;:::-;31973:139;;31700:419;;;:::o;32125:224::-;32265:34;32261:1;32253:6;32249:14;32242:58;32334:7;32329:2;32321:6;32317:15;32310:32;32125:224;:::o;32355:366::-;32497:3;32518:67;32582:2;32577:3;32518:67;:::i;:::-;32511:74;;32594:93;32683:3;32594:93;:::i;:::-;32712:2;32707:3;32703:12;32696:19;;32355:366;;;:::o;32727:419::-;32893:4;32931:2;32920:9;32916:18;32908:26;;32980:9;32974:4;32970:20;32966:1;32955:9;32951:17;32944:47;33008:131;33134:4;33008:131;:::i;:::-;33000:139;;32727:419;;;:::o;33152:222::-;33292:34;33288:1;33280:6;33276:14;33269:58;33361:5;33356:2;33348:6;33344:15;33337:30;33152:222;:::o;33380:366::-;33522:3;33543:67;33607:2;33602:3;33543:67;:::i;:::-;33536:74;;33619:93;33708:3;33619:93;:::i;:::-;33737:2;33732:3;33728:12;33721:19;;33380:366;;;:::o;33752:419::-;33918:4;33956:2;33945:9;33941:18;33933:26;;34005:9;33999:4;33995:20;33991:1;33980:9;33976:17;33969:47;34033:131;34159:4;34033:131;:::i;:::-;34025:139;;33752:419;;;:::o;34177:241::-;34317:34;34313:1;34305:6;34301:14;34294:58;34386:24;34381:2;34373:6;34369:15;34362:49;34177:241;:::o;34424:366::-;34566:3;34587:67;34651:2;34646:3;34587:67;:::i;:::-;34580:74;;34663:93;34752:3;34663:93;:::i;:::-;34781:2;34776:3;34772:12;34765:19;;34424:366;;;:::o;34796:419::-;34962:4;35000:2;34989:9;34985:18;34977:26;;35049:9;35043:4;35039:20;35035:1;35024:9;35020:17;35013:47;35077:131;35203:4;35077:131;:::i;:::-;35069:139;;34796:419;;;:::o;35221:243::-;35361:34;35357:1;35349:6;35345:14;35338:58;35430:26;35425:2;35417:6;35413:15;35406:51;35221:243;:::o;35470:366::-;35612:3;35633:67;35697:2;35692:3;35633:67;:::i;:::-;35626:74;;35709:93;35798:3;35709:93;:::i;:::-;35827:2;35822:3;35818:12;35811:19;;35470:366;;;:::o;35842:419::-;36008:4;36046:2;36035:9;36031:18;36023:26;;36095:9;36089:4;36085:20;36081:1;36070:9;36066:17;36059:47;36123:131;36249:4;36123:131;:::i;:::-;36115:139;;35842:419;;;:::o;36267:243::-;36407:34;36403:1;36395:6;36391:14;36384:58;36476:26;36471:2;36463:6;36459:15;36452:51;36267:243;:::o;36516:366::-;36658:3;36679:67;36743:2;36738:3;36679:67;:::i;:::-;36672:74;;36755:93;36844:3;36755:93;:::i;:::-;36873:2;36868:3;36864:12;36857:19;;36516:366;;;:::o;36888:419::-;37054:4;37092:2;37081:9;37077:18;37069:26;;37141:9;37135:4;37131:20;37127:1;37116:9;37112:17;37105:47;37169:131;37295:4;37169:131;:::i;:::-;37161:139;;36888:419;;;:::o;37313:180::-;37361:77;37358:1;37351:88;37458:4;37455:1;37448:15;37482:4;37479:1;37472:15;37499:180;37547:77;37544:1;37537:88;37644:4;37641:1;37634:15;37668:4;37665:1;37658:15;37685:85;37730:7;37759:5;37748:16;;37685:85;;;:::o;37776:158::-;37834:9;37867:61;37885:42;37894:32;37920:5;37894:32;:::i;:::-;37885:42;:::i;:::-;37867:61;:::i;:::-;37854:74;;37776:158;;;:::o;37940:147::-;38035:45;38074:5;38035:45;:::i;:::-;38030:3;38023:58;37940:147;;:::o;38093:114::-;38160:6;38194:5;38188:12;38178:22;;38093:114;;;:::o;38213:184::-;38312:11;38346:6;38341:3;38334:19;38386:4;38381:3;38377:14;38362:29;;38213:184;;;;:::o;38403:132::-;38470:4;38493:3;38485:11;;38523:4;38518:3;38514:14;38506:22;;38403:132;;;:::o;38541:108::-;38618:24;38636:5;38618:24;:::i;:::-;38613:3;38606:37;38541:108;;:::o;38655:179::-;38724:10;38745:46;38787:3;38779:6;38745:46;:::i;:::-;38823:4;38818:3;38814:14;38800:28;;38655:179;;;;:::o;38840:113::-;38910:4;38942;38937:3;38933:14;38925:22;;38840:113;;;:::o;38989:732::-;39108:3;39137:54;39185:5;39137:54;:::i;:::-;39207:86;39286:6;39281:3;39207:86;:::i;:::-;39200:93;;39317:56;39367:5;39317:56;:::i;:::-;39396:7;39427:1;39412:284;39437:6;39434:1;39431:13;39412:284;;;39513:6;39507:13;39540:63;39599:3;39584:13;39540:63;:::i;:::-;39533:70;;39626:60;39679:6;39626:60;:::i;:::-;39616:70;;39472:224;39459:1;39456;39452:9;39447:14;;39412:284;;;39416:14;39712:3;39705:10;;39113:608;;;38989:732;;;;:::o;39727:720::-;39962:4;40000:3;39989:9;39985:19;39977:27;;40014:79;40090:1;40079:9;40075:17;40066:6;40014:79;:::i;:::-;40140:9;40134:4;40130:20;40125:2;40114:9;40110:18;40103:48;40168:108;40271:4;40262:6;40168:108;:::i;:::-;40160:116;;40286:72;40354:2;40343:9;40339:18;40330:6;40286:72;:::i;:::-;40368;40436:2;40425:9;40421:18;40412:6;40368:72;:::i;:::-;39727:720;;;;;;;:::o;40453:225::-;40593:34;40589:1;40581:6;40577:14;40570:58;40662:8;40657:2;40649:6;40645:15;40638:33;40453:225;:::o;40684:366::-;40826:3;40847:67;40911:2;40906:3;40847:67;:::i;:::-;40840:74;;40923:93;41012:3;40923:93;:::i;:::-;41041:2;41036:3;41032:12;41025:19;;40684:366;;;:::o;41056:419::-;41222:4;41260:2;41249:9;41245:18;41237:26;;41309:9;41303:4;41299:20;41295:1;41284:9;41280:17;41273:47;41337:131;41463:4;41337:131;:::i;:::-;41329:139;;41056:419;;;:::o;41481:831::-;41744:4;41782:3;41771:9;41767:19;41759:27;;41796:71;41864:1;41853:9;41849:17;41840:6;41796:71;:::i;:::-;41877:80;41953:2;41942:9;41938:18;41929:6;41877:80;:::i;:::-;42004:9;41998:4;41994:20;41989:2;41978:9;41974:18;41967:48;42032:108;42135:4;42126:6;42032:108;:::i;:::-;42024:116;;42150:72;42218:2;42207:9;42203:18;42194:6;42150:72;:::i;:::-;42232:73;42300:3;42289:9;42285:19;42276:6;42232:73;:::i;:::-;41481:831;;;;;;;;:::o;42318:807::-;42567:4;42605:3;42594:9;42590:19;42582:27;;42619:71;42687:1;42676:9;42672:17;42663:6;42619:71;:::i;:::-;42700:72;42768:2;42757:9;42753:18;42744:6;42700:72;:::i;:::-;42782:80;42858:2;42847:9;42843:18;42834:6;42782:80;:::i;:::-;42872;42948:2;42937:9;42933:18;42924:6;42872:80;:::i;:::-;42962:73;43030:3;43019:9;43015:19;43006:6;42962:73;:::i;:::-;43045;43113:3;43102:9;43098:19;43089:6;43045:73;:::i;:::-;42318:807;;;;;;;;;:::o;43131:663::-;43219:6;43227;43235;43284:2;43272:9;43263:7;43259:23;43255:32;43252:119;;;43290:79;;:::i;:::-;43252:119;43410:1;43435:64;43491:7;43482:6;43471:9;43467:22;43435:64;:::i;:::-;43425:74;;43381:128;43548:2;43574:64;43630:7;43621:6;43610:9;43606:22;43574:64;:::i;:::-;43564:74;;43519:129;43687:2;43713:64;43769:7;43760:6;43749:9;43745:22;43713:64;:::i;:::-;43703:74;;43658:129;43131:663;;;;;:::o

Swarm Source

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