ETH Price: $3,283.67 (+0.41%)
Gas: 4.27 Gwei

Token

AMC4200 (AMC)
 

Overview

Max Total Supply

42,000,000 AMC

Holders

30

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
428,166.762863366780952391 AMC

Value
$0.00
0x2273aA7185eCcEc260930afc6cc0de7fcB9A5d92
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:
AMC4200

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-11
*/

/*

Telegram: https://t.me/amc4200

Twitter: https://x.com/AMC4200ERC

Website: https://amc4200.com/


 */

// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;
 
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);
 
    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);
 
    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
 
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);
 
    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
 
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);
 
    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);
 
    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}
 
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 AMC4200 is ERC20, Ownable {
    
    using SafeMath for uint256;
 
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
 
    bool private swapping;
 
    address private amcone=0xe051382b0bbd70cC6d281533d6bD06c22DC30C8a;
    address private amctwo=0xe051382b0bbd70cC6d281533d6bD06c22DC30C8a;
 
    uint256 private maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 private maxWalletAmount;
 
    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = true;
 
     // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
 
   
 
    // Blacklist Map
    mapping (address => bool) private _blacklist;
    bool public transferDelayEnabled = false;
 
    uint256 private buyTotalFees;
    uint256 private buyMarketingFee;
    uint256 private buyLiquidityFee;
    uint256 private buydevFee;
 
    uint256 private sellTotalFees;
    uint256 private sellMarketingFee;
    uint256 private sellLiquidityFee;
    uint256 private selldevFee;
 
    uint256 private tokensForMarketing;
    uint256 private tokensForLiquidity;
    uint256 private tokensFordev;
 
    // block number of opened trading
    uint256 launchedAt;
 
    /******************/
 
    // exclude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private Allow;
 
    // 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 amconeUpdated(address indexed newWallet, address indexed oldWallet);
 
    event amctwoUpdated(address indexed newWallet, address indexed oldWallet);
 
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
 
    constructor() ERC20("AMC4200", "AMC") { 
 
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
 
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
 
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
 
        uint256 _buyMarketingFee = 20;
        uint256 _buyLiquidityFee = 0;
        uint256 _buydevFee = 0;

        uint256 _sellMarketingFee = 40;
        uint256 _sellLiquidityFee = 0;
        uint256 _selldevFee = 0;
 
        uint256 totalSupply =   42000000 * 10 ** decimals(); 
 
        maxTransactionAmount = 420000 * 10 ** decimals(); 
        maxWalletAmount = 420000 * 10 ** decimals(); 
        swapTokensAtAmount = 420000 * 10 ** decimals(); 
 
        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buydevFee = _buydevFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buydevFee;
 
        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        selldevFee = _selldevFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + selldevFee;
 
        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        
 
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
 
        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }
 
    receive() external payable {
 
    }
 
    function SetTrading(bool EnableTrade, bool _swap) external onlyOwner {
        tradingActive = EnableTrade;
        swapEnabled = _swap;
        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;
    }
 
     // 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;
    }
 
    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWalletAmount lower than 0.5%");
        maxWalletAmount = newNum;
    }
 
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        Allow[updAds] = isEx;
    }
 
   
    function tax_out(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee_) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        selldevFee = _devFee_;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + selldevFee;
        require(sellTotalFees <= 95, "-");
    }
 
    function tax_in(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee_) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buydevFee = _devFee_;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buydevFee;
        require(buyTotalFees <= 45, "-");
    }


    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }
 
    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
 
        _setAutomatedMarketMakerPair(pair, value);
    }
 
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
 
        emit SetAutomatedMarketMakerPair(pair, value);
    }

        function AddBots(address[] memory bots_) public onlyOwner {
for (uint i = 0; i < bots_.length; i++) {
            _blacklist[bots_[i]] = true;
        
}
    }

