ETH Price: $2,676.15 (+1.77%)

Token

Secret Ethereum Club (SEC)
 

Overview

Max Total Supply

10,000,000,000,000 SEC

Holders

11

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
269,999,999,999.1 SEC

Value
$0.00
0xf95B83Af418168678C87cFCcb183F3Aed2EA9227
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:
SEC

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.13;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
 
    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}
 
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 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 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 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);
 
    /**
     *
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);
 
    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
 
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);
 
    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
 
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);
 
    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);
 
    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}
 
 
contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;
 
    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}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
 
    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
 
    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
 
    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }
 
    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
 
        _beforeTokenTransfer(sender, recipient, amount);
 
        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }
 
    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
 
        _beforeTokenTransfer(address(0), account, amount);
 
        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }
 
    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
 
        _beforeTokenTransfer(account, address(0), amount);
 
        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }
 
    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
 
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
 
    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}
 
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
 
        return c;
    }
 
    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
 
    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
 
        return c;
    }
 
    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }
 
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
 
        return c;
    }
 
    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
 
    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
 
        return c;
    }
 
    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
 
    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}
 
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;
    }
}
 
 
 
library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);
 
    /**
     * @dev Multiplies two int256 variables and fails on overflow.
     */
    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;
 
        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }
 
    /**
     * @dev Division of two int256 variables and fails on overflow.
     */
    function div(int256 a, int256 b) internal pure returns (int256) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);
 
        // Solidity already throws when dividing by 0.
        return a / b;
    }
 
    /**
     * @dev Subtracts two int256 variables and fails on overflow.
     */
    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }
 
    /**
     * @dev Adds two int256 variables and fails on overflow.
     */
    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }
 
    /**
     * @dev Converts to absolute value, and fails on overflow.
     */
    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }
 
 
    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}
 
