ETH Price: $3,460.92 (-1.75%)
Gas: 3 Gwei

Token

DAAS.FINANCE (DAAS)
 

Overview

Max Total Supply

1,000,000,000,000 DAAS

Holders

98

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
422,080,762.952988771 DAAS

Value
$0.00
0xC5319479387D15A7A9be2F654aaC95F3C6548529
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:
DaasFinance

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-01
*/

// DAAS FINANCE ($DAAS)
// A Deflationary DeFi-as-a-Service (DaaS) Token, with 60% supply burned to 0x0dEaD

//Initial Supply: 1,000,000,000,000 $DAAS
//60% of $DAAS burned to 0x0dEaD
//10% of each buy goes to existing holders.
//10% of each sell goes into various-chain algorithmic stablecoin investing to add to the treasury and buy back $DAAS tokens.

// Twitter: https://twitter.com/DaasFinance
// Website: https://DAAS.FINANCE/
// Telegram: https://t.me/DaasFinance


pragma solidity ^0.8.0;

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

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @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) {
        return a + b;
    }

    /**
     * @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 a - b;
    }

    /**
     * @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) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting 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 a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol


// OpenZeppelin Contracts v4.4.0 (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
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);
}

// File: @openzeppelin/contracts/utils/Context.sol


// OpenZeppelin Contracts v4.4.0 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

// File: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts v4.4.0 (access/Ownable.sol)

pragma solidity ^0.8.0;


/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual 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 {
        _transferOwnership(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");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// File: @openzeppelin/contracts/utils/Address.sol


// OpenZeppelin Contracts v4.4.0 (utils/Address.sol)

pragma solidity ^0.8.0;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

// File: contracts/DAAS.sol


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

        function feeTo() external view returns (address);
        function feeToSetter() external view returns (address);

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

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

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

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

        function name() external pure returns (string memory);
        function symbol() external pure returns (string memory);
        function decimals() external pure returns (uint8);
        function totalSupply() external view returns (uint);
        function balanceOf(address owner) external view returns (uint);
        function allowance(address owner, address spender) external view returns (uint);

        function approve(address spender, uint value) external returns (bool);
        function transfer(address to, uint value) external returns (bool);
        function transferFrom(address from, address to, uint value) external returns (bool);

        function DOMAIN_SEPARATOR() external view returns (bytes32);
        function PERMIT_TYPEHASH() external pure returns (bytes32);
        function nonces(address owner) external view returns (uint);

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

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

        function MINIMUM_LIQUIDITY() external pure returns (uint);
        function factory() external view returns (address);
        function token0() external view returns (address);
        function token1() external view returns (address);
        function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
        function price0CumulativeLast() external view returns (uint);
        function price1CumulativeLast() external view returns (uint);
        function kLast() external view returns (uint);

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

        function initialize(address, address) external;
    }

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

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

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


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

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

pragma solidity ^0.8.0;
//SPDX-License-Identifier: MIT






    contract DaasFinance is Context, IERC20, Ownable {
        using SafeMath for uint256;
        using Address for address;

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

        mapping (address => bool) private _isExcludedFromFee;
        mapping (address => bool) private bots;

        mapping (address => bool) private _isExcluded;
        address[] private _excluded;

        uint256 private constant MAX = ~uint256(0);
        uint256 private _tTotal = 1000000000000 * 10**9;
        uint256 private _rTotal = (MAX - (MAX % _tTotal));
        uint256 private _tFeeTotal;

        string private _name = 'DAAS.FINANCE';
        string private _symbol = 'DAAS';
        uint8 private _decimals = 9;

        uint256 private _taxFee = 10;
        uint256 private _teamFee = 10;
        uint256 private _previousTaxFee = _taxFee;
        uint256 private _previousTeamFee = _teamFee;

        address payable public _DAASWalletAddress;
        address payable public _marketingWalletAddress;

        IUniswapV2Router02 public immutable uniswapV2Router;
        address public immutable uniswapV2Pair;

        bool inSwap = false;
        bool public swapEnabled = true;

        uint256 private _maxTxAmount = 100000000000000e9;
        // We will set a minimum amount of tokens to be swaped => 5M
        uint256 private _numOfTokensToExchangeForTeam = 5 * 10**3 * 10**9;

        event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
        event SwapEnabledUpdated(bool enabled);

        modifier lockTheSwap {
            inSwap = true;
            _;
            inSwap = false;
        }

        constructor (address payable DAASWalletAddress, address payable marketingWalletAddress) {
            _DAASWalletAddress = DAASWalletAddress;
            _marketingWalletAddress = marketingWalletAddress;
            _rOwned[_msgSender()] = _rTotal;

            IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // UniswapV2 for Ethereum network
            // Create a uniswap pair for this new token
            uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());

            // set the rest of the contract variables
            uniswapV2Router = _uniswapV2Router;

            // Exclude owner and this contract from fee
            _isExcludedFromFee[owner()] = true;
            _isExcludedFromFee[address(this)] = true;

            emit Transfer(address(0), _msgSender(), _tTotal);
        }

        function name() public view returns (string memory) {
            return _name;
        }

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

        function decimals() public view returns (uint8) {
            return _decimals;
        }

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

        function balanceOf(address account) public view override returns (uint256) {
            if (_isExcluded[account]) return _tOwned[account];
            return tokenFromReflection(_rOwned[account]);
        }

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

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

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

        function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
            _transfer(sender, recipient, amount);
            _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
            return true;
        }

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

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

        function isExcluded(address account) public view returns (bool) {
            return _isExcluded[account];
        }

        function setExcludeFromFee(address account, bool excluded) external onlyOwner() {
            _isExcludedFromFee[account] = excluded;
        }

        function totalFees() public view returns (uint256) {
            return _tFeeTotal;
        }

        function deliver(uint256 tAmount) public {
            address sender = _msgSender();
            require(!_isExcluded[sender], "Excluded addresses cannot call this function");
            (uint256 rAmount,,,,,) = _getValues(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rTotal = _rTotal.sub(rAmount);
            _tFeeTotal = _tFeeTotal.add(tAmount);
        }

        function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
            require(tAmount <= _tTotal, "Amount must be less than supply");
            if (!deductTransferFee) {
                (uint256 rAmount,,,,,) = _getValues(tAmount);
                return rAmount;
            } else {
                (,uint256 rTransferAmount,,,,) = _getValues(tAmount);
                return rTransferAmount;
            }
        }

        function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
            require(rAmount <= _rTotal, "Amount must be less than total reflections");
            uint256 currentRate =  _getRate();
            return rAmount.div(currentRate);
        }

        function excludeAccount(address account) external onlyOwner() {
            require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.');
            require(!_isExcluded[account], "Account is already excluded");
            if(_rOwned[account] > 0) {
                _tOwned[account] = tokenFromReflection(_rOwned[account]);
            }
            _isExcluded[account] = true;
            _excluded.push(account);
        }

        function includeAccount(address account) external onlyOwner() {
            require(_isExcluded[account], "Account is already excluded");
            for (uint256 i = 0; i < _excluded.length; i++) {
                if (_excluded[i] == account) {
                    _excluded[i] = _excluded[_excluded.length - 1];
                    _tOwned[account] = 0;
                    _isExcluded[account] = false;
                    _excluded.pop();
                    break;
                }
            }
        }

        function removeAllFee() private {
            if(_taxFee == 0 && _teamFee == 0) return;

            _previousTaxFee = _taxFee;
            _previousTeamFee = _teamFee;

            _taxFee = 0;
            _teamFee = 0;
        }

        function restoreAllFee() private {
            _taxFee = _previousTaxFee;
            _teamFee = _previousTeamFee;
        }

        function isExcludedFromFee(address account) public view returns(bool) {
            return _isExcludedFromFee[account];
        }

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

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

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

    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
        function _transfer(address sender, address recipient, uint256 amount) private {
            require(sender != address(0), "ERC20: transfer from the zero address");
            require(recipient != address(0), "ERC20: transfer to the zero address");
            require(amount > 0, "Transfer amount must be greater than zero");
            require(!bots[sender] && !bots[recipient]);

            if(sender != owner() && recipient != owner())
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");

            // is the token balance of this contract address over the min number of
            // tokens that we need to initiate a swap?
            // also, don't get caught in a circular team event.
            // also, don't swap if sender is uniswap pair.
            uint256 contractTokenBalance = balanceOf(address(this));

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeForTeam;
            if (!inSwap && swapEnabled && overMinTokenBalance && sender != uniswapV2Pair) {
                // We need to swap the current tokens to ETH and send to the team wallet
                swapTokensForEth(contractTokenBalance);

                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToTeam(address(this).balance);
                }
            }

            //indicates if fee should be deducted from transfer
            bool takeFee = true;

            //if any account belongs to _isExcludedFromFee account then remove the fee
            if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){
                takeFee = false;
            }

            //transfer amount, it will take tax and team fee
            _tokenTransfer(sender,recipient,amount,takeFee);
        }

        function swapTokensForEth(uint256 tokenAmount) private lockTheSwap{
            // 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 sendETHToTeam(uint256 amount) private {
            _DAASWalletAddress.transfer(amount.div(2));
            _marketingWalletAddress.transfer(amount.div(2));
        }

        // We are exposing these functions to be able to manual swap and send
        // in case the token is highly valued and 5M becomes too much
        function manualSwap() external onlyOwner() {
            uint256 contractBalance = balanceOf(address(this));
            swapTokensForEth(contractBalance);
        }

        function manualSend() external onlyOwner() {
            uint256 contractETHBalance = address(this).balance;
            sendETHToTeam(contractETHBalance);
        }

        function setSwapEnabled(bool enabled) external onlyOwner(){
            swapEnabled = enabled;
        }

        function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
            if(!takeFee)
                removeAllFee();

            if (_isExcluded[sender] && !_isExcluded[recipient]) {
                _transferFromExcluded(sender, recipient, amount);
            } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
                _transferToExcluded(sender, recipient, amount);
            } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
                _transferStandard(sender, recipient, amount);
            } else if (_isExcluded[sender] && _isExcluded[recipient]) {
                _transferBothExcluded(sender, recipient, amount);
            } else {
                _transferStandard(sender, recipient, amount);
            }

            if(!takeFee)
                restoreAllFee();
        }

        function _transferStandard(address sender, address recipient, uint256 tAmount) private {
            (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
            _takeTeam(tTeam);
            _reflectFee(rFee, tFee);
            emit Transfer(sender, recipient, tTransferAmount);
        }

        function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
            (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
            _takeTeam(tTeam);
            _reflectFee(rFee, tFee);
            emit Transfer(sender, recipient, tTransferAmount);
        }

        function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
            (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
            _tOwned[sender] = _tOwned[sender].sub(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
            _takeTeam(tTeam);
            _reflectFee(rFee, tFee);
            emit Transfer(sender, recipient, tTransferAmount);
        }

        function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
            (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
            _tOwned[sender] = _tOwned[sender].sub(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
            _takeTeam(tTeam);
            _reflectFee(rFee, tFee);
            emit Transfer(sender, recipient, tTransferAmount);
        }

        function _takeTeam(uint256 tTeam) private {
            uint256 currentRate =  _getRate();
            uint256 rTeam = tTeam.mul(currentRate);
            _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
            if(_isExcluded[address(this)])
                _tOwned[address(this)] = _tOwned[address(this)].add(tTeam);
        }

        function _reflectFee(uint256 rFee, uint256 tFee) private {
            _rTotal = _rTotal.sub(rFee);
            _tFeeTotal = _tFeeTotal.add(tFee);
        }

         //to recieve ETH from uniswapV2Router when swaping
        receive() external payable {}

        function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
            (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _taxFee, _teamFee);
            uint256 currentRate =  _getRate();
            (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, currentRate);
            return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
        }

        function _getTValues(uint256 tAmount, uint256 taxFee, uint256 teamFee) private pure returns (uint256, uint256, uint256) {
            uint256 tFee = tAmount.mul(taxFee).div(100);
            uint256 tTeam = tAmount.mul(teamFee).div(100);
            uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
            return (tTransferAmount, tFee, tTeam);
        }

        function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
            uint256 rAmount = tAmount.mul(currentRate);
            uint256 rFee = tFee.mul(currentRate);
            uint256 rTransferAmount = rAmount.sub(rFee);
            return (rAmount, rTransferAmount, rFee);
        }

        function _getRate() private view returns(uint256) {
            (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
            return rSupply.div(tSupply);
        }

        function _getCurrentSupply() private view returns(uint256, uint256) {
            uint256 rSupply = _rTotal;
            uint256 tSupply = _tTotal;
            for (uint256 i = 0; i < _excluded.length; i++) {
                if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
                rSupply = rSupply.sub(_rOwned[_excluded[i]]);
                tSupply = tSupply.sub(_tOwned[_excluded[i]]);
            }
            if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
            return (rSupply, tSupply);
        }

        function _getTaxFee() private view returns(uint256) {
            return _taxFee;
        }

        function _getMaxTxAmount() private view returns(uint256) {
            return _maxTxAmount;
        }

        function _getETHBalance() public view returns(uint256 balance) {
            return address(this).balance;
        }

        function _setTaxFee(uint256 taxFee) external onlyOwner() {
            require(taxFee >= 1 && taxFee <= 25, 'taxFee should be in 1 - 25');
            _taxFee = taxFee;
        }

        function _setTeamFee(uint256 teamFee) external onlyOwner() {
            require(teamFee >= 1 && teamFee <= 25, 'teamFee should be in 1 - 25');
            _teamFee = teamFee;
        }

        function _setDAASWallet(address payable DAASWalletAddress) external onlyOwner() {
            _DAASWalletAddress = DAASWalletAddress;
        }

        function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
            require(maxTxAmount >= 100000000000000e9 , 'maxTxAmount should be greater than 100000000000000e9');
            _maxTxAmount = maxTxAmount;
        }
    }

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"DAASWalletAddress","type":"address"},{"internalType":"address payable","name":"marketingWalletAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabledUpdated","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"},{"inputs":[],"name":"_DAASWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"DAASWalletAddress","type":"address"}],"name":"_setDAASWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"teamFee","type":"uint256"}],"name":"_setTeamFee","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":"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":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","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":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052683635c9adc5dea0000060085560085460001962000023919062000952565b6000196200003291906200088f565b6009556040518060400160405280600c81526020017f444141532e46494e414e43450000000000000000000000000000000000000000815250600b908051906020019062000082929190620006cc565b506040518060400160405280600481526020017f4441415300000000000000000000000000000000000000000000000000000000815250600c9080519060200190620000d0929190620006cc565b506009600d60006101000a81548160ff021916908360ff160217905550600a600e55600a600f55600e54601055600f546011556000601360146101000a81548160ff0219169083151502179055506001601360156101000a81548160ff02191690831515021790555069152d02c7e14af680000060145565048c273950006015553480156200015e57600080fd5b5060405162005df838038062005df88339818101604052810190620001849190620007dc565b620001a462000198620005d760201b60201c565b620005df60201b60201c565b81601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600954600160006200023d620005d760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002db57600080fd5b505afa158015620002f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003169190620007aa565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200037957600080fd5b505afa1580156200038e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b49190620007aa565b6040518363ffffffff1660e01b8152600401620003d392919062000845565b602060405180830381600087803b158015620003ee57600080fd5b505af115801562000403573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004299190620007aa565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050600160046000620004ac620006a360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000565620005d760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600854604051620005c6919062000872565b60405180910390a350505062000a50565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620006da906200091c565b90600052602060002090601f016020900481019282620006fe57600085556200074a565b82601f106200071957805160ff19168380011785556200074a565b828001600101855582156200074a579182015b82811115620007495782518255916020019190600101906200072c565b5b5090506200075991906200075d565b5090565b5b80821115620007785760008160009055506001016200075e565b5090565b6000815190506200078d8162000a1c565b92915050565b600081519050620007a48162000a36565b92915050565b600060208284031215620007c357620007c262000a17565b5b6000620007d3848285016200077c565b91505092915050565b60008060408385031215620007f657620007f562000a17565b5b6000620008068582860162000793565b9250506020620008198582860162000793565b9150509250929050565b6200082e81620008ca565b82525050565b6200083f8162000912565b82525050565b60006040820190506200085c600083018562000823565b6200086b602083018462000823565b9392505050565b600060208201905062000889600083018462000834565b92915050565b60006200089c8262000912565b9150620008a98362000912565b925082821015620008bf57620008be6200098a565b5b828203905092915050565b6000620008d782620008f2565b9050919050565b6000620008eb82620008f2565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200093557607f821691505b602082108114156200094c576200094b620009e8565b5b50919050565b60006200095f8262000912565b91506200096c8362000912565b9250826200097f576200097e620009b9565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b62000a2781620008ca565b811462000a3357600080fd5b50565b62000a4181620008de565b811462000a4d57600080fd5b50565b60805160601c60a05160601c61536062000a98600039600081816110aa01526126a40152600081816109c5015281816129c301528181612ab30152612ada01526153606000f3fe6080604052600436106102295760003560e01c80636ddd171311610123578063b515566a116100ab578063f2fde38b1161006f578063f2fde38b1461084c578063f429389014610875578063f815a8421461088c578063f84354f1146108b7578063ffb87c19146108e057610230565b8063b515566a14610757578063cba0e99614610780578063dd62ed3e146107bd578063e01af92c146107fa578063f2cc0c181461082357610230565b806395d89b41116100f257806395d89b411461065e578063a457c2d714610689578063a9059cbb146106c6578063af9549e014610703578063b05eb7421461072c57610230565b80636ddd1713146105b457806370a08231146105df578063715018a61461061c5780638da5cb5b1461063357610230565b80632d838119116101b15780634549b039116101755780634549b039146104cf57806349bd5a5e1461050c57806351bc3c85146105375780635342acb41461054e5780635880b8731461058b57610230565b80632d838119146103d6578063313ce56714610413578063395093511461043e5780633bd5d1731461047b5780634144d9e4146104a457610230565b806318160ddd116101f857806318160ddd146102f35780631bbae6e01461031e57806323b872dd14610347578063273123b71461038457806328667162146103ad57610230565b806306fdde0314610235578063095ea7b31461026057806313114a9d1461029d5780631694505e146102c857610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a610909565b6040516102579190614715565b60405180910390f35b34801561026c57600080fd5b506102876004803603810190610282919061422f565b61099b565b60405161029491906146df565b60405180910390f35b3480156102a957600080fd5b506102b26109b9565b6040516102bf9190614937565b60405180910390f35b3480156102d457600080fd5b506102dd6109c3565b6040516102ea91906146fa565b60405180910390f35b3480156102ff57600080fd5b506103086109e7565b6040516103159190614937565b60405180910390f35b34801561032a57600080fd5b50610345600480360381019061034091906142e5565b6109f1565b005b34801561035357600080fd5b5061036e6004803603810190610369919061419c565b610ac4565b60405161037b91906146df565b60405180910390f35b34801561039057600080fd5b506103ab60048036038101906103a691906140d5565b610b9d565b005b3480156103b957600080fd5b506103d460048036038101906103cf91906142e5565b610c74565b005b3480156103e257600080fd5b506103fd60048036038101906103f891906142e5565b610d4b565b60405161040a9190614937565b60405180910390f35b34801561041f57600080fd5b50610428610db9565b60405161043591906149ac565b60405180910390f35b34801561044a57600080fd5b506104656004803603810190610460919061422f565b610dd0565b60405161047291906146df565b60405180910390f35b34801561048757600080fd5b506104a2600480360381019061049d91906142e5565b610e83565b005b3480156104b057600080fd5b506104b9610ffe565b6040516104c691906146c4565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f19190614312565b611024565b6040516105039190614937565b60405180910390f35b34801561051857600080fd5b506105216110a8565b60405161052e91906146a9565b60405180910390f35b34801561054357600080fd5b5061054c6110cc565b005b34801561055a57600080fd5b50610575600480360381019061057091906140d5565b611161565b60405161058291906146df565b60405180910390f35b34801561059757600080fd5b506105b260048036038101906105ad91906142e5565b6111b7565b005b3480156105c057600080fd5b506105c961128e565b6040516105d691906146df565b60405180910390f35b3480156105eb57600080fd5b50610606600480360381019061060191906140d5565b6112a1565b6040516106139190614937565b60405180910390f35b34801561062857600080fd5b5061063161138c565b005b34801561063f57600080fd5b50610648611414565b60405161065591906146a9565b60405180910390f35b34801561066a57600080fd5b5061067361143d565b6040516106809190614715565b60405180910390f35b34801561069557600080fd5b506106b060048036038101906106ab919061422f565b6114cf565b6040516106bd91906146df565b60405180910390f35b3480156106d257600080fd5b506106ed60048036038101906106e8919061422f565b61159c565b6040516106fa91906146df565b60405180910390f35b34801561070f57600080fd5b5061072a600480360381019061072591906141ef565b6115ba565b005b34801561073857600080fd5b50610741611691565b60405161074e91906146c4565b60405180910390f35b34801561076357600080fd5b5061077e6004803603810190610779919061426f565b6116b7565b005b34801561078c57600080fd5b506107a760048036038101906107a291906140d5565b6117c8565b6040516107b491906146df565b60405180910390f35b3480156107c957600080fd5b506107e460048036038101906107df919061415c565b61181e565b6040516107f19190614937565b60405180910390f35b34801561080657600080fd5b50610821600480360381019061081c91906142b8565b6118a5565b005b34801561082f57600080fd5b5061084a600480360381019061084591906140d5565b61193e565b005b34801561085857600080fd5b50610873600480360381019061086e91906140d5565b611c5c565b005b34801561088157600080fd5b5061088a611d54565b005b34801561089857600080fd5b506108a1611de1565b6040516108ae9190614937565b60405180910390f35b3480156108c357600080fd5b506108de60048036038101906108d991906140d5565b611de9565b005b3480156108ec57600080fd5b506109076004803603810190610902919061412f565b61211f565b005b6060600b805461091890614c64565b80601f016020809104026020016040519081016040528092919081815260200182805461094490614c64565b80156109915780601f1061096657610100808354040283529160200191610991565b820191906000526020600020905b81548152906001019060200180831161097457829003601f168201915b5050505050905090565b60006109af6109a86121df565b84846121e7565b6001905092915050565b6000600a54905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600854905090565b6109f96121df565b73ffffffffffffffffffffffffffffffffffffffff16610a17611414565b73ffffffffffffffffffffffffffffffffffffffff1614610a6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6490614857565b60405180910390fd5b69152d02c7e14af6800000811015610aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab1906147f7565b60405180910390fd5b8060148190555050565b6000610ad18484846123b2565b610b9284610add6121df565b610b8d856040518060600160405280602881526020016152de60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b436121df565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e09092919063ffffffff16565b6121e7565b600190509392505050565b610ba56121df565b73ffffffffffffffffffffffffffffffffffffffff16610bc3611414565b73ffffffffffffffffffffffffffffffffffffffff1614610c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1090614857565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610c7c6121df565b73ffffffffffffffffffffffffffffffffffffffff16610c9a611414565b73ffffffffffffffffffffffffffffffffffffffff1614610cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce790614857565b60405180910390fd5b60018110158015610d02575060198111155b610d41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d38906147b7565b60405180910390fd5b80600f8190555050565b6000600954821115610d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8990614757565b60405180910390fd5b6000610d9c612835565b9050610db1818461286090919063ffffffff16565b915050919050565b6000600d60009054906101000a900460ff16905090565b6000610e79610ddd6121df565b84610e748560036000610dee6121df565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287690919063ffffffff16565b6121e7565b6001905092915050565b6000610e8d6121df565b9050600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1390614917565b60405180910390fd5b6000610f278361288c565b50505050509050610f8081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f390919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fd8816009546128f390919063ffffffff16565b600981905550610ff383600a5461287690919063ffffffff16565b600a81905550505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060085483111561106b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106290614817565b60405180910390fd5b8161108b57600061107b8461288c565b50505050509050809150506110a2565b60006110968461288c565b50505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6110d46121df565b73ffffffffffffffffffffffffffffffffffffffff166110f2611414565b73ffffffffffffffffffffffffffffffffffffffff1614611148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113f90614857565b60405180910390fd5b6000611153306112a1565b905061115e81612909565b50565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6111bf6121df565b73ffffffffffffffffffffffffffffffffffffffff166111dd611414565b73ffffffffffffffffffffffffffffffffffffffff1614611233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122a90614857565b60405180910390fd5b60018110158015611245575060198111155b611284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127b906148d7565b60405180910390fd5b80600e8190555050565b601360159054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561133c57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611387565b611384600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d4b565b90505b919050565b6113946121df565b73ffffffffffffffffffffffffffffffffffffffff166113b2611414565b73ffffffffffffffffffffffffffffffffffffffff1614611408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ff90614857565b60405180910390fd5b6114126000612b8b565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c805461144c90614c64565b80601f016020809104026020016040519081016040528092919081815260200182805461147890614c64565b80156114c55780601f1061149a576101008083540402835291602001916114c5565b820191906000526020600020905b8154815290600101906020018083116114a857829003601f168201915b5050505050905090565b60006115926114dc6121df565b8461158d8560405180606001604052806025815260200161530660259139600360006115066121df565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e09092919063ffffffff16565b6121e7565b6001905092915050565b60006115b06115a96121df565b84846123b2565b6001905092915050565b6115c26121df565b73ffffffffffffffffffffffffffffffffffffffff166115e0611414565b73ffffffffffffffffffffffffffffffffffffffff1614611636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162d90614857565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116bf6121df565b73ffffffffffffffffffffffffffffffffffffffff166116dd611414565b73ffffffffffffffffffffffffffffffffffffffff1614611733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172a90614857565b60405180910390fd5b60005b81518110156117c45760016005600084848151811061175857611757614dcc565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806117bc90614cc7565b915050611736565b5050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6118ad6121df565b73ffffffffffffffffffffffffffffffffffffffff166118cb611414565b73ffffffffffffffffffffffffffffffffffffffff1614611921576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191890614857565b60405180910390fd5b80601360156101000a81548160ff02191690831515021790555050565b6119466121df565b73ffffffffffffffffffffffffffffffffffffffff16611964611414565b73ffffffffffffffffffffffffffffffffffffffff16146119ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b190614857565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a34906148f7565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac1906147d7565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611b9e57611b5a600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d4b565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611c646121df565b73ffffffffffffffffffffffffffffffffffffffff16611c82611414565b73ffffffffffffffffffffffffffffffffffffffff1614611cd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccf90614857565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3f90614777565b60405180910390fd5b611d5181612b8b565b50565b611d5c6121df565b73ffffffffffffffffffffffffffffffffffffffff16611d7a611414565b73ffffffffffffffffffffffffffffffffffffffff1614611dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc790614857565b60405180910390fd5b6000479050611dde81612c4f565b50565b600047905090565b611df16121df565b73ffffffffffffffffffffffffffffffffffffffff16611e0f611414565b73ffffffffffffffffffffffffffffffffffffffff1614611e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5c90614857565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee8906147d7565b60405180910390fd5b60005b60078054905081101561211b578173ffffffffffffffffffffffffffffffffffffffff1660078281548110611f2c57611f2b614dcc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156121085760076001600780549050611f879190614b4e565b81548110611f9857611f97614dcc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660078281548110611fd757611fd6614dcc565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060078054806120ce576120cd614d9d565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561211b565b808061211390614cc7565b915050611ef4565b5050565b6121276121df565b73ffffffffffffffffffffffffffffffffffffffff16612145611414565b73ffffffffffffffffffffffffffffffffffffffff161461219b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219290614857565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224e906148b7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122be90614797565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123a59190614937565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612422576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241990614897565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612492576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248990614737565b60405180910390fd5b600081116124d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cc90614877565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125795750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61258257600080fd5b61258a611414565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156125f857506125c8611414565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561264357601454811115612642576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263990614837565b60405180910390fd5b5b600061264e306112a1565b9050601454811061265f5760145490505b60006015548210159050601360149054906101000a900460ff161580156126925750601360159054906101000a900460ff165b801561269b5750805b80156126f357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561271b5761270182612909565b600047905060008111156127195761271847612c4f565b5b505b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127c25750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156127cc57600090505b6127d886868684612d4a565b505050505050565b6000838311158290612828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281f9190614715565b60405180910390fd5b5082840390509392505050565b600080600061284261305b565b91509150612859818361286090919063ffffffff16565b9250505090565b6000818361286e9190614ac3565b905092915050565b600081836128849190614a6d565b905092915050565b60008060008060008060008060006128a98a600e54600f5461330e565b92509250925060006128b9612835565b905060008060006128cb8e87866133a4565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600081836129019190614b4e565b905092915050565b6001601360146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561294157612940614dfb565b5b60405190808252806020026020018201604052801561296f5781602001602082028036833780820191505090505b509050308160008151811061298757612986614dcc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612a2757600080fd5b505afa158015612a3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a5f9190614102565b81600181518110612a7357612a72614dcc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ad8307f0000000000000000000000000000000000000000000000000000000000000000846121e7565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612b3a959493929190614952565b600060405180830381600087803b158015612b5457600080fd5b505af1158015612b68573d6000803e3d6000fd5b50505050506000601360146101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612c9f60028461286090919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612cca573d6000803e3d6000fd5b50601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612d1b60028461286090919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612d46573d6000803e3d6000fd5b5050565b80612d5857612d57613402565b5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612dfb5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e1057612e0b848484613445565b613047565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612eb35750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612ec857612ec38484846136a5565b613046565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612f6c5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f8157612f7c848484613905565b613045565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130235750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561303857613033848484613ad0565b613044565b613043848484613905565b5b5b5b5b8061305557613054613dc5565b5b50505050565b600080600060095490506000600854905060005b6007805490508110156132d15782600160006007848154811061309557613094614dcc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180613183575081600260006007848154811061311b5761311a614dcc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561319a576009546008549450945050505061330a565b61322a60016000600784815481106131b5576131b4614dcc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846128f390919063ffffffff16565b92506132bc600260006007848154811061324757613246614dcc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836128f390919063ffffffff16565b915080806132c990614cc7565b91505061306f565b506132e960085460095461286090919063ffffffff16565b8210156133015760095460085493509350505061330a565b81819350935050505b9091565b60008060008061333a606461332c888a613dd990919063ffffffff16565b61286090919063ffffffff16565b905060006133646064613356888b613dd990919063ffffffff16565b61286090919063ffffffff16565b9050600061338d8261337f858c6128f390919063ffffffff16565b6128f390919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806133bd8588613dd990919063ffffffff16565b905060006133d48688613dd990919063ffffffff16565b905060006133eb82846128f390919063ffffffff16565b905082818395509550955050505093509350939050565b6000600e5414801561341657506000600f54145b1561342057613443565b600e54601081905550600f546011819055506000600e819055506000600f819055505b565b6000806000806000806134578761288c565b9550955095509550955095506134b587600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f390919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061354a86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f390919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506135df85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287690919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061362b81613def565b6136358483613f94565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516136929190614937565b60405180910390a3505050505050505050565b6000806000806000806136b78761288c565b95509550955095509550955061371586600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f390919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137aa83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061383f85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287690919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061388b81613def565b6138958483613f94565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516138f29190614937565b60405180910390a3505050505050505050565b6000806000806000806139178761288c565b95509550955095509550955061397586600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f390919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a0a85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287690919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a5681613def565b613a608483613f94565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613abd9190614937565b60405180910390a3505050505050505050565b600080600080600080613ae28761288c565b955095509550955095509550613b4087600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f390919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bd586600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f390919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c6a83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613cff85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287690919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d4b81613def565b613d558483613f94565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613db29190614937565b60405180910390a3505050505050505050565b601054600e81905550601154600f81905550565b60008183613de79190614af4565b905092915050565b6000613df9612835565b90506000613e108284613dd990919063ffffffff16565b9050613e6481600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287690919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613f8f57613f4b83600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b613fa9826009546128f390919063ffffffff16565b600981905550613fc481600a5461287690919063ffffffff16565b600a819055505050565b6000613fe1613fdc846149ec565b6149c7565b9050808382526020820190508285602086028201111561400457614003614e2f565b5b60005b85811015614034578161401a888261403e565b845260208401935060208301925050600181019050614007565b5050509392505050565b60008135905061404d81615281565b92915050565b60008151905061406281615281565b92915050565b60008135905061407781615298565b92915050565b600082601f83011261409257614091614e2a565b5b81356140a2848260208601613fce565b91505092915050565b6000813590506140ba816152af565b92915050565b6000813590506140cf816152c6565b92915050565b6000602082840312156140eb576140ea614e39565b5b60006140f98482850161403e565b91505092915050565b60006020828403121561411857614117614e39565b5b600061412684828501614053565b91505092915050565b60006020828403121561414557614144614e39565b5b600061415384828501614068565b91505092915050565b6000806040838503121561417357614172614e39565b5b60006141818582860161403e565b92505060206141928582860161403e565b9150509250929050565b6000806000606084860312156141b5576141b4614e39565b5b60006141c38682870161403e565b93505060206141d48682870161403e565b92505060406141e5868287016140c0565b9150509250925092565b6000806040838503121561420657614205614e39565b5b60006142148582860161403e565b9250506020614225858286016140ab565b9150509250929050565b6000806040838503121561424657614245614e39565b5b60006142548582860161403e565b9250506020614265858286016140c0565b9150509250929050565b60006020828403121561428557614284614e39565b5b600082013567ffffffffffffffff8111156142a3576142a2614e34565b5b6142af8482850161407d565b91505092915050565b6000602082840312156142ce576142cd614e39565b5b60006142dc848285016140ab565b91505092915050565b6000602082840312156142fb576142fa614e39565b5b6000614309848285016140c0565b91505092915050565b6000806040838503121561432957614328614e39565b5b6000614337858286016140c0565b9250506020614348858286016140ab565b9150509250929050565b600061435e8383614379565b60208301905092915050565b61437381614b94565b82525050565b61438281614b82565b82525050565b61439181614b82565b82525050565b60006143a282614a28565b6143ac8185614a4b565b93506143b783614a18565b8060005b838110156143e85781516143cf8882614352565b97506143da83614a3e565b9250506001810190506143bb565b5085935050505092915050565b6143fe81614ba6565b82525050565b61440d81614be9565b82525050565b61441c81614bfb565b82525050565b600061442d82614a33565b6144378185614a5c565b9350614447818560208601614c31565b61445081614e3e565b840191505092915050565b6000614468602383614a5c565b915061447382614e4f565b604082019050919050565b600061448b602a83614a5c565b915061449682614e9e565b604082019050919050565b60006144ae602683614a5c565b91506144b982614eed565b604082019050919050565b60006144d1602283614a5c565b91506144dc82614f3c565b604082019050919050565b60006144f4601b83614a5c565b91506144ff82614f8b565b602082019050919050565b6000614517601b83614a5c565b915061452282614fb4565b602082019050919050565b600061453a603483614a5c565b915061454582614fdd565b604082019050919050565b600061455d601f83614a5c565b91506145688261502c565b602082019050919050565b6000614580602883614a5c565b915061458b82615055565b604082019050919050565b60006145a3602083614a5c565b91506145ae826150a4565b602082019050919050565b60006145c6602983614a5c565b91506145d1826150cd565b604082019050919050565b60006145e9602583614a5c565b91506145f48261511c565b604082019050919050565b600061460c602483614a5c565b91506146178261516b565b604082019050919050565b600061462f601a83614a5c565b915061463a826151ba565b602082019050919050565b6000614652602283614a5c565b915061465d826151e3565b604082019050919050565b6000614675602c83614a5c565b915061468082615232565b604082019050919050565b61469481614bd2565b82525050565b6146a381614bdc565b82525050565b60006020820190506146be6000830184614388565b92915050565b60006020820190506146d9600083018461436a565b92915050565b60006020820190506146f460008301846143f5565b92915050565b600060208201905061470f6000830184614404565b92915050565b6000602082019050818103600083015261472f8184614422565b905092915050565b600060208201905081810360008301526147508161445b565b9050919050565b600060208201905081810360008301526147708161447e565b9050919050565b60006020820190508181036000830152614790816144a1565b9050919050565b600060208201905081810360008301526147b0816144c4565b9050919050565b600060208201905081810360008301526147d0816144e7565b9050919050565b600060208201905081810360008301526147f08161450a565b9050919050565b600060208201905081810360008301526148108161452d565b9050919050565b6000602082019050818103600083015261483081614550565b9050919050565b6000602082019050818103600083015261485081614573565b9050919050565b6000602082019050818103600083015261487081614596565b9050919050565b60006020820190508181036000830152614890816145b9565b9050919050565b600060208201905081810360008301526148b0816145dc565b9050919050565b600060208201905081810360008301526148d0816145ff565b9050919050565b600060208201905081810360008301526148f081614622565b9050919050565b6000602082019050818103600083015261491081614645565b9050919050565b6000602082019050818103600083015261493081614668565b9050919050565b600060208201905061494c600083018461468b565b92915050565b600060a082019050614967600083018861468b565b6149746020830187614413565b81810360408301526149868186614397565b90506149956060830185614388565b6149a2608083018461468b565b9695505050505050565b60006020820190506149c1600083018461469a565b92915050565b60006149d16149e2565b90506149dd8282614c96565b919050565b6000604051905090565b600067ffffffffffffffff821115614a0757614a06614dfb565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614a7882614bd2565b9150614a8383614bd2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614ab857614ab7614d10565b5b828201905092915050565b6000614ace82614bd2565b9150614ad983614bd2565b925082614ae957614ae8614d3f565b5b828204905092915050565b6000614aff82614bd2565b9150614b0a83614bd2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614b4357614b42614d10565b5b828202905092915050565b6000614b5982614bd2565b9150614b6483614bd2565b925082821015614b7757614b76614d10565b5b828203905092915050565b6000614b8d82614bb2565b9050919050565b6000614b9f82614bb2565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614bf482614c0d565b9050919050565b6000614c0682614bd2565b9050919050565b6000614c1882614c1f565b9050919050565b6000614c2a82614bb2565b9050919050565b60005b83811015614c4f578082015181840152602081019050614c34565b83811115614c5e576000848401525b50505050565b60006002820490506001821680614c7c57607f821691505b60208210811415614c9057614c8f614d6e565b5b50919050565b614c9f82614e3e565b810181811067ffffffffffffffff82111715614cbe57614cbd614dfb565b5b80604052505050565b6000614cd282614bd2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614d0557614d04614d10565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f7465616d4665652073686f756c6420626520696e2031202d2032350000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f6d61785478416d6f756e742073686f756c64206265206772656174657220746860008201527f616e203130303030303030303030303030306539000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f7461784665652073686f756c6420626520696e2031202d203235000000000000600082015250565b7f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b61528a81614b82565b811461529557600080fd5b50565b6152a181614b94565b81146152ac57600080fd5b50565b6152b881614ba6565b81146152c357600080fd5b50565b6152cf81614bd2565b81146152da57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122046f67f451b7920b8dcba94c341fd56fc1046ec76ad1d2815d872dbbcc884dd0664736f6c634300080700330000000000000000000000005c47d365dd7c0d191c1676b1047fe5c2ad8b7b640000000000000000000000008851ebdb974fac85e5e5ab77d8c2fa9a85cd5f9d

Deployed Bytecode

0x6080604052600436106102295760003560e01c80636ddd171311610123578063b515566a116100ab578063f2fde38b1161006f578063f2fde38b1461084c578063f429389014610875578063f815a8421461088c578063f84354f1146108b7578063ffb87c19146108e057610230565b8063b515566a14610757578063cba0e99614610780578063dd62ed3e146107bd578063e01af92c146107fa578063f2cc0c181461082357610230565b806395d89b41116100f257806395d89b411461065e578063a457c2d714610689578063a9059cbb146106c6578063af9549e014610703578063b05eb7421461072c57610230565b80636ddd1713146105b457806370a08231146105df578063715018a61461061c5780638da5cb5b1461063357610230565b80632d838119116101b15780634549b039116101755780634549b039146104cf57806349bd5a5e1461050c57806351bc3c85146105375780635342acb41461054e5780635880b8731461058b57610230565b80632d838119146103d6578063313ce56714610413578063395093511461043e5780633bd5d1731461047b5780634144d9e4146104a457610230565b806318160ddd116101f857806318160ddd146102f35780631bbae6e01461031e57806323b872dd14610347578063273123b71461038457806328667162146103ad57610230565b806306fdde0314610235578063095ea7b31461026057806313114a9d1461029d5780631694505e146102c857610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a610909565b6040516102579190614715565b60405180910390f35b34801561026c57600080fd5b506102876004803603810190610282919061422f565b61099b565b60405161029491906146df565b60405180910390f35b3480156102a957600080fd5b506102b26109b9565b6040516102bf9190614937565b60405180910390f35b3480156102d457600080fd5b506102dd6109c3565b6040516102ea91906146fa565b60405180910390f35b3480156102ff57600080fd5b506103086109e7565b6040516103159190614937565b60405180910390f35b34801561032a57600080fd5b50610345600480360381019061034091906142e5565b6109f1565b005b34801561035357600080fd5b5061036e6004803603810190610369919061419c565b610ac4565b60405161037b91906146df565b60405180910390f35b34801561039057600080fd5b506103ab60048036038101906103a691906140d5565b610b9d565b005b3480156103b957600080fd5b506103d460048036038101906103cf91906142e5565b610c74565b005b3480156103e257600080fd5b506103fd60048036038101906103f891906142e5565b610d4b565b60405161040a9190614937565b60405180910390f35b34801561041f57600080fd5b50610428610db9565b60405161043591906149ac565b60405180910390f35b34801561044a57600080fd5b506104656004803603810190610460919061422f565b610dd0565b60405161047291906146df565b60405180910390f35b34801561048757600080fd5b506104a2600480360381019061049d91906142e5565b610e83565b005b3480156104b057600080fd5b506104b9610ffe565b6040516104c691906146c4565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f19190614312565b611024565b6040516105039190614937565b60405180910390f35b34801561051857600080fd5b506105216110a8565b60405161052e91906146a9565b60405180910390f35b34801561054357600080fd5b5061054c6110cc565b005b34801561055a57600080fd5b50610575600480360381019061057091906140d5565b611161565b60405161058291906146df565b60405180910390f35b34801561059757600080fd5b506105b260048036038101906105ad91906142e5565b6111b7565b005b3480156105c057600080fd5b506105c961128e565b6040516105d691906146df565b60405180910390f35b3480156105eb57600080fd5b50610606600480360381019061060191906140d5565b6112a1565b6040516106139190614937565b60405180910390f35b34801561062857600080fd5b5061063161138c565b005b34801561063f57600080fd5b50610648611414565b60405161065591906146a9565b60405180910390f35b34801561066a57600080fd5b5061067361143d565b6040516106809190614715565b60405180910390f35b34801561069557600080fd5b506106b060048036038101906106ab919061422f565b6114cf565b6040516106bd91906146df565b60405180910390f35b3480156106d257600080fd5b506106ed60048036038101906106e8919061422f565b61159c565b6040516106fa91906146df565b60405180910390f35b34801561070f57600080fd5b5061072a600480360381019061072591906141ef565b6115ba565b005b34801561073857600080fd5b50610741611691565b60405161074e91906146c4565b60405180910390f35b34801561076357600080fd5b5061077e6004803603810190610779919061426f565b6116b7565b005b34801561078c57600080fd5b506107a760048036038101906107a291906140d5565b6117c8565b6040516107b491906146df565b60405180910390f35b3480156107c957600080fd5b506107e460048036038101906107df919061415c565b61181e565b6040516107f19190614937565b60405180910390f35b34801561080657600080fd5b50610821600480360381019061081c91906142b8565b6118a5565b005b34801561082f57600080fd5b5061084a600480360381019061084591906140d5565b61193e565b005b34801561085857600080fd5b50610873600480360381019061086e91906140d5565b611c5c565b005b34801561088157600080fd5b5061088a611d54565b005b34801561089857600080fd5b506108a1611de1565b6040516108ae9190614937565b60405180910390f35b3480156108c357600080fd5b506108de60048036038101906108d991906140d5565b611de9565b005b3480156108ec57600080fd5b506109076004803603810190610902919061412f565b61211f565b005b6060600b805461091890614c64565b80601f016020809104026020016040519081016040528092919081815260200182805461094490614c64565b80156109915780601f1061096657610100808354040283529160200191610991565b820191906000526020600020905b81548152906001019060200180831161097457829003601f168201915b5050505050905090565b60006109af6109a86121df565b84846121e7565b6001905092915050565b6000600a54905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600854905090565b6109f96121df565b73ffffffffffffffffffffffffffffffffffffffff16610a17611414565b73ffffffffffffffffffffffffffffffffffffffff1614610a6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6490614857565b60405180910390fd5b69152d02c7e14af6800000811015610aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab1906147f7565b60405180910390fd5b8060148190555050565b6000610ad18484846123b2565b610b9284610add6121df565b610b8d856040518060600160405280602881526020016152de60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b436121df565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e09092919063ffffffff16565b6121e7565b600190509392505050565b610ba56121df565b73ffffffffffffffffffffffffffffffffffffffff16610bc3611414565b73ffffffffffffffffffffffffffffffffffffffff1614610c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1090614857565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610c7c6121df565b73ffffffffffffffffffffffffffffffffffffffff16610c9a611414565b73ffffffffffffffffffffffffffffffffffffffff1614610cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce790614857565b60405180910390fd5b60018110158015610d02575060198111155b610d41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d38906147b7565b60405180910390fd5b80600f8190555050565b6000600954821115610d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8990614757565b60405180910390fd5b6000610d9c612835565b9050610db1818461286090919063ffffffff16565b915050919050565b6000600d60009054906101000a900460ff16905090565b6000610e79610ddd6121df565b84610e748560036000610dee6121df565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287690919063ffffffff16565b6121e7565b6001905092915050565b6000610e8d6121df565b9050600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1390614917565b60405180910390fd5b6000610f278361288c565b50505050509050610f8081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f390919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fd8816009546128f390919063ffffffff16565b600981905550610ff383600a5461287690919063ffffffff16565b600a81905550505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060085483111561106b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106290614817565b60405180910390fd5b8161108b57600061107b8461288c565b50505050509050809150506110a2565b60006110968461288c565b50505050915050809150505b92915050565b7f00000000000000000000000077334f636e84f8ae09ac23535070516b8d8d774a81565b6110d46121df565b73ffffffffffffffffffffffffffffffffffffffff166110f2611414565b73ffffffffffffffffffffffffffffffffffffffff1614611148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113f90614857565b60405180910390fd5b6000611153306112a1565b905061115e81612909565b50565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6111bf6121df565b73ffffffffffffffffffffffffffffffffffffffff166111dd611414565b73ffffffffffffffffffffffffffffffffffffffff1614611233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122a90614857565b60405180910390fd5b60018110158015611245575060198111155b611284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127b906148d7565b60405180910390fd5b80600e8190555050565b601360159054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561133c57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611387565b611384600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d4b565b90505b919050565b6113946121df565b73ffffffffffffffffffffffffffffffffffffffff166113b2611414565b73ffffffffffffffffffffffffffffffffffffffff1614611408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ff90614857565b60405180910390fd5b6114126000612b8b565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c805461144c90614c64565b80601f016020809104026020016040519081016040528092919081815260200182805461147890614c64565b80156114c55780601f1061149a576101008083540402835291602001916114c5565b820191906000526020600020905b8154815290600101906020018083116114a857829003601f168201915b5050505050905090565b60006115926114dc6121df565b8461158d8560405180606001604052806025815260200161530660259139600360006115066121df565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e09092919063ffffffff16565b6121e7565b6001905092915050565b60006115b06115a96121df565b84846123b2565b6001905092915050565b6115c26121df565b73ffffffffffffffffffffffffffffffffffffffff166115e0611414565b73ffffffffffffffffffffffffffffffffffffffff1614611636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162d90614857565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116bf6121df565b73ffffffffffffffffffffffffffffffffffffffff166116dd611414565b73ffffffffffffffffffffffffffffffffffffffff1614611733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172a90614857565b60405180910390fd5b60005b81518110156117c45760016005600084848151811061175857611757614dcc565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806117bc90614cc7565b915050611736565b5050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6118ad6121df565b73ffffffffffffffffffffffffffffffffffffffff166118cb611414565b73ffffffffffffffffffffffffffffffffffffffff1614611921576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191890614857565b60405180910390fd5b80601360156101000a81548160ff02191690831515021790555050565b6119466121df565b73ffffffffffffffffffffffffffffffffffffffff16611964611414565b73ffffffffffffffffffffffffffffffffffffffff16146119ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b190614857565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a34906148f7565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac1906147d7565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611b9e57611b5a600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d4b565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611c646121df565b73ffffffffffffffffffffffffffffffffffffffff16611c82611414565b73ffffffffffffffffffffffffffffffffffffffff1614611cd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccf90614857565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3f90614777565b60405180910390fd5b611d5181612b8b565b50565b611d5c6121df565b73ffffffffffffffffffffffffffffffffffffffff16611d7a611414565b73ffffffffffffffffffffffffffffffffffffffff1614611dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc790614857565b60405180910390fd5b6000479050611dde81612c4f565b50565b600047905090565b611df16121df565b73ffffffffffffffffffffffffffffffffffffffff16611e0f611414565b73ffffffffffffffffffffffffffffffffffffffff1614611e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5c90614857565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee8906147d7565b60405180910390fd5b60005b60078054905081101561211b578173ffffffffffffffffffffffffffffffffffffffff1660078281548110611f2c57611f2b614dcc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156121085760076001600780549050611f879190614b4e565b81548110611f9857611f97614dcc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660078281548110611fd757611fd6614dcc565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060078054806120ce576120cd614d9d565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561211b565b808061211390614cc7565b915050611ef4565b5050565b6121276121df565b73ffffffffffffffffffffffffffffffffffffffff16612145611414565b73ffffffffffffffffffffffffffffffffffffffff161461219b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219290614857565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224e906148b7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122be90614797565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123a59190614937565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612422576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241990614897565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612492576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248990614737565b60405180910390fd5b600081116124d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cc90614877565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125795750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61258257600080fd5b61258a611414565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156125f857506125c8611414565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561264357601454811115612642576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263990614837565b60405180910390fd5b5b600061264e306112a1565b9050601454811061265f5760145490505b60006015548210159050601360149054906101000a900460ff161580156126925750601360159054906101000a900460ff165b801561269b5750805b80156126f357507f00000000000000000000000077334f636e84f8ae09ac23535070516b8d8d774a73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561271b5761270182612909565b600047905060008111156127195761271847612c4f565b5b505b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127c25750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156127cc57600090505b6127d886868684612d4a565b505050505050565b6000838311158290612828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281f9190614715565b60405180910390fd5b5082840390509392505050565b600080600061284261305b565b91509150612859818361286090919063ffffffff16565b9250505090565b6000818361286e9190614ac3565b905092915050565b600081836128849190614a6d565b905092915050565b60008060008060008060008060006128a98a600e54600f5461330e565b92509250925060006128b9612835565b905060008060006128cb8e87866133a4565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600081836129019190614b4e565b905092915050565b6001601360146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561294157612940614dfb565b5b60405190808252806020026020018201604052801561296f5781602001602082028036833780820191505090505b509050308160008151811061298757612986614dcc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612a2757600080fd5b505afa158015612a3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a5f9190614102565b81600181518110612a7357612a72614dcc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ad8307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846121e7565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612b3a959493929190614952565b600060405180830381600087803b158015612b5457600080fd5b505af1158015612b68573d6000803e3d6000fd5b50505050506000601360146101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612c9f60028461286090919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612cca573d6000803e3d6000fd5b50601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612d1b60028461286090919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612d46573d6000803e3d6000fd5b5050565b80612d5857612d57613402565b5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612dfb5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e1057612e0b848484613445565b613047565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612eb35750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612ec857612ec38484846136a5565b613046565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612f6c5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f8157612f7c848484613905565b613045565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130235750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561303857613033848484613ad0565b613044565b613043848484613905565b5b5b5b5b8061305557613054613dc5565b5b50505050565b600080600060095490506000600854905060005b6007805490508110156132d15782600160006007848154811061309557613094614dcc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180613183575081600260006007848154811061311b5761311a614dcc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561319a576009546008549450945050505061330a565b61322a60016000600784815481106131b5576131b4614dcc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846128f390919063ffffffff16565b92506132bc600260006007848154811061324757613246614dcc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836128f390919063ffffffff16565b915080806132c990614cc7565b91505061306f565b506132e960085460095461286090919063ffffffff16565b8210156133015760095460085493509350505061330a565b81819350935050505b9091565b60008060008061333a606461332c888a613dd990919063ffffffff16565b61286090919063ffffffff16565b905060006133646064613356888b613dd990919063ffffffff16565b61286090919063ffffffff16565b9050600061338d8261337f858c6128f390919063ffffffff16565b6128f390919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806133bd8588613dd990919063ffffffff16565b905060006133d48688613dd990919063ffffffff16565b905060006133eb82846128f390919063ffffffff16565b905082818395509550955050505093509350939050565b6000600e5414801561341657506000600f54145b1561342057613443565b600e54601081905550600f546011819055506000600e819055506000600f819055505b565b6000806000806000806134578761288c565b9550955095509550955095506134b587600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f390919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061354a86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f390919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506135df85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287690919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061362b81613def565b6136358483613f94565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516136929190614937565b60405180910390a3505050505050505050565b6000806000806000806136b78761288c565b95509550955095509550955061371586600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f390919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137aa83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061383f85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287690919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061388b81613def565b6138958483613f94565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516138f29190614937565b60405180910390a3505050505050505050565b6000806000806000806139178761288c565b95509550955095509550955061397586600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f390919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a0a85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287690919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a5681613def565b613a608483613f94565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613abd9190614937565b60405180910390a3505050505050505050565b600080600080600080613ae28761288c565b955095509550955095509550613b4087600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f390919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bd586600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f390919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c6a83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613cff85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287690919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d4b81613def565b613d558483613f94565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613db29190614937565b60405180910390a3505050505050505050565b601054600e81905550601154600f81905550565b60008183613de79190614af4565b905092915050565b6000613df9612835565b90506000613e108284613dd990919063ffffffff16565b9050613e6481600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287690919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613f8f57613f4b83600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b613fa9826009546128f390919063ffffffff16565b600981905550613fc481600a5461287690919063ffffffff16565b600a819055505050565b6000613fe1613fdc846149ec565b6149c7565b9050808382526020820190508285602086028201111561400457614003614e2f565b5b60005b85811015614034578161401a888261403e565b845260208401935060208301925050600181019050614007565b5050509392505050565b60008135905061404d81615281565b92915050565b60008151905061406281615281565b92915050565b60008135905061407781615298565b92915050565b600082601f83011261409257614091614e2a565b5b81356140a2848260208601613fce565b91505092915050565b6000813590506140ba816152af565b92915050565b6000813590506140cf816152c6565b92915050565b6000602082840312156140eb576140ea614e39565b5b60006140f98482850161403e565b91505092915050565b60006020828403121561411857614117614e39565b5b600061412684828501614053565b91505092915050565b60006020828403121561414557614144614e39565b5b600061415384828501614068565b91505092915050565b6000806040838503121561417357614172614e39565b5b60006141818582860161403e565b92505060206141928582860161403e565b9150509250929050565b6000806000606084860312156141b5576141b4614e39565b5b60006141c38682870161403e565b93505060206141d48682870161403e565b92505060406141e5868287016140c0565b9150509250925092565b6000806040838503121561420657614205614e39565b5b60006142148582860161403e565b9250506020614225858286016140ab565b9150509250929050565b6000806040838503121561424657614245614e39565b5b60006142548582860161403e565b9250506020614265858286016140c0565b9150509250929050565b60006020828403121561428557614284614e39565b5b600082013567ffffffffffffffff8111156142a3576142a2614e34565b5b6142af8482850161407d565b91505092915050565b6000602082840312156142ce576142cd614e39565b5b60006142dc848285016140ab565b91505092915050565b6000602082840312156142fb576142fa614e39565b5b6000614309848285016140c0565b91505092915050565b6000806040838503121561432957614328614e39565b5b6000614337858286016140c0565b9250506020614348858286016140ab565b9150509250929050565b600061435e8383614379565b60208301905092915050565b61437381614b94565b82525050565b61438281614b82565b82525050565b61439181614b82565b82525050565b60006143a282614a28565b6143ac8185614a4b565b93506143b783614a18565b8060005b838110156143e85781516143cf8882614352565b97506143da83614a3e565b9250506001810190506143bb565b5085935050505092915050565b6143fe81614ba6565b82525050565b61440d81614be9565b82525050565b61441c81614bfb565b82525050565b600061442d82614a33565b6144378185614a5c565b9350614447818560208601614c31565b61445081614e3e565b840191505092915050565b6000614468602383614a5c565b915061447382614e4f565b604082019050919050565b600061448b602a83614a5c565b915061449682614e9e565b604082019050919050565b60006144ae602683614a5c565b91506144b982614eed565b604082019050919050565b60006144d1602283614a5c565b91506144dc82614f3c565b604082019050919050565b60006144f4601b83614a5c565b91506144ff82614f8b565b602082019050919050565b6000614517601b83614a5c565b915061452282614fb4565b602082019050919050565b600061453a603483614a5c565b915061454582614fdd565b604082019050919050565b600061455d601f83614a5c565b91506145688261502c565b602082019050919050565b6000614580602883614a5c565b915061458b82615055565b604082019050919050565b60006145a3602083614a5c565b91506145ae826150a4565b602082019050919050565b60006145c6602983614a5c565b91506145d1826150cd565b604082019050919050565b60006145e9602583614a5c565b91506145f48261511c565b604082019050919050565b600061460c602483614a5c565b91506146178261516b565b604082019050919050565b600061462f601a83614a5c565b915061463a826151ba565b602082019050919050565b6000614652602283614a5c565b915061465d826151e3565b604082019050919050565b6000614675602c83614a5c565b915061468082615232565b604082019050919050565b61469481614bd2565b82525050565b6146a381614bdc565b82525050565b60006020820190506146be6000830184614388565b92915050565b60006020820190506146d9600083018461436a565b92915050565b60006020820190506146f460008301846143f5565b92915050565b600060208201905061470f6000830184614404565b92915050565b6000602082019050818103600083015261472f8184614422565b905092915050565b600060208201905081810360008301526147508161445b565b9050919050565b600060208201905081810360008301526147708161447e565b9050919050565b60006020820190508181036000830152614790816144a1565b9050919050565b600060208201905081810360008301526147b0816144c4565b9050919050565b600060208201905081810360008301526147d0816144e7565b9050919050565b600060208201905081810360008301526147f08161450a565b9050919050565b600060208201905081810360008301526148108161452d565b9050919050565b6000602082019050818103600083015261483081614550565b9050919050565b6000602082019050818103600083015261485081614573565b9050919050565b6000602082019050818103600083015261487081614596565b9050919050565b60006020820190508181036000830152614890816145b9565b9050919050565b600060208201905081810360008301526148b0816145dc565b9050919050565b600060208201905081810360008301526148d0816145ff565b9050919050565b600060208201905081810360008301526148f081614622565b9050919050565b6000602082019050818103600083015261491081614645565b9050919050565b6000602082019050818103600083015261493081614668565b9050919050565b600060208201905061494c600083018461468b565b92915050565b600060a082019050614967600083018861468b565b6149746020830187614413565b81810360408301526149868186614397565b90506149956060830185614388565b6149a2608083018461468b565b9695505050505050565b60006020820190506149c1600083018461469a565b92915050565b60006149d16149e2565b90506149dd8282614c96565b919050565b6000604051905090565b600067ffffffffffffffff821115614a0757614a06614dfb565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614a7882614bd2565b9150614a8383614bd2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614ab857614ab7614d10565b5b828201905092915050565b6000614ace82614bd2565b9150614ad983614bd2565b925082614ae957614ae8614d3f565b5b828204905092915050565b6000614aff82614bd2565b9150614b0a83614bd2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614b4357614b42614d10565b5b828202905092915050565b6000614b5982614bd2565b9150614b6483614bd2565b925082821015614b7757614b76614d10565b5b828203905092915050565b6000614b8d82614bb2565b9050919050565b6000614b9f82614bb2565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614bf482614c0d565b9050919050565b6000614c0682614bd2565b9050919050565b6000614c1882614c1f565b9050919050565b6000614c2a82614bb2565b9050919050565b60005b83811015614c4f578082015181840152602081019050614c34565b83811115614c5e576000848401525b50505050565b60006002820490506001821680614c7c57607f821691505b60208210811415614c9057614c8f614d6e565b5b50919050565b614c9f82614e3e565b810181811067ffffffffffffffff82111715614cbe57614cbd614dfb565b5b80604052505050565b6000614cd282614bd2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614d0557614d04614d10565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f7465616d4665652073686f756c6420626520696e2031202d2032350000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f6d61785478416d6f756e742073686f756c64206265206772656174657220746860008201527f616e203130303030303030303030303030306539000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f7461784665652073686f756c6420626520696e2031202d203235000000000000600082015250565b7f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b61528a81614b82565b811461529557600080fd5b50565b6152a181614b94565b81146152ac57600080fd5b50565b6152b881614ba6565b81146152c357600080fd5b50565b6152cf81614bd2565b81146152da57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122046f67f451b7920b8dcba94c341fd56fc1046ec76ad1d2815d872dbbcc884dd0664736f6c63430008070033

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

0000000000000000000000005c47d365dd7c0d191c1676b1047fe5c2ad8b7b640000000000000000000000008851ebdb974fac85e5e5ab77d8c2fa9a85cd5f9d

-----Decoded View---------------
Arg [0] : DAASWalletAddress (address): 0x5C47d365Dd7C0d191c1676B1047fE5C2AD8b7b64
Arg [1] : marketingWalletAddress (address): 0x8851eBdb974FaC85e5e5Ab77d8c2fa9A85Cd5f9d

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000005c47d365dd7c0d191c1676b1047fe5c2ad8b7b64
Arg [1] : 0000000000000000000000008851ebdb974fac85e5e5ab77d8c2fa9a85cd5f9d


Deployed Bytecode Sourcemap

30658:19213:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33428:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34432:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35780:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31833:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33741:103;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49631:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34617:329;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39159:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49274:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36788:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33638:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34958:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35887:405;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31774:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36304:472;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31895:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42298:168;;;;;;;;;;;;;:::i;:::-;;38479:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49081:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31976:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33856:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12892:103;;;;;;;;;;;;;:::i;:::-;;12241:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33531:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35200:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34078:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35623:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31722:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38987:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35493:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34269:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42658:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37069:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13150:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42478:168;;;;;;;;;;;;;:::i;:::-;;48951:118;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37556:522;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49474:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33428:91;33465:13;33502:5;33495:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33428:91;:::o;34432:173::-;34507:4;34528:39;34537:12;:10;:12::i;:::-;34551:7;34560:6;34528:8;:39::i;:::-;34589:4;34582:11;;34432:173;;;;:::o;35780:95::-;35822:7;35853:10;;35846:17;;35780:95;:::o;31833:51::-;;;:::o;33741:103::-;33794:7;33825;;33818:14;;33741:103;:::o;49631:233::-;12472:12;:10;:12::i;:::-;12461:23;;:7;:5;:7::i;:::-;:23;;;12453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49736:17:::1;49721:11;:32;;49713:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;49841:11;49826:12;:26;;;;49631:233:::0;:::o;34617:329::-;34715:4;34736:36;34746:6;34754:9;34765:6;34736:9;:36::i;:::-;34787:121;34796:6;34804:12;:10;:12::i;:::-;34818:89;34856:6;34818:89;;;;;;;;;;;;;;;;;:11;:19;34830:6;34818:19;;;;;;;;;;;;;;;:33;34838:12;:10;:12::i;:::-;34818:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;34787:8;:121::i;:::-;34930:4;34923:11;;34617:329;;;;;:::o;39159:88::-;12472:12;:10;:12::i;:::-;12461:23;;:7;:5;:7::i;:::-;:23;;;12453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39234:5:::1;39219:4;:12;39224:6;39219:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;39159:88:::0;:::o;49274:188::-;12472:12;:10;:12::i;:::-;12461:23;;:7;:5;:7::i;:::-;:23;;;12453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49367:1:::1;49356:7;:12;;:29;;;;;49383:2;49372:7;:13;;49356:29;49348:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;49443:7;49432:8;:18;;;;49274:188:::0;:::o;36788:269::-;36854:7;36897;;36886;:18;;36878:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;36966:19;36989:10;:8;:10::i;:::-;36966:33;;37021:24;37033:11;37021:7;:11;;:24;;;;:::i;:::-;37014:31;;;36788:269;;;:::o;33638:91::-;33679:5;33708:9;;;;;;;;;;;33701:16;;33638:91;:::o;34958:230::-;35046:4;35067:83;35076:12;:10;:12::i;:::-;35090:7;35099:50;35138:10;35099:11;:25;35111:12;:10;:12::i;:::-;35099:25;;;;;;;;;;;;;;;:34;35125:7;35099:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;35067:8;:83::i;:::-;35172:4;35165:11;;34958:230;;;;:::o;35887:405::-;35943:14;35960:12;:10;:12::i;:::-;35943:29;;35996:11;:19;36008:6;35996:19;;;;;;;;;;;;;;;;;;;;;;;;;35995:20;35987:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;36080:15;36104:19;36115:7;36104:10;:19::i;:::-;36079:44;;;;;;;36156:28;36176:7;36156;:15;36164:6;36156:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;36138:7;:15;36146:6;36138:15;;;;;;;;;;;;;;;:46;;;;36209:20;36221:7;36209;;:11;;:20;;;;:::i;:::-;36199:7;:30;;;;36257:23;36272:7;36257:10;;:14;;:23;;;;:::i;:::-;36244:10;:36;;;;35928:364;;35887:405;:::o;31774:46::-;;;;;;;;;;;;;:::o;36304:472::-;36394:7;36437;;36426;:18;;36418:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;36500:17;36495:270;;36539:15;36563:19;36574:7;36563:10;:19::i;:::-;36538:44;;;;;;;36608:7;36601:14;;;;;36495:270;36658:23;36689:19;36700:7;36689:10;:19::i;:::-;36656:52;;;;;;;36734:15;36727:22;;;36304:472;;;;;:::o;31895:38::-;;;:::o;42298:168::-;12472:12;:10;:12::i;:::-;12461:23;;:7;:5;:7::i;:::-;:23;;;12453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42356:23:::1;42382:24;42400:4;42382:9;:24::i;:::-;42356:50;;42421:33;42438:15;42421:16;:33::i;:::-;42341:125;42298:168::o:0;38479:131::-;38543:4;38571:18;:27;38590:7;38571:27;;;;;;;;;;;;;;;;;;;;;;;;;38564:34;;38479:131;;;:::o;49081:181::-;12472:12;:10;:12::i;:::-;12461:23;;:7;:5;:7::i;:::-;:23;;;12453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49171:1:::1;49161:6;:11;;:27;;;;;49186:2;49176:6;:12;;49161:27;49153:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;49244:6;49234:7;:16;;;;49081:181:::0;:::o;31976:30::-;;;;;;;;;;;;;:::o;33856:210::-;33922:7;33950:11;:20;33962:7;33950:20;;;;;;;;;;;;;;;;;;;;;;;;;33946:49;;;33979:7;:16;33987:7;33979:16;;;;;;;;;;;;;;;;33972:23;;;;33946:49;34017:37;34037:7;:16;34045:7;34037:16;;;;;;;;;;;;;;;;34017:19;:37::i;:::-;34010:44;;33856:210;;;;:::o;12892:103::-;12472:12;:10;:12::i;:::-;12461:23;;:7;:5;:7::i;:::-;:23;;;12453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12957:30:::1;12984:1;12957:18;:30::i;:::-;12892:103::o:0;12241:87::-;12287:7;12314:6;;;;;;;;;;;12307:13;;12241:87;:::o;33531:95::-;33570:13;33607:7;33600:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33531:95;:::o;35200:281::-;35293:4;35314:129;35323:12;:10;:12::i;:::-;35337:7;35346:96;35385:15;35346:96;;;;;;;;;;;;;;;;;:11;:25;35358:12;:10;:12::i;:::-;35346:25;;;;;;;;;;;;;;;:34;35372:7;35346:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;35314:8;:129::i;:::-;35465:4;35458:11;;35200:281;;;;:::o;34078:179::-;34156:4;34177:42;34187:12;:10;:12::i;:::-;34201:9;34212:6;34177:9;:42::i;:::-;34241:4;34234:11;;34078:179;;;;:::o;35623:145::-;12472:12;:10;:12::i;:::-;12461:23;;:7;:5;:7::i;:::-;:23;;;12453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35748:8:::1;35718:18;:27;35737:7;35718:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;35623:145:::0;;:::o;31722:41::-;;;;;;;;;;;;;:::o;38987:164::-;12472:12;:10;:12::i;:::-;12461:23;;:7;:5;:7::i;:::-;:23;;;12453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39061:6:::1;39056:88;39077:5;:12;39073:1;:16;39056:88;;;39128:4;39111;:14;39116:5;39122:1;39116:8;;;;;;;;:::i;:::-;;;;;;;;39111:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;39091:3;;;;;:::i;:::-;;;;39056:88;;;;38987:164:::0;:::o;35493:118::-;35551:4;35579:11;:20;35591:7;35579:20;;;;;;;;;;;;;;;;;;;;;;;;;35572:27;;35493:118;;;:::o;34269:151::-;34350:7;34381:11;:18;34393:5;34381:18;;;;;;;;;;;;;;;:27;34400:7;34381:27;;;;;;;;;;;;;;;;34374:34;;34269:151;;;;:::o;42658:106::-;12472:12;:10;:12::i;:::-;12461:23;;:7;:5;:7::i;:::-;:23;;;12453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42745:7:::1;42731:11;;:21;;;;;;;;;;;;;;;;;;42658:106:::0;:::o;37069:475::-;12472:12;:10;:12::i;:::-;12461:23;;:7;:5;:7::i;:::-;:23;;;12453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37165:42:::1;37154:53;;:7;:53;;;;37146:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;37270:11;:20;37282:7;37270:20;;;;;;;;;;;;;;;;;;;;;;;;;37269:21;37261:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;37359:1;37340:7;:16;37348:7;37340:16;;;;;;;;;;;;;;;;:20;37337:116;;;37400:37;37420:7;:16;37428:7;37420:16;;;;;;;;;;;;;;;;37400:19;:37::i;:::-;37381:7;:16;37389:7;37381:16;;;;;;;;;;;;;;;:56;;;;37337:116;37490:4;37467:11;:20;37479:7;37467:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;37509:9;37524:7;37509:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37069:475:::0;:::o;13150:201::-;12472:12;:10;:12::i;:::-;12461:23;;:7;:5;:7::i;:::-;:23;;;12453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13259:1:::1;13239:22;;:8;:22;;;;13231:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13315:28;13334:8;13315:18;:28::i;:::-;13150:201:::0;:::o;42478:168::-;12472:12;:10;:12::i;:::-;12461:23;;:7;:5;:7::i;:::-;:23;;;12453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42536:26:::1;42565:21;42536:50;;42601:33;42615:18;42601:13;:33::i;:::-;42521:125;42478:168::o:0;48951:118::-;48997:15;49036:21;49029:28;;48951:118;:::o;37556:522::-;12472:12;:10;:12::i;:::-;12461:23;;:7;:5;:7::i;:::-;:23;;;12453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37641:11:::1;:20;37653:7;37641:20;;;;;;;;;;;;;;;;;;;;;;;;;37633:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;37713:9;37708:359;37732:9;:16;;;;37728:1;:20;37708:359;;;37794:7;37778:23;;:9;37788:1;37778:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:23;;;37774:278;;;37841:9;37870:1;37851:9;:16;;;;:20;;;;:::i;:::-;37841:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;37826:9;37836:1;37826:12;;;;;;;;:::i;:::-;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;37914:1;37895:7;:16;37903:7;37895:16;;;;;;;;;;;;;;;:20;;;;37961:5;37938:11;:20;37950:7;37938:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;37989:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;38027:5;;37774:278;37750:3;;;;;:::i;:::-;;;;37708:359;;;;37556:522:::0;:::o;49474:145::-;12472:12;:10;:12::i;:::-;12461:23;;:7;:5;:7::i;:::-;:23;;;12453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49590:17:::1;49569:18;;:38;;;;;;;;;;;;;;;;;;49474:145:::0;:::o;10965:98::-;11018:7;11045:10;11038:17;;10965:98;:::o;38622:357::-;38736:1;38719:19;;:5;:19;;;;38711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38821:1;38802:21;;:7;:21;;;;38794:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38909:6;38879:11;:18;38891:5;38879:18;;;;;;;;;;;;;;;:27;38898:7;38879:27;;;;;;;;;;;;;;;:36;;;;38951:7;38935:32;;38944:5;38935:32;;;38960:6;38935:32;;;;;;:::i;:::-;;;;;;;;38622:357;;;:::o;39257:2021::-;39376:1;39358:20;;:6;:20;;;;39350:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;39464:1;39443:23;;:9;:23;;;;39435:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;39538:1;39529:6;:10;39521:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;39609:4;:12;39614:6;39609:12;;;;;;;;;;;;;;;;;;;;;;;;;39608:13;:33;;;;;39626:4;:15;39631:9;39626:15;;;;;;;;;;;;;;;;;;;;;;;;;39625:16;39608:33;39600:42;;;;;;39672:7;:5;:7::i;:::-;39662:17;;:6;:17;;;;:41;;;;;39696:7;:5;:7::i;:::-;39683:20;;:9;:20;;;;39662:41;39659:138;;;39740:12;;39730:6;:22;;39722:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;39659:138;40080:28;40111:24;40129:4;40111:9;:24::i;:::-;40080:55;;40179:12;;40155:20;:36;40152:124;;40248:12;;40225:35;;40152:124;40292:24;40343:29;;40319:20;:53;;40292:80;;40392:6;;;;;;;;;;;40391:7;:22;;;;;40402:11;;;;;;;;;;;40391:22;:45;;;;;40417:19;40391:45;:72;;;;;40450:13;40440:23;;:6;:23;;;;40391:72;40387:436;;;40574:38;40591:20;40574:16;:38::i;:::-;40633:26;40662:21;40633:50;;40726:1;40705:18;:22;40702:106;;;40752:36;40766:21;40752:13;:36::i;:::-;40702:106;40465:358;40387:436;40904:12;40919:4;40904:19;;41031:18;:26;41050:6;41031:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;41061:18;:29;41080:9;41061:29;;;;;;;;;;;;;;;;;;;;;;;;;41031:59;41028:113;;;41120:5;41110:15;;41028:113;41219:47;41234:6;41241:9;41251:6;41258:7;41219:14;:47::i;:::-;39335:1943;;;39257:2021;;;:::o;5504:240::-;5624:7;5682:1;5677;:6;;5685:12;5669:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5724:1;5720;:5;5713:12;;5504:240;;;;;:::o;47937:175::-;47978:7;48003:15;48020;48039:19;:17;:19::i;:::-;48002:56;;;;48080:20;48092:7;48080;:11;;:20;;;;:::i;:::-;48073:27;;;;47937:175;:::o;4362:98::-;4420:7;4451:1;4447;:5;;;;:::i;:::-;4440:12;;4362:98;;;;:::o;3225:::-;3283:7;3314:1;3310;:5;;;;:::i;:::-;3303:12;;3225:98;;;;:::o;46695:481::-;46754:7;46763;46772;46781;46790;46799;46824:23;46849:12;46863:13;46880:39;46892:7;46901;;46910:8;;46880:11;:39::i;:::-;46823:96;;;;;;46934:19;46957:10;:8;:10::i;:::-;46934:33;;46983:15;47000:23;47025:12;47041:39;47053:7;47062:4;47068:11;47041;:39::i;:::-;46982:98;;;;;;47103:7;47112:15;47129:4;47135:15;47152:4;47158:5;47095:69;;;;;;;;;;;;;;;;;;;46695:481;;;;;;;:::o;3606:98::-;3664:7;3695:1;3691;:5;;;;:::i;:::-;3684:12;;3606:98;;;;:::o;41290:656::-;32394:4;32385:6;;:13;;;;;;;;;;;;;;;;;;41435:21:::1;41473:1;41459:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41435:40;;41508:4;41490;41495:1;41490:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;41538:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41528:4;41533:1;41528:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;41577:62;41594:4;41609:15;41627:11;41577:8;:62::i;:::-;41686:15;:66;;;41771:11;41801:1;41849:4;41880;41904:15;41686:248;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;41356:590;32438:5:::0;32429:6;;:14;;;;;;;;;;;;;;;;;;41290:656;:::o;13511:191::-;13585:16;13604:6;;;;;;;;;;;13585:25;;13630:8;13621:6;;:17;;;;;;;;;;;;;;;;;;13685:8;13654:40;;13675:8;13654:40;;;;;;;;;;;;13574:128;13511:191;:::o;41958:178::-;42020:18;;;;;;;;;;;:27;;:42;42048:13;42059:1;42048:6;:10;;:13;;;;:::i;:::-;42020:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42077:23;;;;;;;;;;;:32;;:47;42110:13;42121:1;42110:6;:10;;:13;;;;:::i;:::-;42077:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41958:178;:::o;42776:883::-;42892:7;42888:44;;42918:14;:12;:14::i;:::-;42888:44;42953:11;:19;42965:6;42953:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;42977:11;:22;42989:9;42977:22;;;;;;;;;;;;;;;;;;;;;;;;;42976:23;42953:46;42949:637;;;43020:48;43042:6;43050:9;43061:6;43020:21;:48::i;:::-;42949:637;;;43095:11;:19;43107:6;43095:19;;;;;;;;;;;;;;;;;;;;;;;;;43094:20;:46;;;;;43118:11;:22;43130:9;43118:22;;;;;;;;;;;;;;;;;;;;;;;;;43094:46;43090:496;;;43161:46;43181:6;43189:9;43200:6;43161:19;:46::i;:::-;43090:496;;;43234:11;:19;43246:6;43234:19;;;;;;;;;;;;;;;;;;;;;;;;;43233:20;:47;;;;;43258:11;:22;43270:9;43258:22;;;;;;;;;;;;;;;;;;;;;;;;;43257:23;43233:47;43229:357;;;43301:44;43319:6;43327:9;43338:6;43301:17;:44::i;:::-;43229:357;;;43371:11;:19;43383:6;43371:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;43394:11;:22;43406:9;43394:22;;;;;;;;;;;;;;;;;;;;;;;;;43371:45;43367:219;;;43437:48;43459:6;43467:9;43478:6;43437:21;:48::i;:::-;43367:219;;;43526:44;43544:6;43552:9;43563:6;43526:17;:44::i;:::-;43367:219;43229:357;43090:496;42949:637;43606:7;43602:45;;43632:15;:13;:15::i;:::-;43602:45;42776:883;;;;:::o;48124:595::-;48174:7;48183;48207:15;48225:7;;48207:25;;48247:15;48265:7;;48247:25;;48292:9;48287:305;48311:9;:16;;;;48307:1;:20;48287:305;;;48381:7;48357;:21;48365:9;48375:1;48365:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;48357:21;;;;;;;;;;;;;;;;:31;:66;;;;48416:7;48392;:21;48400:9;48410:1;48400:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;48392:21;;;;;;;;;;;;;;;;:31;48357:66;48353:97;;;48433:7;;48442;;48425:25;;;;;;;;;48353:97;48479:34;48491:7;:21;48499:9;48509:1;48499:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;48491:21;;;;;;;;;;;;;;;;48479:7;:11;;:34;;;;:::i;:::-;48469:44;;48542:34;48554:7;:21;48562:9;48572:1;48562:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;48554:21;;;;;;;;;;;;;;;;48542:7;:11;;:34;;;;:::i;:::-;48532:44;;48329:3;;;;;:::i;:::-;;;;48287:305;;;;48620:20;48632:7;;48620;;:11;;:20;;;;:::i;:::-;48610:7;:30;48606:61;;;48650:7;;48659;;48642:25;;;;;;;;48606:61;48690:7;48699;48682:25;;;;;;48124:595;;;:::o;47188:371::-;47281:7;47290;47299;47323:12;47338:28;47362:3;47338:19;47350:6;47338:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;47323:43;;47381:13;47397:29;47422:3;47397:20;47409:7;47397;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;47381:45;;47441:23;47467:28;47489:5;47467:17;47479:4;47467:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;47441:54;;47518:15;47535:4;47541:5;47510:37;;;;;;;;;47188:371;;;;;;;:::o;47571:354::-;47666:7;47675;47684;47708:15;47726:24;47738:11;47726:7;:11;;:24;;;;:::i;:::-;47708:42;;47765:12;47780:21;47789:11;47780:4;:8;;:21;;;;:::i;:::-;47765:36;;47816:23;47842:17;47854:4;47842:7;:11;;:17;;;;:::i;:::-;47816:43;;47882:7;47891:15;47908:4;47874:39;;;;;;;;;47571:354;;;;;;;:::o;38090:238::-;38151:1;38140:7;;:12;:29;;;;;38168:1;38156:8;;:13;38140:29;38137:41;;;38171:7;;38137:41;38212:7;;38194:15;:25;;;;38253:8;;38234:16;:27;;;;38288:1;38278:7;:11;;;;38315:1;38304:8;:12;;;;38090:238;:::o;44802:580::-;44909:15;44926:23;44951:12;44965:23;44990:12;45004:13;45021:19;45032:7;45021:10;:19::i;:::-;44908:132;;;;;;;;;;;;45073:28;45093:7;45073;:15;45081:6;45073:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;45055:7;:15;45063:6;45055:15;;;;;;;;;;;;;;;:46;;;;45134:28;45154:7;45134;:15;45142:6;45134:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;45116:7;:15;45124:6;45116:15;;;;;;;;;;;;;;;:46;;;;45198:39;45221:15;45198:7;:18;45206:9;45198:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;45177:7;:18;45185:9;45177:18;;;;;;;;;;;;;;;:60;;;;45252:16;45262:5;45252:9;:16::i;:::-;45283:23;45295:4;45301;45283:11;:23::i;:::-;45343:9;45326:44;;45335:6;45326:44;;;45354:15;45326:44;;;;;;:::i;:::-;;;;;;;;44893:489;;;;;;44802:580;;;:::o;44198:592::-;44303:15;44320:23;44345:12;44359:23;44384:12;44398:13;44415:19;44426:7;44415:10;:19::i;:::-;44302:132;;;;;;;;;;;;44467:28;44487:7;44467;:15;44475:6;44467:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;44449:7;:15;44457:6;44449:15;;;;;;;;;;;;;;;:46;;;;44531:39;44554:15;44531:7;:18;44539:9;44531:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;44510:7;:18;44518:9;44510:18;;;;;;;;;;;;;;;:60;;;;44606:39;44629:15;44606:7;:18;44614:9;44606:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;44585:7;:18;44593:9;44585:18;;;;;;;;;;;;;;;:60;;;;44660:16;44670:5;44660:9;:16::i;:::-;44691:23;44703:4;44709;44691:11;:23::i;:::-;44751:9;44734:44;;44743:6;44734:44;;;44762:15;44734:44;;;;;;:::i;:::-;;;;;;;;44287:503;;;;;;44198:592;;;:::o;43671:515::-;43774:15;43791:23;43816:12;43830:23;43855:12;43869:13;43886:19;43897:7;43886:10;:19::i;:::-;43773:132;;;;;;;;;;;;43938:28;43958:7;43938;:15;43946:6;43938:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;43920:7;:15;43928:6;43920:15;;;;;;;;;;;;;;;:46;;;;44002:39;44025:15;44002:7;:18;44010:9;44002:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;43981:7;:18;43989:9;43981:18;;;;;;;;;;;;;;;:60;;;;44056:16;44066:5;44056:9;:16::i;:::-;44087:23;44099:4;44105;44087:11;:23::i;:::-;44147:9;44130:44;;44139:6;44130:44;;;44158:15;44130:44;;;;;;:::i;:::-;;;;;;;;43758:428;;;;;;43671:515;;;:::o;45394:655::-;45501:15;45518:23;45543:12;45557:23;45582:12;45596:13;45613:19;45624:7;45613:10;:19::i;:::-;45500:132;;;;;;;;;;;;45665:28;45685:7;45665;:15;45673:6;45665:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;45647:7;:15;45655:6;45647:15;;;;;;;;;;;;;;;:46;;;;45726:28;45746:7;45726;:15;45734:6;45726:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;45708:7;:15;45716:6;45708:15;;;;;;;;;;;;;;;:46;;;;45790:39;45813:15;45790:7;:18;45798:9;45790:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;45769:7;:18;45777:9;45769:18;;;;;;;;;;;;;;;:60;;;;45865:39;45888:15;45865:7;:18;45873:9;45865:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;45844:7;:18;45852:9;45844:18;;;;;;;;;;;;;;;:60;;;;45919:16;45929:5;45919:9;:16::i;:::-;45950:23;45962:4;45968;45950:11;:23::i;:::-;46010:9;45993:44;;46002:6;45993:44;;;46021:15;45993:44;;;;;;:::i;:::-;;;;;;;;45485:564;;;;;;45394:655;;;:::o;38340:127::-;38398:15;;38388:7;:25;;;;38439:16;;38428:8;:27;;;;38340:127::o;3963:98::-;4021:7;4052:1;4048;:5;;;;:::i;:::-;4041:12;;3963:98;;;;:::o;46061:349::-;46118:19;46141:10;:8;:10::i;:::-;46118:33;;46166:13;46182:22;46192:11;46182:5;:9;;:22;;;;:::i;:::-;46166:38;;46244:33;46271:5;46244:7;:22;46260:4;46244:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;46219:7;:22;46235:4;46219:22;;;;;;;;;;;;;;;:58;;;;46295:11;:26;46315:4;46295:26;;;;;;;;;;;;;;;;;;;;;;;;;46292:106;;;46365:33;46392:5;46365:7;:22;46381:4;46365:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;46340:7;:22;46356:4;46340:22;;;;;;;;;;;;;;;:58;;;;46292:106;46103:307;;46061:349;:::o;46422:159::-;46504:17;46516:4;46504:7;;:11;;:17;;;;:::i;:::-;46494:7;:27;;;;46549:20;46564:4;46549:10;;:14;;:20;;;;:::i;:::-;46536:10;:33;;;;46422:159;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;752:139::-;798:5;836:6;823:20;814:29;;852:33;879:5;852:33;:::i;:::-;752:139;;;;:::o;897:143::-;954:5;985:6;979:13;970:22;;1001:33;1028:5;1001:33;:::i;:::-;897:143;;;;:::o;1046:155::-;1100:5;1138:6;1125:20;1116:29;;1154:41;1189:5;1154:41;:::i;:::-;1046:155;;;;:::o;1224:370::-;1295:5;1344:3;1337:4;1329:6;1325:17;1321:27;1311:122;;1352:79;;:::i;:::-;1311:122;1469:6;1456:20;1494:94;1584:3;1576:6;1569:4;1561:6;1557:17;1494:94;:::i;:::-;1485:103;;1301:293;1224:370;;;;:::o;1600:133::-;1643:5;1681:6;1668:20;1659:29;;1697:30;1721:5;1697:30;:::i;:::-;1600:133;;;;:::o;1739:139::-;1785:5;1823:6;1810:20;1801:29;;1839:33;1866:5;1839:33;:::i;:::-;1739:139;;;;:::o;1884:329::-;1943:6;1992:2;1980:9;1971:7;1967:23;1963:32;1960:119;;;1998:79;;:::i;:::-;1960:119;2118:1;2143:53;2188:7;2179:6;2168:9;2164:22;2143:53;:::i;:::-;2133:63;;2089:117;1884:329;;;;:::o;2219:351::-;2289:6;2338:2;2326:9;2317:7;2313:23;2309:32;2306:119;;;2344:79;;:::i;:::-;2306:119;2464:1;2489:64;2545:7;2536:6;2525:9;2521:22;2489:64;:::i;:::-;2479:74;;2435:128;2219:351;;;;:::o;2576:345::-;2643:6;2692:2;2680:9;2671:7;2667:23;2663:32;2660:119;;;2698:79;;:::i;:::-;2660:119;2818:1;2843:61;2896:7;2887:6;2876:9;2872:22;2843:61;:::i;:::-;2833:71;;2789:125;2576:345;;;;:::o;2927:474::-;2995:6;3003;3052:2;3040:9;3031:7;3027:23;3023:32;3020:119;;;3058:79;;:::i;:::-;3020:119;3178:1;3203:53;3248:7;3239:6;3228:9;3224:22;3203:53;:::i;:::-;3193:63;;3149:117;3305:2;3331:53;3376:7;3367:6;3356:9;3352:22;3331:53;:::i;:::-;3321:63;;3276:118;2927:474;;;;;:::o;3407:619::-;3484:6;3492;3500;3549:2;3537:9;3528:7;3524:23;3520:32;3517:119;;;3555:79;;:::i;:::-;3517:119;3675:1;3700:53;3745:7;3736:6;3725:9;3721:22;3700:53;:::i;:::-;3690:63;;3646:117;3802:2;3828:53;3873:7;3864:6;3853:9;3849:22;3828:53;:::i;:::-;3818:63;;3773:118;3930:2;3956:53;4001:7;3992:6;3981:9;3977:22;3956:53;:::i;:::-;3946:63;;3901:118;3407:619;;;;;:::o;4032:468::-;4097:6;4105;4154:2;4142:9;4133:7;4129:23;4125:32;4122:119;;;4160:79;;:::i;:::-;4122:119;4280:1;4305:53;4350:7;4341:6;4330:9;4326:22;4305:53;:::i;:::-;4295:63;;4251:117;4407:2;4433:50;4475:7;4466:6;4455:9;4451:22;4433:50;:::i;:::-;4423:60;;4378:115;4032:468;;;;;:::o;4506:474::-;4574:6;4582;4631:2;4619:9;4610:7;4606:23;4602:32;4599:119;;;4637:79;;:::i;:::-;4599:119;4757:1;4782:53;4827:7;4818:6;4807:9;4803:22;4782:53;:::i;:::-;4772:63;;4728:117;4884:2;4910:53;4955:7;4946:6;4935:9;4931:22;4910:53;:::i;:::-;4900:63;;4855:118;4506:474;;;;;:::o;4986:539::-;5070:6;5119:2;5107:9;5098:7;5094:23;5090:32;5087:119;;;5125:79;;:::i;:::-;5087:119;5273:1;5262:9;5258:17;5245:31;5303:18;5295:6;5292:30;5289:117;;;5325:79;;:::i;:::-;5289:117;5430:78;5500:7;5491:6;5480:9;5476:22;5430:78;:::i;:::-;5420:88;;5216:302;4986:539;;;;:::o;5531:323::-;5587:6;5636:2;5624:9;5615:7;5611:23;5607:32;5604:119;;;5642:79;;:::i;:::-;5604:119;5762:1;5787:50;5829:7;5820:6;5809:9;5805:22;5787:50;:::i;:::-;5777:60;;5733:114;5531:323;;;;:::o;5860:329::-;5919:6;5968:2;5956:9;5947:7;5943:23;5939:32;5936:119;;;5974:79;;:::i;:::-;5936:119;6094:1;6119:53;6164:7;6155:6;6144:9;6140:22;6119:53;:::i;:::-;6109:63;;6065:117;5860:329;;;;:::o;6195:468::-;6260:6;6268;6317:2;6305:9;6296:7;6292:23;6288:32;6285:119;;;6323:79;;:::i;:::-;6285:119;6443:1;6468:53;6513:7;6504:6;6493:9;6489:22;6468:53;:::i;:::-;6458:63;;6414:117;6570:2;6596:50;6638:7;6629:6;6618:9;6614:22;6596:50;:::i;:::-;6586:60;;6541:115;6195:468;;;;;:::o;6669:179::-;6738:10;6759:46;6801:3;6793:6;6759:46;:::i;:::-;6837:4;6832:3;6828:14;6814:28;;6669:179;;;;:::o;6854:142::-;6957:32;6983:5;6957:32;:::i;:::-;6952:3;6945:45;6854:142;;:::o;7002:108::-;7079:24;7097:5;7079:24;:::i;:::-;7074:3;7067:37;7002:108;;:::o;7116:118::-;7203:24;7221:5;7203:24;:::i;:::-;7198:3;7191:37;7116:118;;:::o;7270:732::-;7389:3;7418:54;7466:5;7418:54;:::i;:::-;7488:86;7567:6;7562:3;7488:86;:::i;:::-;7481:93;;7598:56;7648:5;7598:56;:::i;:::-;7677:7;7708:1;7693:284;7718:6;7715:1;7712:13;7693:284;;;7794:6;7788:13;7821:63;7880:3;7865:13;7821:63;:::i;:::-;7814:70;;7907:60;7960:6;7907:60;:::i;:::-;7897:70;;7753:224;7740:1;7737;7733:9;7728:14;;7693:284;;;7697:14;7993:3;7986:10;;7394:608;;;7270:732;;;;:::o;8008:109::-;8089:21;8104:5;8089:21;:::i;:::-;8084:3;8077:34;8008:109;;:::o;8123:185::-;8237:64;8295:5;8237:64;:::i;:::-;8232:3;8225:77;8123:185;;:::o;8314:147::-;8409:45;8448:5;8409:45;:::i;:::-;8404:3;8397:58;8314:147;;:::o;8467:364::-;8555:3;8583:39;8616:5;8583:39;:::i;:::-;8638:71;8702:6;8697:3;8638:71;:::i;:::-;8631:78;;8718:52;8763:6;8758:3;8751:4;8744:5;8740:16;8718:52;:::i;:::-;8795:29;8817:6;8795:29;:::i;:::-;8790:3;8786:39;8779:46;;8559:272;8467:364;;;;:::o;8837:366::-;8979:3;9000:67;9064:2;9059:3;9000:67;:::i;:::-;8993:74;;9076:93;9165:3;9076:93;:::i;:::-;9194:2;9189:3;9185:12;9178:19;;8837:366;;;:::o;9209:::-;9351:3;9372:67;9436:2;9431:3;9372:67;:::i;:::-;9365:74;;9448:93;9537:3;9448:93;:::i;:::-;9566:2;9561:3;9557:12;9550:19;;9209:366;;;:::o;9581:::-;9723:3;9744:67;9808:2;9803:3;9744:67;:::i;:::-;9737:74;;9820:93;9909:3;9820:93;:::i;:::-;9938:2;9933:3;9929:12;9922:19;;9581:366;;;:::o;9953:::-;10095:3;10116:67;10180:2;10175:3;10116:67;:::i;:::-;10109:74;;10192:93;10281:3;10192:93;:::i;:::-;10310:2;10305:3;10301:12;10294:19;;9953:366;;;:::o;10325:::-;10467:3;10488:67;10552:2;10547:3;10488:67;:::i;:::-;10481:74;;10564:93;10653:3;10564:93;:::i;:::-;10682:2;10677:3;10673:12;10666:19;;10325:366;;;:::o;10697:::-;10839:3;10860:67;10924:2;10919:3;10860:67;:::i;:::-;10853:74;;10936:93;11025:3;10936:93;:::i;:::-;11054:2;11049:3;11045:12;11038:19;;10697:366;;;:::o;11069:::-;11211:3;11232:67;11296:2;11291:3;11232:67;:::i;:::-;11225:74;;11308:93;11397:3;11308:93;:::i;:::-;11426:2;11421:3;11417:12;11410:19;;11069:366;;;:::o;11441:::-;11583:3;11604:67;11668:2;11663:3;11604:67;:::i;:::-;11597:74;;11680:93;11769:3;11680:93;:::i;:::-;11798:2;11793:3;11789:12;11782:19;;11441:366;;;:::o;11813:::-;11955:3;11976:67;12040:2;12035:3;11976:67;:::i;:::-;11969:74;;12052:93;12141:3;12052:93;:::i;:::-;12170:2;12165:3;12161:12;12154:19;;11813:366;;;:::o;12185:::-;12327:3;12348:67;12412:2;12407:3;12348:67;:::i;:::-;12341:74;;12424:93;12513:3;12424:93;:::i;:::-;12542:2;12537:3;12533:12;12526:19;;12185:366;;;:::o;12557:::-;12699:3;12720:67;12784:2;12779:3;12720:67;:::i;:::-;12713:74;;12796:93;12885:3;12796:93;:::i;:::-;12914:2;12909:3;12905:12;12898:19;;12557:366;;;:::o;12929:::-;13071:3;13092:67;13156:2;13151:3;13092:67;:::i;:::-;13085:74;;13168:93;13257:3;13168:93;:::i;:::-;13286:2;13281:3;13277:12;13270:19;;12929:366;;;:::o;13301:::-;13443:3;13464:67;13528:2;13523:3;13464:67;:::i;:::-;13457:74;;13540:93;13629:3;13540:93;:::i;:::-;13658:2;13653:3;13649:12;13642:19;;13301:366;;;:::o;13673:::-;13815:3;13836:67;13900:2;13895:3;13836:67;:::i;:::-;13829:74;;13912:93;14001:3;13912:93;:::i;:::-;14030:2;14025:3;14021:12;14014:19;;13673:366;;;:::o;14045:::-;14187:3;14208:67;14272:2;14267:3;14208:67;:::i;:::-;14201:74;;14284:93;14373:3;14284:93;:::i;:::-;14402:2;14397:3;14393:12;14386:19;;14045:366;;;:::o;14417:::-;14559:3;14580:67;14644:2;14639:3;14580:67;:::i;:::-;14573:74;;14656:93;14745:3;14656:93;:::i;:::-;14774:2;14769:3;14765:12;14758:19;;14417:366;;;:::o;14789:118::-;14876:24;14894:5;14876:24;:::i;:::-;14871:3;14864:37;14789:118;;:::o;14913:112::-;14996:22;15012:5;14996:22;:::i;:::-;14991:3;14984:35;14913:112;;:::o;15031:222::-;15124:4;15162:2;15151:9;15147:18;15139:26;;15175:71;15243:1;15232:9;15228:17;15219:6;15175:71;:::i;:::-;15031:222;;;;:::o;15259:254::-;15368:4;15406:2;15395:9;15391:18;15383:26;;15419:87;15503:1;15492:9;15488:17;15479:6;15419:87;:::i;:::-;15259:254;;;;:::o;15519:210::-;15606:4;15644:2;15633:9;15629:18;15621:26;;15657:65;15719:1;15708:9;15704:17;15695:6;15657:65;:::i;:::-;15519:210;;;;:::o;15735:276::-;15855:4;15893:2;15882:9;15878:18;15870:26;;15906:98;16001:1;15990:9;15986:17;15977:6;15906:98;:::i;:::-;15735:276;;;;:::o;16017:313::-;16130:4;16168:2;16157:9;16153:18;16145:26;;16217:9;16211:4;16207:20;16203:1;16192:9;16188:17;16181:47;16245:78;16318:4;16309:6;16245:78;:::i;:::-;16237:86;;16017:313;;;;:::o;16336:419::-;16502:4;16540:2;16529:9;16525:18;16517:26;;16589:9;16583:4;16579:20;16575:1;16564:9;16560:17;16553:47;16617:131;16743:4;16617:131;:::i;:::-;16609:139;;16336:419;;;:::o;16761:::-;16927:4;16965:2;16954:9;16950:18;16942:26;;17014:9;17008:4;17004:20;17000:1;16989:9;16985:17;16978:47;17042:131;17168:4;17042:131;:::i;:::-;17034:139;;16761:419;;;:::o;17186:::-;17352:4;17390:2;17379:9;17375:18;17367:26;;17439:9;17433:4;17429:20;17425:1;17414:9;17410:17;17403:47;17467:131;17593:4;17467:131;:::i;:::-;17459:139;;17186:419;;;:::o;17611:::-;17777:4;17815:2;17804:9;17800:18;17792:26;;17864:9;17858:4;17854:20;17850:1;17839:9;17835:17;17828:47;17892:131;18018:4;17892:131;:::i;:::-;17884:139;;17611:419;;;:::o;18036:::-;18202:4;18240:2;18229:9;18225:18;18217:26;;18289:9;18283:4;18279:20;18275:1;18264:9;18260:17;18253:47;18317:131;18443:4;18317:131;:::i;:::-;18309:139;;18036:419;;;:::o;18461:::-;18627:4;18665:2;18654:9;18650:18;18642:26;;18714:9;18708:4;18704:20;18700:1;18689:9;18685:17;18678:47;18742:131;18868:4;18742:131;:::i;:::-;18734:139;;18461:419;;;:::o;18886:::-;19052:4;19090:2;19079:9;19075:18;19067:26;;19139:9;19133:4;19129:20;19125:1;19114:9;19110:17;19103:47;19167:131;19293:4;19167:131;:::i;:::-;19159:139;;18886:419;;;:::o;19311:::-;19477:4;19515:2;19504:9;19500:18;19492:26;;19564:9;19558:4;19554:20;19550:1;19539:9;19535:17;19528:47;19592:131;19718:4;19592:131;:::i;:::-;19584:139;;19311:419;;;:::o;19736:::-;19902:4;19940:2;19929:9;19925:18;19917:26;;19989:9;19983:4;19979:20;19975:1;19964:9;19960:17;19953:47;20017:131;20143:4;20017:131;:::i;:::-;20009:139;;19736:419;;;:::o;20161:::-;20327:4;20365:2;20354:9;20350:18;20342:26;;20414:9;20408:4;20404:20;20400:1;20389:9;20385:17;20378:47;20442:131;20568:4;20442:131;:::i;:::-;20434:139;;20161:419;;;:::o;20586:::-;20752:4;20790:2;20779:9;20775:18;20767:26;;20839:9;20833:4;20829:20;20825:1;20814:9;20810:17;20803:47;20867:131;20993:4;20867:131;:::i;:::-;20859:139;;20586:419;;;:::o;21011:::-;21177:4;21215:2;21204:9;21200:18;21192:26;;21264:9;21258:4;21254:20;21250:1;21239:9;21235:17;21228:47;21292:131;21418:4;21292:131;:::i;:::-;21284:139;;21011:419;;;:::o;21436:::-;21602:4;21640:2;21629:9;21625:18;21617:26;;21689:9;21683:4;21679:20;21675:1;21664:9;21660:17;21653:47;21717:131;21843:4;21717:131;:::i;:::-;21709:139;;21436:419;;;:::o;21861:::-;22027:4;22065:2;22054:9;22050:18;22042:26;;22114:9;22108:4;22104:20;22100:1;22089:9;22085:17;22078:47;22142:131;22268:4;22142:131;:::i;:::-;22134:139;;21861:419;;;:::o;22286:::-;22452:4;22490:2;22479:9;22475:18;22467:26;;22539:9;22533:4;22529:20;22525:1;22514:9;22510:17;22503:47;22567:131;22693:4;22567:131;:::i;:::-;22559:139;;22286:419;;;:::o;22711:::-;22877:4;22915:2;22904:9;22900:18;22892:26;;22964:9;22958:4;22954:20;22950:1;22939:9;22935:17;22928:47;22992:131;23118:4;22992:131;:::i;:::-;22984:139;;22711:419;;;:::o;23136:222::-;23229:4;23267:2;23256:9;23252:18;23244:26;;23280:71;23348:1;23337:9;23333:17;23324:6;23280:71;:::i;:::-;23136:222;;;;:::o;23364:831::-;23627:4;23665:3;23654:9;23650:19;23642:27;;23679:71;23747:1;23736:9;23732:17;23723:6;23679:71;:::i;:::-;23760:80;23836:2;23825:9;23821:18;23812:6;23760:80;:::i;:::-;23887:9;23881:4;23877:20;23872:2;23861:9;23857:18;23850:48;23915:108;24018:4;24009:6;23915:108;:::i;:::-;23907:116;;24033:72;24101:2;24090:9;24086:18;24077:6;24033:72;:::i;:::-;24115:73;24183:3;24172:9;24168:19;24159:6;24115:73;:::i;:::-;23364:831;;;;;;;;:::o;24201:214::-;24290:4;24328:2;24317:9;24313:18;24305:26;;24341:67;24405:1;24394:9;24390:17;24381:6;24341:67;:::i;:::-;24201:214;;;;:::o;24421:129::-;24455:6;24482:20;;:::i;:::-;24472:30;;24511:33;24539:4;24531:6;24511:33;:::i;:::-;24421:129;;;:::o;24556:75::-;24589:6;24622:2;24616:9;24606:19;;24556:75;:::o;24637:311::-;24714:4;24804:18;24796:6;24793:30;24790:56;;;24826:18;;:::i;:::-;24790:56;24876:4;24868:6;24864:17;24856:25;;24936:4;24930;24926:15;24918:23;;24637:311;;;:::o;24954:132::-;25021:4;25044:3;25036:11;;25074:4;25069:3;25065:14;25057:22;;24954:132;;;:::o;25092:114::-;25159:6;25193:5;25187:12;25177:22;;25092:114;;;:::o;25212:99::-;25264:6;25298:5;25292:12;25282:22;;25212:99;;;:::o;25317:113::-;25387:4;25419;25414:3;25410:14;25402:22;;25317:113;;;:::o;25436:184::-;25535:11;25569:6;25564:3;25557:19;25609:4;25604:3;25600:14;25585:29;;25436:184;;;;:::o;25626:169::-;25710:11;25744:6;25739:3;25732:19;25784:4;25779:3;25775:14;25760:29;;25626:169;;;;:::o;25801:305::-;25841:3;25860:20;25878:1;25860:20;:::i;:::-;25855:25;;25894:20;25912:1;25894:20;:::i;:::-;25889:25;;26048:1;25980:66;25976:74;25973:1;25970:81;25967:107;;;26054:18;;:::i;:::-;25967:107;26098:1;26095;26091:9;26084:16;;25801:305;;;;:::o;26112:185::-;26152:1;26169:20;26187:1;26169:20;:::i;:::-;26164:25;;26203:20;26221:1;26203:20;:::i;:::-;26198:25;;26242:1;26232:35;;26247:18;;:::i;:::-;26232:35;26289:1;26286;26282:9;26277:14;;26112:185;;;;:::o;26303:348::-;26343:7;26366:20;26384:1;26366:20;:::i;:::-;26361:25;;26400:20;26418:1;26400:20;:::i;:::-;26395:25;;26588:1;26520:66;26516:74;26513:1;26510:81;26505:1;26498:9;26491:17;26487:105;26484:131;;;26595:18;;:::i;:::-;26484:131;26643:1;26640;26636:9;26625:20;;26303:348;;;;:::o;26657:191::-;26697:4;26717:20;26735:1;26717:20;:::i;:::-;26712:25;;26751:20;26769:1;26751:20;:::i;:::-;26746:25;;26790:1;26787;26784:8;26781:34;;;26795:18;;:::i;:::-;26781:34;26840:1;26837;26833:9;26825:17;;26657:191;;;;:::o;26854:96::-;26891:7;26920:24;26938:5;26920:24;:::i;:::-;26909:35;;26854:96;;;:::o;26956:104::-;27001:7;27030:24;27048:5;27030:24;:::i;:::-;27019:35;;26956:104;;;:::o;27066:90::-;27100:7;27143:5;27136:13;27129:21;27118:32;;27066:90;;;:::o;27162:126::-;27199:7;27239:42;27232:5;27228:54;27217:65;;27162:126;;;:::o;27294:77::-;27331:7;27360:5;27349:16;;27294:77;;;:::o;27377:86::-;27412:7;27452:4;27445:5;27441:16;27430:27;;27377:86;;;:::o;27469:153::-;27546:9;27579:37;27610:5;27579:37;:::i;:::-;27566:50;;27469:153;;;:::o;27628:121::-;27686:9;27719:24;27737:5;27719:24;:::i;:::-;27706:37;;27628:121;;;:::o;27755:126::-;27805:9;27838:37;27869:5;27838:37;:::i;:::-;27825:50;;27755:126;;;:::o;27887:113::-;27937:9;27970:24;27988:5;27970:24;:::i;:::-;27957:37;;27887:113;;;:::o;28006:307::-;28074:1;28084:113;28098:6;28095:1;28092:13;28084:113;;;28183:1;28178:3;28174:11;28168:18;28164:1;28159:3;28155:11;28148:39;28120:2;28117:1;28113:10;28108:15;;28084:113;;;28215:6;28212:1;28209:13;28206:101;;;28295:1;28286:6;28281:3;28277:16;28270:27;28206:101;28055:258;28006:307;;;:::o;28319:320::-;28363:6;28400:1;28394:4;28390:12;28380:22;;28447:1;28441:4;28437:12;28468:18;28458:81;;28524:4;28516:6;28512:17;28502:27;;28458:81;28586:2;28578:6;28575:14;28555:18;28552:38;28549:84;;;28605:18;;:::i;:::-;28549:84;28370:269;28319:320;;;:::o;28645:281::-;28728:27;28750:4;28728:27;:::i;:::-;28720:6;28716:40;28858:6;28846:10;28843:22;28822:18;28810:10;28807:34;28804:62;28801:88;;;28869:18;;:::i;:::-;28801:88;28909:10;28905:2;28898:22;28688:238;28645:281;;:::o;28932:233::-;28971:3;28994:24;29012:5;28994:24;:::i;:::-;28985:33;;29040:66;29033:5;29030:77;29027:103;;;29110:18;;:::i;:::-;29027:103;29157:1;29150:5;29146:13;29139:20;;28932:233;;;:::o;29171:180::-;29219:77;29216:1;29209:88;29316:4;29313:1;29306:15;29340:4;29337:1;29330:15;29357:180;29405:77;29402:1;29395:88;29502:4;29499:1;29492:15;29526:4;29523:1;29516:15;29543:180;29591:77;29588:1;29581:88;29688:4;29685:1;29678:15;29712:4;29709:1;29702:15;29729:180;29777:77;29774:1;29767:88;29874:4;29871:1;29864:15;29898:4;29895:1;29888:15;29915:180;29963:77;29960:1;29953:88;30060:4;30057:1;30050:15;30084:4;30081:1;30074:15;30101:180;30149:77;30146:1;30139:88;30246:4;30243:1;30236:15;30270:4;30267:1;30260:15;30287:117;30396:1;30393;30386:12;30410:117;30519:1;30516;30509:12;30533:117;30642:1;30639;30632:12;30656:117;30765:1;30762;30755:12;30779:102;30820:6;30871:2;30867:7;30862:2;30855:5;30851:14;30847:28;30837:38;;30779:102;;;:::o;30887:222::-;31027:34;31023:1;31015:6;31011:14;31004:58;31096:5;31091:2;31083:6;31079:15;31072:30;30887:222;:::o;31115:229::-;31255:34;31251:1;31243:6;31239:14;31232:58;31324:12;31319:2;31311:6;31307:15;31300:37;31115:229;:::o;31350:225::-;31490:34;31486:1;31478:6;31474:14;31467:58;31559:8;31554:2;31546:6;31542:15;31535:33;31350:225;:::o;31581:221::-;31721:34;31717:1;31709:6;31705:14;31698:58;31790:4;31785:2;31777:6;31773:15;31766:29;31581:221;:::o;31808:177::-;31948:29;31944:1;31936:6;31932:14;31925:53;31808:177;:::o;31991:::-;32131:29;32127:1;32119:6;32115:14;32108:53;31991:177;:::o;32174:239::-;32314:34;32310:1;32302:6;32298:14;32291:58;32383:22;32378:2;32370:6;32366:15;32359:47;32174:239;:::o;32419:181::-;32559:33;32555:1;32547:6;32543:14;32536:57;32419:181;:::o;32606:227::-;32746:34;32742:1;32734:6;32730:14;32723:58;32815:10;32810:2;32802:6;32798:15;32791:35;32606:227;:::o;32839:182::-;32979:34;32975:1;32967:6;32963:14;32956:58;32839:182;:::o;33027:228::-;33167:34;33163:1;33155:6;33151:14;33144:58;33236:11;33231:2;33223:6;33219:15;33212:36;33027:228;:::o;33261:224::-;33401:34;33397:1;33389:6;33385:14;33378:58;33470:7;33465:2;33457:6;33453:15;33446:32;33261:224;:::o;33491:223::-;33631:34;33627:1;33619:6;33615:14;33608:58;33700:6;33695:2;33687:6;33683:15;33676:31;33491:223;:::o;33720:176::-;33860:28;33856:1;33848:6;33844:14;33837:52;33720:176;:::o;33902:221::-;34042:34;34038:1;34030:6;34026:14;34019:58;34111:4;34106:2;34098:6;34094:15;34087:29;33902:221;:::o;34129:231::-;34269:34;34265:1;34257:6;34253:14;34246:58;34338:14;34333:2;34325:6;34321:15;34314:39;34129:231;:::o;34366:122::-;34439:24;34457:5;34439:24;:::i;:::-;34432:5;34429:35;34419:63;;34478:1;34475;34468:12;34419:63;34366:122;:::o;34494:138::-;34575:32;34601:5;34575:32;:::i;:::-;34568:5;34565:43;34555:71;;34622:1;34619;34612:12;34555:71;34494:138;:::o;34638:116::-;34708:21;34723:5;34708:21;:::i;:::-;34701:5;34698:32;34688:60;;34744:1;34741;34734:12;34688:60;34638:116;:::o;34760:122::-;34833:24;34851:5;34833:24;:::i;:::-;34826:5;34823:35;34813:63;;34872:1;34869;34862:12;34813:63;34760:122;:::o

Swarm Source

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