function enable(address[] memory notbot) public onlyOwner {
      for (uint i = 0; i < notbot.length; i++) {
          _blacklist[notbot[i]] = false;
      }
    }

    function Confirm(address wallet) public view returns (bool){
      return _blacklist[wallet];
    }



 
    function updateamcone(address newamcone) external onlyOwner {
        emit amconeUpdated(newamcone, amcone);
        amcone = newamcone;
    }
 
    function updateamctwo(address newWallet) external onlyOwner {
        emit amctwoUpdated(newWallet, amctwo);
        amctwo = newWallet;
    }
 
    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }



  function Airdrop(
        address[] memory airdropWallets,
        uint256[] memory amount
    ) external onlyOwner {
        require(airdropWallets.length == amount.length, "Arrays must be the same length");
        require(airdropWallets.length <= 2000, "Wallets list length must be <= 2000");
        for (uint256 i = 0; i < airdropWallets.length; i++) {
            address wallet = airdropWallets[i];
            uint256 airdropAmount = amount[i] * (10**18);
            super._transfer(msg.sender, wallet, airdropAmount);
        }
    }

 
 
    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] && !Allow[to]) {
                        require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                        require(amount + balanceOf(to) <= maxWalletAmount, "Max wallet exceeded");
                }
 
                //when sell
                else if (automatedMarketMakerPairs[to] && !Allow[from]) {
                        require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if(!Allow[to]){
                    require(amount + balanceOf(to) <= maxWalletAmount, "Max wallet exceeded");
                }
            }
        }
 
        // anti bot logic
        if (block.number <= (launchedAt + 0) && 
                to != uniswapV2Pair && 
                to != address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D)
            ) { 
            _blacklist[to] = false;
        }
 
        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;
                tokensFordev += fees * selldevFee / sellTotalFees;
                tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensFordev += fees * buydevFee / buyTotalFees;
                tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
            }
 
            if(fees > 0){    
                super._transfer(from, address(this), fees);
            }
 
            amount -= fees;
        }
 
        super._transfer(from, to, amount);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private {
 
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
 
        _approve(address(this), address(uniswapV2Router), tokenAmount);
 
        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
 
    }
 
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);
 
        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(this),
            block.timestamp
        );
    }
 
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensFordev;
        bool success;
 
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
 
        if(contractBalance > swapTokensAtAmount * 20){
          contractBalance = swapTokensAtAmount * 20;
        }
 
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
 
        uint256 initialETHBalance = address(this).balance;
 
        swapTokensForEth(amountToSwapForETH); 
 
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
 
        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);
        uint256 ethFordev = ethBalance.mul(tokensFordev).div(totalTokensToSwap);
        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethFordev;
 
 
        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensFordev = 0;
 
        (success,) = address(amctwo).call{value: ethFordev}("");
 
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }
 
        (success,) = address(amcone).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":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"amconeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"amctwoUpdated","type":"event"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"AddBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"airdropWallets","type":"address[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"name":"Airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"Confirm","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"EnableTrade","type":"bool"},{"internalType":"bool","name":"_swap","type":"bool"}],"name":"SetTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"enable","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":"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":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee_","type":"uint256"}],"name":"tax_in","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee_","type":"uint256"}],"name":"tax_out","outputs":[],"stateMutability":"nonpayable","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":"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":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newamcone","type":"address"}],"name":"updateamcone","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateamctwo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405273e051382b0bbd70cc6d281533d6bd06c22dc30c8a600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e051382b0bbd70cc6d281533d6bd06c22dc30c8a600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff0219169083151502179055506000600e60006101000a81548160ff0219169083151502179055503480156200012757600080fd5b506040518060400160405280600781526020017f414d4334323030000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f414d4300000000000000000000000000000000000000000000000000000000008152508160039081620001a5919062000e50565b508060049081620001b7919062000e50565b5050506000620001cc6200069a60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000297816001620006a260201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000317573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033d919062000fa1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003cb919062000fa1565b6040518363ffffffff1660e01b8152600401620003ea92919062000fe4565b6020604051808303816000875af11580156200040a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000430919062000fa1565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200047860a0516001620006a260201b60201c565b6200048d60a05160016200079f60201b60201c565b6000601490506000806000602890506000806000620004b16200084060201b60201c565b600a620004bf9190620011a1565b630280de80620004d09190620011f2565b9050620004e26200084060201b60201c565b600a620004f09190620011a1565b620668a0620005009190620011f2565b600881905550620005166200084060201b60201c565b600a620005249190620011a1565b620668a0620005349190620011f2565b600a819055506200054a6200084060201b60201c565b600a620005589190620011a1565b620668a0620005689190620011f2565b6009819055508660108190555085601181905550846012819055506012546011546010546200059891906200123d565b620005a491906200123d565b600f81905550836014819055508260158190555081601681905550601654601554601454620005d491906200123d565b620005e091906200123d565b60138190555062000608620005fa6200084960201b60201c565b60016200087360201b60201c565b6200061b3060016200087360201b60201c565b6200063061dead60016200087360201b60201c565b62000652620006446200084960201b60201c565b6001620006a260201b60201c565b62000665306001620006a260201b60201c565b6200067a61dead6001620006a260201b60201c565b6200068c3382620009c060201b60201c565b505050505050505062001447565b600033905090565b620006b26200069a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000744576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200073b90620012d9565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60006012905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008836200069a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000915576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200090c90620012d9565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009b4919062001318565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a299062001385565b60405180910390fd5b62000a466000838362000b6e60201b60201c565b62000a628160025462000b7360201b6200250e1790919060201c565b60028190555062000ac0816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000b7360201b6200250e1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b629190620013b8565b60405180910390a35050565b505050565b600080828462000b8491906200123d565b90508381101562000bcc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bc39062001425565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c5857607f821691505b60208210810362000c6e5762000c6d62000c10565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000cd87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c99565b62000ce4868362000c99565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000d3162000d2b62000d258462000cfc565b62000d06565b62000cfc565b9050919050565b6000819050919050565b62000d4d8362000d10565b62000d6562000d5c8262000d38565b84845462000ca6565b825550505050565b600090565b62000d7c62000d6d565b62000d8981848462000d42565b505050565b5b8181101562000db15762000da560008262000d72565b60018101905062000d8f565b5050565b601f82111562000e005762000dca8162000c74565b62000dd58462000c89565b8101602085101562000de5578190505b62000dfd62000df48562000c89565b83018262000d8e565b50505b505050565b600082821c905092915050565b600062000e256000198460080262000e05565b1980831691505092915050565b600062000e40838362000e12565b9150826002028217905092915050565b62000e5b8262000bd6565b67ffffffffffffffff81111562000e775762000e7662000be1565b5b62000e83825462000c3f565b62000e9082828562000db5565b600060209050601f83116001811462000ec8576000841562000eb3578287015190505b62000ebf858262000e32565b86555062000f2f565b601f19841662000ed88662000c74565b60005b8281101562000f025784890151825560018201915060208501945060208101905062000edb565b8683101562000f22578489015162000f1e601f89168262000e12565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f698262000f3c565b9050919050565b62000f7b8162000f5c565b811462000f8757600080fd5b50565b60008151905062000f9b8162000f70565b92915050565b60006020828403121562000fba5762000fb962000f37565b5b600062000fca8482850162000f8a565b91505092915050565b62000fde8162000f5c565b82525050565b600060408201905062000ffb600083018562000fd3565b6200100a602083018462000fd3565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200109f5780860481111562001077576200107662001011565b5b6001851615620010875780820291505b8081029050620010978562001040565b945062001057565b94509492505050565b600082620010ba57600190506200118d565b81620010ca57600090506200118d565b8160018114620010e35760028114620010ee5762001124565b60019150506200118d565b60ff84111562001103576200110262001011565b5b8360020a9150848211156200111d576200111c62001011565b5b506200118d565b5060208310610133831016604e8410600b84101617156200115e5782820a90508381111562001158576200115762001011565b5b6200118d565b6200116d84848460016200104d565b9250905081840481111562001187576200118662001011565b5b81810290505b9392505050565b600060ff82169050919050565b6000620011ae8262000cfc565b9150620011bb8362001194565b9250620011ea7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620010a8565b905092915050565b6000620011ff8262000cfc565b91506200120c8362000cfc565b92508282026200121c8162000cfc565b9150828204841483151762001236576200123562001011565b5b5092915050565b60006200124a8262000cfc565b9150620012578362000cfc565b925082820190508082111562001272576200127162001011565b5b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620012c160208362001278565b9150620012ce8262001289565b602082019050919050565b60006020820190508181036000830152620012f481620012b2565b9050919050565b60008115159050919050565b6200131281620012fb565b82525050565b60006020820190506200132f600083018462001307565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200136d601f8362001278565b91506200137a8262001335565b602082019050919050565b60006020820190508181036000830152620013a0816200135e565b9050919050565b620013b28162000cfc565b82525050565b6000602082019050620013cf6000830184620013a7565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006200140d601b8362001278565b91506200141a82620013d5565b602082019050919050565b600060208201905081810360008301526200144081620013fe565b9050919050565b60805160a0516159c6620014ac60003960008181610f7d015281816114bd01528181612bd50152612ff5015260008181610b7701528181612b7d01528181613dfc01528181613edd01528181613f0401528181613fa00152613fc701526159c66000f3fe60806040526004361061023f5760003560e01c80639a7a23d61161012e578063c876d0b9116100ab578063e884f2601161006f578063e884f260146108ca578063ed09924f146108f5578063ed6bea081461091e578063f1fca8b614610947578063f2fde38b1461097057610246565b8063c876d0b9146107bd578063c952b93c146107e8578063d257b34f14610825578063dd62ed3e14610862578063e2f456051461089f57610246565b8063b6d18f97116100f2578063b6d18f97146106ee578063bbc0c74214610717578063c024666814610742578063c18bc1951461076b578063c558ae6b1461079457610246565b80639a7a23d6146105e5578063a34295101461060e578063a457c2d714610637578063a9059cbb14610674578063b62496f5146106b157610246565b806349bd5a5e116101bc578063715018a611610180578063715018a614610524578063751039fc1461053b5780637571336a146105665780638da5cb5b1461058f57806395d89b41146105ba57610246565b806349bd5a5e146104295780634a62bb65146104545780634fbee1931461047f5780636ddd1713146104bc57806370a08231146104e757610246565b80631b75738a116102035780631b75738a14610332578063203e727e1461035b57806323b872dd14610384578063313ce567146103c157806339509351146103ec57610246565b806306fdde031461024b578063095ea7b314610276578063146368c8146102b35780631694505e146102dc57806318160ddd1461030757610246565b3661024657005b600080fd5b34801561025757600080fd5b50610260610999565b60405161026d9190614167565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190614231565b610a2b565b6040516102aa919061428c565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d591906143ef565b610a49565b005b3480156102e857600080fd5b506102f1610b75565b6040516102fe9190614497565b60405180910390f35b34801561031357600080fd5b5061031c610b99565b60405161032991906144c1565b60405180910390f35b34801561033e57600080fd5b50610359600480360381019061035491906143ef565b610ba3565b005b34801561036757600080fd5b50610382600480360381019061037d91906144dc565b610ccf565b005b34801561039057600080fd5b506103ab60048036038101906103a69190614509565b610de6565b6040516103b8919061428c565b60405180910390f35b3480156103cd57600080fd5b506103d6610ebf565b6040516103e39190614578565b60405180910390f35b3480156103f857600080fd5b50610413600480360381019061040e9190614231565b610ec8565b604051610420919061428c565b60405180910390f35b34801561043557600080fd5b5061043e610f7b565b60405161044b91906145a2565b60405180910390f35b34801561046057600080fd5b50610469610f9f565b604051610476919061428c565b60405180910390f35b34801561048b57600080fd5b506104a660048036038101906104a191906145bd565b610fb2565b6040516104b3919061428c565b60405180910390f35b3480156104c857600080fd5b506104d1611008565b6040516104de919061428c565b60405180910390f35b3480156104f357600080fd5b5061050e600480360381019061050991906145bd565b61101b565b60405161051b91906144c1565b60405180910390f35b34801561053057600080fd5b50610539611063565b005b34801561054757600080fd5b506105506111bb565b60405161055d919061428c565b60405180910390f35b34801561057257600080fd5b5061058d60048036038101906105889190614616565b611276565b005b34801561059b57600080fd5b506105a4611368565b6040516105b191906145a2565b60405180910390f35b3480156105c657600080fd5b506105cf611392565b6040516105dc9190614167565b60405180910390f35b3480156105f157600080fd5b5061060c60048036038101906106079190614616565b611424565b005b34801561061a57600080fd5b50610635600480360381019061063091906145bd565b611557565b005b34801561064357600080fd5b5061065e60048036038101906106599190614231565b6116ae565b60405161066b919061428c565b60405180910390f35b34801561068057600080fd5b5061069b60048036038101906106969190614231565b61177b565b6040516106a8919061428c565b60405180910390f35b3480156106bd57600080fd5b506106d860048036038101906106d391906145bd565b611799565b6040516106e5919061428c565b60405180910390f35b3480156106fa57600080fd5b5061071560048036038101906107109190614656565b6117b9565b005b34801561072357600080fd5b5061072c6118d3565b604051610739919061428c565b60405180910390f35b34801561074e57600080fd5b5061076960048036038101906107649190614616565b6118e6565b005b34801561077757600080fd5b50610792600480360381019061078d91906144dc565b611a26565b005b3480156107a057600080fd5b506107bb60048036038101906107b6919061476c565b611b3d565b005b3480156107c957600080fd5b506107d2611ce0565b6040516107df919061428c565b60405180910390f35b3480156107f457600080fd5b5061080f600480360381019061080a91906145bd565b611cf3565b60405161081c919061428c565b60405180910390f35b34801561083157600080fd5b5061084c600480360381019061084791906144dc565b611d49565b604051610859919061428c565b60405180910390f35b34801561086e57600080fd5b50610889600480360381019061088491906147e4565b611eb9565b60405161089691906144c1565b60405180910390f35b3480156108ab57600080fd5b506108b4611f40565b6040516108c191906144c1565b60405180910390f35b3480156108d657600080fd5b506108df611f46565b6040516108ec919061428c565b60405180910390f35b34801561090157600080fd5b5061091c60048036038101906109179190614824565b612001565b005b34801561092a57600080fd5b50610945600480360381019061094091906145bd565b6120d7565b005b34801561095357600080fd5b5061096e60048036038101906109699190614656565b61222e565b005b34801561097c57600080fd5b50610997600480360381019061099291906145bd565b612348565b005b6060600380546109a890614893565b80601f01602080910402602001604051908101604052809291908181526020018280546109d490614893565b8015610a215780601f106109f657610100808354040283529160200191610a21565b820191906000526020600020905b815481529060010190602001808311610a0457829003601f168201915b5050505050905090565b6000610a3f610a3861256c565b8484612574565b6001905092915050565b610a5161256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ae0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad790614910565b60405180910390fd5b60005b8151811015610b71576001600d6000848481518110610b0557610b04614930565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610b699061498e565b915050610ae3565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610bab61256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3190614910565b60405180910390fd5b60005b8151811015610ccb576000600d6000848481518110610c5f57610c5e614930565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610cc39061498e565b915050610c3d565b5050565b610cd761256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5d90614910565b60405180910390fd5b670de0b6b3a76400006103e86001610d7c610b99565b610d8691906149d6565b610d909190614a47565b610d9a9190614a47565b811015610ddc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd390614aea565b60405180910390fd5b8060088190555050565b6000610df384848461273d565b610eb484610dff61256c565b610eaf8560405180606001604052806028815260200161594460289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e6561256c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135cb9092919063ffffffff16565b612574565b600190509392505050565b60006012905090565b6000610f71610ed561256c565b84610f6c8560016000610ee661256c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461250e90919063ffffffff16565b612574565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b60009054906101000a900460ff1681565b6000601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61106b61256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f190614910565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006111c561256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124b90614910565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b61127e61256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130490614910565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546113a190614893565b80601f01602080910402602001604051908101604052809291908181526020018280546113cd90614893565b801561141a5780601f106113ef5761010080835404028352916020019161141a565b820191906000526020600020905b8154815290600101906020018083116113fd57829003601f168201915b5050505050905090565b61142c61256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b290614910565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611549576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154090614b7c565b60405180910390fd5b611553828261362f565b5050565b61155f61256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e590614910565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fd13e77a8c6108ef1065a5ab683534c023ac4637eb699157a7d12090f95ea17d860405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006117716116bb61256c565b8461176c8560405180606001604052806025815260200161596c60259139600160006116e561256c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135cb9092919063ffffffff16565b612574565b6001905092915050565b600061178f61178861256c565b848461273d565b6001905092915050565b601d6020528060005260406000206000915054906101000a900460ff1681565b6117c161256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611850576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184790614910565b60405180910390fd5b8260148190555081601581905550806016819055506016546015546014546118789190614b9c565b6118829190614b9c565b601381905550605f60135411156118ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c590614c1c565b60405180910390fd5b505050565b600b60019054906101000a900460ff1681565b6118ee61256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461197d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197490614910565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611a1a919061428c565b60405180910390a25050565b611a2e61256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611abd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab490614910565b60405180910390fd5b670de0b6b3a76400006103e86005611ad3610b99565b611add91906149d6565b611ae79190614a47565b611af19190614a47565b811015611b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2a90614cae565b60405180910390fd5b80600a8190555050565b611b4561256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcb90614910565b60405180910390fd5b8051825114611c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0f90614d1a565b60405180910390fd5b6107d082511115611c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5590614dac565b60405180910390fd5b60005b8251811015611cdb576000838281518110611c7f57611c7e614930565b5b602002602001015190506000670de0b6b3a7640000848481518110611ca757611ca6614930565b5b6020026020010151611cb991906149d6565b9050611cc63383836136d0565b50508080611cd39061498e565b915050611c61565b505050565b600e60009054906101000a900460ff1681565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000611d5361256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd990614910565b60405180910390fd5b620186a06001611df0610b99565b611dfa91906149d6565b611e049190614a47565b821015611e46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3d90614e3e565b60405180910390fd5b6103e86005611e53610b99565b611e5d91906149d6565b611e679190614a47565b821115611ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea090614ed0565b60405180910390fd5b8160098190555060019050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b6000611f5061256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd690614910565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b61200961256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612098576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208f90614910565b60405180910390fd5b81600b60016101000a81548160ff02191690831515021790555080600b60026101000a81548160ff02191690831515021790555043601a819055505050565b6120df61256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461216e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216590614910565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fea6a521640114e7834febc17524c06536ba8cbc70aeaf226da57900015f3f89460405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61223661256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bc90614910565b60405180910390fd5b8260108190555081601181905550806012819055506012546011546010546122ed9190614b9c565b6122f79190614b9c565b600f81905550602d600f541115612343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233a90614c1c565b60405180910390fd5b505050565b61235061256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d690614910565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361244e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244590614f62565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080828461251d9190614b9c565b905083811015612562576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255990614fce565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125da90615060565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612652576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612649906150f2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161273091906144c1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a390615184565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361281b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281290615216565b60405180910390fd5b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128bf5750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6128fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f5906152a8565b60405180910390fd5b6000810361291757612912838360006136d0565b6135c6565b600b60009054906101000a900460ff1615612fda57612934611368565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129a25750612972611368565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129db5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a15575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a2e5750600560149054906101000a900460ff16155b15612fd957600b60019054906101000a900460ff16612b2857601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ae85750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1e90615314565b60405180910390fd5b5b600e60009054906101000a900460ff1615612cf057612b45611368565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612bcc57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c2457507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612cef5743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca1906153cc565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d935750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e3a57600854811115612ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd49061545e565b60405180910390fd5b600a54612de98361101b565b82612df49190614b9c565b1115612e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e2c906154ca565b60405180910390fd5b612fd8565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612edd5750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f2c57600854811115612f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1e9061555c565b60405180910390fd5b612fd7565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612fd657600a54612f898361101b565b82612f949190614b9c565b1115612fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fcc906154ca565b60405180910390fd5b5b5b5b5b5b6000601a54612fe99190614b9c565b431115801561304457507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156130905750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156130ee576000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60006130f93061101b565b90506000600954821015905080801561311e5750600b60029054906101000a900460ff165b80156131375750600560149054906101000a900460ff16155b801561318d5750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131e35750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132395750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561327d576001600560146101000a81548160ff021916908315150217905550613261613963565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806133335750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561333d57600090505b600081156135b657601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133a057506000601354115b1561346d576133cd60646133bf60135488613c4a90919063ffffffff16565b613cc490919063ffffffff16565b9050601354601554826133e091906149d6565b6133ea9190614a47565b601860008282546133fb9190614b9c565b925050819055506013546016548261341391906149d6565b61341d9190614a47565b6019600082825461342e9190614b9c565b925050819055506013546014548261344691906149d6565b6134509190614a47565b601760008282546134619190614b9c565b92505081905550613592565b601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134c857506000600f54115b15613591576134f560646134e7600f5488613c4a90919063ffffffff16565b613cc490919063ffffffff16565b9050600f546011548261350891906149d6565b6135129190614a47565b601860008282546135239190614b9c565b92505081905550600f546012548261353b91906149d6565b6135459190614a47565b601960008282546135569190614b9c565b92505081905550600f546010548261356e91906149d6565b6135789190614a47565b601760008282546135899190614b9c565b925050819055505b5b60008111156135a7576135a68730836136d0565b5b80856135b3919061557c565b94505b6135c18787876136d0565b505050505b505050565b6000838311158290613613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161360a9190614167565b60405180910390fd5b5060008385613622919061557c565b9050809150509392505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361373f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161373690615184565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036137ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137a590615216565b60405180910390fd5b6137b9838383613d0e565b6138248160405180606001604052806026815260200161591e602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135cb9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138b7816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461250e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161395691906144c1565b60405180910390a3505050565b600061396e3061101b565b905060006019546017546018546139859190614b9c565b61398f9190614b9c565b90506000808314806139a15750600082145b156139ae57505050613c48565b60146009546139bd91906149d6565b8311156139d65760146009546139d391906149d6565b92505b6000600283601854866139e991906149d6565b6139f39190614a47565b6139fd9190614a47565b90506000613a148286613d1390919063ffffffff16565b90506000479050613a2482613d5d565b6000613a398247613d1390919063ffffffff16565b90506000613a6487613a5660175485613c4a90919063ffffffff16565b613cc490919063ffffffff16565b90506000613a8f88613a8160195486613c4a90919063ffffffff16565b613cc490919063ffffffff16565b90506000818385613aa0919061557c565b613aaa919061557c565b9050600060188190555060006017819055506000601981905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613b0a906155e1565b60006040518083038185875af1925050503d8060008114613b47576040519150601f19603f3d011682016040523d82523d6000602084013e613b4c565b606091505b505080985050600087118015613b625750600081115b15613baf57613b718782613f9a565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601854604051613ba6939291906155f6565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613bf5906155e1565b60006040518083038185875af1925050503d8060008114613c32576040519150601f19603f3d011682016040523d82523d6000602084013e613c37565b606091505b505080985050505050505050505050505b565b6000808303613c5c5760009050613cbe565b60008284613c6a91906149d6565b9050828482613c799190614a47565b14613cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cb09061569f565b60405180910390fd5b809150505b92915050565b6000613d0683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614074565b905092915050565b505050565b6000613d5583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506135cb565b905092915050565b6000600267ffffffffffffffff811115613d7a57613d796142ac565b5b604051908082528060200260200182016040528015613da85781602001602082028036833780820191505090505b5090503081600081518110613dc057613dbf614930565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e8991906156d4565b81600181518110613e9d57613e9c614930565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f02307f000000000000000000000000000000000000000000000000000000000000000084612574565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613f649594939291906157fa565b600060405180830381600087803b158015613f7e57600080fd5b505af1158015613f92573d6000803e3d6000fd5b505050505050565b613fc5307f000000000000000000000000000000000000000000000000000000000000000084612574565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b815260040161402a96959493929190615854565b60606040518083038185885af1158015614048573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061406d91906158ca565b5050505050565b600080831182906140bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140b29190614167565b60405180910390fd5b50600083856140ca9190614a47565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156141115780820151818401526020810190506140f6565b60008484015250505050565b6000601f19601f8301169050919050565b6000614139826140d7565b61414381856140e2565b93506141538185602086016140f3565b61415c8161411d565b840191505092915050565b60006020820190508181036000830152614181818461412e565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006141c88261419d565b9050919050565b6141d8816141bd565b81146141e357600080fd5b50565b6000813590506141f5816141cf565b92915050565b6000819050919050565b61420e816141fb565b811461421957600080fd5b50565b60008135905061422b81614205565b92915050565b6000806040838503121561424857614247614193565b5b6000614256858286016141e6565b92505060206142678582860161421c565b9150509250929050565b60008115159050919050565b61428681614271565b82525050565b60006020820190506142a1600083018461427d565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6142e48261411d565b810181811067ffffffffffffffff82111715614303576143026142ac565b5b80604052505050565b6000614316614189565b905061432282826142db565b919050565b600067ffffffffffffffff821115614342576143416142ac565b5b602082029050602081019050919050565b600080fd5b600061436b61436684614327565b61430c565b9050808382526020820190506020840283018581111561438e5761438d614353565b5b835b818110156143b757806143a388826141e6565b845260208401935050602081019050614390565b5050509392505050565b600082601f8301126143d6576143d56142a7565b5b81356143e6848260208601614358565b91505092915050565b60006020828403121561440557614404614193565b5b600082013567ffffffffffffffff81111561442357614422614198565b5b61442f848285016143c1565b91505092915050565b6000819050919050565b600061445d6144586144538461419d565b614438565b61419d565b9050919050565b600061446f82614442565b9050919050565b600061448182614464565b9050919050565b61449181614476565b82525050565b60006020820190506144ac6000830184614488565b92915050565b6144bb816141fb565b82525050565b60006020820190506144d660008301846144b2565b92915050565b6000602082840312156144f2576144f1614193565b5b60006145008482850161421c565b91505092915050565b60008060006060848603121561452257614521614193565b5b6000614530868287016141e6565b9350506020614541868287016141e6565b92505060406145528682870161421c565b9150509250925092565b600060ff82169050919050565b6145728161455c565b82525050565b600060208201905061458d6000830184614569565b92915050565b61459c816141bd565b82525050565b60006020820190506145b76000830184614593565b92915050565b6000602082840312156145d3576145d2614193565b5b60006145e1848285016141e6565b91505092915050565b6145f381614271565b81146145fe57600080fd5b50565b600081359050614610816145ea565b92915050565b6000806040838503121561462d5761462c614193565b5b600061463b858286016141e6565b925050602061464c85828601614601565b9150509250929050565b60008060006060848603121561466f5761466e614193565b5b600061467d8682870161421c565b935050602061468e8682870161421c565b925050604061469f8682870161421c565b9150509250925092565b600067ffffffffffffffff8211156146c4576146c36142ac565b5b602082029050602081019050919050565b60006146e86146e3846146a9565b61430c565b9050808382526020820190506020840283018581111561470b5761470a614353565b5b835b818110156147345780614720888261421c565b84526020840193505060208101905061470d565b5050509392505050565b600082601f830112614753576147526142a7565b5b81356147638482602086016146d5565b91505092915050565b6000806040838503121561478357614782614193565b5b600083013567ffffffffffffffff8111156147a1576147a0614198565b5b6147ad858286016143c1565b925050602083013567ffffffffffffffff8111156147ce576147cd614198565b5b6147da8582860161473e565b9150509250929050565b600080604083850312156147fb576147fa614193565b5b6000614809858286016141e6565b925050602061481a858286016141e6565b9150509250929050565b6000806040838503121561483b5761483a614193565b5b600061484985828601614601565b925050602061485a85828601614601565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806148ab57607f821691505b6020821081036148be576148bd614864565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006148fa6020836140e2565b9150614905826148c4565b602082019050919050565b60006020820190508181036000830152614929816148ed565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614999826141fb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036149cb576149ca61495f565b5b600182019050919050565b60006149e1826141fb565b91506149ec836141fb565b92508282026149fa816141fb565b91508282048414831517614a1157614a1061495f565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a52826141fb565b9150614a5d836141fb565b925082614a6d57614a6c614a18565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614ad4602f836140e2565b9150614adf82614a78565b604082019050919050565b60006020820190508181036000830152614b0381614ac7565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614b666039836140e2565b9150614b7182614b0a565b604082019050919050565b60006020820190508181036000830152614b9581614b59565b9050919050565b6000614ba7826141fb565b9150614bb2836141fb565b9250828201905080821115614bca57614bc961495f565b5b92915050565b7f2d00000000000000000000000000000000000000000000000000000000000000600082015250565b6000614c066001836140e2565b9150614c1182614bd0565b602082019050919050565b60006020820190508181036000830152614c3581614bf9565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574416d6f756e74206c6f77657260008201527f207468616e20302e352500000000000000000000000000000000000000000000602082015250565b6000614c98602a836140e2565b9150614ca382614c3c565b604082019050919050565b60006020820190508181036000830152614cc781614c8b565b9050919050565b7f417272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b6000614d04601e836140e2565b9150614d0f82614cce565b602082019050919050565b60006020820190508181036000830152614d3381614cf7565b9050919050565b7f57616c6c657473206c697374206c656e677468206d757374206265203c3d203260008201527f3030300000000000000000000000000000000000000000000000000000000000602082015250565b6000614d966023836140e2565b9150614da182614d3a565b604082019050919050565b60006020820190508181036000830152614dc581614d89565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614e286035836140e2565b9150614e3382614dcc565b604082019050919050565b60006020820190508181036000830152614e5781614e1b565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614eba6034836140e2565b9150614ec582614e5e565b604082019050919050565b60006020820190508181036000830152614ee981614ead565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614f4c6026836140e2565b9150614f5782614ef0565b604082019050919050565b60006020820190508181036000830152614f7b81614f3f565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614fb8601b836140e2565b9150614fc382614f82565b602082019050919050565b60006020820190508181036000830152614fe781614fab565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061504a6024836140e2565b915061505582614fee565b604082019050919050565b600060208201905081810360008301526150798161503d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006150dc6022836140e2565b91506150e782615080565b604082019050919050565b6000602082019050818103600083015261510b816150cf565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061516e6025836140e2565b915061517982615112565b604082019050919050565b6000602082019050818103600083015261519d81615161565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006152006023836140e2565b915061520b826151a4565b604082019050919050565b6000602082019050818103600083015261522f816151f3565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b60006152926031836140e2565b915061529d82615236565b604082019050919050565b600060208201905081810360008301526152c181615285565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006152fe6016836140e2565b9150615309826152c8565b602082019050919050565b6000602082019050818103600083015261532d816152f1565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006153b66049836140e2565b91506153c182615334565b606082019050919050565b600060208201905081810360008301526153e5816153a9565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006154486035836140e2565b9150615453826153ec565b604082019050919050565b600060208201905081810360008301526154778161543b565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006154b46013836140e2565b91506154bf8261547e565b602082019050919050565b600060208201905081810360008301526154e3816154a7565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006155466036836140e2565b9150615551826154ea565b604082019050919050565b6000602082019050818103600083015261557581615539565b9050919050565b6000615587826141fb565b9150615592836141fb565b92508282039050818111156155aa576155a961495f565b5b92915050565b600081905092915050565b50565b60006155cb6000836155b0565b91506155d6826155bb565b600082019050919050565b60006155ec826155be565b9150819050919050565b600060608201905061560b60008301866144b2565b61561860208301856144b2565b61562560408301846144b2565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006156896021836140e2565b91506156948261562d565b604082019050919050565b600060208201905081810360008301526156b88161567c565b9050919050565b6000815190506156ce816141cf565b92915050565b6000602082840312156156ea576156e9614193565b5b60006156f8848285016156bf565b91505092915050565b6000819050919050565b600061572661572161571c84615701565b614438565b6141fb565b9050919050565b6157368161570b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615771816141bd565b82525050565b60006157838383615768565b60208301905092915050565b6000602082019050919050565b60006157a78261573c565b6157b18185615747565b93506157bc83615758565b8060005b838110156157ed5781516157d48882615777565b97506157df8361578f565b9250506001810190506157c0565b5085935050505092915050565b600060a08201905061580f60008301886144b2565b61581c602083018761572d565b818103604083015261582e818661579c565b905061583d6060830185614593565b61584a60808301846144b2565b9695505050505050565b600060c0820190506158696000830189614593565b61587660208301886144b2565b615883604083018761572d565b615890606083018661572d565b61589d6080830185614593565b6158aa60a08301846144b2565b979650505050505050565b6000815190506158c481614205565b92915050565b6000806000606084860312156158e3576158e2614193565b5b60006158f1868287016158b5565b9350506020615902868287016158b5565b9250506040615913868287016158b5565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203f82c45c023ba8fb1c2a76995d80e90116368fc577ad1af77dd32933021a123664736f6c63430008110033