library SafeMathUint {
  function toInt256Safe(uint256 a) internal pure returns (int256) {
    int256 b = int256(a);
    require(b >= 0);
    return b;
  }
}
 
 
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 SEC is ERC20, Ownable {
    using SafeMath for uint256;
 
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
 
    bool private swapping;
 
    address private devOpsWallet;
 
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
 
    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;
    bool public enableEarlySellTax = true;
 
     // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
 
    // Seller Map
    mapping (address => uint256) private _holderFirstBuyTimestamp;
 
    // Blacklist Map
    mapping (address => bool) private _blacklist;
    bool public transferDelayEnabled = true;
 
    uint256 public buyTotalFees;
    uint256 public buyDevOpsFee;
    uint256 public buyLiquidityFee;
 
    uint256 public sellTotalFees;
    uint256 public sellDevOpsFee;
    uint256 public sellLiquidityFee;
 
    uint256 public earlySellLiquidityFee;
    uint256 public earlySellDevOpsFee;
 
    uint256 public tokensForDevOps;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
 
    // block number of opened trading
    uint256 launchedAt;
 
    /******************/
 
    // exclude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;
 
    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;
 
    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
 
    event ExcludeFromFees(address indexed account, bool isExcluded);
 
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
 
    event devOpsWalletUpdated(address indexed newWallet, address indexed oldWallet);
 
 
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
 
    event AutoNukeLP();
 
    event ManualNukeLP();
 
    constructor() ERC20("Secret Ethereum Club", "SEC") {
 
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
 
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
 
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
 
        uint256 _buyDevOpsFee = 0;
        uint256 _buyLiquidityFee = 0;
 
        uint256 _sellDevOpsFee = 0;
        uint256 _sellLiquidityFee = 0;
 
        uint256 _earlySellLiquidityFee = 0;
        uint256 _earlySellDevOpsFee = 0;
 
        uint256 totalSupply = 1 * 1e13 * 1e18;
 
        maxTransactionAmount = totalSupply * 30 / 1000; // 3% maxTransactionAmountTxn
        maxWallet = totalSupply * 30 / 1000; // 3% maxWallet
        swapTokensAtAmount = totalSupply * 10 / 10000; // 0.1% swap wallet
 
        buyDevOpsFee = _buyDevOpsFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyTotalFees = buyDevOpsFee + buyLiquidityFee;
 
        sellDevOpsFee = _sellDevOpsFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellTotalFees = sellDevOpsFee + sellLiquidityFee;
 
        earlySellLiquidityFee = _earlySellLiquidityFee;
        earlySellDevOpsFee = _earlySellDevOpsFee;
 
        devOpsWallet = address(0x6cbbB275aF3DB5eec432f4Dd02658Abd981aA852); // set as devOps wallet
 
        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(address(0x6cbbB275aF3DB5eec432f4Dd02658Abd981aA852), true);
 
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        excludeFromMaxTransaction(address(0x6cbbB275aF3DB5eec432f4Dd02658Abd981aA852), true);
 
        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }
 
    receive() external payable {
 
    }
 
    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        launchedAt = block.number;
    }
 
    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool){
        limitsInEffect = false;
        return true;
    }
 
    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool){
        transferDelayEnabled = false;
        return true;
    }
 
    function setEarlySellTax(bool onoff) external onlyOwner  {
        enableEarlySellTax = onoff;
    }
 
     // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){
        require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply.");
        swapTokensAtAmount = newAmount;
        return true;
    }
 
    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.1%");
        maxTransactionAmount = newNum * (10**18);
    }
 
    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%");
        maxWallet = newNum * (10**18);
    }
 
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }
 
    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }
 
    function updateBuyFees(uint256 _devOpsFee, uint256 _liquidityFee) external onlyOwner {
        buyDevOpsFee = _devOpsFee;
        buyLiquidityFee = _liquidityFee;
        buyTotalFees = buyDevOpsFee + buyLiquidityFee;
        require(buyTotalFees <= 20, "Must keep fees at 20% or less");
    }
 
    function updateSellFees(uint256 _devOpsFee, uint256 _liquidityFee, uint256 _earlySellLiquidityFee, uint256 _earlySellDevOpsFee) external onlyOwner {
        sellDevOpsFee = _devOpsFee;
        sellLiquidityFee = _liquidityFee;
        earlySellLiquidityFee = _earlySellLiquidityFee;
        earlySellDevOpsFee = _earlySellDevOpsFee;
        sellTotalFees = sellDevOpsFee + sellLiquidityFee;
        require(sellTotalFees <= 20, "Must keep fees at 20% or less");
    }
 
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }
 
    function blacklistAccount (address account, bool isBlacklisted) public onlyOwner {
        require(block.number < launchedAt + 40, "Waited too long to blacklist");
        _blacklist[account] = isBlacklisted;
    }
 
    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
 
        _setAutomatedMarketMakerPair(pair, value);
    }
 
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
 
        emit SetAutomatedMarketMakerPair(pair, value);
    }
 
    function updateDevOpsWallet(address newDevOpsWallet) external onlyOwner {
        emit devOpsWalletUpdated(newDevOpsWallet, devOpsWallet);
        devOpsWallet = newDevOpsWallet;
    }
 
 
 
    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
 
    event BoughtEarly(address indexed sniper);
 
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!_blacklist[to] && !_blacklist[from], "You have been blacklisted from transfering tokens");
         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
 
        if(limitsInEffect){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ){
                if(!tradingActive){
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }
 
                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
                if (transferDelayEnabled){
                    if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }
 
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                        require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
 
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if(!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }
 
        // early sell logic
        bool isBuy = from == uniswapV2Pair;
        if (!isBuy && enableEarlySellTax) {
            if (_holderFirstBuyTimestamp[from] != 0 &&
                (_holderFirstBuyTimestamp[from] + (24 hours) >= block.timestamp))  {
                sellLiquidityFee = earlySellLiquidityFee;
                sellDevOpsFee = earlySellDevOpsFee;
                sellTotalFees = sellDevOpsFee + sellLiquidityFee;
            } 
        } else {
            if (_holderFirstBuyTimestamp[to] == 0) {
                _holderFirstBuyTimestamp[to] = block.timestamp;
            }
        }
 
        uint256 contractTokenBalance = balanceOf(address(this));
 
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;
 
        if( 
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;
 
            swapBack();
 
            swapping = false;
        }
 
        bool takeFee = !swapping;
 
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
 
        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForDevOps += fees * sellDevOpsFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForDevOps += fees * buyDevOpsFee / buyTotalFees;
            }
 
            if(fees > 0){    
                super._transfer(from, address(this), fees);
            }
 
            amount -= fees;
        }
 
        super._transfer(from, to, amount);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private {
 
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
 
        _approve(address(this), address(uniswapV2Router), tokenAmount);
 
        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
 
    }
 
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);
 
        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(this),
            block.timestamp
        );
    }
 
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForDevOps + tokensForDev;
        bool success;
 
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
 
        if(contractBalance > swapTokensAtAmount * 20){
          contractBalance = swapTokensAtAmount * 20;
        }
 
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
 
        uint256 initialETHBalance = address(this).balance;
 
        swapTokensForEth(amountToSwapForETH); 
 
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
 
        uint256 ethForDevOps = ethBalance.mul(tokensForDevOps).div(totalTokensToSwap);
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);
        uint256 ethForLiquidity = ethBalance - ethForDevOps - ethForDev;
 
 
        tokensForLiquidity = 0;
        tokensForDevOps = 0;
        tokensForDev = 0;
 
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }
 
        (success,) = address(devOpsWallet).call{value: address(this).balance}("");
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devOpsWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"blacklistAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyDevOpsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlySellDevOpsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlySellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableEarlySellTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevOpsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setEarlySellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDevOps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devOpsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newDevOpsWallet","type":"address"}],"name":"updateDevOpsWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devOpsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_earlySellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_earlySellDevOpsFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600a5f6101000a81548160ff0219169083151502179055505f600a60016101000a81548160ff0219169083151502179055505f600a60026101000a81548160ff0219169083151502179055506001600a60036101000a81548160ff0219169083151502179055506001600e5f6101000a81548160ff02191690831515021790555034801562000093575f80fd5b506040518060400160405280601481526020017f53656372657420457468657265756d20436c75620000000000000000000000008152506040518060400160405280600381526020017f5345430000000000000000000000000000000000000000000000000000000000815250816003908162000111919062000d98565b50806004908162000123919062000d98565b5050505f620001376200062160201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001ff8160016200062860201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200027d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002a3919062000ee1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000309573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200032f919062000ee1565b6040518363ffffffff1660e01b81526004016200034e92919062000f22565b6020604051808303815f875af11580156200036b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000391919062000ee1565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003d960a05160016200062860201b60201c565b620003ee60a05160016200072160201b60201c565b5f805f805f805f6c7e37be2022c0914b268000000090506103e8601e8262000417919062000f7a565b62000423919062000ff1565b6007819055506103e8601e826200043b919062000f7a565b62000447919062000ff1565b600981905550612710600a826200045f919062000f7a565b6200046b919062000ff1565b600881905550866010819055508560118190555060115460105462000491919062001028565b600f819055508460138190555083601481905550601454601354620004b7919062001028565b6012819055508260158190555081601681905550736cbbb275af3db5eec432f4dd02658abd981aa85260065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200054162000533620007bf60201b60201c565b6001620007e760201b60201c565b62000554306001620007e760201b60201c565b6200056961dead6001620007e760201b60201c565b62000590736cbbb275af3db5eec432f4dd02658abd981aa8526001620007e760201b60201c565b620005b2620005a4620007bf60201b60201c565b60016200062860201b60201c565b620005c53060016200062860201b60201c565b620005da61dead60016200062860201b60201c565b62000601736cbbb275af3db5eec432f4dd02658abd981aa85260016200062860201b60201c565b6200061333826200093060201b60201c565b50505050505050506200121f565b5f33905090565b620006386200062160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620006c9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006c090620010c0565b60405180910390fd5b80601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b80601d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620007f76200062160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000888576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200087f90620010c0565b60405180910390fd5b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009249190620010fc565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009989062001165565b60405180910390fd5b620009b45f838362000acd60201b60201c565b620009cb8160025462000ad260201b90919060201c565b60028190555062000a22815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205462000ad260201b90919060201c565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000ac1919062001196565b60405180910390a35050565b505050565b5f80828462000ae2919062001028565b90508381101562000b2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b2190620011ff565b60405180910390fd5b8091505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000bb057607f821691505b60208210810362000bc65762000bc562000b6b565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000c2a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000bed565b62000c36868362000bed565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000c8062000c7a62000c748462000c4e565b62000c57565b62000c4e565b9050919050565b5f819050919050565b62000c9b8362000c60565b62000cb362000caa8262000c87565b84845462000bf9565b825550505050565b5f90565b62000cc962000cbb565b62000cd681848462000c90565b505050565b5b8181101562000cfd5762000cf15f8262000cbf565b60018101905062000cdc565b5050565b601f82111562000d4c5762000d168162000bcc565b62000d218462000bde565b8101602085101562000d31578190505b62000d4962000d408562000bde565b83018262000cdb565b50505b505050565b5f82821c905092915050565b5f62000d6e5f198460080262000d51565b1980831691505092915050565b5f62000d88838362000d5d565b9150826002028217905092915050565b62000da38262000b34565b67ffffffffffffffff81111562000dbf5762000dbe62000b3e565b5b62000dcb825462000b98565b62000dd882828562000d01565b5f60209050601f83116001811462000e0e575f841562000df9578287015190505b62000e05858262000d7b565b86555062000e74565b601f19841662000e1e8662000bcc565b5f5b8281101562000e475784890151825560018201915060208501945060208101905062000e20565b8683101562000e67578489015162000e63601f89168262000d5d565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000eab8262000e80565b9050919050565b62000ebd8162000e9f565b811462000ec8575f80fd5b50565b5f8151905062000edb8162000eb2565b92915050565b5f6020828403121562000ef95762000ef862000e7c565b5b5f62000f088482850162000ecb565b91505092915050565b62000f1c8162000e9f565b82525050565b5f60408201905062000f375f83018562000f11565b62000f46602083018462000f11565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000f868262000c4e565b915062000f938362000c4e565b925082820262000fa38162000c4e565b9150828204841483151762000fbd5762000fbc62000f4d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000ffd8262000c4e565b91506200100a8362000c4e565b9250826200101d576200101c62000fc4565b5b828204905092915050565b5f620010348262000c4e565b9150620010418362000c4e565b92508282019050808211156200105c576200105b62000f4d565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f620010a860208362001062565b9150620010b58262001072565b602082019050919050565b5f6020820190508181035f830152620010d9816200109a565b9050919050565b5f8115159050919050565b620010f681620010e0565b82525050565b5f602082019050620011115f830184620010eb565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f6200114d601f8362001062565b91506200115a8262001117565b602082019050919050565b5f6020820190508181035f8301526200117e816200113f565b9050919050565b620011908162000c4e565b82525050565b5f602082019050620011ab5f83018462001185565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f620011e7601b8362001062565b9150620011f482620011b1565b602082019050919050565b5f6020820190508181035f8301526200121881620011d9565b9050919050565b60805160a051615502620012805f395f81816111560152818161191a01528181612b5c0152612f5101525f8181610d2c01528181612b0401528181613d3e01528181613e1d01528181613e4401528181613eda0152613f0101526155025ff3fe60806040526004361061031d575f3560e01c8063924de9b7116101aa578063c0246668116100f6578063e2f4560511610094578063f11a24d31161006e578063f11a24d314610bba578063f2fde38b14610be4578063f637434214610c0c578063f8b45b0514610c3657610324565b8063e2f4560514610b3e578063e7ad9fcd14610b68578063e884f26014610b9057610324565b8063c8c8ebe4116100d0578063c8c8ebe414610a72578063d257b34f14610a9c578063d85ba06314610ad8578063dd62ed3e14610b0257610324565b8063c0246668146109f8578063c18bc19514610a20578063c876d0b914610a4857610324565b8063a4d15b6411610163578063b2b2c0bb1161013d578063b2b2c0bb14610940578063b62496f51461096a578063bbc0c742146109a6578063bde73318146109d057610324565b8063a4d15b64146108b0578063a5cf68ef146108da578063a9059cbb1461090457610324565b8063924de9b7146107a857806395d89b41146107d05780639a7a23d6146107fa5780639fccce3214610822578063a26577781461084c578063a457c2d71461087457610324565b80634a62bb651161026957806370a08231116102225780637571336a116101fc5780637571336a14610716578063762d868a1461073e5780638a8c523c146107685780638da5cb5b1461077e57610324565b806370a082311461069a578063715018a6146106d6578063751039fc146106ec57610324565b80634a62bb651461058e5780634fbee193146105b8578063541a43cf146105f457806366ca9b831461061e5780636a486a8e146106465780636ddd17131461067057610324565b80631b5cc613116102d65780632d5a5d34116102b05780632d5a5d34146104d6578063313ce567146104fe578063395093511461052857806349bd5a5e1461056457610324565b80631b5cc61314610448578063203e727e1461047257806323b872dd1461049a57610324565b806306fdde0314610328578063095ea7b31461035257806310d5de531461038e5780631694505e146103ca57806318160ddd146103f45780631a8145bb1461041e57610324565b3661032457005b5f80fd5b348015610333575f80fd5b5061033c610c60565b6040516103499190614096565b60405180910390f35b34801561035d575f80fd5b5061037860048036038101906103739190614147565b610cf0565b604051610385919061419f565b60405180910390f35b348015610399575f80fd5b506103b460048036038101906103af91906141b8565b610d0d565b6040516103c1919061419f565b60405180910390f35b3480156103d5575f80fd5b506103de610d2a565b6040516103eb919061423e565b60405180910390f35b3480156103ff575f80fd5b50610408610d4e565b6040516104159190614266565b60405180910390f35b348015610429575f80fd5b50610432610d57565b60405161043f9190614266565b60405180910390f35b348015610453575f80fd5b5061045c610d5d565b6040516104699190614266565b60405180910390f35b34801561047d575f80fd5b506104986004803603810190610493919061427f565b610d63565b005b3480156104a5575f80fd5b506104c060048036038101906104bb91906142aa565b610e8c565b6040516104cd919061419f565b60405180910390f35b3480156104e1575f80fd5b506104fc60048036038101906104f79190614324565b610f60565b005b348015610509575f80fd5b5061051261109e565b60405161051f919061437d565b60405180910390f35b348015610533575f80fd5b5061054e60048036038101906105499190614147565b6110a6565b60405161055b919061419f565b60405180910390f35b34801561056f575f80fd5b50610578611154565b60405161058591906143a5565b60405180910390f35b348015610599575f80fd5b506105a2611178565b6040516105af919061419f565b60405180910390f35b3480156105c3575f80fd5b506105de60048036038101906105d991906141b8565b61118a565b6040516105eb919061419f565b60405180910390f35b3480156105ff575f80fd5b506106086111dc565b6040516106159190614266565b60405180910390f35b348015610629575f80fd5b50610644600480360381019061063f91906143be565b6111e2565b005b348015610651575f80fd5b5061065a6112e6565b6040516106679190614266565b60405180910390f35b34801561067b575f80fd5b506106846112ec565b604051610691919061419f565b60405180910390f35b3480156106a5575f80fd5b506106c060048036038101906106bb91906141b8565b6112ff565b6040516106cd9190614266565b60405180910390f35b3480156106e1575f80fd5b506106ea611344565b005b3480156106f7575f80fd5b50610700611497565b60405161070d919061419f565b60405180910390f35b348015610721575f80fd5b5061073c60048036038101906107379190614324565b61154e565b005b348015610749575f80fd5b5061075261163c565b60405161075f9190614266565b60405180910390f35b348015610773575f80fd5b5061077c611642565b005b348015610789575f80fd5b50610792611717565b60405161079f91906143a5565b60405180910390f35b3480156107b3575f80fd5b506107ce60048036038101906107c991906143fc565b61173f565b005b3480156107db575f80fd5b506107e46117f2565b6040516107f19190614096565b60405180910390f35b348015610805575f80fd5b50610820600480360381019061081b9190614324565b611882565b005b34801561082d575f80fd5b506108366119b4565b6040516108439190614266565b60405180910390f35b348015610857575f80fd5b50610872600480360381019061086d91906143fc565b6119ba565b005b34801561087f575f80fd5b5061089a60048036038101906108959190614147565b611a6d565b6040516108a7919061419f565b60405180910390f35b3480156108bb575f80fd5b506108c4611b35565b6040516108d1919061419f565b60405180910390f35b3480156108e5575f80fd5b506108ee611b48565b6040516108fb9190614266565b60405180910390f35b34801561090f575f80fd5b5061092a60048036038101906109259190614147565b611b4e565b604051610937919061419f565b60405180910390f35b34801561094b575f80fd5b50610954611b6b565b6040516109619190614266565b60405180910390f35b348015610975575f80fd5b50610990600480360381019061098b91906141b8565b611b71565b60405161099d919061419f565b60405180910390f35b3480156109b1575f80fd5b506109ba611b8e565b6040516109c7919061419f565b60405180910390f35b3480156109db575f80fd5b506109f660048036038101906109f191906141b8565b611ba1565b005b348015610a03575f80fd5b50610a1e6004803603810190610a199190614324565b611cf5565b005b348015610a2b575f80fd5b50610a466004803603810190610a41919061427f565b611e31565b005b348015610a53575f80fd5b50610a5c611f5a565b604051610a69919061419f565b60405180910390f35b348015610a7d575f80fd5b50610a86611f6c565b604051610a939190614266565b60405180910390f35b348015610aa7575f80fd5b50610ac26004803603810190610abd919061427f565b611f72565b604051610acf919061419f565b60405180910390f35b348015610ae3575f80fd5b50610aec6120e0565b604051610af99190614266565b60405180910390f35b348015610b0d575f80fd5b50610b286004803603810190610b239190614427565b6120e6565b604051610b359190614266565b60405180910390f35b348015610b49575f80fd5b50610b52612168565b604051610b5f9190614266565b60405180910390f35b348015610b73575f80fd5b50610b8e6004803603810190610b899190614465565b61216e565b005b348015610b9b575f80fd5b50610ba4612282565b604051610bb1919061419f565b60405180910390f35b348015610bc5575f80fd5b50610bce612339565b604051610bdb9190614266565b60405180910390f35b348015610bef575f80fd5b50610c0a6004803603810190610c0591906141b8565b61233f565b005b348015610c17575f80fd5b50610c20612501565b604051610c2d9190614266565b60405180910390f35b348015610c41575f80fd5b50610c4a612507565b604051610c579190614266565b60405180910390f35b606060038054610c6f906144f6565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9b906144f6565b8015610ce65780601f10610cbd57610100808354040283529160200191610ce6565b820191905f5260205f20905b815481529060010190602001808311610cc957829003601f168201915b5050505050905090565b5f610d03610cfc61250d565b8484612514565b6001905092915050565b601c602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b60185481565b60165481565b610d6b61250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df090614570565b60405180910390fd5b670de0b6b3a76400006103e86001610e0f610d4e565b610e1991906145bb565b610e239190614629565b610e2d9190614629565b811015610e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e66906146c9565b60405180910390fd5b670de0b6b3a764000081610e8391906145bb565b60078190555050565b5f610e988484846126d7565b610f5584610ea461250d565b610f50856040518060600160405280602881526020016154806028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610f0761250d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546135689092919063ffffffff16565b612514565b600190509392505050565b610f6861250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fed90614570565b60405180910390fd5b6028601a5461100591906146e7565b4310611046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103d90614764565b60405180910390fd5b80600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f6012905090565b5f61114a6110b261250d565b846111458560015f6110c261250d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546135ca90919063ffffffff16565b612514565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a5f9054906101000a900460ff1681565b5f601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60155481565b6111ea61250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126f90614570565b60405180910390fd5b816010819055508060118190555060115460105461129691906146e7565b600f819055506014600f5411156112e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d9906147cc565b60405180910390fd5b5050565b60125481565b600a60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61134c61250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d190614570565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f6114a061250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461152e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152590614570565b60405180910390fd5b5f600a5f6101000a81548160ff0219169083151502179055506001905090565b61155661250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115db90614570565b60405180910390fd5b80601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60135481565b61164a61250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cf90614570565b60405180910390fd5b6001600a60016101000a81548160ff0219169083151502179055506001600a60026101000a81548160ff02191690831515021790555043601a81905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61174761250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cc90614570565b60405180910390fd5b80600a60026101000a81548160ff02191690831515021790555050565b606060048054611801906144f6565b80601f016020809104026020016040519081016040528092919081815260200182805461182d906144f6565b80156118785780601f1061184f57610100808354040283529160200191611878565b820191905f5260205f20905b81548152906001019060200180831161185b57829003601f168201915b5050505050905090565b61188a61250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190f90614570565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199d9061485a565b60405180910390fd5b6119b08282613627565b5050565b60195481565b6119c261250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4790614570565b60405180910390fd5b80600a60036101000a81548160ff02191690831515021790555050565b5f611b2b611a7961250d565b84611b26856040518060600160405280602581526020016154a86025913960015f611aa261250d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546135689092919063ffffffff16565b612514565b6001905092915050565b600a60039054906101000a900460ff1681565b60105481565b5f611b61611b5a61250d565b84846126d7565b6001905092915050565b60175481565b601d602052805f5260405f205f915054906101000a900460ff1681565b600a60019054906101000a900460ff1681565b611ba961250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2e90614570565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fbdcddef9ef45c223fdd883851191fd9fa95aa9b793f97f720258493ceed93d7560405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611cfd61250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8290614570565b60405180910390fd5b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611e25919061419f565b60405180910390a25050565b611e3961250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ec7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebe90614570565b60405180910390fd5b670de0b6b3a76400006103e86005611edd610d4e565b611ee791906145bb565b611ef19190614629565b611efb9190614629565b811015611f3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f34906148e8565b60405180910390fd5b670de0b6b3a764000081611f5191906145bb565b60098190555050565b600e5f9054906101000a900460ff1681565b60075481565b5f611f7b61250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200090614570565b60405180910390fd5b620186a06001612017610d4e565b61202191906145bb565b61202b9190614629565b82101561206d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206490614976565b60405180910390fd5b6103e8600561207a610d4e565b61208491906145bb565b61208e9190614629565b8211156120d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c790614a04565b60405180910390fd5b8160088190555060019050919050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085481565b61217661250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fb90614570565b60405180910390fd5b8360138190555082601481905550816015819055508060168190555060145460135461223091906146e7565b6012819055506014601254111561227c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612273906147cc565b60405180910390fd5b50505050565b5f61228b61250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231090614570565b60405180910390fd5b5f600e5f6101000a81548160ff0219169083151502179055506001905090565b60115481565b61234761250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cc90614570565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243a90614a92565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b60095481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612582576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257990614b20565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e790614bae565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126ca9190614266565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273c90614c3c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127aa90614cca565b60405180910390fd5b600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156128515750600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288790614d58565b60405180910390fd5b5f81036128a7576128a283835f6136c5565b613563565b600a5f9054906101000a900460ff1615612f4e576128c3611717565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129315750612901611717565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561296957505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129a3575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129bc5750600560149054906101000a900460ff16155b15612f4d57600a60019054906101000a900460ff16612ab057601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612a705750601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa690614dc0565b60405180910390fd5b5b600e5f9054906101000a900460ff1615612c7357612acc611717565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612b5357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bab57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612c725743600b5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2690614e74565b60405180910390fd5b43600b5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b601d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612d105750601c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612db757600754811115612d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5190614f02565b60405180910390fd5b600954612d66836112ff565b82612d7191906146e7565b1115612db2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da990614f6a565b60405180910390fd5b612f4c565b601d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612e545750601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612ea357600754811115612e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9590614ff8565b60405180910390fd5b612f4b565b601c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612f4a57600954612efd836112ff565b82612f0891906146e7565b1115612f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4090614f6a565b60405180910390fd5b5b5b5b5b5b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614905080158015612fba5750600a60039054906101000a900460ff165b1561308a575f600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541415801561305757504262015180600c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461305491906146e7565b10155b156130855760155460148190555060165460138190555060145460135461307e91906146e7565b6012819055505b613112565b5f600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054036131115742600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b5f61311c306112ff565b90505f60085482101590508080156131405750600a60029054906101000a900460ff165b80156131595750600560149054906101000a900460ff16155b80156131ac5750601d5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156131ff5750601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156132525750601b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15613295576001600560146101000a81548160ff02191690831515021790555061327a61394e565b5f600560146101000a81548160ff0219169083151502179055505b5f600560149054906101000a900460ff16159050601b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806133445750601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561334d575f90505b5f811561355257601d5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156133ab57505f601254115b15613443576133d860646133ca60125489613b9390919063ffffffff16565b613c0a90919063ffffffff16565b9050601254601454826133eb91906145bb565b6133f59190614629565b60185f82825461340591906146e7565b925050819055506012546013548261341d91906145bb565b6134279190614629565b60175f82825461343791906146e7565b9250508190555061352f565b601d5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561349a57505f600f54115b1561352e576134c760646134b9600f5489613b9390919063ffffffff16565b613c0a90919063ffffffff16565b9050600f54601154826134da91906145bb565b6134e49190614629565b60185f8282546134f491906146e7565b92505081905550600f546010548261350c91906145bb565b6135169190614629565b60175f82825461352691906146e7565b925050819055505b5b5f811115613543576135428830836136c5565b5b808661354f9190615016565b95505b61355d8888886136c5565b50505050505b505050565b5f8383111582906135af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135a69190614096565b60405180910390fd5b505f83856135bd9190615016565b9050809150509392505050565b5f8082846135d891906146e7565b90508381101561361d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161361490615093565b60405180910390fd5b8091505092915050565b80601d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161372a90614c3c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036137a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161379890614cca565b60405180910390fd5b6137ac838383613c53565b6138158160405180606001604052806026815260200161545a602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546135689092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506138a4815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546135ca90919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516139419190614266565b60405180910390a3505050565b5f613958306112ff565b90505f60195460175460185461396e91906146e7565b61397891906146e7565b90505f8083148061398857505f82145b1561399557505050613b91565b60146008546139a491906145bb565b8311156139bd5760146008546139ba91906145bb565b92505b5f600283601854866139cf91906145bb565b6139d99190614629565b6139e39190614629565b90505f6139f98286613c5890919063ffffffff16565b90505f479050613a0882613ca1565b5f613a1c8247613c5890919063ffffffff16565b90505f613a4687613a3860175485613b9390919063ffffffff16565b613c0a90919063ffffffff16565b90505f613a7088613a6260195486613b9390919063ffffffff16565b613c0a90919063ffffffff16565b90505f818385613a809190615016565b613a8a9190615016565b90505f6018819055505f6017819055505f6019819055505f87118015613aaf57505f81115b15613afc57613abe8782613ed4565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601854604051613af3939291906150b1565b60405180910390a15b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613b4190615113565b5f6040518083038185875af1925050503d805f8114613b7b576040519150601f19603f3d011682016040523d82523d5f602084013e613b80565b606091505b505080985050505050505050505050505b565b5f808303613ba3575f9050613c04565b5f8284613bb091906145bb565b9050828482613bbf9190614629565b14613bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bf690615197565b60405180910390fd5b809150505b92915050565b5f613c4b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613fab565b905092915050565b505050565b5f613c9983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613568565b905092915050565b5f600267ffffffffffffffff811115613cbd57613cbc6151b5565b5b604051908082528060200260200182016040528015613ceb5781602001602082028036833780820191505090505b50905030815f81518110613d0257613d016151e2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613da5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613dc99190615223565b81600181518110613ddd57613ddc6151e2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613e42307f000000000000000000000000000000000000000000000000000000000000000084612514565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613ea395949392919061533e565b5f604051808303815f87803b158015613eba575f80fd5b505af1158015613ecc573d5f803e3d5ffd5b505050505050565b613eff307f000000000000000000000000000000000000000000000000000000000000000084612514565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b8152600401613f6396959493929190615396565b60606040518083038185885af1158015613f7f573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190613fa49190615409565b5050505050565b5f8083118290613ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fe89190614096565b60405180910390fd5b505f8385613fff9190614629565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015614043578082015181840152602081019050614028565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6140688261400c565b6140728185614016565b9350614082818560208601614026565b61408b8161404e565b840191505092915050565b5f6020820190508181035f8301526140ae818461405e565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6140e3826140ba565b9050919050565b6140f3816140d9565b81146140fd575f80fd5b50565b5f8135905061410e816140ea565b92915050565b5f819050919050565b61412681614114565b8114614130575f80fd5b50565b5f813590506141418161411d565b92915050565b5f806040838503121561415d5761415c6140b6565b5b5f61416a85828601614100565b925050602061417b85828601614133565b9150509250929050565b5f8115159050919050565b61419981614185565b82525050565b5f6020820190506141b25f830184614190565b92915050565b5f602082840312156141cd576141cc6140b6565b5b5f6141da84828501614100565b91505092915050565b5f819050919050565b5f6142066142016141fc846140ba565b6141e3565b6140ba565b9050919050565b5f614217826141ec565b9050919050565b5f6142288261420d565b9050919050565b6142388161421e565b82525050565b5f6020820190506142515f83018461422f565b92915050565b61426081614114565b82525050565b5f6020820190506142795f830184614257565b92915050565b5f60208284031215614294576142936140b6565b5b5f6142a184828501614133565b91505092915050565b5f805f606084860312156142c1576142c06140b6565b5b5f6142ce86828701614100565b93505060206142df86828701614100565b92505060406142f086828701614133565b9150509250925092565b61430381614185565b811461430d575f80fd5b50565b5f8135905061431e816142fa565b92915050565b5f806040838503121561433a576143396140b6565b5b5f61434785828601614100565b925050602061435885828601614310565b9150509250929050565b5f60ff82169050919050565b61437781614362565b82525050565b5f6020820190506143905f83018461436e565b92915050565b61439f816140d9565b82525050565b5f6020820190506143b85f830184614396565b92915050565b5f80604083850312156143d4576143d36140b6565b5b5f6143e185828601614133565b92505060206143f285828601614133565b9150509250929050565b5f60208284031215614411576144106140b6565b5b5f61441e84828501614310565b91505092915050565b5f806040838503121561443d5761443c6140b6565b5b5f61444a85828601614100565b925050602061445b85828601614100565b9150509250929050565b5f805f806080858703121561447d5761447c6140b6565b5b5f61448a87828801614133565b945050602061449b87828801614133565b93505060406144ac87828801614133565b92505060606144bd87828801614133565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061450d57607f821691505b6020821081036145205761451f6144c9565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61455a602083614016565b915061456582614526565b602082019050919050565b5f6020820190508181035f8301526145878161454e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6145c582614114565b91506145d083614114565b92508282026145de81614114565b915082820484148315176145f5576145f461458e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61463382614114565b915061463e83614114565b92508261464e5761464d6145fc565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f6146b3602f83614016565b91506146be82614659565b604082019050919050565b5f6020820190508181035f8301526146e0816146a7565b9050919050565b5f6146f182614114565b91506146fc83614114565b92508282019050808211156147145761471361458e565b5b92915050565b7f57616974656420746f6f206c6f6e6720746f20626c61636b6c697374000000005f82015250565b5f61474e601c83614016565b91506147598261471a565b602082019050919050565b5f6020820190508181035f83015261477b81614742565b9050919050565b7f4d757374206b656570206665657320617420323025206f72206c6573730000005f82015250565b5f6147b6601d83614016565b91506147c182614782565b602082019050919050565b5f6020820190508181035f8301526147e3816147aa565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614844603983614016565b915061484f826147ea565b604082019050919050565b5f6020820190508181035f83015261487181614838565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f6148d2602483614016565b91506148dd82614878565b604082019050919050565b5f6020820190508181035f8301526148ff816148c6565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f614960603583614016565b915061496b82614906565b604082019050919050565b5f6020820190508181035f83015261498d81614954565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f6149ee603483614016565b91506149f982614994565b604082019050919050565b5f6020820190508181035f830152614a1b816149e2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614a7c602683614016565b9150614a8782614a22565b604082019050919050565b5f6020820190508181035f830152614aa981614a70565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614b0a602483614016565b9150614b1582614ab0565b604082019050919050565b5f6020820190508181035f830152614b3781614afe565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614b98602283614016565b9150614ba382614b3e565b604082019050919050565b5f6020820190508181035f830152614bc581614b8c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614c26602583614016565b9150614c3182614bcc565b604082019050919050565b5f6020820190508181035f830152614c5381614c1a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614cb4602383614016565b9150614cbf82614c5a565b604082019050919050565b5f6020820190508181035f830152614ce181614ca8565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d20745f8201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b5f614d42603183614016565b9150614d4d82614ce8565b604082019050919050565b5f6020820190508181035f830152614d6f81614d36565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614daa601683614016565b9150614db582614d76565b602082019050919050565b5f6020820190508181035f830152614dd781614d9e565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f614e5e604983614016565b9150614e6982614dde565b606082019050919050565b5f6020820190508181035f830152614e8b81614e52565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f614eec603583614016565b9150614ef782614e92565b604082019050919050565b5f6020820190508181035f830152614f1981614ee0565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614f54601383614016565b9150614f5f82614f20565b602082019050919050565b5f6020820190508181035f830152614f8181614f48565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f614fe2603683614016565b9150614fed82614f88565b604082019050919050565b5f6020820190508181035f83015261500f81614fd6565b9050919050565b5f61502082614114565b915061502b83614114565b92508282039050818111156150435761504261458e565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61507d601b83614016565b915061508882615049565b602082019050919050565b5f6020820190508181035f8301526150aa81615071565b9050919050565b5f6060820190506150c45f830186614257565b6150d16020830185614257565b6150de6040830184614257565b949350505050565b5f81905092915050565b50565b5f6150fe5f836150e6565b9150615109826150f0565b5f82019050919050565b5f61511d826150f3565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f615181602183614016565b915061518c82615127565b604082019050919050565b5f6020820190508181035f8301526151ae81615175565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061521d816140ea565b92915050565b5f60208284031215615238576152376140b6565b5b5f6152458482850161520f565b91505092915050565b5f819050919050565b5f61527161526c6152678461524e565b6141e3565b614114565b9050919050565b61528181615257565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6152b9816140d9565b82525050565b5f6152ca83836152b0565b60208301905092915050565b5f602082019050919050565b5f6152ec82615287565b6152f68185615291565b9350615301836152a1565b805f5b8381101561533157815161531888826152bf565b9750615323836152d6565b925050600181019050615304565b5085935050505092915050565b5f60a0820190506153515f830188614257565b61535e6020830187615278565b818103604083015261537081866152e2565b905061537f6060830185614396565b61538c6080830184614257565b9695505050505050565b5f60c0820190506153a95f830189614396565b6153b66020830188614257565b6153c36040830187615278565b6153d06060830186615278565b6153dd6080830185614396565b6153ea60a0830184614257565b979650505050505050565b5f815190506154038161411d565b92915050565b5f805f606084860312156154205761541f6140b6565b5b5f61542d868287016153f5565b935050602061543e868287016153f5565b925050604061544f868287016153f5565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201bc1c85158a4e85875f0353f8c39591f50657d82333e14ce7c26ac16ecca9c1e64736f6c63430008140033