Deployed Bytecode

0x60806040526004361061023f5760003560e01c80639a7a23d61161012e578063c876d0b9116100ab578063e884f2601161006f578063e884f260146108ca578063ed09924f146108f5578063ed6bea081461091e578063f1fca8b614610947578063f2fde38b1461097057610246565b8063c876d0b9146107bd578063c952b93c146107e8578063d257b34f14610825578063dd62ed3e14610862578063e2f456051461089f57610246565b8063b6d18f97116100f2578063b6d18f97146106ee578063bbc0c74214610717578063c024666814610742578063c18bc1951461076b578063c558ae6b1461079457610246565b80639a7a23d6146105e5578063a34295101461060e578063a457c2d714610637578063a9059cbb14610674578063b62496f5146106b157610246565b806349bd5a5e116101bc578063715018a611610180578063715018a614610524578063751039fc1461053b5780637571336a146105665780638da5cb5b1461058f57806395d89b41146105ba57610246565b806349bd5a5e146104295780634a62bb65146104545780634fbee1931461047f5780636ddd1713146104bc57806370a08231146104e757610246565b80631b75738a116102035780631b75738a14610332578063203e727e1461035b57806323b872dd14610384578063313ce567146103c157806339509351146103ec57610246565b806306fdde031461024b578063095ea7b314610276578063146368c8146102b35780631694505e146102dc57806318160ddd1461030757610246565b3661024657005b600080fd5b34801561025757600080fd5b50610260610999565b60405161026d9190614167565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190614231565b610a2b565b6040516102aa919061428c565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d591906143ef565b610a49565b005b3480156102e857600080fd5b506102f1610b75565b6040516102fe9190614497565b60405180910390f35b34801561031357600080fd5b5061031c610b99565b60405161032991906144c1565b60405180910390f35b34801561033e57600080fd5b50610359600480360381019061035491906143ef565b610ba3565b005b34801561036757600080fd5b50610382600480360381019061037d91906144dc565b610ccf565b005b34801561039057600080fd5b506103ab60048036038101906103a69190614509565b610de6565b6040516103b8919061428c565b60405180910390f35b3480156103cd57600080fd5b506103d6610ebf565b6040516103e39190614578565b60405180910390f35b3480156103f857600080fd5b50610413600480360381019061040e9190614231565b610ec8565b604051610420919061428c565b60405180910390f35b34801561043557600080fd5b5061043e610f7b565b60405161044b91906145a2565b60405180910390f35b34801561046057600080fd5b50610469610f9f565b604051610476919061428c565b60405180910390f35b34801561048b57600080fd5b506104a660048036038101906104a191906145bd565b610fb2565b6040516104b3919061428c565b60405180910390f35b3480156104c857600080fd5b506104d1611008565b6040516104de919061428c565b60405180910390f35b3480156104f357600080fd5b5061050e600480360381019061050991906145bd565b61101b565b60405161051b91906144c1565b60405180910390f35b34801561053057600080fd5b50610539611063565b005b34801561054757600080fd5b506105506111bb565b60405161055d919061428c565b60405180910390f35b34801561057257600080fd5b5061058d60048036038101906105889190614616565b611276565b005b34801561059b57600080fd5b506105a4611368565b6040516105b191906145a2565b60405180910390f35b3480156105c657600080fd5b506105cf611392565b6040516105dc9190614167565b60405180910390f35b3480156105f157600080fd5b5061060c60048036038101906106079190614616565b611424565b005b34801561061a57600080fd5b50610635600480360381019061063091906145bd565b611557565b005b34801561064357600080fd5b5061065e60048036038101906106599190614231565b6116ae565b60405161066b919061428c565b60405180910390f35b34801561068057600080fd5b5061069b60048036038101906106969190614231565b61177b565b6040516106a8919061428c565b60405180910390f35b3480156106bd57600080fd5b506106d860048036038101906106d391906145bd565b611799565b6040516106e5919061428c565b60405180910390f35b3480156106fa57600080fd5b5061071560048036038101906107109190614656565b6117b9565b005b34801561072357600080fd5b5061072c6118d3565b604051610739919061428c565b60405180910390f35b34801561074e57600080fd5b5061076960048036038101906107649190614616565b6118e6565b005b34801561077757600080fd5b50610792600480360381019061078d91906144dc565b611a26565b005b3480156107a057600080fd5b506107bb60048036038101906107b6919061476c565b611b3d565b005b3480156107c957600080fd5b506107d2611ce0565b6040516107df919061428c565b60405180910390f35b3480156107f457600080fd5b5061080f600480360381019061080a91906145bd565b611cf3565b60405161081c919061428c565b60405180910390f35b34801561083157600080fd5b5061084c600480360381019061084791906144dc565b611d49565b604051610859919061428c565b60405180910390f35b34801561086e57600080fd5b50610889600480360381019061088491906147e4565b611eb9565b60405161089691906144c1565b60405180910390f35b3480156108ab57600080fd5b506108b4611f40565b6040516108c191906144c1565b60405180910390f35b3480156108d657600080fd5b506108df611f46565b6040516108ec919061428c565b60405180910390f35b34801561090157600080fd5b5061091c60048036038101906109179190614824565b612001565b005b34801561092a57600080fd5b50610945600480360381019061094091906145bd565b6120d7565b005b34801561095357600080fd5b5061096e60048036038101906109699190614656565b61222e565b005b34801561097c57600080fd5b50610997600480360381019061099291906145bd565b612348565b005b6060600380546109a890614893565b80601f01602080910402602001604051908101604052809291908181526020018280546109d490614893565b8015610a215780601f106109f657610100808354040283529160200191610a21565b820191906000526020600020905b815481529060010190602001808311610a0457829003601f168201915b5050505050905090565b6000610a3f610a3861256c565b8484612574565b6001905092915050565b610a5161256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ae0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad790614910565b60405180910390fd5b60005b8151811015610b71576001600d6000848481518110610b0557610b04614930565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610b699061498e565b915050610ae3565b5050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610bab61256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3190614910565b60405180910390fd5b60005b8151811015610ccb576000600d6000848481518110610c5f57610c5e614930565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610cc39061498e565b915050610c3d565b5050565b610cd761256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5d90614910565b60405180910390fd5b670de0b6b3a76400006103e86001610d7c610b99565b610d8691906149d6565b610d909190614a47565b610d9a9190614a47565b811015610ddc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd390614aea565b60405180910390fd5b8060088190555050565b6000610df384848461273d565b610eb484610dff61256c565b610eaf8560405180606001604052806028815260200161594460289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e6561256c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135cb9092919063ffffffff16565b612574565b600190509392505050565b60006012905090565b6000610f71610ed561256c565b84610f6c8560016000610ee661256c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461250e90919063ffffffff16565b612574565b6001905092915050565b7f0000000000000000000000004609007469970281b55cab3da49b3e4285096c6a81565b600b60009054906101000a900460ff1681565b6000601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61106b61256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f190614910565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006111c561256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124b90614910565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b61127e61256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130490614910565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546113a190614893565b80601f01602080910402602001604051908101604052809291908181526020018280546113cd90614893565b801561141a5780601f106113ef5761010080835404028352916020019161141a565b820191906000526020600020905b8154815290600101906020018083116113fd57829003601f168201915b5050505050905090565b61142c61256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b290614910565b60405180910390fd5b7f0000000000000000000000004609007469970281b55cab3da49b3e4285096c6a73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611549576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154090614b7c565b60405180910390fd5b611553828261362f565b5050565b61155f61256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e590614910565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fd13e77a8c6108ef1065a5ab683534c023ac4637eb699157a7d12090f95ea17d860405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006117716116bb61256c565b8461176c8560405180606001604052806025815260200161596c60259139600160006116e561256c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135cb9092919063ffffffff16565b612574565b6001905092915050565b600061178f61178861256c565b848461273d565b6001905092915050565b601d6020528060005260406000206000915054906101000a900460ff1681565b6117c161256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611850576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184790614910565b60405180910390fd5b8260148190555081601581905550806016819055506016546015546014546118789190614b9c565b6118829190614b9c565b601381905550605f60135411156118ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c590614c1c565b60405180910390fd5b505050565b600b60019054906101000a900460ff1681565b6118ee61256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461197d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197490614910565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611a1a919061428c565b60405180910390a25050565b611a2e61256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611abd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab490614910565b60405180910390fd5b670de0b6b3a76400006103e86005611ad3610b99565b611add91906149d6565b611ae79190614a47565b611af19190614a47565b811015611b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2a90614cae565b60405180910390fd5b80600a8190555050565b611b4561256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcb90614910565b60405180910390fd5b8051825114611c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0f90614d1a565b60405180910390fd5b6107d082511115611c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5590614dac565b60405180910390fd5b60005b8251811015611cdb576000838281518110611c7f57611c7e614930565b5b602002602001015190506000670de0b6b3a7640000848481518110611ca757611ca6614930565b5b6020026020010151611cb991906149d6565b9050611cc63383836136d0565b50508080611cd39061498e565b915050611c61565b505050565b600e60009054906101000a900460ff1681565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000611d5361256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd990614910565b60405180910390fd5b620186a06001611df0610b99565b611dfa91906149d6565b611e049190614a47565b821015611e46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3d90614e3e565b60405180910390fd5b6103e86005611e53610b99565b611e5d91906149d6565b611e679190614a47565b821115611ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea090614ed0565b60405180910390fd5b8160098190555060019050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b6000611f5061256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd690614910565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b61200961256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612098576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208f90614910565b60405180910390fd5b81600b60016101000a81548160ff02191690831515021790555080600b60026101000a81548160ff02191690831515021790555043601a819055505050565b6120df61256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461216e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216590614910565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fea6a521640114e7834febc17524c06536ba8cbc70aeaf226da57900015f3f89460405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61223661256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bc90614910565b60405180910390fd5b8260108190555081601181905550806012819055506012546011546010546122ed9190614b9c565b6122f79190614b9c565b600f81905550602d600f541115612343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233a90614c1c565b60405180910390fd5b505050565b61235061256c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d690614910565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361244e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244590614f62565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080828461251d9190614b9c565b905083811015612562576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255990614fce565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125da90615060565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612652576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612649906150f2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161273091906144c1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a390615184565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361281b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281290615216565b60405180910390fd5b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128bf5750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6128fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f5906152a8565b60405180910390fd5b6000810361291757612912838360006136d0565b6135c6565b600b60009054906101000a900460ff1615612fda57612934611368565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129a25750612972611368565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129db5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a15575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a2e5750600560149054906101000a900460ff16155b15612fd957600b60019054906101000a900460ff16612b2857601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ae85750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1e90615314565b60405180910390fd5b5b600e60009054906101000a900460ff1615612cf057612b45611368565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612bcc57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c2457507f0000000000000000000000004609007469970281b55cab3da49b3e4285096c6a73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612cef5743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca1906153cc565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d935750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e3a57600854811115612ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd49061545e565b60405180910390fd5b600a54612de98361101b565b82612df49190614b9c565b1115612e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e2c906154ca565b60405180910390fd5b612fd8565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612edd5750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f2c57600854811115612f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1e9061555c565b60405180910390fd5b612fd7565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612fd657600a54612f898361101b565b82612f949190614b9c565b1115612fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fcc906154ca565b60405180910390fd5b5b5b5b5b5b6000601a54612fe99190614b9c565b431115801561304457507f0000000000000000000000004609007469970281b55cab3da49b3e4285096c6a73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156130905750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156130ee576000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60006130f93061101b565b90506000600954821015905080801561311e5750600b60029054906101000a900460ff165b80156131375750600560149054906101000a900460ff16155b801561318d5750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131e35750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132395750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561327d576001600560146101000a81548160ff021916908315150217905550613261613963565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806133335750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561333d57600090505b600081156135b657601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133a057506000601354115b1561346d576133cd60646133bf60135488613c4a90919063ffffffff16565b613cc490919063ffffffff16565b9050601354601554826133e091906149d6565b6133ea9190614a47565b601860008282546133fb9190614b9c565b925050819055506013546016548261341391906149d6565b61341d9190614a47565b6019600082825461342e9190614b9c565b925050819055506013546014548261344691906149d6565b6134509190614a47565b601760008282546134619190614b9c565b92505081905550613592565b601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134c857506000600f54115b15613591576134f560646134e7600f5488613c4a90919063ffffffff16565b613cc490919063ffffffff16565b9050600f546011548261350891906149d6565b6135129190614a47565b601860008282546135239190614b9c565b92505081905550600f546012548261353b91906149d6565b6135459190614a47565b601960008282546135569190614b9c565b92505081905550600f546010548261356e91906149d6565b6135789190614a47565b601760008282546135899190614b9c565b925050819055505b5b60008111156135a7576135a68730836136d0565b5b80856135b3919061557c565b94505b6135c18787876136d0565b505050505b505050565b6000838311158290613613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161360a9190614167565b60405180910390fd5b5060008385613622919061557c565b9050809150509392505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361373f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161373690615184565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036137ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137a590615216565b60405180910390fd5b6137b9838383613d0e565b6138248160405180606001604052806026815260200161591e602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135cb9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138b7816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461250e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161395691906144c1565b60405180910390a3505050565b600061396e3061101b565b905060006019546017546018546139859190614b9c565b61398f9190614b9c565b90506000808314806139a15750600082145b156139ae57505050613c48565b60146009546139bd91906149d6565b8311156139d65760146009546139d391906149d6565b92505b6000600283601854866139e991906149d6565b6139f39190614a47565b6139fd9190614a47565b90506000613a148286613d1390919063ffffffff16565b90506000479050613a2482613d5d565b6000613a398247613d1390919063ffffffff16565b90506000613a6487613a5660175485613c4a90919063ffffffff16565b613cc490919063ffffffff16565b90506000613a8f88613a8160195486613c4a90919063ffffffff16565b613cc490919063ffffffff16565b90506000818385613aa0919061557c565b613aaa919061557c565b9050600060188190555060006017819055506000601981905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613b0a906155e1565b60006040518083038185875af1925050503d8060008114613b47576040519150601f19603f3d011682016040523d82523d6000602084013e613b4c565b606091505b505080985050600087118015613b625750600081115b15613baf57613b718782613f9a565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601854604051613ba6939291906155f6565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613bf5906155e1565b60006040518083038185875af1925050503d8060008114613c32576040519150601f19603f3d011682016040523d82523d6000602084013e613c37565b606091505b505080985050505050505050505050505b565b6000808303613c5c5760009050613cbe565b60008284613c6a91906149d6565b9050828482613c799190614a47565b14613cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cb09061569f565b60405180910390fd5b809150505b92915050565b6000613d0683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614074565b905092915050565b505050565b6000613d5583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506135cb565b905092915050565b6000600267ffffffffffffffff811115613d7a57613d796142ac565b5b604051908082528060200260200182016040528015613da85781602001602082028036833780820191505090505b5090503081600081518110613dc057613dbf614930565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e8991906156d4565b81600181518110613e9d57613e9c614930565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f02307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612574565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613f649594939291906157fa565b600060405180830381600087803b158015613f7e57600080fd5b505af1158015613f92573d6000803e3d6000fd5b505050505050565b613fc5307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612574565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b815260040161402a96959493929190615854565b60606040518083038185885af1158015614048573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061406d91906158ca565b5050505050565b600080831182906140bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140b29190614167565b60405180910390fd5b50600083856140ca9190614a47565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156141115780820151818401526020810190506140f6565b60008484015250505050565b6000601f19601f8301169050919050565b6000614139826140d7565b61414381856140e2565b93506141538185602086016140f3565b61415c8161411d565b840191505092915050565b60006020820190508181036000830152614181818461412e565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006141c88261419d565b9050919050565b6141d8816141bd565b81146141e357600080fd5b50565b6000813590506141f5816141cf565b92915050565b6000819050919050565b61420e816141fb565b811461421957600080fd5b50565b60008135905061422b81614205565b92915050565b6000806040838503121561424857614247614193565b5b6000614256858286016141e6565b92505060206142678582860161421c565b9150509250929050565b60008115159050919050565b61428681614271565b82525050565b60006020820190506142a1600083018461427d565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6142e48261411d565b810181811067ffffffffffffffff82111715614303576143026142ac565b5b80604052505050565b6000614316614189565b905061432282826142db565b919050565b600067ffffffffffffffff821115614342576143416142ac565b5b602082029050602081019050919050565b600080fd5b600061436b61436684614327565b61430c565b9050808382526020820190506020840283018581111561438e5761438d614353565b5b835b818110156143b757806143a388826141e6565b845260208401935050602081019050614390565b5050509392505050565b600082601f8301126143d6576143d56142a7565b5b81356143e6848260208601614358565b91505092915050565b60006020828403121561440557614404614193565b5b600082013567ffffffffffffffff81111561442357614422614198565b5b61442f848285016143c1565b91505092915050565b6000819050919050565b600061445d6144586144538461419d565b614438565b61419d565b9050919050565b600061446f82614442565b9050919050565b600061448182614464565b9050919050565b61449181614476565b82525050565b60006020820190506144ac6000830184614488565b92915050565b6144bb816141fb565b82525050565b60006020820190506144d660008301846144b2565b92915050565b6000602082840312156144f2576144f1614193565b5b60006145008482850161421c565b91505092915050565b60008060006060848603121561452257614521614193565b5b6000614530868287016141e6565b9350506020614541868287016141e6565b92505060406145528682870161421c565b9150509250925092565b600060ff82169050919050565b6145728161455c565b82525050565b600060208201905061458d6000830184614569565b92915050565b61459c816141bd565b82525050565b60006020820190506145b76000830184614593565b92915050565b6000602082840312156145d3576145d2614193565b5b60006145e1848285016141e6565b91505092915050565b6145f381614271565b81146145fe57600080fd5b50565b600081359050614610816145ea565b92915050565b6000806040838503121561462d5761462c614193565b5b600061463b858286016141e6565b925050602061464c85828601614601565b9150509250929050565b60008060006060848603121561466f5761466e614193565b5b600061467d8682870161421c565b935050602061468e8682870161421c565b925050604061469f8682870161421c565b9150509250925092565b600067ffffffffffffffff8211156146c4576146c36142ac565b5b602082029050602081019050919050565b60006146e86146e3846146a9565b61430c565b9050808382526020820190506020840283018581111561470b5761470a614353565b5b835b818110156147345780614720888261421c565b84526020840193505060208101905061470d565b5050509392505050565b600082601f830112614753576147526142a7565b5b81356147638482602086016146d5565b91505092915050565b6000806040838503121561478357614782614193565b5b600083013567ffffffffffffffff8111156147a1576147a0614198565b5b6147ad858286016143c1565b925050602083013567ffffffffffffffff8111156147ce576147cd614198565b5b6147da8582860161473e565b9150509250929050565b600080604083850312156147fb576147fa614193565b5b6000614809858286016141e6565b925050602061481a858286016141e6565b9150509250929050565b6000806040838503121561483b5761483a614193565b5b600061484985828601614601565b925050602061485a85828601614601565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806148ab57607f821691505b6020821081036148be576148bd614864565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006148fa6020836140e2565b9150614905826148c4565b602082019050919050565b60006020820190508181036000830152614929816148ed565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614999826141fb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036149cb576149ca61495f565b5b600182019050919050565b60006149e1826141fb565b91506149ec836141fb565b92508282026149fa816141fb565b91508282048414831517614a1157614a1061495f565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a52826141fb565b9150614a5d836141fb565b925082614a6d57614a6c614a18565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614ad4602f836140e2565b9150614adf82614a78565b604082019050919050565b60006020820190508181036000830152614b0381614ac7565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614b666039836140e2565b9150614b7182614b0a565b604082019050919050565b60006020820190508181036000830152614b9581614b59565b9050919050565b6000614ba7826141fb565b9150614bb2836141fb565b9250828201905080821115614bca57614bc961495f565b5b92915050565b7f2d00000000000000000000000000000000000000000000000000000000000000600082015250565b6000614c066001836140e2565b9150614c1182614bd0565b602082019050919050565b60006020820190508181036000830152614c3581614bf9565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574416d6f756e74206c6f77657260008201527f207468616e20302e352500000000000000000000000000000000000000000000602082015250565b6000614c98602a836140e2565b9150614ca382614c3c565b604082019050919050565b60006020820190508181036000830152614cc781614c8b565b9050919050565b7f417272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b6000614d04601e836140e2565b9150614d0f82614cce565b602082019050919050565b60006020820190508181036000830152614d3381614cf7565b9050919050565b7f57616c6c657473206c697374206c656e677468206d757374206265203c3d203260008201527f3030300000000000000000000000000000000000000000000000000000000000602082015250565b6000614d966023836140e2565b9150614da182614d3a565b604082019050919050565b60006020820190508181036000830152614dc581614d89565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614e286035836140e2565b9150614e3382614dcc565b604082019050919050565b60006020820190508181036000830152614e5781614e1b565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614eba6034836140e2565b9150614ec582614e5e565b604082019050919050565b60006020820190508181036000830152614ee981614ead565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614f4c6026836140e2565b9150614f5782614ef0565b604082019050919050565b60006020820190508181036000830152614f7b81614f3f565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614fb8601b836140e2565b9150614fc382614f82565b602082019050919050565b60006020820190508181036000830152614fe781614fab565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061504a6024836140e2565b915061505582614fee565b604082019050919050565b600060208201905081810360008301526150798161503d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006150dc6022836140e2565b91506150e782615080565b604082019050919050565b6000602082019050818103600083015261510b816150cf565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061516e6025836140e2565b915061517982615112565b604082019050919050565b6000602082019050818103600083015261519d81615161565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006152006023836140e2565b915061520b826151a4565b604082019050919050565b6000602082019050818103600083015261522f816151f3565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b60006152926031836140e2565b915061529d82615236565b604082019050919050565b600060208201905081810360008301526152c181615285565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006152fe6016836140e2565b9150615309826152c8565b602082019050919050565b6000602082019050818103600083015261532d816152f1565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006153b66049836140e2565b91506153c182615334565b606082019050919050565b600060208201905081810360008301526153e5816153a9565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006154486035836140e2565b9150615453826153ec565b604082019050919050565b600060208201905081810360008301526154778161543b565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006154b46013836140e2565b91506154bf8261547e565b602082019050919050565b600060208201905081810360008301526154e3816154a7565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006155466036836140e2565b9150615551826154ea565b604082019050919050565b6000602082019050818103600083015261557581615539565b9050919050565b6000615587826141fb565b9150615592836141fb565b92508282039050818111156155aa576155a961495f565b5b92915050565b600081905092915050565b50565b60006155cb6000836155b0565b91506155d6826155bb565b600082019050919050565b60006155ec826155be565b9150819050919050565b600060608201905061560b60008301866144b2565b61561860208301856144b2565b61562560408301846144b2565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006156896021836140e2565b91506156948261562d565b604082019050919050565b600060208201905081810360008301526156b88161567c565b9050919050565b6000815190506156ce816141cf565b92915050565b6000602082840312156156ea576156e9614193565b5b60006156f8848285016156bf565b91505092915050565b6000819050919050565b600061572661572161571c84615701565b614438565b6141fb565b9050919050565b6157368161570b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615771816141bd565b82525050565b60006157838383615768565b60208301905092915050565b6000602082019050919050565b60006157a78261573c565b6157b18185615747565b93506157bc83615758565b8060005b838110156157ed5781516157d48882615777565b97506157df8361578f565b9250506001810190506157c0565b5085935050505092915050565b600060a08201905061580f60008301886144b2565b61581c602083018761572d565b818103604083015261582e818661579c565b905061583d6060830185614593565b61584a60808301846144b2565b9695505050505050565b600060c0820190506158696000830189614593565b61587660208301886144b2565b615883604083018761572d565b615890606083018661572d565b61589d6080830185614593565b6158aa60a08301846144b2565b979650505050505050565b6000815190506158c481614205565b92915050565b6000806000606084860312156158e3576158e2614193565b5b60006158f1868287016158b5565b9350506020615902868287016158b5565b9250506040615913868287016158b5565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203f82c45c023ba8fb1c2a76995d80e90116368fc577ad1af77dd32933021a123664736f6c63430008110033

Deployed Bytecode Sourcemap

29419:15904:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7523:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9697:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36799:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29503:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8646:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36967:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34864:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10349:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8487:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11114:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29561:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29911:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37566:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29991:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8818:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22027:148;;;;;;;;;;;;;:::i;:::-;;34081:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35321:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21383:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7743:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36344:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37258:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11836:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9159:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31167:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35453:345;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29951:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36153:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35096:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37701:554;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30294:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37142:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34469:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9398:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29830:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34263:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33847:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37412:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35807:336;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22331:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7523:100;7577:13;7610:5;7603:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7523:100;:::o;9697:169::-;9780:4;9797:39;9806:12;:10;:12::i;:::-;9820:7;9829:6;9797:8;:39::i;:::-;9854:4;9847:11;;9697:169;;;;:::o;36799:164::-;21606:12;:10;:12::i;:::-;21596:22;;:6;;;;;;;;;;;:22;;;21588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36865:6:::1;36860:96;36881:5;:12;36877:1;:16;36860:96;;;36938:4;36915:10;:20;36926:5;36932:1;36926:8;;;;;;;;:::i;:::-;;;;;;;;36915:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;36895:3;;;;;:::i;:::-;;;;36860:96;;;;36799:164:::0;:::o;29503:51::-;;;:::o;8646:108::-;8707:7;8734:12;;8727:19;;8646:108;:::o;36967:167::-;21606:12;:10;:12::i;:::-;21596:22;;:6;;;;;;;;;;;:22;;;21588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37039:6:::1;37034:93;37055:6;:13;37051:1;:17;37034:93;;;37112:5;37088:10;:21;37099:6;37106:1;37099:9;;;;;;;;:::i;:::-;;;;;;;;37088:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;37070:3;;;;;:::i;:::-;;;;37034:93;;;;36967:167:::0;:::o;34864:223::-;21606:12;:10;:12::i;:::-;21596:22;;:6;;;;;;;;;;;:22;;;21588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34983:4:::1;34977;34973:1;34957:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;34956:31;;;;:::i;:::-;34946:6;:41;;34938:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;35073:6;35050:20;:29;;;;34864:223:::0;:::o;10349:355::-;10489:4;10506:36;10516:6;10524:9;10535:6;10506:9;:36::i;:::-;10553:121;10562:6;10570:12;:10;:12::i;:::-;10584:89;10622:6;10584:89;;;;;;;;;;;;;;;;;:11;:19;10596:6;10584:19;;;;;;;;;;;;;;;:33;10604:12;:10;:12::i;:::-;10584:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;10553:8;:121::i;:::-;10692:4;10685:11;;10349:355;;;;;:::o;8487:93::-;8545:5;8570:2;8563:9;;8487:93;:::o;11114:218::-;11202:4;11219:83;11228:12;:10;:12::i;:::-;11242:7;11251:50;11290:10;11251:11;:25;11263:12;:10;:12::i;:::-;11251:25;;;;;;;;;;;;;;;:34;11277:7;11251:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11219:8;:83::i;:::-;11320:4;11313:11;;11114:218;;;;:::o;29561:38::-;;;:::o;29911:33::-;;;;;;;;;;;;;:::o;37566:125::-;37631:4;37655:19;:28;37675:7;37655:28;;;;;;;;;;;;;;;;;;;;;;;;;37648:35;;37566:125;;;:::o;29991:30::-;;;;;;;;;;;;;:::o;8818:127::-;8892:7;8919:9;:18;8929:7;8919:18;;;;;;;;;;;;;;;;8912:25;;8818:127;;;:::o;22027:148::-;21606:12;:10;:12::i;:::-;21596:22;;:6;;;;;;;;;;;:22;;;21588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22134:1:::1;22097:40;;22118:6;;;;;;;;;;;22097:40;;;;;;;;;;;;22165:1;22148:6;;:19;;;;;;;;;;;;;;;;;;22027:148::o:0;34081:120::-;34133:4;21606:12;:10;:12::i;:::-;21596:22;;:6;;;;;;;;;;;:22;;;21588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34166:5:::1;34149:14;;:22;;;;;;;;;;;;;;;;;;34189:4;34182:11;;34081:120:::0;:::o;35321:118::-;21606:12;:10;:12::i;:::-;21596:22;;:6;;;;;;;;;;;:22;;;21588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35427:4:::1;35411:5;:13;35417:6;35411:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;35321:118:::0;;:::o;21383:79::-;21421:7;21448:6;;;;;;;;;;;21441:13;;21383:79;:::o;7743:104::-;7799:13;7832:7;7825:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7743:104;:::o;36344:245::-;21606:12;:10;:12::i;:::-;21596:22;;:6;;;;;;;;;;;:22;;;21588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36451:13:::1;36443:21;;:4;:21;;::::0;36435:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;36540:41;36569:4;36575:5;36540:28;:41::i;:::-;36344:245:::0;;:::o;37258:145::-;21606:12;:10;:12::i;:::-;21596:22;;:6;;;;;;;;;;;:22;;;21588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37359:6:::1;;;;;;;;;;;37334:32;;37348:9;37334:32;;;;;;;;;;;;37386:9;37377:6;;:18;;;;;;;;;;;;;;;;;;37258:145:::0;:::o;11836:269::-;11929:4;11946:129;11955:12;:10;:12::i;:::-;11969:7;11978:96;12017:15;11978:96;;;;;;;;;;;;;;;;;:11;:25;11990:12;:10;:12::i;:::-;11978:25;;;;;;;;;;;;;;;:34;12004:7;11978:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;11946:8;:129::i;:::-;12093:4;12086:11;;11836:269;;;;:::o;9159:175::-;9245:4;9262:42;9272:12;:10;:12::i;:::-;9286:9;9297:6;9262:9;:42::i;:::-;9322:4;9315:11;;9159:175;;;;:::o;31167:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;35453:345::-;21606:12;:10;:12::i;:::-;21596:22;;:6;;;;;;;;;;;:22;;;21588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35583:13:::1;35564:16;:32;;;;35626:13;35607:16;:32;;;;35663:8;35650:10;:21;;;;35736:10;;35717:16;;35698;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;35682:13;:64;;;;35782:2;35765:13;;:19;;35757:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;35453:345:::0;;;:::o;29951:33::-;;;;;;;;;;;;;:::o;36153:182::-;21606:12;:10;:12::i;:::-;21596:22;;:6;;;;;;;;;;;:22;;;21588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36269:8:::1;36238:19;:28;36258:7;36238:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;36309:7;36293:34;;;36318:8;36293:34;;;;;;:::i;:::-;;;;;;;;36153:182:::0;;:::o;35096:216::-;21606:12;:10;:12::i;:::-;21596:22;;:6;;;;;;;;;;;:22;;;21588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35218:4:::1;35212;35208:1;35192:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;35191:31;;;;:::i;:::-;35181:6;:41;;35173:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;35298:6;35280:15;:24;;;;35096:216:::0;:::o;37701:554::-;21606:12;:10;:12::i;:::-;21596:22;;:6;;;;;;;;;;;:22;;;21588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37864:6:::1;:13;37839:14;:21;:38;37831:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;37956:4;37931:14;:21;:29;;37923:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;38016:9;38011:237;38035:14;:21;38031:1;:25;38011:237;;;38078:14;38095;38110:1;38095:17;;;;;;;;:::i;:::-;;;;;;;;38078:34;;38127:21;38164:6;38151;38158:1;38151:9;;;;;;;;:::i;:::-;;;;;;;;:20;;;;:::i;:::-;38127:44;;38186:50;38202:10;38214:6;38222:13;38186:15;:50::i;:::-;38063:185;;38058:3;;;;;:::i;:::-;;;;38011:237;;;;37701:554:::0;;:::o;30294:40::-;;;;;;;;;;;;;:::o;37142:101::-;37196:4;37217:10;:18;37228:6;37217:18;;;;;;;;;;;;;;;;;;;;;;;;;37210:25;;37142:101;;;:::o;34469:386::-;34550:4;21606:12;:10;:12::i;:::-;21596:22;;:6;;;;;;;;;;;:22;;;21588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34607:6:::1;34603:1;34587:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;34574:9;:39;;34566:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;34723:4;34719:1;34703:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;34690:9;:37;;34682:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;34816:9;34795:18;:30;;;;34843:4;34836:11;;34469:386:::0;;;:::o;9398:151::-;9487:7;9514:11;:18;9526:5;9514:18;;;;;;;;;;;;;;;:27;9533:7;9514:27;;;;;;;;;;;;;;;;9507:34;;9398:151;;;;:::o;29830:33::-;;;;:::o;34263:134::-;34323:4;21606:12;:10;:12::i;:::-;21596:22;;:6;;;;;;;;;;;:22;;;21588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34362:5:::1;34339:20;;:28;;;;;;;;;;;;;;;;;;34385:4;34378:11;;34263:134:::0;:::o;33847:181::-;21606:12;:10;:12::i;:::-;21596:22;;:6;;;;;;;;;;;:22;;;21588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33943:11:::1;33927:13;;:27;;;;;;;;;;;;;;;;;;33979:5;33965:11;;:19;;;;;;;;;;;;;;;;;;34008:12;33995:10;:25;;;;33847:181:::0;;:::o;37412:145::-;21606:12;:10;:12::i;:::-;21596:22;;:6;;;;;;;;;;;:22;;;21588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37513:6:::1;;;;;;;;;;;37488:32;;37502:9;37488:32;;;;;;;;;;;;37540:9;37531:6;;:18;;;;;;;;;;;;;;;;;;37412:145:::0;:::o;35807:336::-;21606:12;:10;:12::i;:::-;21596:22;;:6;;;;;;;;;;;:22;;;21588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35935:13:::1;35917:15;:31;;;;35977:13;35959:15;:31;;;;36013:8;36001:9;:20;;;;36083:9;;36065:15;;36047;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;36032:12;:60;;;;36127:2;36111:12;;:18;;36103:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;35807:336:::0;;;:::o;22331:244::-;21606:12;:10;:12::i;:::-;21596:22;;:6;;;;;;;;;;;:22;;;21588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22440:1:::1;22420:22;;:8;:22;;::::0;22412:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22530:8;22501:38;;22522:6;;;;;;;;;;;22501:38;;;;;;;;;;;;22559:8;22550:6;;:17;;;;;;;;;;;;;;;;;;22331:244:::0;:::o;16413:182::-;16471:7;16491:9;16507:1;16503;:5;;;;:::i;:::-;16491:17;;16532:1;16527;:6;;16519:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;16586:1;16579:8;;;16413:182;;;;:::o;215:98::-;268:7;295:10;288:17;;215:98;:::o;15032:381::-;15185:1;15168:19;;:5;:19;;;15160:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15266:1;15247:21;;:7;:21;;;15239:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15351:6;15321:11;:18;15333:5;15321:18;;;;;;;;;;;;;;;:27;15340:7;15321:27;;;;;;;;;;;;;;;:36;;;;15389:7;15373:32;;15382:5;15373:32;;;15398:6;15373:32;;;;;;:::i;:::-;;;;;;;;15032:381;;;:::o;38269:4341::-;38417:1;38401:18;;:4;:18;;;38393:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38494:1;38480:16;;:2;:16;;;38472:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;38556:10;:14;38567:2;38556:14;;;;;;;;;;;;;;;;;;;;;;;;;38555:15;:36;;;;;38575:10;:16;38586:4;38575:16;;;;;;;;;;;;;;;;;;;;;;;;;38574:17;38555:36;38547:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;38670:1;38660:6;:11;38657:92;;38688:28;38704:4;38710:2;38714:1;38688:15;:28::i;:::-;38731:7;;38657:92;38765:14;;;;;;;;;;;38762:1745;;;38825:7;:5;:7::i;:::-;38817:15;;:4;:15;;;;:49;;;;;38859:7;:5;:7::i;:::-;38853:13;;:2;:13;;;;38817:49;:86;;;;;38901:1;38887:16;;:2;:16;;;;38817:86;:128;;;;;38938:6;38924:21;;:2;:21;;;;38817:128;:158;;;;;38967:8;;;;;;;;;;;38966:9;38817:158;38795:1701;;;39013:13;;;;;;;;;;;39009:148;;39058:19;:25;39078:4;39058:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;39087:19;:23;39107:2;39087:23;;;;;;;;;;;;;;;;;;;;;;;;;39058:52;39050:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;39009:148;39316:20;;;;;;;;;;;39312:423;;;39370:7;:5;:7::i;:::-;39364:13;;:2;:13;;;;:47;;;;;39395:15;39381:30;;:2;:30;;;;39364:47;:79;;;;;39429:13;39415:28;;:2;:28;;;;39364:79;39360:356;;;39521:12;39479:28;:39;39508:9;39479:39;;;;;;;;;;;;;;;;:54;39471:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;39680:12;39638:28;:39;39667:9;39638:39;;;;;;;;;;;;;;;:54;;;;39360:356;39312:423;39788:25;:31;39814:4;39788:31;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;39824:5;:9;39830:2;39824:9;;;;;;;;;;;;;;;;;;;;;;;;;39823:10;39788:45;39784:697;;;39880:20;;39870:6;:30;;39862:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;40019:15;;40002:13;40012:2;40002:9;:13::i;:::-;39993:6;:22;;;;:::i;:::-;:41;;39985:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;39784:697;;;40137:25;:29;40163:2;40137:29;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;40171:5;:11;40177:4;40171:11;;;;;;;;;;;;;;;;;;;;;;;;;40170:12;40137:45;40133:348;;;40229:20;;40219:6;:30;;40211:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;40133:348;;;40355:5;:9;40361:2;40355:9;;;;;;;;;;;;;;;;;;;;;;;;;40351:130;;40422:15;;40405:13;40415:2;40405:9;:13::i;:::-;40396:6;:22;;;;:::i;:::-;:41;;40388:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;40351:130;40133:348;39784:697;38795:1701;38762:1745;40581:1;40568:10;;:14;;;;:::i;:::-;40551:12;:32;;:73;;;;;40611:13;40605:19;;:2;:19;;;;40551:73;:152;;;;;40660:42;40646:57;;:2;:57;;;;40551:152;40547:222;;;40752:5;40735:10;:14;40746:2;40735:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;40547:222;40782:28;40813:24;40831:4;40813:9;:24::i;:::-;40782:55;;40851:12;40890:18;;40866:20;:42;;40851:57;;40940:7;:35;;;;;40964:11;;;;;;;;;;;40940:35;:61;;;;;40993:8;;;;;;;;;;;40992:9;40940:61;:110;;;;;41019:25;:31;41045:4;41019:31;;;;;;;;;;;;;;;;;;;;;;;;;41018:32;40940:110;:153;;;;;41068:19;:25;41088:4;41068:25;;;;;;;;;;;;;;;;;;;;;;;;;41067:26;40940:153;:194;;;;;41111:19;:23;41131:2;41111:23;;;;;;;;;;;;;;;;;;;;;;;;;41110:24;40940:194;40922:328;;;41172:4;41161:8;;:15;;;;;;;;;;;;;;;;;;41194:10;:8;:10::i;:::-;41233:5;41222:8;;:16;;;;;;;;;;;;;;;;;;40922:328;41263:12;41279:8;;;;;;;;;;;41278:9;41263:24;;41389:19;:25;41409:4;41389:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;41418:19;:23;41438:2;41418:23;;;;;;;;;;;;;;;;;;;;;;;;;41389:52;41386:99;;;41468:5;41458:15;;41386:99;41498:12;41602:7;41599:957;;;41653:25;:29;41679:2;41653:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;41702:1;41686:13;;:17;41653:50;41649:754;;;41730:34;41760:3;41730:25;41741:13;;41730:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;41723:41;;41831:13;;41812:16;;41805:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;41783:18;;:61;;;;;;;:::i;:::-;;;;;;;;41899:13;;41886:10;;41879:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;41863:12;;:49;;;;;;;:::i;:::-;;;;;;;;41979:13;;41960:16;;41953:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;41931:18;;:61;;;;;;;:::i;:::-;;;;;;;;41649:754;;;42053:25;:31;42079:4;42053:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;42103:1;42088:12;;:16;42053:51;42050:353;;;42132:33;42161:3;42132:24;42143:12;;42132:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;42125:40;;42231:12;;42213:15;;42206:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;42184:18;;:59;;;;;;;:::i;:::-;;;;;;;;42297:12;;42285:9;;42278:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;42262:12;;:47;;;;;;;:::i;:::-;;;;;;;;42375:12;;42357:15;;42350:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;42328:18;;:59;;;;;;;:::i;:::-;;;;;;;;42050:353;41649:754;42430:1;42423:4;:8;42420:93;;;42455:42;42471:4;42485;42492;42455:15;:42::i;:::-;42420:93;42540:4;42530:14;;;;;:::i;:::-;;;41599:957;42569:33;42585:4;42591:2;42595:6;42569:15;:33::i;:::-;38382:4228;;;;38269:4341;;;;:::o;17319:193::-;17405:7;17438:1;17433;:6;;17441:12;17425:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17465:9;17481:1;17477;:5;;;;:::i;:::-;17465:17;;17503:1;17496:8;;;17319:193;;;;;:::o;36598:189::-;36715:5;36681:25;:31;36707:4;36681:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;36773:5;36739:40;;36767:4;36739:40;;;;;;;;;;;;36598:189;;:::o;12596:575::-;12754:1;12736:20;;:6;:20;;;12728:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12838:1;12817:23;;:9;:23;;;12809:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12894:47;12915:6;12923:9;12934:6;12894:20;:47::i;:::-;12975:71;12997:6;12975:71;;;;;;;;;;;;;;;;;:9;:17;12985:6;12975:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;12955:9;:17;12965:6;12955:17;;;;;;;;;;;;;;;:91;;;;13080:32;13105:6;13080:9;:20;13090:9;13080:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;13057:9;:20;13067:9;13057:20;;;;;;;;;;;;;;;:55;;;;13145:9;13128:35;;13137:6;13128:35;;;13156:6;13128:35;;;;;;:::i;:::-;;;;;;;;12596:575;;;:::o;43754:1556::-;43793:23;43819:24;43837:4;43819:9;:24::i;:::-;43793:50;;43854:25;43924:12;;43903:18;;43882;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;43854:82;;43947:12;43995:1;43976:15;:20;:46;;;;44021:1;44000:17;:22;43976:46;43973:60;;;44025:7;;;;;43973:60;44088:2;44067:18;;:23;;;;:::i;:::-;44049:15;:41;44046:111;;;44143:2;44122:18;;:23;;;;:::i;:::-;44104:41;;44046:111;44219:23;44304:1;44284:17;44263:18;;44245:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;44219:86;;44316:26;44345:36;44365:15;44345;:19;;:36;;;;:::i;:::-;44316:65;;44395:25;44423:21;44395:49;;44458:36;44475:18;44458:16;:36::i;:::-;44509:18;44530:44;44556:17;44530:21;:25;;:44;;;;:::i;:::-;44509:65;;44588:23;44614:57;44653:17;44614:34;44629:18;;44614:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;44588:83;;44682:17;44702:51;44735:17;44702:28;44717:12;;44702:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;44682:71;;44764:23;44821:9;44803:15;44790:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;44764:66;;44868:1;44847:18;:22;;;;44901:1;44880:18;:22;;;;44928:1;44913:12;:16;;;;44964:6;;;;;;;;;;;44956:20;;44984:9;44956:42;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44943:55;;;;;45033:1;45015:15;:19;:42;;;;;45056:1;45038:15;:19;45015:42;45012:210;;;45073:46;45086:15;45103;45073:12;:46::i;:::-;45139:71;45154:18;45174:15;45191:18;;45139:71;;;;;;;;:::i;:::-;;;;;;;;45012:210;45256:6;;;;;;;;;;;45248:20;;45276:21;45248:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45235:67;;;;;43782:1528;;;;;;;;;;43754:1556;:::o;17772:473::-;17830:7;18080:1;18075;:6;18071:47;;18105:1;18098:8;;;;18071:47;18131:9;18147:1;18143;:5;;;;:::i;:::-;18131:17;;18176:1;18171;18167;:5;;;;:::i;:::-;:10;18159:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;18236:1;18229:8;;;17772:473;;;;;:::o;18722:132::-;18780:7;18807:39;18811:1;18814;18807:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;18800:46;;18722:132;;;;:::o;16017:125::-;;;;:::o;16879:136::-;16937:7;16964:43;16968:1;16971;16964:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;16957:50;;16879:136;;;;:::o;42619:597::-;42748:21;42786:1;42772:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42748:40;;42817:4;42799;42804:1;42799:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;42843:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42833:4;42838:1;42833:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;42879:62;42896:4;42911:15;42929:11;42879:8;:62::i;:::-;42981:15;:66;;;43062:11;43088:1;43132:4;43159;43179:15;42981:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42674:542;42619:597;:::o;43225:520::-;43373:62;43390:4;43405:15;43423:11;43373:8;:62::i;:::-;43479:15;:31;;;43518:9;43551:4;43571:11;43597:1;43640;43691:4;43711:15;43479:258;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;43225:520;;:::o;19351:279::-;19437:7;19469:1;19465;:5;19472:12;19457:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;19496:9;19512:1;19508;:5;;;;:::i;:::-;19496:17;;19621:1;19614:8;;;19351: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;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652: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:117::-;3555:1;3552;3545:12;3569:180;3617:77;3614:1;3607:88;3714:4;3711:1;3704:15;3738:4;3735:1;3728:15;3755:281;3838:27;3860:4;3838:27;:::i;:::-;3830:6;3826:40;3968:6;3956:10;3953:22;3932:18;3920:10;3917:34;3914:62;3911:88;;;3979:18;;:::i;:::-;3911:88;4019:10;4015:2;4008:22;3798:238;3755:281;;:::o;4042:129::-;4076:6;4103:20;;:::i;:::-;4093:30;;4132:33;4160:4;4152:6;4132:33;:::i;:::-;4042:129;;;:::o;4177:311::-;4254:4;4344:18;4336:6;4333:30;4330:56;;;4366:18;;:::i;:::-;4330:56;4416:4;4408:6;4404:17;4396:25;;4476:4;4470;4466:15;4458:23;;4177:311;;;:::o;4494:117::-;4603:1;4600;4593:12;4634:710;4730:5;4755:81;4771:64;4828:6;4771:64;:::i;:::-;4755:81;:::i;:::-;4746:90;;4856:5;4885:6;4878:5;4871:21;4919:4;4912:5;4908:16;4901:23;;4972:4;4964:6;4960:17;4952:6;4948:30;5001:3;4993:6;4990:15;4987:122;;;5020:79;;:::i;:::-;4987:122;5135:6;5118:220;5152:6;5147:3;5144:15;5118:220;;;5227:3;5256:37;5289:3;5277:10;5256:37;:::i;:::-;5251:3;5244:50;5323:4;5318:3;5314:14;5307:21;;5194:144;5178:4;5173:3;5169:14;5162:21;;5118:220;;;5122:21;4736:608;;4634:710;;;;;:::o;5367:370::-;5438:5;5487:3;5480:4;5472:6;5468:17;5464:27;5454:122;;5495:79;;:::i;:::-;5454:122;5612:6;5599:20;5637:94;5727:3;5719:6;5712:4;5704:6;5700:17;5637:94;:::i;:::-;5628:103;;5444:293;5367:370;;;;:::o;5743:539::-;5827:6;5876:2;5864:9;5855:7;5851:23;5847:32;5844:119;;;5882:79;;:::i;:::-;5844:119;6030:1;6019:9;6015:17;6002:31;6060:18;6052:6;6049:30;6046:117;;;6082:79;;:::i;:::-;6046:117;6187:78;6257:7;6248:6;6237:9;6233:22;6187:78;:::i;:::-;6177:88;;5973:302;5743:539;;;;:::o;6288:60::-;6316:3;6337:5;6330:12;;6288:60;;;:::o;6354:142::-;6404:9;6437:53;6455:34;6464:24;6482:5;6464:24;:::i;:::-;6455:34;:::i;:::-;6437:53;:::i;:::-;6424:66;;6354:142;;;:::o;6502:126::-;6552:9;6585:37;6616:5;6585:37;:::i;:::-;6572:50;;6502:126;;;:::o;6634:153::-;6711:9;6744:37;6775:5;6744:37;:::i;:::-;6731:50;;6634:153;;;:::o;6793:185::-;6907:64;6965:5;6907:64;:::i;:::-;6902:3;6895:77;6793:185;;:::o;6984:276::-;7104:4;7142:2;7131:9;7127:18;7119:26;;7155:98;7250:1;7239:9;7235:17;7226:6;7155:98;:::i;:::-;6984:276;;;;:::o;7266:118::-;7353:24;7371:5;7353:24;:::i;:::-;7348:3;7341:37;7266:118;;:::o;7390:222::-;7483:4;7521:2;7510:9;7506:18;7498:26;;7534:71;7602:1;7591:9;7587:17;7578:6;7534:71;:::i;:::-;7390:222;;;;:::o;7618:329::-;7677:6;7726:2;7714:9;7705:7;7701:23;7697:32;7694:119;;;7732:79;;:::i;:::-;7694:119;7852:1;7877:53;7922:7;7913:6;7902:9;7898:22;7877:53;:::i;:::-;7867:63;;7823:117;7618:329;;;;:::o;7953:619::-;8030:6;8038;8046;8095:2;8083:9;8074:7;8070:23;8066:32;8063:119;;;8101:79;;:::i;:::-;8063:119;8221:1;8246:53;8291:7;8282:6;8271:9;8267:22;8246:53;:::i;:::-;8236:63;;8192:117;8348:2;8374:53;8419:7;8410:6;8399:9;8395:22;8374:53;:::i;:::-;8364:63;;8319:118;8476:2;8502:53;8547:7;8538:6;8527:9;8523:22;8502:53;:::i;:::-;8492:63;;8447:118;7953:619;;;;;:::o;8578:86::-;8613:7;8653:4;8646:5;8642:16;8631:27;;8578:86;;;:::o;8670:112::-;8753:22;8769:5;8753:22;:::i;:::-;8748:3;8741:35;8670:112;;:::o;8788:214::-;8877:4;8915:2;8904:9;8900:18;8892:26;;8928:67;8992:1;8981:9;8977:17;8968:6;8928:67;:::i;:::-;8788:214;;;;:::o;9008:118::-;9095:24;9113:5;9095:24;:::i;:::-;9090:3;9083:37;9008:118;;:::o;9132:222::-;9225:4;9263:2;9252:9;9248:18;9240:26;;9276:71;9344:1;9333:9;9329:17;9320:6;9276:71;:::i;:::-;9132:222;;;;:::o;9360:329::-;9419:6;9468:2;9456:9;9447:7;9443:23;9439:32;9436:119;;;9474:79;;:::i;:::-;9436:119;9594:1;9619:53;9664:7;9655:6;9644:9;9640:22;9619:53;:::i;:::-;9609:63;;9565:117;9360:329;;;;:::o;9695:116::-;9765:21;9780:5;9765:21;:::i;:::-;9758:5;9755:32;9745:60;;9801:1;9798;9791:12;9745:60;9695:116;:::o;9817:133::-;9860:5;9898:6;9885:20;9876:29;;9914:30;9938:5;9914:30;:::i;:::-;9817:133;;;;:::o;9956:468::-;10021:6;10029;10078:2;10066:9;10057:7;10053:23;10049:32;10046:119;;;10084:79;;:::i;:::-;10046:119;10204:1;10229:53;10274:7;10265:6;10254:9;10250:22;10229:53;:::i;:::-;10219:63;;10175:117;10331:2;10357:50;10399:7;10390:6;10379:9;10375:22;10357:50;:::i;:::-;10347:60;;10302:115;9956:468;;;;;:::o;10430:619::-;10507:6;10515;10523;10572:2;10560:9;10551:7;10547:23;10543:32;10540:119;;;10578:79;;:::i;:::-;10540:119;10698:1;10723:53;10768:7;10759:6;10748:9;10744:22;10723:53;:::i;:::-;10713:63;;10669:117;10825:2;10851:53;10896:7;10887:6;10876:9;10872:22;10851:53;:::i;:::-;10841:63;;10796:118;10953:2;10979:53;11024:7;11015:6;11004:9;11000:22;10979:53;:::i;:::-;10969:63;;10924:118;10430:619;;;;;:::o;11055:311::-;11132:4;11222:18;11214:6;11211:30;11208:56;;;11244:18;;:::i;:::-;11208:56;11294:4;11286:6;11282:17;11274:25;;11354:4;11348;11344:15;11336:23;;11055:311;;;:::o;11389:710::-;11485:5;11510:81;11526:64;11583:6;11526:64;:::i;:::-;11510:81;:::i;:::-;11501:90;;11611:5;11640:6;11633:5;11626:21;11674:4;11667:5;11663:16;11656:23;;11727:4;11719:6;11715:17;11707:6;11703:30;11756:3;11748:6;11745:15;11742:122;;;11775:79;;:::i;:::-;11742:122;11890:6;11873:220;11907:6;11902:3;11899:15;11873:220;;;11982:3;12011:37;12044:3;12032:10;12011:37;:::i;:::-;12006:3;11999:50;12078:4;12073:3;12069:14;12062:21;;11949:144;11933:4;11928:3;11924:14;11917:21;;11873:220;;;11877:21;11491:608;;11389:710;;;;;:::o;12122:370::-;12193:5;12242:3;12235:4;12227:6;12223:17;12219:27;12209:122;;12250:79;;:::i;:::-;12209:122;12367:6;12354:20;12392:94;12482:3;12474:6;12467:4;12459:6;12455:17;12392:94;:::i;:::-;12383:103;;12199:293;12122:370;;;;:::o;12498:894::-;12616:6;12624;12673:2;12661:9;12652:7;12648:23;12644:32;12641:119;;;12679:79;;:::i;:::-;12641:119;12827:1;12816:9;12812:17;12799:31;12857:18;12849:6;12846:30;12843:117;;;12879:79;;:::i;:::-;12843:117;12984:78;13054:7;13045:6;13034:9;13030:22;12984:78;:::i;:::-;12974:88;;12770:302;13139:2;13128:9;13124:18;13111:32;13170:18;13162:6;13159:30;13156:117;;;13192:79;;:::i;:::-;13156:117;13297:78;13367:7;13358:6;13347:9;13343:22;13297:78;:::i;:::-;13287:88;;13082:303;12498:894;;;;;:::o;13398:474::-;13466:6;13474;13523:2;13511:9;13502:7;13498:23;13494:32;13491:119;;;13529:79;;:::i;:::-;13491:119;13649:1;13674:53;13719:7;13710:6;13699:9;13695:22;13674:53;:::i;:::-;13664:63;;13620:117;13776:2;13802:53;13847:7;13838:6;13827:9;13823:22;13802:53;:::i;:::-;13792:63;;13747:118;13398:474;;;;;:::o;13878:462::-;13940:6;13948;13997:2;13985:9;13976:7;13972:23;13968:32;13965:119;;;14003:79;;:::i;:::-;13965:119;14123:1;14148:50;14190:7;14181:6;14170:9;14166:22;14148:50;:::i;:::-;14138:60;;14094:114;14247:2;14273:50;14315:7;14306:6;14295:9;14291:22;14273:50;:::i;:::-;14263:60;;14218:115;13878:462;;;;;:::o;14346:180::-;14394:77;14391:1;14384:88;14491:4;14488:1;14481:15;14515:4;14512:1;14505:15;14532:320;14576:6;14613:1;14607:4;14603:12;14593:22;;14660:1;14654:4;14650:12;14681:18;14671:81;;14737:4;14729:6;14725:17;14715:27;;14671:81;14799:2;14791:6;14788:14;14768:18;14765:38;14762:84;;14818:18;;:::i;:::-;14762:84;14583:269;14532:320;;;:::o;14858:182::-;14998:34;14994:1;14986:6;14982:14;14975:58;14858:182;:::o;15046:366::-;15188:3;15209:67;15273:2;15268:3;15209:67;:::i;:::-;15202:74;;15285:93;15374:3;15285:93;:::i;:::-;15403:2;15398:3;15394:12;15387:19;;15046:366;;;:::o;15418:419::-;15584:4;15622:2;15611:9;15607:18;15599:26;;15671:9;15665:4;15661:20;15657:1;15646:9;15642:17;15635:47;15699:131;15825:4;15699:131;:::i;:::-;15691:139;;15418:419;;;:::o;15843:180::-;15891:77;15888:1;15881:88;15988:4;15985:1;15978:15;16012:4;16009:1;16002:15;16029:180;16077:77;16074:1;16067:88;16174:4;16171:1;16164:15;16198:4;16195:1;16188:15;16215:233;16254:3;16277:24;16295:5;16277:24;:::i;:::-;16268:33;;16323:66;16316:5;16313:77;16310:103;;16393:18;;:::i;:::-;16310:103;16440:1;16433:5;16429:13;16422:20;;16215:233;;;:::o;16454:410::-;16494:7;16517:20;16535:1;16517:20;:::i;:::-;16512:25;;16551:20;16569:1;16551:20;:::i;:::-;16546:25;;16606:1;16603;16599:9;16628:30;16646:11;16628:30;:::i;:::-;16617:41;;16807:1;16798:7;16794:15;16791:1;16788:22;16768:1;16761:9;16741:83;16718:139;;16837:18;;:::i;:::-;16718:139;16502:362;16454:410;;;;:::o;16870:180::-;16918:77;16915:1;16908:88;17015:4;17012:1;17005:15;17039:4;17036:1;17029:15;17056:185;17096:1;17113:20;17131:1;17113:20;:::i;:::-;17108:25;;17147:20;17165:1;17147:20;:::i;:::-;17142:25;;17186:1;17176:35;;17191:18;;:::i;:::-;17176:35;17233:1;17230;17226:9;17221:14;;17056:185;;;;:::o;17247:234::-;17387:34;17383:1;17375:6;17371:14;17364:58;17456:17;17451:2;17443:6;17439:15;17432:42;17247:234;:::o;17487:366::-;17629:3;17650:67;17714:2;17709:3;17650:67;:::i;:::-;17643:74;;17726:93;17815:3;17726:93;:::i;:::-;17844:2;17839:3;17835:12;17828:19;;17487:366;;;:::o;17859:419::-;18025:4;18063:2;18052:9;18048:18;18040:26;;18112:9;18106:4;18102:20;18098:1;18087:9;18083:17;18076:47;18140:131;18266:4;18140:131;:::i;:::-;18132:139;;17859:419;;;:::o;18284:244::-;18424:34;18420:1;18412:6;18408:14;18401:58;18493:27;18488:2;18480:6;18476:15;18469:52;18284:244;:::o;18534:366::-;18676:3;18697:67;18761:2;18756:3;18697:67;:::i;:::-;18690:74;;18773:93;18862:3;18773:93;:::i;:::-;18891:2;18886:3;18882:12;18875:19;;18534:366;;;:::o;18906:419::-;19072:4;19110:2;19099:9;19095:18;19087:26;;19159:9;19153:4;19149:20;19145:1;19134:9;19130:17;19123:47;19187:131;19313:4;19187:131;:::i;:::-;19179:139;;18906:419;;;:::o;19331:191::-;19371:3;19390:20;19408:1;19390:20;:::i;:::-;19385:25;;19424:20;19442:1;19424:20;:::i;:::-;19419:25;;19467:1;19464;19460:9;19453:16;;19488:3;19485:1;19482:10;19479:36;;;19495:18;;:::i;:::-;19479:36;19331:191;;;;:::o;19528:151::-;19668:3;19664:1;19656:6;19652:14;19645:27;19528:151;:::o;19685:365::-;19827:3;19848:66;19912:1;19907:3;19848:66;:::i;:::-;19841:73;;19923:93;20012:3;19923:93;:::i;:::-;20041:2;20036:3;20032:12;20025:19;;19685:365;;;:::o;20056:419::-;20222:4;20260:2;20249:9;20245:18;20237:26;;20309:9;20303:4;20299:20;20295:1;20284:9;20280:17;20273:47;20337:131;20463:4;20337:131;:::i;:::-;20329:139;;20056:419;;;:::o;20481:229::-;20621:34;20617:1;20609:6;20605:14;20598:58;20690:12;20685:2;20677:6;20673:15;20666:37;20481:229;:::o;20716:366::-;20858:3;20879:67;20943:2;20938:3;20879:67;:::i;:::-;20872:74;;20955:93;21044:3;20955:93;:::i;:::-;21073:2;21068:3;21064:12;21057:19;;20716:366;;;:::o;21088:419::-;21254:4;21292:2;21281:9;21277:18;21269:26;;21341:9;21335:4;21331:20;21327:1;21316:9;21312:17;21305:47;21369:131;21495:4;21369:131;:::i;:::-;21361:139;;21088:419;;;:::o;21513:180::-;21653:32;21649:1;21641:6;21637:14;21630:56;21513:180;:::o;21699:366::-;21841:3;21862:67;21926:2;21921:3;21862:67;:::i;:::-;21855:74;;21938:93;22027:3;21938:93;:::i;:::-;22056:2;22051:3;22047:12;22040:19;;21699:366;;;:::o;22071:419::-;22237:4;22275:2;22264:9;22260:18;22252:26;;22324:9;22318:4;22314:20;22310:1;22299:9;22295:17;22288:47;22352:131;22478:4;22352:131;:::i;:::-;22344:139;;22071:419;;;:::o;22496:222::-;22636:34;22632:1;22624:6;22620:14;22613:58;22705:5;22700:2;22692:6;22688:15;22681:30;22496:222;:::o;22724:366::-;22866:3;22887:67;22951:2;22946:3;22887:67;:::i;:::-;22880:74;;22963:93;23052:3;22963:93;:::i;:::-;23081:2;23076:3;23072:12;23065:19;;22724:366;;;:::o;23096:419::-;23262:4;23300:2;23289:9;23285:18;23277:26;;23349:9;23343:4;23339:20;23335:1;23324:9;23320:17;23313:47;23377:131;23503:4;23377:131;:::i;:::-;23369:139;;23096:419;;;:::o;23521:240::-;23661:34;23657:1;23649:6;23645:14;23638:58;23730:23;23725:2;23717:6;23713:15;23706:48;23521:240;:::o;23767:366::-;23909:3;23930:67;23994:2;23989:3;23930:67;:::i;:::-;23923:74;;24006:93;24095:3;24006:93;:::i;:::-;24124:2;24119:3;24115:12;24108:19;;23767:366;;;:::o;24139:419::-;24305:4;24343:2;24332:9;24328:18;24320:26;;24392:9;24386:4;24382:20;24378:1;24367:9;24363:17;24356:47;24420:131;24546:4;24420:131;:::i;:::-;24412:139;;24139:419;;;:::o;24564:239::-;24704:34;24700:1;24692:6;24688:14;24681:58;24773:22;24768:2;24760:6;24756:15;24749:47;24564:239;:::o;24809:366::-;24951:3;24972:67;25036:2;25031:3;24972:67;:::i;:::-;24965:74;;25048:93;25137:3;25048:93;:::i;:::-;25166:2;25161:3;25157:12;25150:19;;24809:366;;;:::o;25181:419::-;25347:4;25385:2;25374:9;25370:18;25362:26;;25434:9;25428:4;25424:20;25420:1;25409:9;25405:17;25398:47;25462:131;25588:4;25462:131;:::i;:::-;25454:139;;25181:419;;;:::o;25606:225::-;25746:34;25742:1;25734:6;25730:14;25723:58;25815:8;25810:2;25802:6;25798:15;25791:33;25606:225;:::o;25837:366::-;25979:3;26000:67;26064:2;26059:3;26000:67;:::i;:::-;25993:74;;26076:93;26165:3;26076:93;:::i;:::-;26194:2;26189:3;26185:12;26178:19;;25837:366;;;:::o;26209:419::-;26375:4;26413:2;26402:9;26398:18;26390:26;;26462:9;26456:4;26452:20;26448:1;26437:9;26433:17;26426:47;26490:131;26616:4;26490:131;:::i;:::-;26482:139;;26209:419;;;:::o;26634:177::-;26774:29;26770:1;26762:6;26758:14;26751:53;26634:177;:::o;26817:366::-;26959:3;26980:67;27044:2;27039:3;26980:67;:::i;:::-;26973:74;;27056:93;27145:3;27056:93;:::i;:::-;27174:2;27169:3;27165:12;27158:19;;26817:366;;;:::o;27189:419::-;27355:4;27393:2;27382:9;27378:18;27370:26;;27442:9;27436:4;27432:20;27428:1;27417:9;27413:17;27406:47;27470:131;27596:4;27470:131;:::i;:::-;27462:139;;27189:419;;;:::o;27614:223::-;27754:34;27750:1;27742:6;27738:14;27731:58;27823:6;27818:2;27810:6;27806:15;27799:31;27614:223;:::o;27843:366::-;27985:3;28006:67;28070:2;28065:3;28006:67;:::i;:::-;27999:74;;28082:93;28171:3;28082:93;:::i;:::-;28200:2;28195:3;28191:12;28184:19;;27843:366;;;:::o;28215:419::-;28381:4;28419:2;28408:9;28404:18;28396:26;;28468:9;28462:4;28458:20;28454:1;28443:9;28439:17;28432:47;28496:131;28622:4;28496:131;:::i;:::-;28488:139;;28215:419;;;:::o;28640:221::-;28780:34;28776:1;28768:6;28764:14;28757:58;28849:4;28844:2;28836:6;28832:15;28825:29;28640:221;:::o;28867:366::-;29009:3;29030:67;29094:2;29089:3;29030:67;:::i;:::-;29023:74;;29106:93;29195:3;29106:93;:::i;:::-;29224:2;29219:3;29215:12;29208:19;;28867:366;;;:::o;29239:419::-;29405:4;29443:2;29432:9;29428:18;29420:26;;29492:9;29486:4;29482:20;29478:1;29467:9;29463:17;29456:47;29520:131;29646:4;29520:131;:::i;:::-;29512:139;;29239:419;;;:::o;29664:224::-;29804:34;29800:1;29792:6;29788:14;29781:58;29873:7;29868:2;29860:6;29856:15;29849:32;29664:224;:::o;29894:366::-;30036:3;30057:67;30121:2;30116:3;30057:67;:::i;:::-;30050:74;;30133:93;30222:3;30133:93;:::i;:::-;30251:2;30246:3;30242:12;30235:19;;29894:366;;;:::o;30266:419::-;30432:4;30470:2;30459:9;30455:18;30447:26;;30519:9;30513:4;30509:20;30505:1;30494:9;30490:17;30483:47;30547:131;30673:4;30547:131;:::i;:::-;30539:139;;30266:419;;;:::o;30691:222::-;30831:34;30827:1;30819:6;30815:14;30808:58;30900:5;30895:2;30887:6;30883:15;30876:30;30691:222;:::o;30919:366::-;31061:3;31082:67;31146:2;31141:3;31082:67;:::i;:::-;31075:74;;31158:93;31247:3;31158:93;:::i;:::-;31276:2;31271:3;31267:12;31260:19;;30919:366;;;:::o;31291:419::-;31457:4;31495:2;31484:9;31480:18;31472:26;;31544:9;31538:4;31534:20;31530:1;31519:9;31515:17;31508:47;31572:131;31698:4;31572:131;:::i;:::-;31564:139;;31291:419;;;:::o;31716:236::-;31856:34;31852:1;31844:6;31840:14;31833:58;31925:19;31920:2;31912:6;31908:15;31901:44;31716:236;:::o;31958:366::-;32100:3;32121:67;32185:2;32180:3;32121:67;:::i;:::-;32114:74;;32197:93;32286:3;32197:93;:::i;:::-;32315:2;32310:3;32306:12;32299:19;;31958:366;;;:::o;32330:419::-;32496:4;32534:2;32523:9;32519:18;32511:26;;32583:9;32577:4;32573:20;32569:1;32558:9;32554:17;32547:47;32611:131;32737:4;32611:131;:::i;:::-;32603:139;;32330:419;;;:::o;32755:172::-;32895:24;32891:1;32883:6;32879:14;32872:48;32755:172;:::o;32933:366::-;33075:3;33096:67;33160:2;33155:3;33096:67;:::i;:::-;33089:74;;33172:93;33261:3;33172:93;:::i;:::-;33290:2;33285:3;33281:12;33274:19;;32933:366;;;:::o;33305:419::-;33471:4;33509:2;33498:9;33494:18;33486:26;;33558:9;33552:4;33548:20;33544:1;33533:9;33529:17;33522:47;33586:131;33712:4;33586:131;:::i;:::-;33578:139;;33305:419;;;:::o;33730:297::-;33870:34;33866:1;33858:6;33854:14;33847:58;33939:34;33934:2;33926:6;33922:15;33915:59;34008:11;34003:2;33995:6;33991:15;33984:36;33730:297;:::o;34033:366::-;34175:3;34196:67;34260:2;34255:3;34196:67;:::i;:::-;34189:74;;34272:93;34361:3;34272:93;:::i;:::-;34390:2;34385:3;34381:12;34374:19;;34033:366;;;:::o;34405:419::-;34571:4;34609:2;34598:9;34594:18;34586:26;;34658:9;34652:4;34648:20;34644:1;34633:9;34629:17;34622:47;34686:131;34812:4;34686:131;:::i;:::-;34678:139;;34405:419;;;:::o;34830:240::-;34970:34;34966:1;34958:6;34954:14;34947:58;35039:23;35034:2;35026:6;35022:15;35015:48;34830:240;:::o;35076:366::-;35218:3;35239:67;35303:2;35298:3;35239:67;:::i;:::-;35232:74;;35315:93;35404:3;35315:93;:::i;:::-;35433:2;35428:3;35424:12;35417:19;;35076:366;;;:::o;35448:419::-;35614:4;35652:2;35641:9;35637:18;35629:26;;35701:9;35695:4;35691:20;35687:1;35676:9;35672:17;35665:47;35729:131;35855:4;35729:131;:::i;:::-;35721:139;;35448:419;;;:::o;35873:169::-;36013:21;36009:1;36001:6;35997:14;35990:45;35873:169;:::o;36048:366::-;36190:3;36211:67;36275:2;36270:3;36211:67;:::i;:::-;36204:74;;36287:93;36376:3;36287:93;:::i;:::-;36405:2;36400:3;36396:12;36389:19;;36048:366;;;:::o;36420:419::-;36586:4;36624:2;36613:9;36609:18;36601:26;;36673:9;36667:4;36663:20;36659:1;36648:9;36644:17;36637:47;36701:131;36827:4;36701:131;:::i;:::-;36693:139;;36420:419;;;:::o;36845:241::-;36985:34;36981:1;36973:6;36969:14;36962:58;37054:24;37049:2;37041:6;37037:15;37030:49;36845:241;:::o;37092:366::-;37234:3;37255:67;37319:2;37314:3;37255:67;:::i;:::-;37248:74;;37331:93;37420:3;37331:93;:::i;:::-;37449:2;37444:3;37440:12;37433:19;;37092:366;;;:::o;37464:419::-;37630:4;37668:2;37657:9;37653:18;37645:26;;37717:9;37711:4;37707:20;37703:1;37692:9;37688:17;37681:47;37745:131;37871:4;37745:131;:::i;:::-;37737:139;;37464:419;;;:::o;37889:194::-;37929:4;37949:20;37967:1;37949:20;:::i;:::-;37944:25;;37983:20;38001:1;37983:20;:::i;:::-;37978:25;;38027:1;38024;38020:9;38012:17;;38051:1;38045:4;38042:11;38039:37;;;38056:18;;:::i;:::-;38039:37;37889:194;;;;:::o;38089:147::-;38190:11;38227:3;38212:18;;38089:147;;;;:::o;38242:114::-;;:::o;38362:398::-;38521:3;38542:83;38623:1;38618:3;38542:83;:::i;:::-;38535:90;;38634:93;38723:3;38634:93;:::i;:::-;38752:1;38747:3;38743:11;38736:18;;38362:398;;;:::o;38766:379::-;38950:3;38972:147;39115:3;38972:147;:::i;:::-;38965:154;;39136:3;39129:10;;38766:379;;;:::o;39151:442::-;39300:4;39338:2;39327:9;39323:18;39315:26;;39351:71;39419:1;39408:9;39404:17;39395:6;39351:71;:::i;:::-;39432:72;39500:2;39489:9;39485:18;39476:6;39432:72;:::i;:::-;39514;39582:2;39571:9;39567:18;39558:6;39514:72;:::i;:::-;39151:442;;;;;;:::o;39599:220::-;39739:34;39735:1;39727:6;39723:14;39716:58;39808:3;39803:2;39795:6;39791:15;39784:28;39599:220;:::o;39825:366::-;39967:3;39988:67;40052:2;40047:3;39988:67;:::i;:::-;39981:74;;40064:93;40153:3;40064:93;:::i;:::-;40182:2;40177:3;40173:12;40166:19;;39825:366;;;:::o;40197:419::-;40363:4;40401:2;40390:9;40386:18;40378:26;;40450:9;40444:4;40440:20;40436:1;40425:9;40421:17;40414:47;40478:131;40604:4;40478:131;:::i;:::-;40470:139;;40197:419;;;:::o;40622:143::-;40679:5;40710:6;40704:13;40695:22;;40726:33;40753:5;40726:33;:::i;:::-;40622:143;;;;:::o;40771:351::-;40841:6;40890:2;40878:9;40869:7;40865:23;40861:32;40858:119;;;40896:79;;:::i;:::-;40858:119;41016:1;41041:64;41097:7;41088:6;41077:9;41073:22;41041:64;:::i;:::-;41031:74;;40987:128;40771:351;;;;:::o;41128:85::-;41173:7;41202:5;41191:16;;41128:85;;;:::o;41219:158::-;41277:9;41310:61;41328:42;41337:32;41363:5;41337:32;:::i;:::-;41328:42;:::i;:::-;41310:61;:::i;:::-;41297:74;;41219:158;;;:::o;41383:147::-;41478:45;41517:5;41478:45;:::i;:::-;41473:3;41466:58;41383:147;;:::o;41536:114::-;41603:6;41637:5;41631:12;41621:22;;41536:114;;;:::o;41656:184::-;41755:11;41789:6;41784:3;41777:19;41829:4;41824:3;41820:14;41805:29;;41656:184;;;;:::o;41846:132::-;41913:4;41936:3;41928:11;;41966:4;41961:3;41957:14;41949:22;;41846:132;;;:::o;41984:108::-;42061:24;42079:5;42061:24;:::i;:::-;42056:3;42049:37;41984:108;;:::o;42098:179::-;42167:10;42188:46;42230:3;42222:6;42188:46;:::i;:::-;42266:4;42261:3;42257:14;42243:28;;42098:179;;;;:::o;42283:113::-;42353:4;42385;42380:3;42376:14;42368:22;;42283:113;;;:::o;42432:732::-;42551:3;42580:54;42628:5;42580:54;:::i;:::-;42650:86;42729:6;42724:3;42650:86;:::i;:::-;42643:93;;42760:56;42810:5;42760:56;:::i;:::-;42839:7;42870:1;42855:284;42880:6;42877:1;42874:13;42855:284;;;42956:6;42950:13;42983:63;43042:3;43027:13;42983:63;:::i;:::-;42976:70;;43069:60;43122:6;43069:60;:::i;:::-;43059:70;;42915:224;42902:1;42899;42895:9;42890:14;;42855:284;;;42859:14;43155:3;43148:10;;42556:608;;;42432:732;;;;:::o;43170:831::-;43433:4;43471:3;43460:9;43456:19;43448:27;;43485:71;43553:1;43542:9;43538:17;43529:6;43485:71;:::i;:::-;43566:80;43642:2;43631:9;43627:18;43618:6;43566:80;:::i;:::-;43693:9;43687:4;43683:20;43678:2;43667:9;43663:18;43656:48;43721:108;43824:4;43815:6;43721:108;:::i;:::-;43713:116;;43839:72;43907:2;43896:9;43892:18;43883:6;43839:72;:::i;:::-;43921:73;43989:3;43978:9;43974:19;43965:6;43921:73;:::i;:::-;43170:831;;;;;;;;:::o;44007:807::-;44256:4;44294:3;44283:9;44279:19;44271:27;;44308:71;44376:1;44365:9;44361:17;44352:6;44308:71;:::i;:::-;44389:72;44457:2;44446:9;44442:18;44433:6;44389:72;:::i;:::-;44471:80;44547:2;44536:9;44532:18;44523:6;44471:80;:::i;:::-;44561;44637:2;44626:9;44622:18;44613:6;44561:80;:::i;:::-;44651:73;44719:3;44708:9;44704:19;44695:6;44651:73;:::i;:::-;44734;44802:3;44791:9;44787:19;44778:6;44734:73;:::i;:::-;44007:807;;;;;;;;;:::o;44820:143::-;44877:5;44908:6;44902:13;44893:22;;44924:33;44951:5;44924:33;:::i;:::-;44820:143;;;;:::o;44969:663::-;45057:6;45065;45073;45122:2;45110:9;45101:7;45097:23;45093:32;45090:119;;;45128:79;;:::i;:::-;45090:119;45248:1;45273:64;45329:7;45320:6;45309:9;45305:22;45273:64;:::i;:::-;45263:74;;45219:128;45386:2;45412:64;45468:7;45459:6;45448:9;45444:22;45412:64;:::i;:::-;45402:74;;45357:129;45525:2;45551:64;45607:7;45598:6;45587:9;45583:22;45551:64;:::i;:::-;45541:74;;45496:129;44969:663;;;;;:::o

Swarm Source

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