Deployed Bytecode

0x60806040526004361061031d575f3560e01c8063924de9b7116101aa578063c0246668116100f6578063e2f4560511610094578063f11a24d31161006e578063f11a24d314610bba578063f2fde38b14610be4578063f637434214610c0c578063f8b45b0514610c3657610324565b8063e2f4560514610b3e578063e7ad9fcd14610b68578063e884f26014610b9057610324565b8063c8c8ebe4116100d0578063c8c8ebe414610a72578063d257b34f14610a9c578063d85ba06314610ad8578063dd62ed3e14610b0257610324565b8063c0246668146109f8578063c18bc19514610a20578063c876d0b914610a4857610324565b8063a4d15b6411610163578063b2b2c0bb1161013d578063b2b2c0bb14610940578063b62496f51461096a578063bbc0c742146109a6578063bde73318146109d057610324565b8063a4d15b64146108b0578063a5cf68ef146108da578063a9059cbb1461090457610324565b8063924de9b7146107a857806395d89b41146107d05780639a7a23d6146107fa5780639fccce3214610822578063a26577781461084c578063a457c2d71461087457610324565b80634a62bb651161026957806370a08231116102225780637571336a116101fc5780637571336a14610716578063762d868a1461073e5780638a8c523c146107685780638da5cb5b1461077e57610324565b806370a082311461069a578063715018a6146106d6578063751039fc146106ec57610324565b80634a62bb651461058e5780634fbee193146105b8578063541a43cf146105f457806366ca9b831461061e5780636a486a8e146106465780636ddd17131461067057610324565b80631b5cc613116102d65780632d5a5d34116102b05780632d5a5d34146104d6578063313ce567146104fe578063395093511461052857806349bd5a5e1461056457610324565b80631b5cc61314610448578063203e727e1461047257806323b872dd1461049a57610324565b806306fdde0314610328578063095ea7b31461035257806310d5de531461038e5780631694505e146103ca57806318160ddd146103f45780631a8145bb1461041e57610324565b3661032457005b5f80fd5b348015610333575f80fd5b5061033c610c60565b6040516103499190614096565b60405180910390f35b34801561035d575f80fd5b5061037860048036038101906103739190614147565b610cf0565b604051610385919061419f565b60405180910390f35b348015610399575f80fd5b506103b460048036038101906103af91906141b8565b610d0d565b6040516103c1919061419f565b60405180910390f35b3480156103d5575f80fd5b506103de610d2a565b6040516103eb919061423e565b60405180910390f35b3480156103ff575f80fd5b50610408610d4e565b6040516104159190614266565b60405180910390f35b348015610429575f80fd5b50610432610d57565b60405161043f9190614266565b60405180910390f35b348015610453575f80fd5b5061045c610d5d565b6040516104699190614266565b60405180910390f35b34801561047d575f80fd5b506104986004803603810190610493919061427f565b610d63565b005b3480156104a5575f80fd5b506104c060048036038101906104bb91906142aa565b610e8c565b6040516104cd919061419f565b60405180910390f35b3480156104e1575f80fd5b506104fc60048036038101906104f79190614324565b610f60565b005b348015610509575f80fd5b5061051261109e565b60405161051f919061437d565b60405180910390f35b348015610533575f80fd5b5061054e60048036038101906105499190614147565b6110a6565b60405161055b919061419f565b60405180910390f35b34801561056f575f80fd5b50610578611154565b60405161058591906143a5565b60405180910390f35b348015610599575f80fd5b506105a2611178565b6040516105af919061419f565b60405180910390f35b3480156105c3575f80fd5b506105de60048036038101906105d991906141b8565b61118a565b6040516105eb919061419f565b60405180910390f35b3480156105ff575f80fd5b506106086111dc565b6040516106159190614266565b60405180910390f35b348015610629575f80fd5b50610644600480360381019061063f91906143be565b6111e2565b005b348015610651575f80fd5b5061065a6112e6565b6040516106679190614266565b60405180910390f35b34801561067b575f80fd5b506106846112ec565b604051610691919061419f565b60405180910390f35b3480156106a5575f80fd5b506106c060048036038101906106bb91906141b8565b6112ff565b6040516106cd9190614266565b60405180910390f35b3480156106e1575f80fd5b506106ea611344565b005b3480156106f7575f80fd5b50610700611497565b60405161070d919061419f565b60405180910390f35b348015610721575f80fd5b5061073c60048036038101906107379190614324565b61154e565b005b348015610749575f80fd5b5061075261163c565b60405161075f9190614266565b60405180910390f35b348015610773575f80fd5b5061077c611642565b005b348015610789575f80fd5b50610792611717565b60405161079f91906143a5565b60405180910390f35b3480156107b3575f80fd5b506107ce60048036038101906107c991906143fc565b61173f565b005b3480156107db575f80fd5b506107e46117f2565b6040516107f19190614096565b60405180910390f35b348015610805575f80fd5b50610820600480360381019061081b9190614324565b611882565b005b34801561082d575f80fd5b506108366119b4565b6040516108439190614266565b60405180910390f35b348015610857575f80fd5b50610872600480360381019061086d91906143fc565b6119ba565b005b34801561087f575f80fd5b5061089a60048036038101906108959190614147565b611a6d565b6040516108a7919061419f565b60405180910390f35b3480156108bb575f80fd5b506108c4611b35565b6040516108d1919061419f565b60405180910390f35b3480156108e5575f80fd5b506108ee611b48565b6040516108fb9190614266565b60405180910390f35b34801561090f575f80fd5b5061092a60048036038101906109259190614147565b611b4e565b604051610937919061419f565b60405180910390f35b34801561094b575f80fd5b50610954611b6b565b6040516109619190614266565b60405180910390f35b348015610975575f80fd5b50610990600480360381019061098b91906141b8565b611b71565b60405161099d919061419f565b60405180910390f35b3480156109b1575f80fd5b506109ba611b8e565b6040516109c7919061419f565b60405180910390f35b3480156109db575f80fd5b506109f660048036038101906109f191906141b8565b611ba1565b005b348015610a03575f80fd5b50610a1e6004803603810190610a199190614324565b611cf5565b005b348015610a2b575f80fd5b50610a466004803603810190610a41919061427f565b611e31565b005b348015610a53575f80fd5b50610a5c611f5a565b604051610a69919061419f565b60405180910390f35b348015610a7d575f80fd5b50610a86611f6c565b604051610a939190614266565b60405180910390f35b348015610aa7575f80fd5b50610ac26004803603810190610abd919061427f565b611f72565b604051610acf919061419f565b60405180910390f35b348015610ae3575f80fd5b50610aec6120e0565b604051610af99190614266565b60405180910390f35b348015610b0d575f80fd5b50610b286004803603810190610b239190614427565b6120e6565b604051610b359190614266565b60405180910390f35b348015610b49575f80fd5b50610b52612168565b604051610b5f9190614266565b60405180910390f35b348015610b73575f80fd5b50610b8e6004803603810190610b899190614465565b61216e565b005b348015610b9b575f80fd5b50610ba4612282565b604051610bb1919061419f565b60405180910390f35b348015610bc5575f80fd5b50610bce612339565b604051610bdb9190614266565b60405180910390f35b348015610bef575f80fd5b50610c0a6004803603810190610c0591906141b8565b61233f565b005b348015610c17575f80fd5b50610c20612501565b604051610c2d9190614266565b60405180910390f35b348015610c41575f80fd5b50610c4a612507565b604051610c579190614266565b60405180910390f35b606060038054610c6f906144f6565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9b906144f6565b8015610ce65780601f10610cbd57610100808354040283529160200191610ce6565b820191905f5260205f20905b815481529060010190602001808311610cc957829003601f168201915b5050505050905090565b5f610d03610cfc61250d565b8484612514565b6001905092915050565b601c602052805f5260405f205f915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b60185481565b60165481565b610d6b61250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df090614570565b60405180910390fd5b670de0b6b3a76400006103e86001610e0f610d4e565b610e1991906145bb565b610e239190614629565b610e2d9190614629565b811015610e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e66906146c9565b60405180910390fd5b670de0b6b3a764000081610e8391906145bb565b60078190555050565b5f610e988484846126d7565b610f5584610ea461250d565b610f50856040518060600160405280602881526020016154806028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610f0761250d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546135689092919063ffffffff16565b612514565b600190509392505050565b610f6861250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fed90614570565b60405180910390fd5b6028601a5461100591906146e7565b4310611046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103d90614764565b60405180910390fd5b80600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f6012905090565b5f61114a6110b261250d565b846111458560015f6110c261250d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546135ca90919063ffffffff16565b612514565b6001905092915050565b7f000000000000000000000000747408bd0c339b1bf6f82265ba6bba0c514d70bc81565b600a5f9054906101000a900460ff1681565b5f601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60155481565b6111ea61250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126f90614570565b60405180910390fd5b816010819055508060118190555060115460105461129691906146e7565b600f819055506014600f5411156112e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d9906147cc565b60405180910390fd5b5050565b60125481565b600a60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61134c61250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d190614570565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f6114a061250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461152e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152590614570565b60405180910390fd5b5f600a5f6101000a81548160ff0219169083151502179055506001905090565b61155661250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115db90614570565b60405180910390fd5b80601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60135481565b61164a61250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cf90614570565b60405180910390fd5b6001600a60016101000a81548160ff0219169083151502179055506001600a60026101000a81548160ff02191690831515021790555043601a81905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61174761250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cc90614570565b60405180910390fd5b80600a60026101000a81548160ff02191690831515021790555050565b606060048054611801906144f6565b80601f016020809104026020016040519081016040528092919081815260200182805461182d906144f6565b80156118785780601f1061184f57610100808354040283529160200191611878565b820191905f5260205f20905b81548152906001019060200180831161185b57829003601f168201915b5050505050905090565b61188a61250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190f90614570565b60405180910390fd5b7f000000000000000000000000747408bd0c339b1bf6f82265ba6bba0c514d70bc73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199d9061485a565b60405180910390fd5b6119b08282613627565b5050565b60195481565b6119c261250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4790614570565b60405180910390fd5b80600a60036101000a81548160ff02191690831515021790555050565b5f611b2b611a7961250d565b84611b26856040518060600160405280602581526020016154a86025913960015f611aa261250d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546135689092919063ffffffff16565b612514565b6001905092915050565b600a60039054906101000a900460ff1681565b60105481565b5f611b61611b5a61250d565b84846126d7565b6001905092915050565b60175481565b601d602052805f5260405f205f915054906101000a900460ff1681565b600a60019054906101000a900460ff1681565b611ba961250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2e90614570565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fbdcddef9ef45c223fdd883851191fd9fa95aa9b793f97f720258493ceed93d7560405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611cfd61250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8290614570565b60405180910390fd5b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611e25919061419f565b60405180910390a25050565b611e3961250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ec7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebe90614570565b60405180910390fd5b670de0b6b3a76400006103e86005611edd610d4e565b611ee791906145bb565b611ef19190614629565b611efb9190614629565b811015611f3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f34906148e8565b60405180910390fd5b670de0b6b3a764000081611f5191906145bb565b60098190555050565b600e5f9054906101000a900460ff1681565b60075481565b5f611f7b61250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200090614570565b60405180910390fd5b620186a06001612017610d4e565b61202191906145bb565b61202b9190614629565b82101561206d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206490614976565b60405180910390fd5b6103e8600561207a610d4e565b61208491906145bb565b61208e9190614629565b8211156120d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c790614a04565b60405180910390fd5b8160088190555060019050919050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085481565b61217661250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fb90614570565b60405180910390fd5b8360138190555082601481905550816015819055508060168190555060145460135461223091906146e7565b6012819055506014601254111561227c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612273906147cc565b60405180910390fd5b50505050565b5f61228b61250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231090614570565b60405180910390fd5b5f600e5f6101000a81548160ff0219169083151502179055506001905090565b60115481565b61234761250d565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cc90614570565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243a90614a92565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b60095481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612582576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257990614b20565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e790614bae565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126ca9190614266565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273c90614c3c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127aa90614cca565b60405180910390fd5b600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156128515750600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288790614d58565b60405180910390fd5b5f81036128a7576128a283835f6136c5565b613563565b600a5f9054906101000a900460ff1615612f4e576128c3611717565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129315750612901611717565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561296957505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129a3575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129bc5750600560149054906101000a900460ff16155b15612f4d57600a60019054906101000a900460ff16612ab057601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612a705750601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa690614dc0565b60405180910390fd5b5b600e5f9054906101000a900460ff1615612c7357612acc611717565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612b5357507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bab57507f000000000000000000000000747408bd0c339b1bf6f82265ba6bba0c514d70bc73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612c725743600b5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2690614e74565b60405180910390fd5b43600b5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b601d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612d105750601c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612db757600754811115612d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5190614f02565b60405180910390fd5b600954612d66836112ff565b82612d7191906146e7565b1115612db2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da990614f6a565b60405180910390fd5b612f4c565b601d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612e545750601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612ea357600754811115612e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9590614ff8565b60405180910390fd5b612f4b565b601c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612f4a57600954612efd836112ff565b82612f0891906146e7565b1115612f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4090614f6a565b60405180910390fd5b5b5b5b5b5b5f7f000000000000000000000000747408bd0c339b1bf6f82265ba6bba0c514d70bc73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614905080158015612fba5750600a60039054906101000a900460ff165b1561308a575f600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541415801561305757504262015180600c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461305491906146e7565b10155b156130855760155460148190555060165460138190555060145460135461307e91906146e7565b6012819055505b613112565b5f600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054036131115742600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b5f61311c306112ff565b90505f60085482101590508080156131405750600a60029054906101000a900460ff165b80156131595750600560149054906101000a900460ff16155b80156131ac5750601d5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156131ff5750601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156132525750601b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15613295576001600560146101000a81548160ff02191690831515021790555061327a61394e565b5f600560146101000a81548160ff0219169083151502179055505b5f600560149054906101000a900460ff16159050601b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806133445750601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561334d575f90505b5f811561355257601d5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156133ab57505f601254115b15613443576133d860646133ca60125489613b9390919063ffffffff16565b613c0a90919063ffffffff16565b9050601254601454826133eb91906145bb565b6133f59190614629565b60185f82825461340591906146e7565b925050819055506012546013548261341d91906145bb565b6134279190614629565b60175f82825461343791906146e7565b9250508190555061352f565b601d5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561349a57505f600f54115b1561352e576134c760646134b9600f5489613b9390919063ffffffff16565b613c0a90919063ffffffff16565b9050600f54601154826134da91906145bb565b6134e49190614629565b60185f8282546134f491906146e7565b92505081905550600f546010548261350c91906145bb565b6135169190614629565b60175f82825461352691906146e7565b925050819055505b5b5f811115613543576135428830836136c5565b5b808661354f9190615016565b95505b61355d8888886136c5565b50505050505b505050565b5f8383111582906135af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135a69190614096565b60405180910390fd5b505f83856135bd9190615016565b9050809150509392505050565b5f8082846135d891906146e7565b90508381101561361d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161361490615093565b60405180910390fd5b8091505092915050565b80601d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161372a90614c3c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036137a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161379890614cca565b60405180910390fd5b6137ac838383613c53565b6138158160405180606001604052806026815260200161545a602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546135689092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506138a4815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546135ca90919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516139419190614266565b60405180910390a3505050565b5f613958306112ff565b90505f60195460175460185461396e91906146e7565b61397891906146e7565b90505f8083148061398857505f82145b1561399557505050613b91565b60146008546139a491906145bb565b8311156139bd5760146008546139ba91906145bb565b92505b5f600283601854866139cf91906145bb565b6139d99190614629565b6139e39190614629565b90505f6139f98286613c5890919063ffffffff16565b90505f479050613a0882613ca1565b5f613a1c8247613c5890919063ffffffff16565b90505f613a4687613a3860175485613b9390919063ffffffff16565b613c0a90919063ffffffff16565b90505f613a7088613a6260195486613b9390919063ffffffff16565b613c0a90919063ffffffff16565b90505f818385613a809190615016565b613a8a9190615016565b90505f6018819055505f6017819055505f6019819055505f87118015613aaf57505f81115b15613afc57613abe8782613ed4565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601854604051613af3939291906150b1565b60405180910390a15b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613b4190615113565b5f6040518083038185875af1925050503d805f8114613b7b576040519150601f19603f3d011682016040523d82523d5f602084013e613b80565b606091505b505080985050505050505050505050505b565b5f808303613ba3575f9050613c04565b5f8284613bb091906145bb565b9050828482613bbf9190614629565b14613bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bf690615197565b60405180910390fd5b809150505b92915050565b5f613c4b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613fab565b905092915050565b505050565b5f613c9983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613568565b905092915050565b5f600267ffffffffffffffff811115613cbd57613cbc6151b5565b5b604051908082528060200260200182016040528015613ceb5781602001602082028036833780820191505090505b50905030815f81518110613d0257613d016151e2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613da5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613dc99190615223565b81600181518110613ddd57613ddc6151e2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613e42307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612514565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613ea395949392919061533e565b5f604051808303815f87803b158015613eba575f80fd5b505af1158015613ecc573d5f803e3d5ffd5b505050505050565b613eff307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612514565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b8152600401613f6396959493929190615396565b60606040518083038185885af1158015613f7f573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190613fa49190615409565b5050505050565b5f8083118290613ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fe89190614096565b60405180910390fd5b505f8385613fff9190614629565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015614043578082015181840152602081019050614028565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6140688261400c565b6140728185614016565b9350614082818560208601614026565b61408b8161404e565b840191505092915050565b5f6020820190508181035f8301526140ae818461405e565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6140e3826140ba565b9050919050565b6140f3816140d9565b81146140fd575f80fd5b50565b5f8135905061410e816140ea565b92915050565b5f819050919050565b61412681614114565b8114614130575f80fd5b50565b5f813590506141418161411d565b92915050565b5f806040838503121561415d5761415c6140b6565b5b5f61416a85828601614100565b925050602061417b85828601614133565b9150509250929050565b5f8115159050919050565b61419981614185565b82525050565b5f6020820190506141b25f830184614190565b92915050565b5f602082840312156141cd576141cc6140b6565b5b5f6141da84828501614100565b91505092915050565b5f819050919050565b5f6142066142016141fc846140ba565b6141e3565b6140ba565b9050919050565b5f614217826141ec565b9050919050565b5f6142288261420d565b9050919050565b6142388161421e565b82525050565b5f6020820190506142515f83018461422f565b92915050565b61426081614114565b82525050565b5f6020820190506142795f830184614257565b92915050565b5f60208284031215614294576142936140b6565b5b5f6142a184828501614133565b91505092915050565b5f805f606084860312156142c1576142c06140b6565b5b5f6142ce86828701614100565b93505060206142df86828701614100565b92505060406142f086828701614133565b9150509250925092565b61430381614185565b811461430d575f80fd5b50565b5f8135905061431e816142fa565b92915050565b5f806040838503121561433a576143396140b6565b5b5f61434785828601614100565b925050602061435885828601614310565b9150509250929050565b5f60ff82169050919050565b61437781614362565b82525050565b5f6020820190506143905f83018461436e565b92915050565b61439f816140d9565b82525050565b5f6020820190506143b85f830184614396565b92915050565b5f80604083850312156143d4576143d36140b6565b5b5f6143e185828601614133565b92505060206143f285828601614133565b9150509250929050565b5f60208284031215614411576144106140b6565b5b5f61441e84828501614310565b91505092915050565b5f806040838503121561443d5761443c6140b6565b5b5f61444a85828601614100565b925050602061445b85828601614100565b9150509250929050565b5f805f806080858703121561447d5761447c6140b6565b5b5f61448a87828801614133565b945050602061449b87828801614133565b93505060406144ac87828801614133565b92505060606144bd87828801614133565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061450d57607f821691505b6020821081036145205761451f6144c9565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61455a602083614016565b915061456582614526565b602082019050919050565b5f6020820190508181035f8301526145878161454e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6145c582614114565b91506145d083614114565b92508282026145de81614114565b915082820484148315176145f5576145f461458e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61463382614114565b915061463e83614114565b92508261464e5761464d6145fc565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f6146b3602f83614016565b91506146be82614659565b604082019050919050565b5f6020820190508181035f8301526146e0816146a7565b9050919050565b5f6146f182614114565b91506146fc83614114565b92508282019050808211156147145761471361458e565b5b92915050565b7f57616974656420746f6f206c6f6e6720746f20626c61636b6c697374000000005f82015250565b5f61474e601c83614016565b91506147598261471a565b602082019050919050565b5f6020820190508181035f83015261477b81614742565b9050919050565b7f4d757374206b656570206665657320617420323025206f72206c6573730000005f82015250565b5f6147b6601d83614016565b91506147c182614782565b602082019050919050565b5f6020820190508181035f8301526147e3816147aa565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614844603983614016565b915061484f826147ea565b604082019050919050565b5f6020820190508181035f83015261487181614838565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f6148d2602483614016565b91506148dd82614878565b604082019050919050565b5f6020820190508181035f8301526148ff816148c6565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f614960603583614016565b915061496b82614906565b604082019050919050565b5f6020820190508181035f83015261498d81614954565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f6149ee603483614016565b91506149f982614994565b604082019050919050565b5f6020820190508181035f830152614a1b816149e2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614a7c602683614016565b9150614a8782614a22565b604082019050919050565b5f6020820190508181035f830152614aa981614a70565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614b0a602483614016565b9150614b1582614ab0565b604082019050919050565b5f6020820190508181035f830152614b3781614afe565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614b98602283614016565b9150614ba382614b3e565b604082019050919050565b5f6020820190508181035f830152614bc581614b8c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614c26602583614016565b9150614c3182614bcc565b604082019050919050565b5f6020820190508181035f830152614c5381614c1a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614cb4602383614016565b9150614cbf82614c5a565b604082019050919050565b5f6020820190508181035f830152614ce181614ca8565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d20745f8201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b5f614d42603183614016565b9150614d4d82614ce8565b604082019050919050565b5f6020820190508181035f830152614d6f81614d36565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614daa601683614016565b9150614db582614d76565b602082019050919050565b5f6020820190508181035f830152614dd781614d9e565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f614e5e604983614016565b9150614e6982614dde565b606082019050919050565b5f6020820190508181035f830152614e8b81614e52565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f614eec603583614016565b9150614ef782614e92565b604082019050919050565b5f6020820190508181035f830152614f1981614ee0565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614f54601383614016565b9150614f5f82614f20565b602082019050919050565b5f6020820190508181035f830152614f8181614f48565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f614fe2603683614016565b9150614fed82614f88565b604082019050919050565b5f6020820190508181035f83015261500f81614fd6565b9050919050565b5f61502082614114565b915061502b83614114565b92508282039050818111156150435761504261458e565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61507d601b83614016565b915061508882615049565b602082019050919050565b5f6020820190508181035f8301526150aa81615071565b9050919050565b5f6060820190506150c45f830186614257565b6150d16020830185614257565b6150de6040830184614257565b949350505050565b5f81905092915050565b50565b5f6150fe5f836150e6565b9150615109826150f0565b5f82019050919050565b5f61511d826150f3565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f615181602183614016565b915061518c82615127565b604082019050919050565b5f6020820190508181035f8301526151ae81615175565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061521d816140ea565b92915050565b5f60208284031215615238576152376140b6565b5b5f6152458482850161520f565b91505092915050565b5f819050919050565b5f61527161526c6152678461524e565b6141e3565b614114565b9050919050565b61528181615257565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6152b9816140d9565b82525050565b5f6152ca83836152b0565b60208301905092915050565b5f602082019050919050565b5f6152ec82615287565b6152f68185615291565b9350615301836152a1565b805f5b8381101561533157815161531888826152bf565b9750615323836152d6565b925050600181019050615304565b5085935050505092915050565b5f60a0820190506153515f830188614257565b61535e6020830187615278565b818103604083015261537081866152e2565b905061537f6060830185614396565b61538c6080830184614257565b9695505050505050565b5f60c0820190506153a95f830189614396565b6153b66020830188614257565b6153c36040830187615278565b6153d06060830186615278565b6153dd6080830185614396565b6153ea60a0830184614257565b979650505050505050565b5f815190506154038161411d565b92915050565b5f805f606084860312156154205761541f6140b6565b5b5f61542d868287016153f5565b935050602061543e868287016153f5565b925050604061544f868287016153f5565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201bc1c85158a4e85875f0353f8c39591f50657d82333e14ce7c26ac16ecca9c1e64736f6c63430008140033

Deployed Bytecode Sourcemap

28795:16031:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6893:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9067:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30347:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28869:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8016:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30061:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29981;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34714:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9719:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36513:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7857:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10484:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28927:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29160:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37393:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29938:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35532:298;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29827:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29240:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8188:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21395:148;;;;;;;;;;;;;:::i;:::-;;33820:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35181:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29862:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33619:148;;;;;;;;;;;;;:::i;:::-;;20751:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35422:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7113:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36739:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30101:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34145:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11206:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29278:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29753:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8529:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30024:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30570:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29200:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37191:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36322:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34957:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29670:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29044:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34319:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29719:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8768:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29086:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35839:474;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34002:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29787:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21699:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29897:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29126:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6893:100;6947:13;6980:5;6973:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6893:100;:::o;9067:169::-;9150:4;9167:39;9176:12;:10;:12::i;:::-;9190:7;9199:6;9167:8;:39::i;:::-;9224:4;9217:11;;9067:169;;;;:::o;30347:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;28869:51::-;;;:::o;8016:108::-;8077:7;8104:12;;8097:19;;8016:108;:::o;30061:33::-;;;;:::o;29981:::-;;;;:::o;34714:234::-;20974:12;:10;:12::i;:::-;20964:22;;:6;;;;;;;;;;;:22;;;20956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34833:4:::1;34827;34823:1;34807:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;34806:31;;;;:::i;:::-;34796:6;:41;;34788:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;34933:6;34923;:17;;;;:::i;:::-;34900:20;:40;;;;34714:234:::0;:::o;9719:355::-;9859:4;9876:36;9886:6;9894:9;9905:6;9876:9;:36::i;:::-;9923:121;9932:6;9940:12;:10;:12::i;:::-;9954:89;9992:6;9954:89;;;;;;;;;;;;;;;;;:11;:19;9966:6;9954:19;;;;;;;;;;;;;;;:33;9974:12;:10;:12::i;:::-;9954:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;9923:8;:121::i;:::-;10062:4;10055:11;;9719:355;;;;;:::o;36513:217::-;20974:12;:10;:12::i;:::-;20964:22;;:6;;;;;;;;;;;:22;;;20956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36641:2:::1;36628:10;;:15;;;;:::i;:::-;36613:12;:30;36605:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;36709:13;36687:10;:19;36698:7;36687:19;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;36513:217:::0;;:::o;7857:93::-;7915:5;7940:2;7933:9;;7857:93;:::o;10484:218::-;10572:4;10589:83;10598:12;:10;:12::i;:::-;10612:7;10621:50;10660:10;10621:11;:25;10633:12;:10;:12::i;:::-;10621:25;;;;;;;;;;;;;;;:34;10647:7;10621:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;10589:8;:83::i;:::-;10690:4;10683:11;;10484:218;;;;:::o;28927:38::-;;;:::o;29160:33::-;;;;;;;;;;;;;:::o;37393:125::-;37458:4;37482:19;:28;37502:7;37482:28;;;;;;;;;;;;;;;;;;;;;;;;;37475:35;;37393:125;;;:::o;29938:36::-;;;;:::o;35532:298::-;20974:12;:10;:12::i;:::-;20964:22;;:6;;;;;;;;;;;:22;;;20956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35643:10:::1;35628:12;:25;;;;35682:13;35664:15;:31;;;;35736:15;;35721:12;;:30;;;;:::i;:::-;35706:12;:45;;;;35786:2;35770:12;;:18;;35762:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;35532:298:::0;;:::o;29827:28::-;;;;:::o;29240:31::-;;;;;;;;;;;;;:::o;8188:127::-;8262:7;8289:9;:18;8299:7;8289:18;;;;;;;;;;;;;;;;8282:25;;8188:127;;;:::o;21395:148::-;20974:12;:10;:12::i;:::-;20964:22;;:6;;;;;;;;;;;:22;;;20956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21502:1:::1;21465:40;;21486:6;;;;;;;;;;;21465:40;;;;;;;;;;;;21533:1;21516:6;;:19;;;;;;;;;;;;;;;;;;21395:148::o:0;33820:120::-;33872:4;20974:12;:10;:12::i;:::-;20964:22;;:6;;;;;;;;;;;:22;;;20956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33905:5:::1;33888:14;;:22;;;;;;;;;;;;;;;;;;33928:4;33921:11;;33820:120:::0;:::o;35181:144::-;20974:12;:10;:12::i;:::-;20964:22;;:6;;;;;;;;;;;:22;;;20956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35313:4:::1;35271:31;:39;35303:6;35271:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;35181:144:::0;;:::o;29862:28::-;;;;:::o;33619:148::-;20974:12;:10;:12::i;:::-;20964:22;;:6;;;;;;;;;;;:22;;;20956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33690:4:::1;33674:13;;:20;;;;;;;;;;;;;;;;;;33719:4;33705:11;;:18;;;;;;;;;;;;;;;;;;33747:12;33734:10;:25;;;;33619:148::o:0;20751:79::-;20789:7;20816:6;;;;;;;;;;;20809:13;;20751:79;:::o;35422:101::-;20974:12;:10;:12::i;:::-;20964:22;;:6;;;;;;;;;;;:22;;;20956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35508:7:::1;35494:11;;:21;;;;;;;;;;;;;;;;;;35422:101:::0;:::o;7113:104::-;7169:13;7202:7;7195:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7113:104;:::o;36739:245::-;20974:12;:10;:12::i;:::-;20964:22;;:6;;;;;;;;;;;:22;;;20956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36846:13:::1;36838:21;;:4;:21;;::::0;36830:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;36935:41;36964:4;36970:5;36935:28;:41::i;:::-;36739:245:::0;;:::o;30101:27::-;;;;:::o;34145:102::-;20974:12;:10;:12::i;:::-;20964:22;;:6;;;;;;;;;;;:22;;;20956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34234:5:::1;34213:18;;:26;;;;;;;;;;;;;;;;;;34145:102:::0;:::o;11206:269::-;11299:4;11316:129;11325:12;:10;:12::i;:::-;11339:7;11348:96;11387:15;11348:96;;;;;;;;;;;;;;;;;:11;:25;11360:12;:10;:12::i;:::-;11348:25;;;;;;;;;;;;;;;:34;11374:7;11348:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;11316:8;:129::i;:::-;11463:4;11456:11;;11206:269;;;;:::o;29278:37::-;;;;;;;;;;;;;:::o;29753:27::-;;;;:::o;8529:175::-;8615:4;8632:42;8642:12;:10;:12::i;:::-;8656:9;8667:6;8632:9;:42::i;:::-;8692:4;8685:11;;8529:175;;;;:::o;30024:30::-;;;;:::o;30570:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;29200:33::-;;;;;;;;;;;;;:::o;37191:187::-;20974:12;:10;:12::i;:::-;20964:22;;:6;;;;;;;;;;;:22;;;20956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37316:12:::1;;;;;;;;;;;37279:50;;37299:15;37279:50;;;;;;;;;;;;37355:15;37340:12;;:30;;;;;;;;;;;;;;;;;;37191:187:::0;:::o;36322:182::-;20974:12;:10;:12::i;:::-;20964:22;;:6;;;;;;;;;;;:22;;;20956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36438:8:::1;36407:19;:28;36427:7;36407:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;36478:7;36462:34;;;36487:8;36462:34;;;;;;:::i;:::-;;;;;;;;36322:182:::0;;:::o;34957:215::-;20974:12;:10;:12::i;:::-;20964:22;;:6;;;;;;;;;;;:22;;;20956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35079:4:::1;35073;35069:1;35053:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;35052:31;;;;:::i;:::-;35042:6;:41;;35034:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;35157:6;35147;:17;;;;:::i;:::-;35135:9;:29;;;;34957:215:::0;:::o;29670:39::-;;;;;;;;;;;;;:::o;29044:35::-;;;;:::o;34319:386::-;34400:4;20974:12;:10;:12::i;:::-;20964:22;;:6;;;;;;;;;;;:22;;;20956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34457:6:::1;34453:1;34437:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;34424:9;:39;;34416:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;34573:4;34569:1;34553:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;34540:9;:37;;34532:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;34666:9;34645:18;:30;;;;34693:4;34686:11;;34319:386:::0;;;:::o;29719:27::-;;;;:::o;8768:151::-;8857:7;8884:11;:18;8896:5;8884:18;;;;;;;;;;;;;;;:27;8903:7;8884:27;;;;;;;;;;;;;;;;8877:34;;8768:151;;;;:::o;29086:33::-;;;;:::o;35839:474::-;20974:12;:10;:12::i;:::-;20964:22;;:6;;;;;;;;;;;:22;;;20956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36013:10:::1;35997:13;:26;;;;36053:13;36034:16;:32;;;;36101:22;36077:21;:46;;;;36155:19;36134:18;:40;;;;36217:16;;36201:13;;:32;;;;:::i;:::-;36185:13;:48;;;;36269:2;36252:13;;:19;;36244:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;35839:474:::0;;;;:::o;34002:134::-;34062:4;20974:12;:10;:12::i;:::-;20964:22;;:6;;;;;;;;;;;:22;;;20956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34101:5:::1;34078:20;;:28;;;;;;;;;;;;;;;;;;34124:4;34117:11;;34002:134:::0;:::o;29787:30::-;;;;:::o;21699:244::-;20974:12;:10;:12::i;:::-;20964:22;;:6;;;;;;;;;;;:22;;;20956:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21808:1:::1;21788:22;;:8;:22;;::::0;21780:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21898:8;21869:38;;21890:6;;;;;;;;;;;21869:38;;;;;;;;;;;;21927:8;21918:6;;:17;;;;;;;;;;;;;;;;;;21699:244:::0;:::o;29897:31::-;;;;:::o;29126:24::-;;;;:::o;97:98::-;150:7;177:10;170:17;;97:98;:::o;14402:381::-;14555:1;14538:19;;:5;:19;;;14530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14636:1;14617:21;;:7;:21;;;14609:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14721:6;14691:11;:18;14703:5;14691:18;;;;;;;;;;;;;;;:27;14710:7;14691:27;;;;;;;;;;;;;;;:36;;;;14759:7;14743:32;;14752:5;14743:32;;;14768:6;14743:32;;;;;;:::i;:::-;;;;;;;;14402:381;;;:::o;37578:4621::-;37726:1;37710:18;;:4;:18;;;37702:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37803:1;37789:16;;:2;:16;;;37781:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;37865:10;:14;37876:2;37865:14;;;;;;;;;;;;;;;;;;;;;;;;;37864:15;:36;;;;;37884:10;:16;37895:4;37884:16;;;;;;;;;;;;;;;;;;;;;;;;;37883:17;37864:36;37856:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;37979:1;37969:6;:11;37966:92;;37997:28;38013:4;38019:2;38023:1;37997:15;:28::i;:::-;38040:7;;37966:92;38074:14;;;;;;;;;;;38071:1811;;;38134:7;:5;:7::i;:::-;38126:15;;:4;:15;;;;:49;;;;;38168:7;:5;:7::i;:::-;38162:13;;:2;:13;;;;38126:49;:86;;;;;38210:1;38196:16;;:2;:16;;;;38126:86;:128;;;;;38247:6;38233:21;;:2;:21;;;;38126:128;:158;;;;;38276:8;;;;;;;;;;;38275:9;38126:158;38104:1767;;;38322:13;;;;;;;;;;;38318:148;;38367:19;:25;38387:4;38367:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;38396:19;:23;38416:2;38396:23;;;;;;;;;;;;;;;;;;;;;;;;;38367:52;38359:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;38318:148;38625:20;;;;;;;;;;;38621:423;;;38679:7;:5;:7::i;:::-;38673:13;;:2;:13;;;;:47;;;;;38704:15;38690:30;;:2;:30;;;;38673:47;:79;;;;;38738:13;38724:28;;:2;:28;;;;38673:79;38669:356;;;38830:12;38788:28;:39;38817:9;38788:39;;;;;;;;;;;;;;;;:54;38780:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;38989:12;38947:28;:39;38976:9;38947:39;;;;;;;;;;;;;;;:54;;;;38669:356;38621:423;39097:25;:31;39123:4;39097:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;39133:31;:35;39165:2;39133:35;;;;;;;;;;;;;;;;;;;;;;;;;39132:36;39097:71;39093:763;;;39215:20;;39205:6;:30;;39197:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;39354:9;;39337:13;39347:2;39337:9;:13::i;:::-;39328:6;:22;;;;:::i;:::-;:35;;39320:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;39093:763;;;39466:25;:29;39492:2;39466:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;39500:31;:37;39532:4;39500:37;;;;;;;;;;;;;;;;;;;;;;;;;39499:38;39466:71;39462:394;;;39584:20;;39574:6;:30;;39566:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;39462:394;;;39710:31;:35;39742:2;39710:35;;;;;;;;;;;;;;;;;;;;;;;;;39706:150;;39803:9;;39786:13;39796:2;39786:9;:13::i;:::-;39777:6;:22;;;;:::i;:::-;:35;;39769:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;39706:150;39462:394;39093:763;38104:1767;38071:1811;39924:10;39945:13;39937:21;;:4;:21;;;39924:34;;39974:5;39973:6;:28;;;;;39983:18;;;;;;;;;;;39973:28;39969:535;;;40056:1;40022:24;:30;40047:4;40022:30;;;;;;;;;;;;;;;;:35;;:120;;;;;40126:15;40113:8;40079:24;:30;40104:4;40079:30;;;;;;;;;;;;;;;;:43;;;;:::i;:::-;:62;;40022:120;40018:322;;;40183:21;;40164:16;:40;;;;40239:18;;40223:13;:34;;;;40308:16;;40292:13;;:32;;;;:::i;:::-;40276:13;:48;;;;40018:322;39969:535;;;40409:1;40377:24;:28;40402:2;40377:28;;;;;;;;;;;;;;;;:33;40373:120;;40462:15;40431:24;:28;40456:2;40431:28;;;;;;;;;;;;;;;:46;;;;40373:120;39969:535;40517:28;40548:24;40566:4;40548:9;:24::i;:::-;40517:55;;40586:12;40625:18;;40601:20;:42;;40586:57;;40675:7;:35;;;;;40699:11;;;;;;;;;;;40675:35;:61;;;;;40728:8;;;;;;;;;;;40727:9;40675:61;:110;;;;;40754:25;:31;40780:4;40754:31;;;;;;;;;;;;;;;;;;;;;;;;;40753:32;40675:110;:153;;;;;40803:19;:25;40823:4;40803:25;;;;;;;;;;;;;;;;;;;;;;;;;40802:26;40675:153;:194;;;;;40846:19;:23;40866:2;40846:23;;;;;;;;;;;;;;;;;;;;;;;;;40845:24;40675:194;40657:328;;;40907:4;40896:8;;:15;;;;;;;;;;;;;;;;;;40929:10;:8;:10::i;:::-;40968:5;40957:8;;:16;;;;;;;;;;;;;;;;;;40657:328;40998:12;41014:8;;;;;;;;;;;41013:9;40998:24;;41124:19;:25;41144:4;41124:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;41153:19;:23;41173:2;41153:23;;;;;;;;;;;;;;;;;;;;;;;;;41124:52;41121:99;;;41203:5;41193:15;;41121:99;41233:12;41337:7;41334:811;;;41388:25;:29;41414:2;41388:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;41437:1;41421:13;;:17;41388:50;41384:608;;;41465:34;41495:3;41465:25;41476:13;;41465:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;41458:41;;41566:13;;41547:16;;41540:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;41518:18;;:61;;;;;;;:::i;:::-;;;;;;;;41640:13;;41624;;41617:4;:20;;;;:::i;:::-;:36;;;;:::i;:::-;41598:15;;:55;;;;;;;:::i;:::-;;;;;;;;41384:608;;;41714:25;:31;41740:4;41714:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;41764:1;41749:12;;:16;41714:51;41711:281;;;41793:33;41822:3;41793:24;41804:12;;41793:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;41786:40;;41892:12;;41874:15;;41867:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;41845:18;;:59;;;;;;;:::i;:::-;;;;;;;;41964:12;;41949;;41942:4;:19;;;;:::i;:::-;:34;;;;:::i;:::-;41923:15;;:53;;;;;;;:::i;:::-;;;;;;;;41711:281;41384:608;42019:1;42012:4;:8;42009:93;;;42044:42;42060:4;42074;42081;42044:15;:42::i;:::-;42009:93;42129:4;42119:14;;;;;:::i;:::-;;;41334:811;42158:33;42174:4;42180:2;42184:6;42158:15;:33::i;:::-;37691:4508;;;;;37578:4621;;;;:::o;16689:193::-;16775:7;16808:1;16803;:6;;16811:12;16795:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;16835:9;16851:1;16847;:5;;;;:::i;:::-;16835:17;;16873:1;16866:8;;;16689:193;;;;;:::o;15783:182::-;15841:7;15861:9;15877:1;15873;:5;;;;:::i;:::-;15861:17;;15902:1;15897;:6;;15889:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;15956:1;15949:8;;;15783:182;;;;:::o;36993:189::-;37110:5;37076:25;:31;37102:4;37076:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;37168:5;37134:40;;37162:4;37134:40;;;;;;;;;;;;36993:189;;:::o;11966:575::-;12124:1;12106:20;;:6;:20;;;12098:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12208:1;12187:23;;:9;:23;;;12179:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12264:47;12285:6;12293:9;12304:6;12264:20;:47::i;:::-;12345:71;12367:6;12345:71;;;;;;;;;;;;;;;;;:9;:17;12355:6;12345:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;12325:9;:17;12335:6;12325:17;;;;;;;;;;;;;;;:91;;;;12450:32;12475:6;12450:9;:20;12460:9;12450:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;12427:9;:20;12437:9;12427:20;;;;;;;;;;;;;;;:55;;;;12515:9;12498:35;;12507:6;12498:35;;;12526:6;12498:35;;;;;;:::i;:::-;;;;;;;;11966:575;;;:::o;43343:1478::-;43382:23;43408:24;43426:4;43408:9;:24::i;:::-;43382:50;;43443:25;43510:12;;43492:15;;43471:18;;:36;;;;:::i;:::-;:51;;;;:::i;:::-;43443:79;;43533:12;43581:1;43562:15;:20;:46;;;;43607:1;43586:17;:22;43562:46;43559:60;;;43611:7;;;;;43559:60;43674:2;43653:18;;:23;;;;:::i;:::-;43635:15;:41;43632:111;;;43729:2;43708:18;;:23;;;;:::i;:::-;43690:41;;43632:111;43805:23;43890:1;43870:17;43849:18;;43831:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;43805:86;;43902:26;43931:36;43951:15;43931;:19;;:36;;;;:::i;:::-;43902:65;;43981:25;44009:21;43981:49;;44044:36;44061:18;44044:16;:36::i;:::-;44095:18;44116:44;44142:17;44116:21;:25;;:44;;;;:::i;:::-;44095:65;;44174:20;44197:54;44233:17;44197:31;44212:15;;44197:10;:14;;:31;;;;:::i;:::-;:35;;:54;;;;:::i;:::-;44174:77;;44262:17;44282:51;44315:17;44282:28;44297:12;;44282:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;44262:71;;44344:23;44398:9;44383:12;44370:10;:25;;;;:::i;:::-;:37;;;;:::i;:::-;44344:63;;44445:1;44424:18;:22;;;;44475:1;44457:15;:19;;;;44502:1;44487:12;:16;;;;44538:1;44520:15;:19;:42;;;;;44561:1;44543:15;:19;44520:42;44517:210;;;44578:46;44591:15;44608;44578:12;:46::i;:::-;44644:71;44659:18;44679:15;44696:18;;44644:71;;;;;;;;:::i;:::-;;;;;;;;44517:210;44761:12;;;;;;;;;;;44753:26;;44787:21;44753:60;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44740:73;;;;;43371:1450;;;;;;;;;;43343:1478;:::o;17142:473::-;17200:7;17450:1;17445;:6;17441:47;;17475:1;17468:8;;;;17441:47;17501:9;17517:1;17513;:5;;;;:::i;:::-;17501:17;;17546:1;17541;17537;:5;;;;:::i;:::-;:10;17529:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;17606:1;17599:8;;;17142:473;;;;;:::o;18092:132::-;18150:7;18177:39;18181:1;18184;18177:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;18170:46;;18092:132;;;;:::o;15387:125::-;;;;:::o;16249:136::-;16307:7;16334:43;16338:1;16341;16334:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;16327:50;;16249:136;;;;:::o;42208:597::-;42337:21;42375:1;42361:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42337:40;;42406:4;42388;42393:1;42388:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;42432:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42422:4;42427:1;42422:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;42468:62;42485:4;42500:15;42518:11;42468:8;:62::i;:::-;42570:15;:66;;;42651:11;42677:1;42721:4;42748;42768:15;42570:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42263:542;42208:597;:::o;42814:520::-;42962:62;42979:4;42994:15;43012:11;42962:8;:62::i;:::-;43068:15;:31;;;43107:9;43140:4;43160:11;43186:1;43229;43280:4;43300:15;43068:258;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;42814:520;;:::o;18721:279::-;18807:7;18839:1;18835;:5;18842:12;18827:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;18866:9;18882:1;18878;:5;;;;:::i;:::-;18866:17;;18991:1;18984:8;;;18721:279;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:329::-;5170:6;5219:2;5207:9;5198:7;5194:23;5190:32;5187:119;;;5225:79;;:::i;:::-;5187:119;5345:1;5370:53;5415:7;5406:6;5395:9;5391:22;5370:53;:::i;:::-;5360:63;;5316:117;5111:329;;;;:::o;5446:619::-;5523:6;5531;5539;5588:2;5576:9;5567:7;5563:23;5559:32;5556:119;;;5594:79;;:::i;:::-;5556:119;5714:1;5739:53;5784:7;5775:6;5764:9;5760:22;5739:53;:::i;:::-;5729:63;;5685:117;5841:2;5867:53;5912:7;5903:6;5892:9;5888:22;5867:53;:::i;:::-;5857:63;;5812:118;5969:2;5995:53;6040:7;6031:6;6020:9;6016:22;5995:53;:::i;:::-;5985:63;;5940:118;5446:619;;;;;:::o;6071:116::-;6141:21;6156:5;6141:21;:::i;:::-;6134:5;6131:32;6121:60;;6177:1;6174;6167:12;6121:60;6071:116;:::o;6193:133::-;6236:5;6274:6;6261:20;6252:29;;6290:30;6314:5;6290:30;:::i;:::-;6193:133;;;;:::o;6332:468::-;6397:6;6405;6454:2;6442:9;6433:7;6429:23;6425:32;6422:119;;;6460:79;;:::i;:::-;6422:119;6580:1;6605:53;6650:7;6641:6;6630:9;6626:22;6605:53;:::i;:::-;6595:63;;6551:117;6707:2;6733:50;6775:7;6766:6;6755:9;6751:22;6733:50;:::i;:::-;6723:60;;6678:115;6332:468;;;;;:::o;6806:86::-;6841:7;6881:4;6874:5;6870:16;6859:27;;6806:86;;;:::o;6898:112::-;6981:22;6997:5;6981:22;:::i;:::-;6976:3;6969:35;6898:112;;:::o;7016:214::-;7105:4;7143:2;7132:9;7128:18;7120:26;;7156:67;7220:1;7209:9;7205:17;7196:6;7156:67;:::i;:::-;7016:214;;;;:::o;7236:118::-;7323:24;7341:5;7323:24;:::i;:::-;7318:3;7311:37;7236:118;;:::o;7360:222::-;7453:4;7491:2;7480:9;7476:18;7468:26;;7504:71;7572:1;7561:9;7557:17;7548:6;7504:71;:::i;:::-;7360:222;;;;:::o;7588:474::-;7656:6;7664;7713:2;7701:9;7692:7;7688:23;7684:32;7681:119;;;7719:79;;:::i;:::-;7681:119;7839:1;7864:53;7909:7;7900:6;7889:9;7885:22;7864:53;:::i;:::-;7854:63;;7810:117;7966:2;7992:53;8037:7;8028:6;8017:9;8013:22;7992:53;:::i;:::-;7982:63;;7937:118;7588:474;;;;;:::o;8068:323::-;8124:6;8173:2;8161:9;8152:7;8148:23;8144:32;8141:119;;;8179:79;;:::i;:::-;8141:119;8299:1;8324:50;8366:7;8357:6;8346:9;8342:22;8324:50;:::i;:::-;8314:60;;8270:114;8068:323;;;;:::o;8397:474::-;8465:6;8473;8522:2;8510:9;8501:7;8497:23;8493:32;8490:119;;;8528:79;;:::i;:::-;8490:119;8648:1;8673:53;8718:7;8709:6;8698:9;8694:22;8673:53;:::i;:::-;8663:63;;8619:117;8775:2;8801:53;8846:7;8837:6;8826:9;8822:22;8801:53;:::i;:::-;8791:63;;8746:118;8397:474;;;;;:::o;8877:765::-;8963:6;8971;8979;8987;9036:3;9024:9;9015:7;9011:23;9007:33;9004:120;;;9043:79;;:::i;:::-;9004:120;9163:1;9188:53;9233:7;9224:6;9213:9;9209:22;9188:53;:::i;:::-;9178:63;;9134:117;9290:2;9316:53;9361:7;9352:6;9341:9;9337:22;9316:53;:::i;:::-;9306:63;;9261:118;9418:2;9444:53;9489:7;9480:6;9469:9;9465:22;9444:53;:::i;:::-;9434:63;;9389:118;9546:2;9572:53;9617:7;9608:6;9597:9;9593:22;9572:53;:::i;:::-;9562:63;;9517:118;8877:765;;;;;;;:::o;9648:180::-;9696:77;9693:1;9686:88;9793:4;9790:1;9783:15;9817:4;9814:1;9807:15;9834:320;9878:6;9915:1;9909:4;9905:12;9895:22;;9962:1;9956:4;9952:12;9983:18;9973:81;;10039:4;10031:6;10027:17;10017:27;;9973:81;10101:2;10093:6;10090:14;10070:18;10067:38;10064:84;;10120:18;;:::i;:::-;10064:84;9885:269;9834:320;;;:::o;10160:182::-;10300:34;10296:1;10288:6;10284:14;10277:58;10160:182;:::o;10348:366::-;10490:3;10511:67;10575:2;10570:3;10511:67;:::i;:::-;10504:74;;10587:93;10676:3;10587:93;:::i;:::-;10705:2;10700:3;10696:12;10689:19;;10348:366;;;:::o;10720:419::-;10886:4;10924:2;10913:9;10909:18;10901:26;;10973:9;10967:4;10963:20;10959:1;10948:9;10944:17;10937:47;11001:131;11127:4;11001:131;:::i;:::-;10993:139;;10720:419;;;:::o;11145:180::-;11193:77;11190:1;11183:88;11290:4;11287:1;11280:15;11314:4;11311:1;11304:15;11331:410;11371:7;11394:20;11412:1;11394:20;:::i;:::-;11389:25;;11428:20;11446:1;11428:20;:::i;:::-;11423:25;;11483:1;11480;11476:9;11505:30;11523:11;11505:30;:::i;:::-;11494:41;;11684:1;11675:7;11671:15;11668:1;11665:22;11645:1;11638:9;11618:83;11595:139;;11714:18;;:::i;:::-;11595:139;11379:362;11331:410;;;;:::o;11747:180::-;11795:77;11792:1;11785:88;11892:4;11889:1;11882:15;11916:4;11913:1;11906:15;11933:185;11973:1;11990:20;12008:1;11990:20;:::i;:::-;11985:25;;12024:20;12042:1;12024:20;:::i;:::-;12019:25;;12063:1;12053:35;;12068:18;;:::i;:::-;12053:35;12110:1;12107;12103:9;12098:14;;11933:185;;;;:::o;12124:234::-;12264:34;12260:1;12252:6;12248:14;12241:58;12333:17;12328:2;12320:6;12316:15;12309:42;12124:234;:::o;12364:366::-;12506:3;12527:67;12591:2;12586:3;12527:67;:::i;:::-;12520:74;;12603:93;12692:3;12603:93;:::i;:::-;12721:2;12716:3;12712:12;12705:19;;12364:366;;;:::o;12736:419::-;12902:4;12940:2;12929:9;12925:18;12917:26;;12989:9;12983:4;12979:20;12975:1;12964:9;12960:17;12953:47;13017:131;13143:4;13017:131;:::i;:::-;13009:139;;12736:419;;;:::o;13161:191::-;13201:3;13220:20;13238:1;13220:20;:::i;:::-;13215:25;;13254:20;13272:1;13254:20;:::i;:::-;13249:25;;13297:1;13294;13290:9;13283:16;;13318:3;13315:1;13312:10;13309:36;;;13325:18;;:::i;:::-;13309:36;13161:191;;;;:::o;13358:178::-;13498:30;13494:1;13486:6;13482:14;13475:54;13358:178;:::o;13542:366::-;13684:3;13705:67;13769:2;13764:3;13705:67;:::i;:::-;13698:74;;13781:93;13870:3;13781:93;:::i;:::-;13899:2;13894:3;13890:12;13883:19;;13542:366;;;:::o;13914:419::-;14080:4;14118:2;14107:9;14103:18;14095:26;;14167:9;14161:4;14157:20;14153:1;14142:9;14138:17;14131:47;14195:131;14321:4;14195:131;:::i;:::-;14187:139;;13914:419;;;:::o;14339:179::-;14479:31;14475:1;14467:6;14463:14;14456:55;14339:179;:::o;14524:366::-;14666:3;14687:67;14751:2;14746:3;14687:67;:::i;:::-;14680:74;;14763:93;14852:3;14763:93;:::i;:::-;14881:2;14876:3;14872:12;14865:19;;14524:366;;;:::o;14896:419::-;15062:4;15100:2;15089:9;15085:18;15077:26;;15149:9;15143:4;15139:20;15135:1;15124:9;15120:17;15113:47;15177:131;15303:4;15177:131;:::i;:::-;15169:139;;14896:419;;;:::o;15321:244::-;15461:34;15457:1;15449:6;15445:14;15438:58;15530:27;15525:2;15517:6;15513:15;15506:52;15321:244;:::o;15571:366::-;15713:3;15734:67;15798:2;15793:3;15734:67;:::i;:::-;15727:74;;15810:93;15899:3;15810:93;:::i;:::-;15928:2;15923:3;15919:12;15912:19;;15571:366;;;:::o;15943:419::-;16109:4;16147:2;16136:9;16132:18;16124:26;;16196:9;16190:4;16186:20;16182:1;16171:9;16167:17;16160:47;16224:131;16350:4;16224:131;:::i;:::-;16216:139;;15943:419;;;:::o;16368:223::-;16508:34;16504:1;16496:6;16492:14;16485:58;16577:6;16572:2;16564:6;16560:15;16553:31;16368:223;:::o;16597:366::-;16739:3;16760:67;16824:2;16819:3;16760:67;:::i;:::-;16753:74;;16836:93;16925:3;16836:93;:::i;:::-;16954:2;16949:3;16945:12;16938:19;;16597:366;;;:::o;16969:419::-;17135:4;17173:2;17162:9;17158:18;17150:26;;17222:9;17216:4;17212:20;17208:1;17197:9;17193:17;17186:47;17250:131;17376:4;17250:131;:::i;:::-;17242:139;;16969:419;;;:::o;17394:240::-;17534:34;17530:1;17522:6;17518:14;17511:58;17603:23;17598:2;17590:6;17586:15;17579:48;17394:240;:::o;17640:366::-;17782:3;17803:67;17867:2;17862:3;17803:67;:::i;:::-;17796:74;;17879:93;17968:3;17879:93;:::i;:::-;17997:2;17992:3;17988:12;17981:19;;17640:366;;;:::o;18012:419::-;18178:4;18216:2;18205:9;18201:18;18193:26;;18265:9;18259:4;18255:20;18251:1;18240:9;18236:17;18229:47;18293:131;18419:4;18293:131;:::i;:::-;18285:139;;18012:419;;;:::o;18437:239::-;18577:34;18573:1;18565:6;18561:14;18554:58;18646:22;18641:2;18633:6;18629:15;18622:47;18437:239;:::o;18682:366::-;18824:3;18845:67;18909:2;18904:3;18845:67;:::i;:::-;18838:74;;18921:93;19010:3;18921:93;:::i;:::-;19039:2;19034:3;19030:12;19023:19;;18682:366;;;:::o;19054:419::-;19220:4;19258:2;19247:9;19243:18;19235:26;;19307:9;19301:4;19297:20;19293:1;19282:9;19278:17;19271:47;19335:131;19461:4;19335:131;:::i;:::-;19327:139;;19054:419;;;:::o;19479:225::-;19619:34;19615:1;19607:6;19603:14;19596:58;19688:8;19683:2;19675:6;19671:15;19664:33;19479:225;:::o;19710:366::-;19852:3;19873:67;19937:2;19932:3;19873:67;:::i;:::-;19866:74;;19949:93;20038:3;19949:93;:::i;:::-;20067:2;20062:3;20058:12;20051:19;;19710:366;;;:::o;20082:419::-;20248:4;20286:2;20275:9;20271:18;20263:26;;20335:9;20329:4;20325:20;20321:1;20310:9;20306:17;20299:47;20363:131;20489:4;20363:131;:::i;:::-;20355:139;;20082:419;;;:::o;20507:223::-;20647:34;20643:1;20635:6;20631:14;20624:58;20716:6;20711:2;20703:6;20699:15;20692:31;20507:223;:::o;20736:366::-;20878:3;20899:67;20963:2;20958:3;20899:67;:::i;:::-;20892:74;;20975:93;21064:3;20975:93;:::i;:::-;21093:2;21088:3;21084:12;21077:19;;20736:366;;;:::o;21108:419::-;21274:4;21312:2;21301:9;21297:18;21289:26;;21361:9;21355:4;21351:20;21347:1;21336:9;21332:17;21325:47;21389:131;21515:4;21389:131;:::i;:::-;21381:139;;21108:419;;;:::o;21533:221::-;21673:34;21669:1;21661:6;21657:14;21650:58;21742:4;21737:2;21729:6;21725:15;21718:29;21533:221;:::o;21760:366::-;21902:3;21923:67;21987:2;21982:3;21923:67;:::i;:::-;21916:74;;21999:93;22088:3;21999:93;:::i;:::-;22117:2;22112:3;22108:12;22101:19;;21760:366;;;:::o;22132:419::-;22298:4;22336:2;22325:9;22321:18;22313:26;;22385:9;22379:4;22375:20;22371:1;22360:9;22356:17;22349:47;22413:131;22539:4;22413:131;:::i;:::-;22405:139;;22132:419;;;:::o;22557:224::-;22697:34;22693:1;22685:6;22681:14;22674:58;22766:7;22761:2;22753:6;22749:15;22742:32;22557:224;:::o;22787:366::-;22929:3;22950:67;23014:2;23009:3;22950:67;:::i;:::-;22943:74;;23026:93;23115:3;23026:93;:::i;:::-;23144:2;23139:3;23135:12;23128:19;;22787:366;;;:::o;23159:419::-;23325:4;23363:2;23352:9;23348:18;23340:26;;23412:9;23406:4;23402:20;23398:1;23387:9;23383:17;23376:47;23440:131;23566:4;23440:131;:::i;:::-;23432:139;;23159:419;;;:::o;23584:222::-;23724:34;23720:1;23712:6;23708:14;23701:58;23793:5;23788:2;23780:6;23776:15;23769:30;23584:222;:::o;23812:366::-;23954:3;23975:67;24039:2;24034:3;23975:67;:::i;:::-;23968:74;;24051:93;24140:3;24051:93;:::i;:::-;24169:2;24164:3;24160:12;24153:19;;23812:366;;;:::o;24184:419::-;24350:4;24388:2;24377:9;24373:18;24365:26;;24437:9;24431:4;24427:20;24423:1;24412:9;24408:17;24401:47;24465:131;24591:4;24465:131;:::i;:::-;24457:139;;24184:419;;;:::o;24609:236::-;24749:34;24745:1;24737:6;24733:14;24726:58;24818:19;24813:2;24805:6;24801:15;24794:44;24609:236;:::o;24851:366::-;24993:3;25014:67;25078:2;25073:3;25014:67;:::i;:::-;25007:74;;25090:93;25179:3;25090:93;:::i;:::-;25208:2;25203:3;25199:12;25192:19;;24851:366;;;:::o;25223:419::-;25389:4;25427:2;25416:9;25412:18;25404:26;;25476:9;25470:4;25466:20;25462:1;25451:9;25447:17;25440:47;25504:131;25630:4;25504:131;:::i;:::-;25496:139;;25223:419;;;:::o;25648:172::-;25788:24;25784:1;25776:6;25772:14;25765:48;25648:172;:::o;25826:366::-;25968:3;25989:67;26053:2;26048:3;25989:67;:::i;:::-;25982:74;;26065:93;26154:3;26065:93;:::i;:::-;26183:2;26178:3;26174:12;26167:19;;25826:366;;;:::o;26198:419::-;26364:4;26402:2;26391:9;26387:18;26379:26;;26451:9;26445:4;26441:20;26437:1;26426:9;26422:17;26415:47;26479:131;26605:4;26479:131;:::i;:::-;26471:139;;26198:419;;;:::o;26623:297::-;26763:34;26759:1;26751:6;26747:14;26740:58;26832:34;26827:2;26819:6;26815:15;26808:59;26901:11;26896:2;26888:6;26884:15;26877:36;26623:297;:::o;26926:366::-;27068:3;27089:67;27153:2;27148:3;27089:67;:::i;:::-;27082:74;;27165:93;27254:3;27165:93;:::i;:::-;27283:2;27278:3;27274:12;27267:19;;26926:366;;;:::o;27298:419::-;27464:4;27502:2;27491:9;27487:18;27479:26;;27551:9;27545:4;27541:20;27537:1;27526:9;27522:17;27515:47;27579:131;27705:4;27579:131;:::i;:::-;27571:139;;27298:419;;;:::o;27723:240::-;27863:34;27859:1;27851:6;27847:14;27840:58;27932:23;27927:2;27919:6;27915:15;27908:48;27723:240;:::o;27969:366::-;28111:3;28132:67;28196:2;28191:3;28132:67;:::i;:::-;28125:74;;28208:93;28297:3;28208:93;:::i;:::-;28326:2;28321:3;28317:12;28310:19;;27969:366;;;:::o;28341:419::-;28507:4;28545:2;28534:9;28530:18;28522:26;;28594:9;28588:4;28584:20;28580:1;28569:9;28565:17;28558:47;28622:131;28748:4;28622:131;:::i;:::-;28614:139;;28341:419;;;:::o;28766:169::-;28906:21;28902:1;28894:6;28890:14;28883:45;28766:169;:::o;28941:366::-;29083:3;29104:67;29168:2;29163:3;29104:67;:::i;:::-;29097:74;;29180:93;29269:3;29180:93;:::i;:::-;29298:2;29293:3;29289:12;29282:19;;28941:366;;;:::o;29313:419::-;29479:4;29517:2;29506:9;29502:18;29494:26;;29566:9;29560:4;29556:20;29552:1;29541:9;29537:17;29530:47;29594:131;29720:4;29594:131;:::i;:::-;29586:139;;29313:419;;;:::o;29738:241::-;29878:34;29874:1;29866:6;29862:14;29855:58;29947:24;29942:2;29934:6;29930:15;29923:49;29738:241;:::o;29985:366::-;30127:3;30148:67;30212:2;30207:3;30148:67;:::i;:::-;30141:74;;30224:93;30313:3;30224:93;:::i;:::-;30342:2;30337:3;30333:12;30326:19;;29985:366;;;:::o;30357:419::-;30523:4;30561:2;30550:9;30546:18;30538:26;;30610:9;30604:4;30600:20;30596:1;30585:9;30581:17;30574:47;30638:131;30764:4;30638:131;:::i;:::-;30630:139;;30357:419;;;:::o;30782:194::-;30822:4;30842:20;30860:1;30842:20;:::i;:::-;30837:25;;30876:20;30894:1;30876:20;:::i;:::-;30871:25;;30920:1;30917;30913:9;30905:17;;30944:1;30938:4;30935:11;30932:37;;;30949:18;;:::i;:::-;30932:37;30782:194;;;;:::o;30982:177::-;31122:29;31118:1;31110:6;31106:14;31099:53;30982:177;:::o;31165:366::-;31307:3;31328:67;31392:2;31387:3;31328:67;:::i;:::-;31321:74;;31404:93;31493:3;31404:93;:::i;:::-;31522:2;31517:3;31513:12;31506:19;;31165:366;;;:::o;31537:419::-;31703:4;31741:2;31730:9;31726:18;31718:26;;31790:9;31784:4;31780:20;31776:1;31765:9;31761:17;31754:47;31818:131;31944:4;31818:131;:::i;:::-;31810:139;;31537:419;;;:::o;31962:442::-;32111:4;32149:2;32138:9;32134:18;32126:26;;32162:71;32230:1;32219:9;32215:17;32206:6;32162:71;:::i;:::-;32243:72;32311:2;32300:9;32296:18;32287:6;32243:72;:::i;:::-;32325;32393:2;32382:9;32378:18;32369:6;32325:72;:::i;:::-;31962:442;;;;;;:::o;32410:147::-;32511:11;32548:3;32533:18;;32410:147;;;;:::o;32563:114::-;;:::o;32683:398::-;32842:3;32863:83;32944:1;32939:3;32863:83;:::i;:::-;32856:90;;32955:93;33044:3;32955:93;:::i;:::-;33073:1;33068:3;33064:11;33057:18;;32683:398;;;:::o;33087:379::-;33271:3;33293:147;33436:3;33293:147;:::i;:::-;33286:154;;33457:3;33450:10;;33087:379;;;:::o;33472:220::-;33612:34;33608:1;33600:6;33596:14;33589:58;33681:3;33676:2;33668:6;33664:15;33657:28;33472:220;:::o;33698:366::-;33840:3;33861:67;33925:2;33920:3;33861:67;:::i;:::-;33854:74;;33937:93;34026:3;33937:93;:::i;:::-;34055:2;34050:3;34046:12;34039:19;;33698:366;;;:::o;34070:419::-;34236:4;34274:2;34263:9;34259:18;34251:26;;34323:9;34317:4;34313:20;34309:1;34298:9;34294:17;34287:47;34351:131;34477:4;34351:131;:::i;:::-;34343:139;;34070:419;;;:::o;34495:180::-;34543:77;34540:1;34533:88;34640:4;34637:1;34630:15;34664:4;34661:1;34654:15;34681:180;34729:77;34726:1;34719:88;34826:4;34823:1;34816:15;34850:4;34847:1;34840:15;34867:143;34924:5;34955:6;34949:13;34940:22;;34971:33;34998:5;34971:33;:::i;:::-;34867:143;;;;:::o;35016:351::-;35086:6;35135:2;35123:9;35114:7;35110:23;35106:32;35103:119;;;35141:79;;:::i;:::-;35103:119;35261:1;35286:64;35342:7;35333:6;35322:9;35318:22;35286:64;:::i;:::-;35276:74;;35232:128;35016:351;;;;:::o;35373:85::-;35418:7;35447:5;35436:16;;35373:85;;;:::o;35464:158::-;35522:9;35555:61;35573:42;35582:32;35608:5;35582:32;:::i;:::-;35573:42;:::i;:::-;35555:61;:::i;:::-;35542:74;;35464:158;;;:::o;35628:147::-;35723:45;35762:5;35723:45;:::i;:::-;35718:3;35711:58;35628:147;;:::o;35781:114::-;35848:6;35882:5;35876:12;35866:22;;35781:114;;;:::o;35901:184::-;36000:11;36034:6;36029:3;36022:19;36074:4;36069:3;36065:14;36050:29;;35901:184;;;;:::o;36091:132::-;36158:4;36181:3;36173:11;;36211:4;36206:3;36202:14;36194:22;;36091:132;;;:::o;36229:108::-;36306:24;36324:5;36306:24;:::i;:::-;36301:3;36294:37;36229:108;;:::o;36343:179::-;36412:10;36433:46;36475:3;36467:6;36433:46;:::i;:::-;36511:4;36506:3;36502:14;36488:28;;36343:179;;;;:::o;36528:113::-;36598:4;36630;36625:3;36621:14;36613:22;;36528:113;;;:::o;36677:732::-;36796:3;36825:54;36873:5;36825:54;:::i;:::-;36895:86;36974:6;36969:3;36895:86;:::i;:::-;36888:93;;37005:56;37055:5;37005:56;:::i;:::-;37084:7;37115:1;37100:284;37125:6;37122:1;37119:13;37100:284;;;37201:6;37195:13;37228:63;37287:3;37272:13;37228:63;:::i;:::-;37221:70;;37314:60;37367:6;37314:60;:::i;:::-;37304:70;;37160:224;37147:1;37144;37140:9;37135:14;;37100:284;;;37104:14;37400:3;37393:10;;36801:608;;;36677:732;;;;:::o;37415:831::-;37678:4;37716:3;37705:9;37701:19;37693:27;;37730:71;37798:1;37787:9;37783:17;37774:6;37730:71;:::i;:::-;37811:80;37887:2;37876:9;37872:18;37863:6;37811:80;:::i;:::-;37938:9;37932:4;37928:20;37923:2;37912:9;37908:18;37901:48;37966:108;38069:4;38060:6;37966:108;:::i;:::-;37958:116;;38084:72;38152:2;38141:9;38137:18;38128:6;38084:72;:::i;:::-;38166:73;38234:3;38223:9;38219:19;38210:6;38166:73;:::i;:::-;37415:831;;;;;;;;:::o;38252:807::-;38501:4;38539:3;38528:9;38524:19;38516:27;;38553:71;38621:1;38610:9;38606:17;38597:6;38553:71;:::i;:::-;38634:72;38702:2;38691:9;38687:18;38678:6;38634:72;:::i;:::-;38716:80;38792:2;38781:9;38777:18;38768:6;38716:80;:::i;:::-;38806;38882:2;38871:9;38867:18;38858:6;38806:80;:::i;:::-;38896:73;38964:3;38953:9;38949:19;38940:6;38896:73;:::i;:::-;38979;39047:3;39036:9;39032:19;39023:6;38979:73;:::i;:::-;38252:807;;;;;;;;;:::o;39065:143::-;39122:5;39153:6;39147:13;39138:22;;39169:33;39196:5;39169:33;:::i;:::-;39065:143;;;;:::o;39214:663::-;39302:6;39310;39318;39367:2;39355:9;39346:7;39342:23;39338:32;39335:119;;;39373:79;;:::i;:::-;39335:119;39493:1;39518:64;39574:7;39565:6;39554:9;39550:22;39518:64;:::i;:::-;39508:74;;39464:128;39631:2;39657:64;39713:7;39704:6;39693:9;39689:22;39657:64;:::i;:::-;39647:74;;39602:129;39770:2;39796:64;39852:7;39843:6;39832:9;39828:22;39796:64;:::i;:::-;39786:74;;39741:129;39214:663;;;;;:::o

Swarm Source

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