ETH Price: $2,352.08 (-1.11%)

Contract

0xbA7f1f4FB18fC2F48CCc43cB964A75aB3C6f4940

Overview

ETH Balance

0 ETH

ETH Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Approve1559366672023-12-01 18:50:23792 days ago1701456623IN
0xbA7f1f4F...B3C6f4940
0 ETH0.000198240.1
Approve1087981002023-07-07 14:14:19940 days ago1688739259IN
0xbA7f1f4F...B3C6f4940
0 ETH0.000082930.1
Approve1087965642023-07-07 14:07:56940 days ago1688738876IN
0xbA7f1f4F...B3C6f4940
0 ETH0.000057310.1
Approve1077711612023-07-04 11:07:25943 days ago1688468845IN
0xbA7f1f4F...B3C6f4940
0 ETH0.000033760.1
Approve991214502023-06-08 17:38:15969 days ago1686245895IN
0xbA7f1f4F...B3C6f4940
0 ETH0.000064750.1
Approve960498002023-05-30 16:02:44978 days ago1685462564IN
0xbA7f1f4F...B3C6f4940
0 ETH0.000086930.1
Approve876766092023-05-05 21:23:191002 days ago1683321799IN
0xbA7f1f4F...B3C6f4940
0 ETH0.000253210.1
Approve798506332023-04-13 0:32:361025 days ago1681345956IN
0xbA7f1f4F...B3C6f4940
0 ETH0.000045690.1
Approve797603672023-04-12 17:59:201026 days ago1681322360IN
0xbA7f1f4F...B3C6f4940
0 ETH0.000052690.1
Approve795688942023-04-12 4:41:461026 days ago1681274506IN
0xbA7f1f4F...B3C6f4940
0 ETH0.000039830.1
Approve793822572023-04-11 15:23:191027 days ago1681226599IN
0xbA7f1f4F...B3C6f4940
0 ETH0.000067350.1
Approve789133522023-04-10 6:40:161028 days ago1681108816IN
0xbA7f1f4F...B3C6f4940
0 ETH0.000046740.1
Approve787714852023-04-09 20:29:561028 days ago1681072196IN
0xbA7f1f4F...B3C6f4940
0 ETH0.000039810.1
Approve787622922023-04-09 19:50:481028 days ago1681069848IN
0xbA7f1f4F...B3C6f4940
0 ETH0.000041660.1
Approve787152652023-04-09 16:33:291029 days ago1681058009IN
0xbA7f1f4F...B3C6f4940
0 ETH0.000045090.1
Approve787009302023-04-09 15:33:591029 days ago1681054439IN
0xbA7f1f4F...B3C6f4940
0 ETH0.000040570.1
Approve787006292023-04-09 15:32:431029 days ago1681054363IN
0xbA7f1f4F...B3C6f4940
0 ETH0.000040570.1
Approve786874042023-04-09 14:38:031029 days ago1681051083IN
0xbA7f1f4F...B3C6f4940
0 ETH0.000040660.1
Approve786590862023-04-09 12:40:461029 days ago1681044046IN
0xbA7f1f4F...B3C6f4940
0 ETH0.000039730.1
Approve786558622023-04-09 12:27:261029 days ago1681043246IN
0xbA7f1f4F...B3C6f4940
0 ETH0.000038410.1
Approve786552522023-04-09 12:24:581029 days ago1681043098IN
0xbA7f1f4F...B3C6f4940
0 ETH0.000037990.1
Approve786449342023-04-09 11:42:161029 days ago1681040536IN
0xbA7f1f4F...B3C6f4940
0 ETH0.000035740.1
Approve786300172023-04-09 10:40:351029 days ago1681036835IN
0xbA7f1f4F...B3C6f4940
0 ETH0.000035870.1
Approve786050262023-04-09 8:57:071029 days ago1681030627IN
0xbA7f1f4F...B3C6f4940
0 ETH0.000040170.1
Approve786017562023-04-09 8:43:361029 days ago1681029816IN
0xbA7f1f4F...B3C6f4940
0 ETH0.000041130.1
View all transactions

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To
1074059432023-07-03 9:07:07944 days ago1688375227
0xbA7f1f4F...B3C6f4940
0.0003453 ETH
1074059432023-07-03 9:07:07944 days ago1688375227
0xbA7f1f4F...B3C6f4940
1 wei
1074059432023-07-03 9:07:07944 days ago1688375227
0xbA7f1f4F...B3C6f4940
0.00207182 ETH
1074059432023-07-03 9:07:07944 days ago1688375227
0xbA7f1f4F...B3C6f4940
0.00241713 ETH
793825022023-04-11 15:24:211027 days ago1681226661
0xbA7f1f4F...B3C6f4940
0.00052615 ETH
793825022023-04-11 15:24:211027 days ago1681226661
0xbA7f1f4F...B3C6f4940
1 wei
793825022023-04-11 15:24:211027 days ago1681226661
0xbA7f1f4F...B3C6f4940
0.00315695 ETH
793825022023-04-11 15:24:211027 days ago1681226661
0xbA7f1f4F...B3C6f4940
0.00368311 ETH
780960242023-04-07 20:56:071030 days ago1680900967
0xbA7f1f4F...B3C6f4940
0.00060289 ETH
780960242023-04-07 20:56:071030 days ago1680900967
0xbA7f1f4F...B3C6f4940
1 wei
780960242023-04-07 20:56:071030 days ago1680900967
0xbA7f1f4F...B3C6f4940
0.00361737 ETH
780960242023-04-07 20:56:071030 days ago1680900967
0xbA7f1f4F...B3C6f4940
0.00422027 ETH
777863942023-04-06 23:09:281031 days ago1680822568
0xbA7f1f4F...B3C6f4940
0.00073191 ETH
777863942023-04-06 23:09:281031 days ago1680822568
0xbA7f1f4F...B3C6f4940
1 wei
777863942023-04-06 23:09:281031 days ago1680822568
0xbA7f1f4F...B3C6f4940
0.00439147 ETH
777863942023-04-06 23:09:281031 days ago1680822568
0xbA7f1f4F...B3C6f4940
0.00512338 ETH
777850602023-04-06 23:03:291031 days ago1680822209
0xbA7f1f4F...B3C6f4940
0.0007472 ETH
777850602023-04-06 23:03:291031 days ago1680822209
0xbA7f1f4F...B3C6f4940
1 wei
777850602023-04-06 23:03:291031 days ago1680822209
0xbA7f1f4F...B3C6f4940
0.0044832 ETH
777850602023-04-06 23:03:291031 days ago1680822209
0xbA7f1f4F...B3C6f4940
0.0052304 ETH
776287942023-04-06 12:04:081032 days ago1680782648
0xbA7f1f4F...B3C6f4940
0.00075967 ETH
776287942023-04-06 12:04:081032 days ago1680782648
0xbA7f1f4F...B3C6f4940
1 wei
776287942023-04-06 12:04:081032 days ago1680782648
0xbA7f1f4F...B3C6f4940
0.00455807 ETH
776287942023-04-06 12:04:081032 days ago1680782648
0xbA7f1f4F...B3C6f4940
0.00531775 ETH
775398722023-04-06 5:56:141032 days ago1680760574
0xbA7f1f4F...B3C6f4940
0.00091557 ETH
View All Internal Transactions

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Seed

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan.io on 2023-04-04
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.16;


// 
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
/**
 * @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;
    }
}

// 
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)
/**
 * @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 Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        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);
    }
}

// 
// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)
/**
 * @dev Contract module which allows children to implement an emergency stop
 * mechanism that can be triggered by an authorized account.
 *
 * This module is used through inheritance. It will make available the
 * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
 * the functions of your contract. Note that they will not be pausable by
 * simply including this module, only once the modifiers are put in place.
 */
abstract contract Pausable is Context {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor() {
        _paused = false;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        _requireNotPaused();
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        _requirePaused();
        _;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    /**
     * @dev Throws if the contract is paused.
     */
    function _requireNotPaused() internal view virtual {
        require(!paused(), "Pausable: paused");
    }

    /**
     * @dev Throws if the contract is not paused.
     */
    function _requirePaused() internal view virtual {
        require(paused(), "Pausable: not paused");
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

// 
// OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol)
// 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 subtraction 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;
        }
    }
}

// 
// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)
/**
 * @dev Standard signed math utilities missing in the Solidity language.
 */
library SignedMath {
    /**
     * @dev Returns the largest of two signed numbers.
     */
    function max(int256 a, int256 b) internal pure returns (int256) {
        return a > b ? a : b;
    }

    /**
     * @dev Returns the smallest of two signed numbers.
     */
    function min(int256 a, int256 b) internal pure returns (int256) {
        return a < b ? a : b;
    }

    /**
     * @dev Returns the average of two signed numbers without overflow.
     * The result is rounded towards zero.
     */
    function average(int256 a, int256 b) internal pure returns (int256) {
        // Formula from the book "Hacker's Delight"
        int256 x = (a & b) + ((a ^ b) >> 1);
        return x + (int256(uint256(x) >> 255) & (a ^ b));
    }

    /**
     * @dev Returns the absolute unsigned value of a signed value.
     */
    function abs(int256 n) internal pure returns (uint256) {
        unchecked {
            // must be unchecked in order to support `n = type(int256).min`
            return uint256(n >= 0 ? n : -n);
        }
    }
}

// 
interface IPancakePair {
    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;
}

// 
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)
/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @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);

    /**
     * @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 `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, 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 `from` to `to` 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}

// 
interface IPancakeFactory {
    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 IPancakeRouter01 {
    function factory() external view returns (address);
    function WETH() external view 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 IPancakeRouter02 is IPancakeRouter01 {
    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;
}

// 
interface IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit(uint256 amount) external payable;
    function process(uint256 gas) external;
}

abstract contract ERC20Detailed is IERC20 {
    string public _name;
    string public _symbol;
    uint8 public _decimals;

    constructor(
        string memory name_,
        string memory symbol_,
        uint8 decimals_
    ) {
        _name = name_;
        _symbol = symbol_;
        _decimals = decimals_;
    }

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

// 
contract Seed is ERC20Detailed, Ownable, Pausable
{
    using SafeMath for uint256;
    using SignedMath for int256;

    event LogRebase(uint256 indexed epoch, uint256 totalSupply);

    IPancakePair public pairContract;
    mapping(address => bool) public isFeeExempt;

    modifier validRecipient(address to) {
        require(to != address(0x0), "Null Address");
        _;
    }

    uint256 public constant DECIMALS = 5;
    uint256 public constant MAX_UINT256 = ~uint256(0);
    uint256 public constant MAX_GONS = uint256(~uint192(0));
    uint8 public constant RATE_DECIMALS = 7;

    uint256 private constant INITIAL_FRAGMENTS_SUPPLY =
        25 * 10**3 * 10**DECIMALS;

    uint256 constant public RESOLUTION = 10000;

    address public DEAD = 0x000000000000000000000000000000000000dEaD;
    address public ZERO = 0x0000000000000000000000000000000000000000;

    address public autoLiquidityReceiver;
    address public treasuryReceiver;
    address public insuranceFundReceiver;
    address public firePit;

    bool public swapEnabled;
    IPancakeRouter02 public router;
    address public pair;
    address public feeToken;
    address[] public feeTokenPath;

    bool inSwap;

    uint256 public ethRewardStore;

    uint256 private constant TOTAL_GONS =
        MAX_GONS - (MAX_GONS % INITIAL_FRAGMENTS_SUPPLY);

    uint256 private constant MAX_SUPPLY = 325 * 10**7 * 10**DECIMALS;

    bool public autoRebase;
    bool public autoAddLiquidity;
    uint256 public initRebaseStartTime;
    uint256 public lastRebasedTime;
    uint256 public lastAddLiquidityTime;

    uint256 private _totalSupply;
    uint256 private _gonsPerFragment;

    mapping(address => uint256) private _gonBalances;
    mapping(address => mapping(address => uint256)) private _allowedFragments;
    mapping(address => bool) public blacklist;

    uint256 public timeframeCurrent;
    uint256 public timeframeExpiresAfter;

    uint32 public maxTokenPerWalletPercent;

    uint256 public timeframeQuotaInPercentage;
    uint256 public timeframeQuotaOutPercentage;

    mapping(uint256 => mapping(address => int256)) public inAmounts;
    mapping(uint256 => mapping(address => uint256)) public outAmounts;

    bool public ethRewardEnabled;

    bool public disableAllFee;

    address public distributorAddress;
    uint256 public distributorGas;

    address public devAddress;
    uint256 public devFee;

    uint256 public liquidityFeeOnBuy;
    uint256 public treasuryFeeOnBuy;
    uint256 public ethFeeOnBuy;
    uint256 public insuranceFundFeeOnBuy;
    uint256 public firePitFeeOnBuy;
    uint256 public totalFeeOnBuy;

    uint256 public liquidityFeeOnSell;
    uint256 public treasuryFeeOnSell;
    uint256 public ethFeeOnSell;
    uint256 public insuranceFundFeeOnSell;
    uint256 public firePitFeeOnSell;
    uint256 public totalFeeOnSell;

    uint256 public maxLPSwapThreshold;
    uint256 public maxETHFeeSwapThreshold;

    uint256 public rebasePeriod;
    uint256 public rebaseRate;

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor(string memory name_, string memory symbol_, 
            address router_,
            address lr, address tr, address aifr, address fp, address dev)
    ERC20Detailed(name_, symbol_, uint8(DECIMALS))
        {
        swapEnabled = true;
        inSwap = false;

        router = IPancakeRouter02(router_); // 0x1b02da8cb0d097eb8d57a175b88c7d8b47997506

        pair = IPancakeFactory(router.factory()).createPair(
            router.WETH(),
            address(this)
        );

        autoLiquidityReceiver = lr;
        treasuryReceiver = tr; 
        insuranceFundReceiver = aifr;
        firePit = fp;

        liquidityFeeOnBuy = 100;
        treasuryFeeOnBuy = 250;
        insuranceFundFeeOnBuy = 450; // here Dev fee are included here
        ethFeeOnBuy = 0;
        firePitFeeOnBuy = 0;
        totalFeeOnBuy = liquidityFeeOnBuy.add(treasuryFeeOnBuy).add(insuranceFundFeeOnBuy).add(firePitFeeOnBuy).add(ethFeeOnBuy);

        liquidityFeeOnSell = 100;
        treasuryFeeOnSell = 550;
        insuranceFundFeeOnSell = 450; // here Dev fee is included here
        ethFeeOnSell = 500;
        firePitFeeOnSell = 0;
        totalFeeOnSell = liquidityFeeOnSell.add(treasuryFeeOnSell).add(insuranceFundFeeOnSell).add(firePitFeeOnSell).add(ethFeeOnSell);

        devAddress = dev;
        devFee = 0;

        _allowedFragments[address(this)][address(router)] = MAX_UINT256;
        pairContract = IPancakePair(pair);

        maxTokenPerWalletPercent = 100; // 1%
        timeframeQuotaInPercentage = 100; // 1%
        timeframeQuotaOutPercentage = 100; // 1%

        _totalSupply = INITIAL_FRAGMENTS_SUPPLY;
        _gonBalances[treasuryReceiver] = TOTAL_GONS;
        _gonsPerFragment = TOTAL_GONS.div(_totalSupply);
        initRebaseStartTime = block.timestamp;
        lastRebasedTime = block.timestamp;
        autoRebase = false;
        autoAddLiquidity = true;
        ethRewardEnabled = true;
        
        isFeeExempt[treasuryReceiver] = true;
        isFeeExempt[autoLiquidityReceiver] = true;
        isFeeExempt[insuranceFundReceiver] = true;
        isFeeExempt[firePit] = true;
        isFeeExempt[address(this)] = true;
        isFeeExempt[dev] = true;
        isFeeExempt[msg.sender] = true;
        isFeeExempt[DEAD] = true;
        isFeeExempt[ZERO] = true;

        distributorGas = 500000;                                                                                          
        rebasePeriod = 15 minutes;
        rebaseRate = 1512;

        emit Transfer(address(0x0), treasuryReceiver, _totalSupply);

        timeframeExpiresAfter = 24 hours;

        maxLPSwapThreshold = _totalSupply.mul(10).div(RESOLUTION);
        maxETHFeeSwapThreshold = _totalSupply.mul(10).div(RESOLUTION);
    }

    function checkTimeframe() internal {
        uint256 _currentTimeStamp1 = block.timestamp;
        if (_currentTimeStamp1 > timeframeCurrent + timeframeExpiresAfter) {
            timeframeCurrent = _currentTimeStamp1;
        }
    }

    function rebase() internal {
        if ( inSwap ) return;

        uint256 _rebaseRate;
        uint256 deltaTimeFromInit = block.timestamp - initRebaseStartTime;
        uint256 deltaTime = block.timestamp - lastRebasedTime;
        uint256 times = deltaTime.div(rebasePeriod);
        uint256 epoch = times.mul(rebasePeriod);

        if (deltaTimeFromInit < (365 days)) {
            _rebaseRate = rebaseRate;
        } else if (deltaTimeFromInit >= (365 days)) {
            _rebaseRate = 211;
        } else if (deltaTimeFromInit >= ((15 * 365 days) / 10)) {
            _rebaseRate = 14;
        } else if (deltaTimeFromInit >= (7 * 365 days)) {
            _rebaseRate = 2;
        }

        uint256 i;
        for (i = 0; i < times; i++) {
            _totalSupply = _totalSupply
                .mul((10**RATE_DECIMALS).add(_rebaseRate))
                .div(10**RATE_DECIMALS);
        }

        _gonsPerFragment = TOTAL_GONS.div(_totalSupply);

        lastRebasedTime = lastRebasedTime.add(times.mul(rebasePeriod));

        pairContract.sync();

        emit LogRebase(epoch, _totalSupply);
    }

    function transfer(address to, uint256 value)
        external
        override
        validRecipient(to)
        returns (bool)
    {
        _transferFrom(msg.sender, to, value);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external override validRecipient(to) returns (bool) {
        
        if (_allowedFragments[from][msg.sender] != MAX_UINT256) {
            _allowedFragments[from][msg.sender] = _allowedFragments[from][
                msg.sender
            ].sub(value, "Insufficient Allowance");
        }
        _transferFrom(from, to, value);
        return true;
    }

    function _basicTransfer(
        address from,
        address to,
        uint256 amount
    ) internal returns (bool) {
        uint256 gonAmount = amount.mul(_gonsPerFragment);
        _gonBalances[from] = _gonBalances[from].sub(gonAmount, "BasicTransfer: Not Enough Balance");
        _gonBalances[to] = _gonBalances[to].add(gonAmount);
        return true;
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal whenNotPaused returns (bool) {

        require(!blacklist[sender] && !blacklist[recipient], "Blacklisted");

        if (inSwap || disableAllFee) {
            return _basicTransfer(sender, recipient, amount);
        }

        checkTimeframe();

        inAmounts[timeframeCurrent][recipient] += int256(amount);
        outAmounts[timeframeCurrent][sender] += amount;

        if (!isFeeExempt[recipient] && recipient != pair) {
            // Revert if the receiving wallet exceed the maximum a wallet can hold

            require(
                getMaxTokenPerWallet() >= balanceOf(recipient) + amount,
                "Cannot transfer to this wallet, it would exceed the limit per wallet. [balanceOf > maxTokenPerWallet]"
            );

            // Revert if receiving wallet exceed daily limit
            require(
                getRemainingTransfersIn(recipient) >= 0,
                "Cannot transfer to this wallet for this timeframe, it would exceed the limit per timeframe. [inAmount > timeframeLimit]"
            );
        }

        if (!isFeeExempt[sender] && sender != pair) {
            // Revert if the sending wallet exceed the maximum transfer limit per day
            // We take into calculation the number ever bought of tokens available at this point
            require(
                getRemainingTransfersOut(sender) >= 0,
                "Cannot transfer out from this wallet for this timeframe, it would exceed the limit per timeframe. [outAmount > timeframeLimit]"
            );
        }

        if (shouldRebase()) {
            rebase();
        }

        if (shouldAddLiquidity()) {
            addLiquidity();
        }

        uint256 gonAmount = amount.mul(_gonsPerFragment);

        uint256 gonAmountReceived = shouldTakeFee(sender, recipient)
            ? takeFee(sender, recipient, gonAmount)
            : gonAmount;
			
		if (distributorAddress != address(0) && ethRewardEnabled) {
            try IDividendDistributor(distributorAddress).setShare(sender, _gonBalances[sender].sub(gonAmount, "Dividend: sender balance is not enough").div(_gonsPerFragment)) {} catch {}
            try IDividendDistributor(distributorAddress).setShare(recipient, _gonBalances[recipient].add(gonAmountReceived).div(_gonsPerFragment)) {} catch {}
        }

        if (shouldSwapBack()) {
            swapBack(recipient == pair);
        }

        _gonBalances[sender] = _gonBalances[sender].sub(gonAmount, "_transferFrom: sender balance is not enough");

        _gonBalances[recipient] = _gonBalances[recipient].add(
            gonAmountReceived
        );

        if (distributorAddress != address(0) && ethRewardEnabled) {
            try IDividendDistributor(distributorAddress).process(distributorGas) {} catch {}
        }

        emit Transfer(
            sender,
            recipient,
            gonAmountReceived.div(_gonsPerFragment)
        );
        return true;
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 gonAmount
    ) internal  returns (uint256) {
        uint256 _liquidityFee;
        uint256 _treasuryFee;
        uint256 _ethFee;
        uint256 _insuranceFundFee;
        uint256 _firePitFee;
        uint256 _totalFee;

        if (recipient == pair) { // sell tax
            _liquidityFee = liquidityFeeOnSell;
            _treasuryFee = treasuryFeeOnSell;
            _ethFee = ethFeeOnSell;
            _insuranceFundFee = insuranceFundFeeOnSell;
            _firePitFee = firePitFeeOnSell;
            _totalFee = totalFeeOnSell;
        } else { // buy tax
            _liquidityFee = liquidityFeeOnBuy;
            _treasuryFee = treasuryFeeOnBuy;
            _ethFee = ethFeeOnBuy;
            _insuranceFundFee = insuranceFundFeeOnBuy;
            _firePitFee = firePitFeeOnBuy;
            _totalFee = totalFeeOnBuy;
        }

        uint256 feeAmount = gonAmount.div(RESOLUTION).mul(_totalFee);
       
        uint256 _firePitFeeAmount = gonAmount.div(RESOLUTION).mul(_firePitFee);
        _gonBalances[firePit] = _gonBalances[firePit].add(_firePitFeeAmount);
        emit Transfer(sender, firePit, _firePitFeeAmount.div(_gonsPerFragment));

        uint256 _thisFee = gonAmount.div(RESOLUTION).mul(_treasuryFee.add(_insuranceFundFee).add(_ethFee));
        _gonBalances[address(this)] = _gonBalances[address(this)].add(_thisFee);
        emit Transfer(sender, address(this), _thisFee.div(_gonsPerFragment));

        uint256 _lpFee = gonAmount.div(RESOLUTION).mul(_liquidityFee);
        _gonBalances[autoLiquidityReceiver] = _gonBalances[autoLiquidityReceiver].add(_lpFee);
        emit Transfer(sender, autoLiquidityReceiver, _lpFee.div(_gonsPerFragment));

        return gonAmount.sub(feeAmount, "fee value exceeds");
    }

    function addLiquidity() internal swapping {
        uint256 autoLiquidityAmount = _gonBalances[autoLiquidityReceiver].div(
            _gonsPerFragment
        );

        if (autoLiquidityAmount < maxLPSwapThreshold || autoLiquidityAmount == 0) return;

        _gonBalances[address(this)] = _gonBalances[address(this)].add(
            _gonBalances[autoLiquidityReceiver]
        );
        _gonBalances[autoLiquidityReceiver] = 0;
        uint256 amountToLiquify = autoLiquidityAmount.div(2);
        uint256 amountToSwap = autoLiquidityAmount.sub(amountToLiquify, "addLiquidity: liquidity balance is not enough");

        if( amountToSwap == 0 ) {
            return;
        }

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETHLiquidity = address(this).balance.sub(balanceBefore, "addLiquidity: ETH balance is not enough");

        if (amountToLiquify > 0 && amountETHLiquidity > 0) {
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
        }
        lastAddLiquidityTime = block.timestamp;
    }

    function swapBack(bool _isSelling) internal swapping {

        uint256 amountToSwap = _gonBalances[address(this)].div(_gonsPerFragment);

        if( amountToSwap < maxETHFeeSwapThreshold || amountToSwap == 0) return;

        uint256 balanceBefore = address(this).balance;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETHToTreasuryAndSIF = address(this).balance.sub(balanceBefore, "swapBack: ETH balance is not enough");

        uint256 _treasuryFee;
        uint256 _insuranceFundFee;
        uint256 _ethFee;

        if (_isSelling) {
            _treasuryFee = treasuryFeeOnSell;
            _insuranceFundFee = insuranceFundFeeOnSell;
            _ethFee = ethFeeOnSell;
        } else {
            _treasuryFee = treasuryFeeOnBuy;
            _insuranceFundFee = insuranceFundFeeOnBuy;
            _ethFee = ethFeeOnBuy;
        }

        if (!ethRewardEnabled) {
            _ethFee = 0;
        }

        uint256 _denom = _treasuryFee.add(_insuranceFundFee).add(_ethFee);
        uint256 _treasuryFeeValue = amountETHToTreasuryAndSIF.mul(_treasuryFee).div(_denom);

        if (_treasuryFeeValue > 0) {
            (bool success, ) = payable(treasuryReceiver).call{
                value: _treasuryFeeValue,
                gas: 30000
            }("");
            require(success == true, "Error Paying Treasury");
        }
        
        uint256 _totalETHFee = amountETHToTreasuryAndSIF.mul(_ethFee).div(_denom);
        uint256 _insuranceFeeValue = amountETHToTreasuryAndSIF.sub(_treasuryFeeValue).sub(_totalETHFee);

        if (devAddress != address(0) && devFee > 0) {
            uint256 _devFeeValue = amountETHToTreasuryAndSIF.mul(devFee).div(_denom);
            _insuranceFeeValue = _insuranceFeeValue.sub(_devFeeValue, "AWF sub 1 error");

            (bool success, ) = payable(devAddress).call{
                value: _devFeeValue,
                gas: 30000
            }("");
            require(success == true, "Error Paying Dev");
        }

        if (_insuranceFeeValue > 0) {
            (bool success, ) = payable(insuranceFundReceiver).call{
                value: _insuranceFeeValue,
                gas: 30000
            }("");
            require(success == true, "Error Paying Insurance Fund");
        }

        ethRewardStore = ethRewardStore.add(_totalETHFee);

        if (distributorAddress != address(0) && _totalETHFee > 0 && feeToken != address(0)) {
            uint256 beforeAmount = IERC20(feeToken).balanceOf(address(this));
            IPancakeRouter02(router).swapExactETHForTokensSupportingFeeOnTransferTokens{value: _totalETHFee}(
                0,
                feeTokenPath,
                address(this),
                block.timestamp
            );
            uint256 _feeTokenAmount = IERC20(feeToken).balanceOf(address(this)) - beforeAmount;
            IERC20(feeToken).approve(distributorAddress, _feeTokenAmount);
            try IDividendDistributor(distributorAddress).deposit(_feeTokenAmount) {} catch {}
        }
    }

    function withdrawAllToTreasury() external swapping onlyOwner {
        if (address(this).balance > 0) {
            (bool success, ) = payable(treasuryReceiver).call{value: address(this).balance}("");
            require(success, "Unable To Withdraw ETH");
        }

        uint256 amountToSwap = _gonBalances[address(this)].div(_gonsPerFragment);
        if (amountToSwap > 0) {
            address[] memory path = new address[](2);
            path[0] = address(this);
            path[1] = router.WETH();
            router.swapExactTokensForETHSupportingFeeOnTransferTokens(
                amountToSwap,
                0,
                path,
                treasuryReceiver,
                block.timestamp
            );
        }
    }

    function shouldTakeFee(address from, address to)
        internal
        view
        returns (bool)
    {
        return 
            (pair == from && !isFeeExempt[to]) || (pair == to && !isFeeExempt[from]);
    }

    function shouldRebase() internal view returns (bool) {
        return
            autoRebase &&
            (_totalSupply < MAX_SUPPLY) &&
            msg.sender != pair  &&
            !inSwap &&
            block.timestamp >= (lastRebasedTime + rebasePeriod);
    }

    function shouldAddLiquidity() internal view returns (bool) {
        return
            autoAddLiquidity && 
            !inSwap && 
            msg.sender != pair &&
            block.timestamp >= (lastAddLiquidityTime + 2 days);
    }

    function shouldSwapBack() internal view returns (bool) {
        return 
            !inSwap &&
            msg.sender != pair  ; 
    }

    function setAutoRebase(bool _flag) external onlyOwner {
        if (_flag) {
            autoRebase = _flag;
            lastRebasedTime = block.timestamp;
        } else {
            autoRebase = _flag;
        }
    }

    function setAutoAddLiquidity(bool _flag) external onlyOwner {
        if(_flag) {
            autoAddLiquidity = _flag;
            lastAddLiquidityTime = block.timestamp;
        } else {
            autoAddLiquidity = _flag;
        }
    }

    function allowance(address owner_, address spender)
        external
        view
        override
        returns (uint256)
    {
        return _allowedFragments[owner_][spender];
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        external
        returns (bool)
    {
        uint256 oldValue = _allowedFragments[msg.sender][spender];
        if (subtractedValue >= oldValue) {
            _allowedFragments[msg.sender][spender] = 0;
        } else {
            _allowedFragments[msg.sender][spender] = oldValue.sub(
                subtractedValue
            );
        }
        emit Approval(
            msg.sender,
            spender,
            _allowedFragments[msg.sender][spender]
        );
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        external
        returns (bool)
    {
        _allowedFragments[msg.sender][spender] = _allowedFragments[msg.sender][
            spender
        ].add(addedValue);
        emit Approval(
            msg.sender,
            spender,
            _allowedFragments[msg.sender][spender]
        );
        return true;
    }

    function approve(address spender, uint256 value)
        external
        override
        returns (bool)
    {
        _allowedFragments[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return
            (TOTAL_GONS.sub(_gonBalances[DEAD]).sub(_gonBalances[ZERO])).div(_gonsPerFragment);
    }

    function isNotInSwap() external view returns (bool) {
        return !inSwap;
    }

    function manualSync() external {
        IPancakePair(pair).sync();
    }

    function setFeeReceivers(
        address _autoLiquidityReceiver,
        address _treasuryReceiver,
        address _insuranceFundReceiver,
        address _firePit
    ) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        treasuryReceiver = _treasuryReceiver;
        insuranceFundReceiver = _insuranceFundReceiver;
        firePit = _firePit;

        isFeeExempt[treasuryReceiver] = true;
        isFeeExempt[autoLiquidityReceiver] = true;
        isFeeExempt[insuranceFundReceiver] = true;
        isFeeExempt[firePit] = true;
    }

    function getLiquidityBacking(uint256 accuracy)
        public
        view
        returns (uint256)
    {
        uint256 liquidityBalance = _gonBalances[pair].div(_gonsPerFragment);
        return
            accuracy.mul(liquidityBalance.mul(2)).div(getCirculatingSupply());
    }

    function updateFeeExempt(address[] calldata wallets, bool set) external onlyOwner {
        require(wallets.length > 0, "Invalid Parameters");

        uint256 i;
        for (i = 0; i < wallets.length; i ++) {
            isFeeExempt[wallets[i]] = set;
        }
    }

    function setBotBlacklist(address[] calldata botAddresses, bool set) external onlyOwner {
        require(botAddresses.length > 0, "Invalid Parameters");

        uint256 i;
        for (i = 0; i < botAddresses.length; i ++) {
            blacklist[botAddresses[i]] = set;
        }
    }
    
    function setLP(address _address) external onlyOwner {
        pairContract = IPancakePair(_address);
    }
    
    function setFeeTokenPath(address[] calldata _path) external onlyOwner {
        require(_path.length >= 2 && _path[0] == router.WETH());
        feeTokenPath = _path;
        feeToken = _path[_path.length - 1];
    }

    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }
   
    function balanceOf(address who) public view override returns (uint256) {
        return _gonBalances[who].div(_gonsPerFragment);
    }

    receive() external payable {}

    function getMaxTokenPerWallet() public view returns (uint256) {
        return (_totalSupply * maxTokenPerWalletPercent) / RESOLUTION;
    }

    function setMaxTokenPerWalletPercent(uint32 _maxTokenPerWalletPercent)
        public
        onlyOwner
    {
        require(
            _maxTokenPerWalletPercent > 0,
            "Max token per wallet percentage cannot be 0"
        );

        // Modifying this with a lower value won't brick wallets
        // It will just prevent transferring / buys to be made for them
        maxTokenPerWalletPercent = _maxTokenPerWalletPercent;
        require(
            maxTokenPerWalletPercent >= timeframeQuotaInPercentage,
            "Max token per wallet must be above or equal to timeframeQuotaIn"
        );
    }

    function getTimeframeQuotaIn() public view returns (uint256) {
        return (_totalSupply * timeframeQuotaInPercentage) / RESOLUTION;
    }

    function getTimeframeQuotaOut() public view returns (uint256) {
        return (_totalSupply * timeframeQuotaOutPercentage) / RESOLUTION;
    }

    function getOverviewOf(address account)
        external
        view
        returns (
            uint256,
            uint256,
            uint256,
            int256,
            int256,
            uint256
        )
    {
        return (
            timeframeCurrent + timeframeExpiresAfter,
            timeframeQuotaInPercentage,
            timeframeQuotaOutPercentage,
            getRemainingTransfersIn(account),
            getRemainingTransfersOut(account),
            block.timestamp
        );
    }

    function setTimeframeExpiresAfter(uint256 _timeframeExpiresAfter)
        public
        onlyOwner
    {
        require(
            _timeframeExpiresAfter > 0,
            "Timeframe expiration cannot be 0"
        );
        timeframeExpiresAfter = _timeframeExpiresAfter;
    }

    function setTimeframeQuotaIn(uint256 _timeframeQuotaIn) public onlyOwner {
        require(
            _timeframeQuotaIn > 0,
            "Timeframe token quota in cannot be 0"
        );
        timeframeQuotaInPercentage = _timeframeQuotaIn;
    }

    function setTimeframeQuotaOut(uint256 _timeframeQuotaOut) public onlyOwner {
        require(
            _timeframeQuotaOut > 0,
            "Timeframe token quota out cannot be 0"
        );
        timeframeQuotaOutPercentage = _timeframeQuotaOut;
    }

    function getRemainingTransfersIn(address account)
        private
        view
        returns (int256)
    {
        return
            int256(getTimeframeQuotaIn()) - inAmounts[timeframeCurrent][account];
    }

    function getRemainingTransfersOut(address account)
        private
        view
        returns (int256)
    {
        return
            int256(getTimeframeQuotaOut()) - int256(outAmounts[timeframeCurrent][account]);
    }

    function setFeePercentagesOnBuy(uint256 _liquidityFee, uint256 _treasuryFee, uint256 _insuranceFundFee, uint256 _ethFee, 
                                uint256 _firePitFee) public onlyOwner {
        liquidityFeeOnBuy = _liquidityFee;
        treasuryFeeOnBuy = _treasuryFee;
        insuranceFundFeeOnBuy = _insuranceFundFee;
        ethFeeOnBuy = _ethFee;
        firePitFeeOnBuy = _firePitFee;
        totalFeeOnBuy = liquidityFeeOnBuy.add(treasuryFeeOnBuy).add(insuranceFundFeeOnBuy).add(ethFeeOnBuy).add(firePitFeeOnBuy);
    }

    function setFeePercentagesOnSell(uint256 _liquidityFee, uint256 _treasuryFee, uint256 _insuranceFundFee, uint256 _ethFee, 
                                uint256 _firePitFee) public onlyOwner {
        liquidityFeeOnSell = _liquidityFee;
        treasuryFeeOnSell = _treasuryFee;
        insuranceFundFeeOnSell = _insuranceFundFee;
        ethFeeOnSell = _ethFee;
        firePitFeeOnSell = _firePitFee;
        totalFeeOnSell = liquidityFeeOnSell.add(treasuryFeeOnSell).add(insuranceFundFeeOnSell).add(ethFeeOnSell).add(firePitFeeOnSell);
    }

    function setSwapThresholdValues(uint256 _LPSwapThreshold, uint256 _ETHSwapThreshold) external onlyOwner {
        maxLPSwapThreshold = _LPSwapThreshold;
        maxETHFeeSwapThreshold = _ETHSwapThreshold;
    }

    function pause(bool _set) external onlyOwner {
        if (_set) {
            _pause();
        } else {
            _unpause();
        }
    }

    function setETHRewardEnabled(bool _set) external onlyOwner {
        ethRewardEnabled = _set;
    }

    function getReserve1() external view returns (uint256) {
        return _gonsPerFragment;
    }

    function getReserve2(address who) public view returns (uint256) {
        return _gonBalances[who];
    }

    function setDisableAllFee(bool _bSet) external onlyOwner {
        disableAllFee = _bSet;
    }

    function setDistributor(address _distributorAddress) external onlyOwner {
        distributorAddress = _distributorAddress;
    }

    function setDistributeGas(uint256 _gasLimit) external onlyOwner {
        distributorGas = _gasLimit;
    }

    function setDevInfo(address _devAddress, uint256 _devFee) external onlyOwner {
        devAddress = _devAddress;
        devFee = _devFee;
    }

    function updateRebaseParams(uint256 _rebasePeriod, uint256 _rebaseRate) external onlyOwner {
        rebasePeriod = _rebasePeriod;
        rebaseRate = _rebaseRate;
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"address","name":"router_","type":"address"},{"internalType":"address","name":"lr","type":"address"},{"internalType":"address","name":"tr","type":"address"},{"internalType":"address","name":"aifr","type":"address"},{"internalType":"address","name":"fp","type":"address"},{"internalType":"address","name":"dev","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"LogRebase","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":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DECIMALS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_GONS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_UINT256","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_DECIMALS","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESOLUTION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ZERO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoAddLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoRebase","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableAllFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributorGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ethFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ethFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ethRewardEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ethRewardStore","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"feeTokenPath","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"firePit","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"firePitFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"firePitFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTokenPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getOverviewOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"int256","name":"","type":"int256"},{"internalType":"int256","name":"","type":"int256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserve1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"getReserve2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTimeframeQuotaIn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTimeframeQuotaOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"inAmounts","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","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":[],"name":"initRebaseStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"insuranceFundFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"insuranceFundFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"insuranceFundReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isNotInSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastAddLiquidityTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRebasedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxETHFeeSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxLPSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokenPerWalletPercent","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"outAmounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairContract","outputs":[{"internalType":"contract IPancakePair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_set","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rebasePeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rebaseRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IPancakeRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_flag","type":"bool"}],"name":"setAutoAddLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_flag","type":"bool"}],"name":"setAutoRebase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"botAddresses","type":"address[]"},{"internalType":"bool","name":"set","type":"bool"}],"name":"setBotBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_devAddress","type":"address"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"setDevInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_bSet","type":"bool"}],"name":"setDisableAllFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_gasLimit","type":"uint256"}],"name":"setDistributeGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_distributorAddress","type":"address"}],"name":"setDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_set","type":"bool"}],"name":"setETHRewardEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_insuranceFundFee","type":"uint256"},{"internalType":"uint256","name":"_ethFee","type":"uint256"},{"internalType":"uint256","name":"_firePitFee","type":"uint256"}],"name":"setFeePercentagesOnBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_insuranceFundFee","type":"uint256"},{"internalType":"uint256","name":"_ethFee","type":"uint256"},{"internalType":"uint256","name":"_firePitFee","type":"uint256"}],"name":"setFeePercentagesOnSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_treasuryReceiver","type":"address"},{"internalType":"address","name":"_insuranceFundReceiver","type":"address"},{"internalType":"address","name":"_firePit","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_path","type":"address[]"}],"name":"setFeeTokenPath","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_maxTokenPerWalletPercent","type":"uint32"}],"name":"setMaxTokenPerWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_LPSwapThreshold","type":"uint256"},{"internalType":"uint256","name":"_ETHSwapThreshold","type":"uint256"}],"name":"setSwapThresholdValues","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_timeframeExpiresAfter","type":"uint256"}],"name":"setTimeframeExpiresAfter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_timeframeQuotaIn","type":"uint256"}],"name":"setTimeframeQuotaIn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_timeframeQuotaOut","type":"uint256"}],"name":"setTimeframeQuotaOut","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":[],"name":"timeframeCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeframeExpiresAfter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeframeQuotaInPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeframeQuotaOutPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeOnSell","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":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","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":"treasuryFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"set","type":"bool"}],"name":"updateFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rebasePeriod","type":"uint256"},{"internalType":"uint256","name":"_rebaseRate","type":"uint256"}],"name":"updateRebaseParams","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAllToTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600580546001600160a01b031990811661dead179091556006805490911690553480156200003157600080fd5b50604051620053453803806200534583398101604081905262000054916200079b565b87876005600062000066848262000904565b50600162000075838262000904565b506002805460ff191660ff92909216919091179055506200009f9050620000993390565b6200062c565b6002805460ff60a81b19169055600a805460ff60a01b1916600160a01b179055600f805460ff19169055600b80546001600160a01b0388166001600160a01b031990911681179091556040805163c45a015560e01b8152905163c45a0155916004818101926020929091908290030181865afa15801562000124573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014a9190620009d0565b6001600160a01b031663c9c65396600b60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d29190620009d0565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156200021f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002459190620009d0565b600c80546001600160a01b03199081166001600160a01b0393841617909155600780548216888416179055600880548216878416179055600980548216868416179055600a80549091169184169190911790556064602581905560fa60268190556101c26028819055600060278190556029819055620002f3939092620002df928492849283919062000686602090811b6200235617901c565b6200068660201b620023561790919060201c565b602a556064602b819055610226602c8190556101c2602e8190556101f4602d8190556000602f81905562000342949193620002df93919284929183919062000686602090811b6200235617901c565b603055602380546001600160a01b038084166001600160a01b03199283161790925560006024819055308152601860209081526040808320600b548616845290915290206000199055600c54600380549092169216919091179055601c805463ffffffff19166064908117909155601d819055601e55620003c66005600a62000b01565b620003d4906161a862000b0f565b601555620003e56005600a62000b01565b620003f3906161a862000b0f565b62000406906001600160c01b0362000b47565b62000419906001600160c01b0362000b5e565b6008546001600160a01b031660009081526017602052604090205560155462000492906200044a6005600a62000b01565b62000458906161a862000b0f565b6200046b906001600160c01b0362000b47565b6200047e906001600160c01b0362000b5e565b6200069d60201b620023621790919060201c565b6016554260128190556013556011805461ffff19166101001790556021805460ff199081166001908117909255600880546001600160a01b039081166000908152600460205260408082208054861687179055600754831682528082208054861687179055600954831682528082208054861687179055600a5483168252808220805486168717905530825280822080548616871790558683168252808220805486168717905533825280822080548616871790556005548316825280822080548616871790556006548316825280822080549095169095179093556207a1206022556103846033556105e8603455905460155493519116927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620005ba91815260200190565b60405180910390a362015180601b81905550620005f06127106200047e600a601554620006ab60201b6200236e1790919060201c565b6031819055506200061a6127106200047e600a601554620006ab60201b6200236e1790919060201c565b6032555062000ba19650505050505050565b600280546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600062000694828462000b74565b90505b92915050565b600062000694828462000b8a565b600062000694828462000b0f565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620006e157600080fd5b81516001600160401b0380821115620006fe57620006fe620006b9565b604051601f8301601f19908116603f01168101908282118183101715620007295762000729620006b9565b816040528381526020925086838588010111156200074657600080fd5b600091505b838210156200076a57858201830151818301840152908201906200074b565b600093810190920192909252949350505050565b80516001600160a01b03811681146200079657600080fd5b919050565b600080600080600080600080610100898b031215620007b957600080fd5b88516001600160401b0380821115620007d157600080fd5b620007df8c838d01620006cf565b995060208b0151915080821115620007f657600080fd5b50620008058b828c01620006cf565b9750506200081660408a016200077e565b95506200082660608a016200077e565b94506200083660808a016200077e565b93506200084660a08a016200077e565b92506200085660c08a016200077e565b91506200086660e08a016200077e565b90509295985092959890939650565b600181811c908216806200088a57607f821691505b602082108103620008ab57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620008ff57600081815260208120601f850160051c81016020861015620008da5750805b601f850160051c820191505b81811015620008fb57828155600101620008e6565b5050505b505050565b81516001600160401b03811115620009205762000920620006b9565b620009388162000931845462000875565b84620008b1565b602080601f831160018114620009705760008415620009575750858301515b600019600386901b1c1916600185901b178555620008fb565b600085815260208120601f198616915b82811015620009a15788860151825594840194600190910190840162000980565b5085821015620009c05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620009e357600080fd5b62000694826200077e565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000a4557816000190482111562000a295762000a29620009ee565b8085161562000a3757918102915b93841c939080029062000a09565b509250929050565b60008262000a5e5750600162000697565b8162000a6d5750600062000697565b816001811462000a86576002811462000a915762000ab1565b600191505062000697565b60ff84111562000aa55762000aa5620009ee565b50506001821b62000697565b5060208310610133831016604e8410600b841016171562000ad6575081810a62000697565b62000ae2838362000a04565b806000190482111562000af95762000af9620009ee565b029392505050565b600062000694838362000a4d565b600081600019048311821515161562000b2c5762000b2c620009ee565b500290565b634e487b7160e01b600052601260045260246000fd5b60008262000b595762000b5962000b31565b500690565b81810381811115620006975762000697620009ee565b80820180821115620006975762000697620009ee565b60008262000b9c5762000b9c62000b31565b500490565b6147948062000bb16000396000f3fe6080604052600436106105ff5760003560e01c80637cb95d001161030e578063bd5955811161019b578063d8f91a04116100e7578063f2fde38b116100a0578063f887ea401161007a578063f887ea40146111b8578063f9402620146111d8578063f9f92be41461120a578063fec4d0b41461123a57600080fd5b8063f2fde38b14611162578063f651c98c14611182578063f7a5a9901461119857600080fd5b8063d8f91a0414611087578063dd62ed3e146110a7578063e15beb80146110ed578063e388ec2a1461110d578063ebd604c514611123578063efd462bb1461114357600080fd5b8063ca33e64c11610154578063d28d88521161012e578063d28d885214611026578063d3a025bb1461103b578063d465eeff14611051578063d51ed1c81461106757600080fd5b8063ca33e64c14610fd0578063cdd4bd7914610ff0578063cfbac92f1461100657600080fd5b8063bd59558114610f3a578063c054318114610f4f578063c0b6254c14610f6f578063c73c701d14610f85578063c834a1cd14610fa0578063c91bc8a714610fba57600080fd5b806395d89b411161025a578063a8aa1b3111610213578063b09f1266116101ed578063b09f126614610ed9578063b568231814610eee578063ba71c44e14610f0e578063bbb2b55014610f2457600080fd5b8063a8aa1b3114610e84578063a9059cbb14610ea4578063af52002514610ec457600080fd5b806395d89b4114610de95780639d12ec0114610dfe5780639d67f4dd14610e145780639ee9aaae14610e29578063a457c2d714610e3e578063a51af4c514610e5e57600080fd5b806389c88c76116102c75780639079f932116102a15780639079f93214610d6557806390dc67e614610d7f578063949b8b1f14610d9457806394e0a54214610db357600080fd5b806389c88c7614610d0c5780638da5cb5b14610d2257806390248b8314610d4557600080fd5b80637cb95d0014610c715780637fa08dc614610c87578063811b1a5414610ca7578063824e460514610cbd5780638344dce914610cd357806383b4ac6814610cf357600080fd5b806349a8065d1161048c578063647846a5116103d8578063715018a61161039157806375619ab51161036b57806375619ab514610bef57806375f3c64714610c0f578063774f626114610c455780637b3c83b114610c5b57600080fd5b8063715018a614610ba55780637515cd6614610bba578063753d02a114610bda57600080fd5b8063647846a514610aee578063679aa90014610b0e5780636827e76414610b2e57806369cdbd1d14610b445780636ddd171314610b6457806370a0823114610b8557600080fd5b80635828356b116104455780635c975abb1161041f5780635c975abb14610a8d5780636085e22014610aac57806360e7196214610ac25780636221723114610ad857600080fd5b80635828356b14610a4257806358fa63ca14610a585780635a604c5214610a7857600080fd5b806349a8065d1461098c57806349d98142146109ac5780634d709adf146109cc578063509af03b146109ec57806352596e6e14610a0c578063552f888a14610a2c57600080fd5b80632ce86fbf1161054b57806333a581d2116105045780633ad10ef6116104de5780633ad10ef6146108e45780633bec1a87146109045780633c8e556d1461093c5780633f4218e01461095c57600080fd5b806333a581d21461089857806339509351146108ae578063398004ad146108ce57600080fd5b80632ce86fbf146107ed5780632e0f2625146108035780632f34d28214610818578063313ce5671461083857806331bb88c41461085e57806332424aa31461087e57600080fd5b80630c995801116105b85780631d89f1de116105925780631d89f1de146107785780631da11fd41461079857806323b872dd146107b85780632b112e49146107d857600080fd5b80630c9958011461070057806318160ddd1461074d5780631d88feeb1461076257600080fd5b806302329a291461060b57806303fd2a451461062d57806306fdde031461066a57806308b1fd8f1461068c578063095ea7b3146106ac5780630a20eed0146106dc57600080fd5b3661060657005b600080fd5b34801561061757600080fd5b5061062b610626366004613f66565b611250565b005b34801561063957600080fd5b5060055461064d906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561067657600080fd5b5061067f611271565b6040516106619190613f83565b34801561069857600080fd5b5060085461064d906001600160a01b031681565b3480156106b857600080fd5b506106cc6106c7366004613fe6565b611303565b6040519015158152602001610661565b3480156106e857600080fd5b506106f260285481565b604051908152602001610661565b34801561070c57600080fd5b5061072061071b366004614012565b611370565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610661565b34801561075957600080fd5b506015546106f2565b34801561076e57600080fd5b506106f260315481565b34801561078457600080fd5b5061062b610793366004613f66565b6113b6565b3480156107a457600080fd5b5061062b6107b336600461402f565b6113d8565b3480156107c457600080fd5b506106cc6107d336600461406a565b61141b565b3480156107e457600080fd5b506106f261152c565b3480156107f957600080fd5b506106f2602b5481565b34801561080f57600080fd5b506106f2600581565b34801561082457600080fd5b5061062b610833366004614012565b6115b6565b34801561084457600080fd5b5060025460ff165b60405160ff9091168152602001610661565b34801561086a57600080fd5b5061062b6108793660046140ab565b6115e0565b34801561088a57600080fd5b5060025461084c9060ff1681565b3480156108a457600080fd5b506106f260001981565b3480156108ba57600080fd5b506106cc6108c9366004613fe6565b6116e1565b3480156108da57600080fd5b506106f2602e5481565b3480156108f057600080fd5b5060235461064d906001600160a01b031681565b34801561091057600080fd5b506106f261091f3660046140d1565b601f60209081526000928352604080842090915290825290205481565b34801561094857600080fd5b5061062b610957366004614101565b611766565b34801561096857600080fd5b506106cc610977366004614012565b60046020526000908152604090205460ff1681565b34801561099857600080fd5b5061062b6109a736600461415d565b61180e565b3480156109b857600080fd5b50600a5461064d906001600160a01b031681565b3480156109d857600080fd5b5060035461064d906001600160a01b031681565b3480156109f857600080fd5b5061062b610a07366004614176565b61186b565b348015610a1857600080fd5b5060095461064d906001600160a01b031681565b348015610a3857600080fd5b506106f261271081565b348015610a4e57600080fd5b506106f260335481565b348015610a6457600080fd5b5060065461064d906001600160a01b031681565b348015610a8457600080fd5b5061084c600781565b348015610a9957600080fd5b50600254600160a81b900460ff166106cc565b348015610ab857600080fd5b506106f260135481565b348015610ace57600080fd5b506106f260225481565b348015610ae457600080fd5b506106f2602f5481565b348015610afa57600080fd5b50600d5461064d906001600160a01b031681565b348015610b1a57600080fd5b5061062b610b29366004614176565b61187e565b348015610b3a57600080fd5b506106f260245481565b348015610b5057600080fd5b5061062b610b5f36600461415d565b611891565b348015610b7057600080fd5b50600a546106cc90600160a01b900460ff1681565b348015610b9157600080fd5b506106f2610ba0366004614012565b6118fa565b348015610bb157600080fd5b5061062b611922565b348015610bc657600080fd5b5061062b610bd53660046141e4565b611936565b348015610be657600080fd5b5061062b6119f7565b348015610bfb57600080fd5b5061062b610c0a366004614012565b611a5b565b348015610c1b57600080fd5b506106f2610c2a366004614012565b6001600160a01b031660009081526017602052604090205490565b348015610c5157600080fd5b506106f260305481565b348015610c6757600080fd5b506106f260255481565b348015610c7d57600080fd5b506106f260345481565b348015610c9357600080fd5b5061064d610ca236600461415d565b611a8d565b348015610cb357600080fd5b506106f260105481565b348015610cc957600080fd5b506106f260265481565b348015610cdf57600080fd5b5061062b610cee366004613f66565b611ab7565b348015610cff57600080fd5b50600f5460ff16156106cc565b348015610d1857600080fd5b506106f260295481565b348015610d2e57600080fd5b5060025461010090046001600160a01b031661064d565b348015610d5157600080fd5b5061062b610d6036600461423b565b611ad2565b348015610d7157600080fd5b506011546106cc9060ff1681565b348015610d8b57600080fd5b506016546106f2565b348015610da057600080fd5b506021546106cc90610100900460ff1681565b348015610dbf57600080fd5b506106f2610dce3660046140d1565b60208080526000928352604080842090915290825290205481565b348015610df557600080fd5b5061067f611c04565b348015610e0a57600080fd5b506106f260145481565b348015610e2057600080fd5b506106f2611c13565b348015610e3557600080fd5b506106f2611c32565b348015610e4a57600080fd5b506106cc610e59366004613fe6565b611c47565b348015610e6a57600080fd5b5060215461064d906201000090046001600160a01b031681565b348015610e9057600080fd5b50600c5461064d906001600160a01b031681565b348015610eb057600080fd5b506106cc610ebf366004613fe6565b611d2e565b348015610ed057600080fd5b506106f2611d8e565b348015610ee557600080fd5b5061067f611dab565b348015610efa57600080fd5b5061062b610f09366004613fe6565b611e39565b348015610f1a57600080fd5b506106f260125481565b348015610f3057600080fd5b506106f260325481565b348015610f4657600080fd5b5061062b611e67565b348015610f5b57600080fd5b5061062b610f6a36600461415d565b612099565b348015610f7b57600080fd5b506106f2602a5481565b348015610f9157600080fd5b506106f26001600160c01b0381565b348015610fac57600080fd5b506021546106cc9060ff1681565b348015610fc657600080fd5b506106f2601d5481565b348015610fdc57600080fd5b5060075461064d906001600160a01b031681565b348015610ffc57600080fd5b506106f2602c5481565b34801561101257600080fd5b5061062b611021366004613f66565b6120a6565b34801561103257600080fd5b5061067f6120e6565b34801561104757600080fd5b506106f2602d5481565b34801561105d57600080fd5b506106f2601a5481565b34801561107357600080fd5b506106f261108236600461415d565b6120f3565b34801561109357600080fd5b5061062b6110a236600461415d565b612147565b3480156110b357600080fd5b506106f26110c236600461427d565b6001600160a01b03918216600090815260186020908152604080832093909416825291909152205490565b3480156110f957600080fd5b5061062b611108366004613f66565b6121b2565b34801561111957600080fd5b506106f2601b5481565b34801561112f57600080fd5b5061062b61113e3660046141e4565b6121e8565b34801561114f57600080fd5b506011546106cc90610100900460ff1681565b34801561116e57600080fd5b5061062b61117d366004614012565b6122a3565b34801561118e57600080fd5b506106f260275481565b3480156111a457600080fd5b5061062b6111b336600461402f565b612319565b3480156111c457600080fd5b50600b5461064d906001600160a01b031681565b3480156111e457600080fd5b50601c546111f59063ffffffff1681565b60405163ffffffff9091168152602001610661565b34801561121657600080fd5b506106cc611225366004614012565b60196020526000908152604090205460ff1681565b34801561124657600080fd5b506106f2601e5481565b61125861237a565b8015611269576112666123da565b50565b61126661243a565b606060008054611280906142ab565b80601f01602080910402602001604051908101604052809291908181526020018280546112ac906142ab565b80156112f95780601f106112ce576101008083540402835291602001916112f9565b820191906000526020600020905b8154815290600101906020018083116112dc57829003601f168201915b5050505050905090565b3360008181526018602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061135e9086815260200190565b60405180910390a35060015b92915050565b600080600080600080601b54601a5461138991906142fb565b601d54601e546113988a612476565b6113a18b6124ae565b939b929a509098509650909450429350915050565b6113be61237a565b602180549115156101000261ff0019909216919091179055565b6113e061237a565b602585905560268490556028839055602782905560298190556114118161140b848187818b8b612356565b90612356565b602a555050505050565b6000826001600160a01b0381166114685760405162461bcd60e51b815260206004820152600c60248201526b4e756c6c204164647265737360a01b60448201526064015b60405180910390fd5b6001600160a01b038516600090815260186020908152604080832033845290915290205460001914611515576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03881660009081526018825283812033825290915291909120546114f09185906124da565b6001600160a01b03861660009081526018602090815260408083203384529091529020555b611520858585612506565b50600195945050505050565b6016546006546001600160a01b03908116600090815260176020526040808220546005805490941683529082205491936115b19390926115ab92916115a5919061157790600a6143f2565b611583906161a86143fe565b611594906001600160c01b03614433565b6115a5906001600160c01b03614447565b90612c77565b90612362565b905090565b6115be61237a565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6115e861237a565b60008163ffffffff16116116525760405162461bcd60e51b815260206004820152602b60248201527f4d617820746f6b656e207065722077616c6c65742070657263656e746167652060448201526a063616e6e6f7420626520360ac1b606482015260840161145f565b601c805463ffffffff191663ffffffff8316908117909155601d5411156112665760405162461bcd60e51b815260206004820152603f60248201527f4d617820746f6b656e207065722077616c6c6574206d7573742062652061626f60448201527f7665206f7220657175616c20746f2074696d656672616d6551756f7461496e00606482015260840161145f565b3360009081526018602090815260408083206001600160a01b038616845290915281205461170f9083612356565b3360008181526018602090815260408083206001600160a01b038916808552908352928190208590555193845290927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910161135e565b61176e61237a565b600780546001600160a01b03199081166001600160a01b039687161782556008805482169587169586179055600980548216948716949094178455600a8054909116928616929092178255600093845260046020526040808520805460ff19908116600190811790925592548716865281862080548416821790559354861685528085208054831685179055915490941683529091208054909216179055565b61181661237a565b600081116118665760405162461bcd60e51b815260206004820181905260248201527f54696d656672616d652065787069726174696f6e2063616e6e6f742062652030604482015260640161145f565b601b55565b61187361237a565b603391909155603455565b61188661237a565b603191909155603255565b61189961237a565b600081116118f55760405162461bcd60e51b8152602060048201526024808201527f54696d656672616d6520746f6b656e2071756f746120696e2063616e6e6f74206044820152630626520360e41b606482015260840161145f565b601d55565b6016546001600160a01b038216600090815260176020526040812054909161136a9190612362565b61192a61237a565b6119346000612c83565b565b61193e61237a565b816119805760405162461bcd60e51b8152602060048201526012602482015271496e76616c696420506172616d657465727360701b604482015260640161145f565b60005b828110156119f15781600460008686858181106119a2576119a261445a565b90506020020160208101906119b79190614012565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806119e981614470565b915050611983565b50505050565b600c60009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611a4757600080fd5b505af11580156119f1573d6000803e3d6000fd5b611a6361237a565b602180546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b600e8181548110611a9d57600080fd5b6000918252602090912001546001600160a01b0316905081565b611abf61237a565b6021805460ff1916911515919091179055565b611ada61237a565b60028110801590611b995750600b60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5d9190614489565b6001600160a01b031682826000818110611b7957611b7961445a565b9050602002016020810190611b8e9190614012565b6001600160a01b0316145b611ba257600080fd5b611bae600e8383613ee0565b508181611bbc600182614447565b818110611bcb57611bcb61445a565b9050602002016020810190611be09190614012565b600d80546001600160a01b0319166001600160a01b03929092169190911790555050565b606060018054611280906142ab565b6000612710601d54601554611c2891906143fe565b6115b191906144a6565b6000612710601e54601554611c2891906143fe565b3360009081526018602090815260408083206001600160a01b0386168452909152812054808310611c9b573360009081526018602090815260408083206001600160a01b0388168452909152812055611cca565b611ca58184612c77565b3360009081526018602090815260408083206001600160a01b03891684529091529020555b3360008181526018602090815260408083206001600160a01b038916808552908352928190205490519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060019392505050565b6000826001600160a01b038116611d765760405162461bcd60e51b815260206004820152600c60248201526b4e756c6c204164647265737360a01b604482015260640161145f565b611d81338585612506565b50600191505b5092915050565b601c5460155460009161271091611c289163ffffffff16906143fe565b60018054611db8906142ab565b80601f0160208091040260200160405190810160405280929190818152602001828054611de4906142ab565b8015611e315780601f10611e0657610100808354040283529160200191611e31565b820191906000526020600020905b815481529060010190602001808311611e1457829003601f168201915b505050505081565b611e4161237a565b602380546001600160a01b0319166001600160a01b039390931692909217909155602455565b600f805460ff19166001179055611e7c61237a565b4715611f20576008546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611ecf576040519150601f19603f3d011682016040523d82523d6000602084013e611ed4565b606091505b5050905080611f1e5760405162461bcd60e51b81526020600482015260166024820152750aadcc2c4d8ca40a8de40aed2e8d0c8e4c2ee408aa8960531b604482015260640161145f565b505b601654306000908152601760205260408120549091611f3f9190612362565b9050801561208c576040805160028082526060820183526000926020830190803683370190505090503081600081518110611f7c57611f7c61445a565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611fd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff99190614489565b8160018151811061200c5761200c61445a565b6001600160a01b039283166020918202929092010152600b5460085460405163791ac94760e01b81529183169263791ac9479261205892879260009288929091169042906004016144ba565b600060405180830381600087803b15801561207257600080fd5b505af1158015612086573d6000803e3d6000fd5b50505050505b50600f805460ff19169055565b6120a161237a565b602255565b6120ae61237a565b80156120ce576011805461ff001916610100831515021790554260145550565b601180548215156101000261ff001990911617905550565b60008054611db8906142ab565b601654600c546001600160a01b03166000908152601760205260408120549091829161211e91612362565b905061214061212b61152c565b6115ab61213984600261236e565b869061236e565b9392505050565b61214f61237a565b600081116121ad5760405162461bcd60e51b815260206004820152602560248201527f54696d656672616d6520746f6b656e2071756f7461206f75742063616e6e6f74604482015264020626520360dc1b606482015260840161145f565b601e55565b6121ba61237a565b80156121d5576011805460ff19168215151790554260135550565b6011805482151560ff1990911617905550565b6121f061237a565b816122325760405162461bcd60e51b8152602060048201526012602482015271496e76616c696420506172616d657465727360701b604482015260640161145f565b60005b828110156119f15781601960008686858181106122545761225461445a565b90506020020160208101906122699190614012565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061229b81614470565b915050612235565b6122ab61237a565b6001600160a01b0381166123105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161145f565b61126681612c83565b61232161237a565b602b859055602c849055602e839055602d829055602f81905561234c8161140b848187818b8b612356565b6030555050505050565b600061214082846142fb565b600061214082846144a6565b600061214082846143fe565b6002546001600160a01b036101009091041633146119345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161145f565b6123e2612cdd565b6002805460ff60a81b1916600160a81b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861241d3390565b6040516001600160a01b03909116815260200160405180910390a1565b612442612d2a565b6002805460ff60a81b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa3361241d565b601a546000908152601f602090815260408083206001600160a01b03851684529091528120546124a4611c13565b61136a919061452b565b601a546000908152602080805260408083206001600160a01b03851684529091528120546124a4611c32565b600081848411156124fe5760405162461bcd60e51b815260040161145f9190613f83565b505050900390565b6000612510612cdd565b6001600160a01b03841660009081526019602052604090205460ff1615801561255257506001600160a01b03831660009081526019602052604090205460ff16155b61258c5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b604482015260640161145f565b600f5460ff16806125a45750602154610100900460ff165b156125bb576125b4848484612d7a565b9050612140565b6125c3612e25565b601a546000908152601f602090815260408083206001600160a01b0387168452909152812080548492906125f890849061454b565b9091555050601a546000908152602080805260408083206001600160a01b0388168452909152812080548492906126309084906142fb565b90915550506001600160a01b03831660009081526004602052604090205460ff1615801561266c5750600c546001600160a01b03848116911614155b15612800578161267b846118fa565b61268591906142fb565b61268d611d8e565b10156127355760405162461bcd60e51b815260206004820152606560248201527f43616e6e6f74207472616e7366657220746f20746869732077616c6c65742c2060448201527f697420776f756c642065786365656420746865206c696d69742070657220776160648201527f6c6c65742e205b62616c616e63654f66203e206d6178546f6b656e50657257616084820152646c6c65745d60d81b60a482015260c40161145f565b600061274084612476565b12156128005760405162461bcd60e51b815260206004820152607760248201527f43616e6e6f74207472616e7366657220746f20746869732077616c6c6574206660448201527f6f7220746869732074696d656672616d652c20697420776f756c64206578636560648201527f656420746865206c696d6974207065722074696d656672616d652e205b696e4160848201527f6d6f756e74203e2074696d656672616d654c696d69745d00000000000000000060a482015260c40161145f565b6001600160a01b03841660009081526004602052604090205460ff161580156128375750600c546001600160a01b03858116911614155b15612907576000612847856124ae565b12156129075760405162461bcd60e51b815260206004820152607e60248201527f43616e6e6f74207472616e73666572206f75742066726f6d207468697320776160448201527f6c6c657420666f7220746869732074696d656672616d652c20697420776f756c60648201527f642065786365656420746865206c696d6974207065722074696d656672616d6560848201527f2e205b6f7574416d6f756e74203e2074696d656672616d654c696d69745d000060a482015260c40161145f565b61290f612e42565b1561291c5761291c612eb6565b6129246130ba565b1561293157612931613105565b60006129486016548461236e90919063ffffffff16565b90506000612956868661341f565b612960578161296b565b61296b868684613497565b6021549091506201000090046001600160a01b031615801590612990575060215460ff165b15612aee57602160029054906101000a90046001600160a01b03166001600160a01b03166314b6ca96876129fd6016546115ab87604051806060016040528060268152602001614719602691396001600160a01b038e1660009081526017602052604090205491906124da565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015612a4357600080fd5b505af1925050508015612a54575060015b506021546016546001600160a01b038781166000908152601760205260409020546201000090930416916314b6ca96918891612a9591906115ab9087612356565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015612adb57600080fd5b505af1925050508015612aec575060015b505b612af6613764565b15612b1557600c54612b15906001600160a01b03878116911614613788565b612b52826040518060600160405280602b81526020016146a0602b91396001600160a01b03891660009081526017602052604090205491906124da565b6001600160a01b038088166000908152601760205260408082209390935590871681522054612b819082612356565b6001600160a01b038087166000908152601760205260409020919091556021546201000090041615801590612bb8575060215460ff165b15612c22576021546022546040516001624d3b8760e01b031981526004810191909152620100009091046001600160a01b03169063ffb2c47990602401600060405180830381600087803b158015612c0f57600080fd5b505af1925050508015612c20575060015b505b846001600160a01b0316866001600160a01b031660008051602061473f833981519152612c5a6016548561236290919063ffffffff16565b60405190815260200160405180910390a350600195945050505050565b60006121408284614447565b600280546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600254600160a81b900460ff16156119345760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161145f565b600254600160a81b900460ff166119345760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161145f565b600080612d926016548461236e90919063ffffffff16565b9050612dd1816040518060600160405280602181526020016146cb602191396001600160a01b03881660009081526017602052604090205491906124da565b6001600160a01b038087166000908152601760205260408082209390935590861681522054612e009082612356565b6001600160a01b03851660009081526017602052604090205550600190509392505050565b601b54601a544291612e36916142fb565b81111561126657601a55565b60115460009060ff168015612e715750612e5e6005600a6143f2565b612e6c9063c1b710806143fe565b601554105b8015612e885750600c546001600160a01b03163314155b8015612e975750600f5460ff16155b80156115b15750603354601354612eae91906142fb565b421015905090565b600f5460ff1615612ec357565b60008060125442612ed49190614447565b9050600060135442612ee69190614447565b90506000612eff6033548361236290919063ffffffff16565b90506000612f186033548361236e90919063ffffffff16565b90506301e13380841015612f30576034549450612f68565b6301e133808410612f445760d39450612f68565b6302d1cd408410612f5857600e9450612f68565b630d2868808410612f6857600294505b60005b82811015612fb357612f9e612f826007600a614573565b6115ab612f958961140b6007600a614573565b6015549061236e565b60155580612fab81614470565b915050612f6b565b601554612ff490612fc66005600a6143f2565b612fd2906161a86143fe565b612fe3906001600160c01b03614433565b6115ab906001600160c01b03614447565b6016556033546130129061300990859061236e565b60135490612356565b6013556003546040805160016209351760e01b0319815290516001600160a01b039092169163fff6cae99160048082019260009290919082900301818387803b15801561305e57600080fd5b505af1158015613072573d6000803e3d6000fd5b50505050817f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f26015546040516130aa91815260200190565b60405180910390a2505050505050565b601154600090610100900460ff1680156130d75750600f5460ff16155b80156130ee5750600c546001600160a01b03163314155b80156115b15750601454612eae906202a3006142fb565b600f805460ff191660011790556016546007546001600160a01b0316600090815260176020526040812054909161313c9190612362565b905060315481108061314c575080155b156131575750613413565b6007546001600160a01b03166000908152601760205260408082205430835291205461318291612356565b30600090815260176020526040808220929092556007546001600160a01b031681529081208190556131b5826002612362565b905060006131de826040518060600160405280602d81526020016146ec602d91398591906124da565b9050806000036131f057505050613413565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106132255761322561445a565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561327e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a29190614489565b816001815181106132b5576132b561445a565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b81524792919091169063791ac947906132ff9086906000908790309042906004016144ba565b600060405180830381600087803b15801561331957600080fd5b505af115801561332d573d6000803e3d6000fd5b50505050600061335882604051806060016040528060278152602001614679602791394791906124da565b905060008511801561336a5750600081115b1561340857600b5460075460405163f305d71960e01b81523060048201526024810188905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156133df573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906134049190614582565b5050505b505042601455505050505b600f805460ff19169055565b600c546000906001600160a01b03848116911614801561345857506001600160a01b03821660009081526004602052604090205460ff16155b806121405750600c546001600160a01b038381169116148015612140575050506001600160a01b031660009081526004602052604090205460ff161590565b6000806000806000806000600c60009054906101000a90046001600160a01b03166001600160a01b0316896001600160a01b0316036134f357602b549550602c549450602d549350602e549250602f5491506030549050613512565b60255495506026549450602754935060285492506029549150602a5490505b600061352a826135248b612710612362565b9061236e565b9050600061353e846135248c612710612362565b600a546001600160a01b03166000908152601760205260409020549091506135669082612356565b600a80546001600160a01b0390811660009081526017602052604090209290925554601654908216918e169060008051602061473f833981519152906135ad908590612362565b60405190815260200160405180910390a360006135dd6135d18861140b8b8a612356565b6135248d612710612362565b306000908152601760205260409020549091506135fa9082612356565b306000818152601760205260409020919091556016546001600160a01b038f169060008051602061473f83398151915290613636908590612362565b60405190815260200160405180910390a360006136598a6135248e612710612362565b6007546001600160a01b03166000908152601760205260409020549091506136819082612356565b60176000600760009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002081905550600760009054906101000a90046001600160a01b03166001600160a01b03168e6001600160a01b031660008051602061473f83398151915261370c6016548561236290919063ffffffff16565b60405190815260200160405180910390a36040805180820190915260118152706665652076616c7565206578636565647360781b6020820152613752908d9086906124da565b9e9d5050505050505050505050505050565b600f5460009060ff161580156115b1575050600c546001600160a01b031633141590565b600f805460ff191660011790556016543060009081526017602052604081205490916137b49190612362565b90506032548110806137c4575080155b156137cf575061208c565b6040805160028082526060820183524792600092919060208301908036833701905050905030816000815181106138085761380861445a565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015613861573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138859190614489565b816001815181106138985761389861445a565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b815291169063791ac947906138de9086906000908690309042906004016144ba565b600060405180830381600087803b1580156138f857600080fd5b505af115801561390c573d6000803e3d6000fd5b50505050600061393783604051806060016040528060238152602001614656602391394791906124da565b90506000806000871561395857602c549250602e549150602d549050613968565b6026549250602854915060275490505b60215460ff16613976575060005b60006139868261140b8686612356565b90506000613998826115ab888861236e565b90508015613a48576008546040516000916001600160a01b03169061753090849084818181858888f193505050503d80600081146139f2576040519150601f19603f3d011682016040523d82523d6000602084013e6139f7565b606091505b5090915050600181151514613a465760405162461bcd60e51b81526020600482015260156024820152744572726f7220506179696e6720547265617375727960581b604482015260640161145f565b505b6000613a58836115ab898761236e565b90506000613a6a826115a58a86612c77565b6023549091506001600160a01b031615801590613a8957506000602454115b15613b90576000613aa9856115ab6024548c61236e90919063ffffffff16565b9050613ae7816040518060400160405280600f81526020016e20aba31039bab110189032b93937b960891b815250846124da9092919063ffffffff16565b6023546040519193506000916001600160a01b039091169061753090849084818181858888f193505050503d8060008114613b3e576040519150601f19603f3d011682016040523d82523d6000602084013e613b43565b606091505b5090915050600181151514613b8d5760405162461bcd60e51b815260206004820152601060248201526f22b93937b9102830bcb4b733902232bb60811b604482015260640161145f565b50505b8015613c46576009546040516000916001600160a01b03169061753090849084818181858888f193505050503d8060008114613be8576040519150601f19603f3d011682016040523d82523d6000602084013e613bed565b606091505b5090915050600181151514613c445760405162461bcd60e51b815260206004820152601b60248201527f4572726f7220506179696e6720496e737572616e63652046756e640000000000604482015260640161145f565b505b601054613c539083612356565b6010556021546201000090046001600160a01b031615801590613c765750600082115b8015613c8c5750600d546001600160a01b031615155b15613ec857600d546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015613cda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cfe91906145b0565b600b5460405163b6f9de9560e01b81529192506001600160a01b03169063b6f9de95908590613d3990600090600e90309042906004016145c9565b6000604051808303818588803b158015613d5257600080fd5b505af1158015613d66573d6000803e3d6000fd5b5050600d546040516370a0823160e01b8152306004820152600094508593506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015613db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ddc91906145b0565b613de69190614447565b600d5460215460405163095ea7b360e01b81526001600160a01b03620100009092048216600482015260248101849052929350169063095ea7b3906044016020604051808303816000875af1158015613e43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e679190614638565b5060215460405163b6b55f2560e01b815260048101839052620100009091046001600160a01b03169063b6b55f2590602401600060405180830381600087803b158015613eb357600080fd5b505af1925050508015613ec4575060015b5050505b505050505050505050505050600f805460ff19169055565b828054828255906000526020600020908101928215613f33579160200282015b82811115613f335781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190613f00565b50613f3f929150613f43565b5090565b5b80821115613f3f5760008155600101613f44565b801515811461126657600080fd5b600060208284031215613f7857600080fd5b813561214081613f58565b600060208083528351808285015260005b81811015613fb057858101830151858201604001528201613f94565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461126657600080fd5b60008060408385031215613ff957600080fd5b823561400481613fd1565b946020939093013593505050565b60006020828403121561402457600080fd5b813561214081613fd1565b600080600080600060a0868803121561404757600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060006060848603121561407f57600080fd5b833561408a81613fd1565b9250602084013561409a81613fd1565b929592945050506040919091013590565b6000602082840312156140bd57600080fd5b813563ffffffff8116811461214057600080fd5b600080604083850312156140e457600080fd5b8235915060208301356140f681613fd1565b809150509250929050565b6000806000806080858703121561411757600080fd5b843561412281613fd1565b9350602085013561413281613fd1565b9250604085013561414281613fd1565b9150606085013561415281613fd1565b939692955090935050565b60006020828403121561416f57600080fd5b5035919050565b6000806040838503121561418957600080fd5b50508035926020909101359150565b60008083601f8401126141aa57600080fd5b50813567ffffffffffffffff8111156141c257600080fd5b6020830191508360208260051b85010111156141dd57600080fd5b9250929050565b6000806000604084860312156141f957600080fd5b833567ffffffffffffffff81111561421057600080fd5b61421c86828701614198565b909450925050602084013561423081613f58565b809150509250925092565b6000806020838503121561424e57600080fd5b823567ffffffffffffffff81111561426557600080fd5b61427185828601614198565b90969095509350505050565b6000806040838503121561429057600080fd5b823561429b81613fd1565b915060208301356140f681613fd1565b600181811c908216806142bf57607f821691505b6020821081036142df57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561136a5761136a6142e5565b600181815b8085111561434957816000190482111561432f5761432f6142e5565b8085161561433c57918102915b93841c9390800290614313565b509250929050565b6000826143605750600161136a565b8161436d5750600061136a565b8160018114614383576002811461438d576143a9565b600191505061136a565b60ff84111561439e5761439e6142e5565b50506001821b61136a565b5060208310610133831016604e8410600b84101617156143cc575081810a61136a565b6143d6838361430e565b80600019048211156143ea576143ea6142e5565b029392505050565b60006121408383614351565b6000816000190483118215151615614418576144186142e5565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826144425761444261441d565b500690565b8181038181111561136a5761136a6142e5565b634e487b7160e01b600052603260045260246000fd5b600060018201614482576144826142e5565b5060010190565b60006020828403121561449b57600080fd5b815161214081613fd1565b6000826144b5576144b561441d565b500490565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561450a5784516001600160a01b0316835293830193918301916001016144e5565b50506001600160a01b03969096166060850152505050608001529392505050565b8181036000831280158383131683831282161715611d8757611d876142e5565b808201828112600083128015821682158216171561456b5761456b6142e5565b505092915050565b600061214060ff841683614351565b60008060006060848603121561459757600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156145c257600080fd5b5051919050565b600060808201868352602060808185015281875480845260a0860191508860005282600020935060005b818110156146185784546001600160a01b0316835260019485019492840192016145f3565b50506001600160a01b039690961660408501525050506060015292915050565b60006020828403121561464a57600080fd5b815161214081613f5856fe737761704261636b3a204554482062616c616e6365206973206e6f7420656e6f7567686164644c69717569646974793a204554482062616c616e6365206973206e6f7420656e6f7567685f7472616e7366657246726f6d3a2073656e6465722062616c616e6365206973206e6f7420656e6f75676842617369635472616e736665723a204e6f7420456e6f7567682042616c616e63656164644c69717569646974793a206c69717569646974792062616c616e6365206973206e6f7420656e6f7567684469766964656e643a2073656e6465722062616c616e6365206973206e6f7420656e6f756768ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e2f3071e01b9d01e9df8fd81859ee3e52d1447c7b00fd9f401ea8d2d9ed9e33364736f6c63430008100033000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000001b02da8cb0d097eb8d57a175b88c7d8b47997506000000000000000000000000bef7e44253b520e1595abcb2bde3aee640aac070000000000000000000000000c1d02957b4840107692ce28495340a7ba697e96800000000000000000000000088350e5eff4f2039dffe37dd1392728fed59f190000000000000000000000000e4a082ba60ef166e6e4f45b86e9604c722cee436000000000000000000000000c11c8b944c9c38a3daa942bd3a61ea03a2c733e5000000000000000000000000000000000000000000000000000000000000000c536565642046696e616e6365000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045345454400000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106105ff5760003560e01c80637cb95d001161030e578063bd5955811161019b578063d8f91a04116100e7578063f2fde38b116100a0578063f887ea401161007a578063f887ea40146111b8578063f9402620146111d8578063f9f92be41461120a578063fec4d0b41461123a57600080fd5b8063f2fde38b14611162578063f651c98c14611182578063f7a5a9901461119857600080fd5b8063d8f91a0414611087578063dd62ed3e146110a7578063e15beb80146110ed578063e388ec2a1461110d578063ebd604c514611123578063efd462bb1461114357600080fd5b8063ca33e64c11610154578063d28d88521161012e578063d28d885214611026578063d3a025bb1461103b578063d465eeff14611051578063d51ed1c81461106757600080fd5b8063ca33e64c14610fd0578063cdd4bd7914610ff0578063cfbac92f1461100657600080fd5b8063bd59558114610f3a578063c054318114610f4f578063c0b6254c14610f6f578063c73c701d14610f85578063c834a1cd14610fa0578063c91bc8a714610fba57600080fd5b806395d89b411161025a578063a8aa1b3111610213578063b09f1266116101ed578063b09f126614610ed9578063b568231814610eee578063ba71c44e14610f0e578063bbb2b55014610f2457600080fd5b8063a8aa1b3114610e84578063a9059cbb14610ea4578063af52002514610ec457600080fd5b806395d89b4114610de95780639d12ec0114610dfe5780639d67f4dd14610e145780639ee9aaae14610e29578063a457c2d714610e3e578063a51af4c514610e5e57600080fd5b806389c88c76116102c75780639079f932116102a15780639079f93214610d6557806390dc67e614610d7f578063949b8b1f14610d9457806394e0a54214610db357600080fd5b806389c88c7614610d0c5780638da5cb5b14610d2257806390248b8314610d4557600080fd5b80637cb95d0014610c715780637fa08dc614610c87578063811b1a5414610ca7578063824e460514610cbd5780638344dce914610cd357806383b4ac6814610cf357600080fd5b806349a8065d1161048c578063647846a5116103d8578063715018a61161039157806375619ab51161036b57806375619ab514610bef57806375f3c64714610c0f578063774f626114610c455780637b3c83b114610c5b57600080fd5b8063715018a614610ba55780637515cd6614610bba578063753d02a114610bda57600080fd5b8063647846a514610aee578063679aa90014610b0e5780636827e76414610b2e57806369cdbd1d14610b445780636ddd171314610b6457806370a0823114610b8557600080fd5b80635828356b116104455780635c975abb1161041f5780635c975abb14610a8d5780636085e22014610aac57806360e7196214610ac25780636221723114610ad857600080fd5b80635828356b14610a4257806358fa63ca14610a585780635a604c5214610a7857600080fd5b806349a8065d1461098c57806349d98142146109ac5780634d709adf146109cc578063509af03b146109ec57806352596e6e14610a0c578063552f888a14610a2c57600080fd5b80632ce86fbf1161054b57806333a581d2116105045780633ad10ef6116104de5780633ad10ef6146108e45780633bec1a87146109045780633c8e556d1461093c5780633f4218e01461095c57600080fd5b806333a581d21461089857806339509351146108ae578063398004ad146108ce57600080fd5b80632ce86fbf146107ed5780632e0f2625146108035780632f34d28214610818578063313ce5671461083857806331bb88c41461085e57806332424aa31461087e57600080fd5b80630c995801116105b85780631d89f1de116105925780631d89f1de146107785780631da11fd41461079857806323b872dd146107b85780632b112e49146107d857600080fd5b80630c9958011461070057806318160ddd1461074d5780631d88feeb1461076257600080fd5b806302329a291461060b57806303fd2a451461062d57806306fdde031461066a57806308b1fd8f1461068c578063095ea7b3146106ac5780630a20eed0146106dc57600080fd5b3661060657005b600080fd5b34801561061757600080fd5b5061062b610626366004613f66565b611250565b005b34801561063957600080fd5b5060055461064d906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561067657600080fd5b5061067f611271565b6040516106619190613f83565b34801561069857600080fd5b5060085461064d906001600160a01b031681565b3480156106b857600080fd5b506106cc6106c7366004613fe6565b611303565b6040519015158152602001610661565b3480156106e857600080fd5b506106f260285481565b604051908152602001610661565b34801561070c57600080fd5b5061072061071b366004614012565b611370565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610661565b34801561075957600080fd5b506015546106f2565b34801561076e57600080fd5b506106f260315481565b34801561078457600080fd5b5061062b610793366004613f66565b6113b6565b3480156107a457600080fd5b5061062b6107b336600461402f565b6113d8565b3480156107c457600080fd5b506106cc6107d336600461406a565b61141b565b3480156107e457600080fd5b506106f261152c565b3480156107f957600080fd5b506106f2602b5481565b34801561080f57600080fd5b506106f2600581565b34801561082457600080fd5b5061062b610833366004614012565b6115b6565b34801561084457600080fd5b5060025460ff165b60405160ff9091168152602001610661565b34801561086a57600080fd5b5061062b6108793660046140ab565b6115e0565b34801561088a57600080fd5b5060025461084c9060ff1681565b3480156108a457600080fd5b506106f260001981565b3480156108ba57600080fd5b506106cc6108c9366004613fe6565b6116e1565b3480156108da57600080fd5b506106f2602e5481565b3480156108f057600080fd5b5060235461064d906001600160a01b031681565b34801561091057600080fd5b506106f261091f3660046140d1565b601f60209081526000928352604080842090915290825290205481565b34801561094857600080fd5b5061062b610957366004614101565b611766565b34801561096857600080fd5b506106cc610977366004614012565b60046020526000908152604090205460ff1681565b34801561099857600080fd5b5061062b6109a736600461415d565b61180e565b3480156109b857600080fd5b50600a5461064d906001600160a01b031681565b3480156109d857600080fd5b5060035461064d906001600160a01b031681565b3480156109f857600080fd5b5061062b610a07366004614176565b61186b565b348015610a1857600080fd5b5060095461064d906001600160a01b031681565b348015610a3857600080fd5b506106f261271081565b348015610a4e57600080fd5b506106f260335481565b348015610a6457600080fd5b5060065461064d906001600160a01b031681565b348015610a8457600080fd5b5061084c600781565b348015610a9957600080fd5b50600254600160a81b900460ff166106cc565b348015610ab857600080fd5b506106f260135481565b348015610ace57600080fd5b506106f260225481565b348015610ae457600080fd5b506106f2602f5481565b348015610afa57600080fd5b50600d5461064d906001600160a01b031681565b348015610b1a57600080fd5b5061062b610b29366004614176565b61187e565b348015610b3a57600080fd5b506106f260245481565b348015610b5057600080fd5b5061062b610b5f36600461415d565b611891565b348015610b7057600080fd5b50600a546106cc90600160a01b900460ff1681565b348015610b9157600080fd5b506106f2610ba0366004614012565b6118fa565b348015610bb157600080fd5b5061062b611922565b348015610bc657600080fd5b5061062b610bd53660046141e4565b611936565b348015610be657600080fd5b5061062b6119f7565b348015610bfb57600080fd5b5061062b610c0a366004614012565b611a5b565b348015610c1b57600080fd5b506106f2610c2a366004614012565b6001600160a01b031660009081526017602052604090205490565b348015610c5157600080fd5b506106f260305481565b348015610c6757600080fd5b506106f260255481565b348015610c7d57600080fd5b506106f260345481565b348015610c9357600080fd5b5061064d610ca236600461415d565b611a8d565b348015610cb357600080fd5b506106f260105481565b348015610cc957600080fd5b506106f260265481565b348015610cdf57600080fd5b5061062b610cee366004613f66565b611ab7565b348015610cff57600080fd5b50600f5460ff16156106cc565b348015610d1857600080fd5b506106f260295481565b348015610d2e57600080fd5b5060025461010090046001600160a01b031661064d565b348015610d5157600080fd5b5061062b610d6036600461423b565b611ad2565b348015610d7157600080fd5b506011546106cc9060ff1681565b348015610d8b57600080fd5b506016546106f2565b348015610da057600080fd5b506021546106cc90610100900460ff1681565b348015610dbf57600080fd5b506106f2610dce3660046140d1565b60208080526000928352604080842090915290825290205481565b348015610df557600080fd5b5061067f611c04565b348015610e0a57600080fd5b506106f260145481565b348015610e2057600080fd5b506106f2611c13565b348015610e3557600080fd5b506106f2611c32565b348015610e4a57600080fd5b506106cc610e59366004613fe6565b611c47565b348015610e6a57600080fd5b5060215461064d906201000090046001600160a01b031681565b348015610e9057600080fd5b50600c5461064d906001600160a01b031681565b348015610eb057600080fd5b506106cc610ebf366004613fe6565b611d2e565b348015610ed057600080fd5b506106f2611d8e565b348015610ee557600080fd5b5061067f611dab565b348015610efa57600080fd5b5061062b610f09366004613fe6565b611e39565b348015610f1a57600080fd5b506106f260125481565b348015610f3057600080fd5b506106f260325481565b348015610f4657600080fd5b5061062b611e67565b348015610f5b57600080fd5b5061062b610f6a36600461415d565b612099565b348015610f7b57600080fd5b506106f2602a5481565b348015610f9157600080fd5b506106f26001600160c01b0381565b348015610fac57600080fd5b506021546106cc9060ff1681565b348015610fc657600080fd5b506106f2601d5481565b348015610fdc57600080fd5b5060075461064d906001600160a01b031681565b348015610ffc57600080fd5b506106f2602c5481565b34801561101257600080fd5b5061062b611021366004613f66565b6120a6565b34801561103257600080fd5b5061067f6120e6565b34801561104757600080fd5b506106f2602d5481565b34801561105d57600080fd5b506106f2601a5481565b34801561107357600080fd5b506106f261108236600461415d565b6120f3565b34801561109357600080fd5b5061062b6110a236600461415d565b612147565b3480156110b357600080fd5b506106f26110c236600461427d565b6001600160a01b03918216600090815260186020908152604080832093909416825291909152205490565b3480156110f957600080fd5b5061062b611108366004613f66565b6121b2565b34801561111957600080fd5b506106f2601b5481565b34801561112f57600080fd5b5061062b61113e3660046141e4565b6121e8565b34801561114f57600080fd5b506011546106cc90610100900460ff1681565b34801561116e57600080fd5b5061062b61117d366004614012565b6122a3565b34801561118e57600080fd5b506106f260275481565b3480156111a457600080fd5b5061062b6111b336600461402f565b612319565b3480156111c457600080fd5b50600b5461064d906001600160a01b031681565b3480156111e457600080fd5b50601c546111f59063ffffffff1681565b60405163ffffffff9091168152602001610661565b34801561121657600080fd5b506106cc611225366004614012565b60196020526000908152604090205460ff1681565b34801561124657600080fd5b506106f2601e5481565b61125861237a565b8015611269576112666123da565b50565b61126661243a565b606060008054611280906142ab565b80601f01602080910402602001604051908101604052809291908181526020018280546112ac906142ab565b80156112f95780601f106112ce576101008083540402835291602001916112f9565b820191906000526020600020905b8154815290600101906020018083116112dc57829003601f168201915b5050505050905090565b3360008181526018602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061135e9086815260200190565b60405180910390a35060015b92915050565b600080600080600080601b54601a5461138991906142fb565b601d54601e546113988a612476565b6113a18b6124ae565b939b929a509098509650909450429350915050565b6113be61237a565b602180549115156101000261ff0019909216919091179055565b6113e061237a565b602585905560268490556028839055602782905560298190556114118161140b848187818b8b612356565b90612356565b602a555050505050565b6000826001600160a01b0381166114685760405162461bcd60e51b815260206004820152600c60248201526b4e756c6c204164647265737360a01b60448201526064015b60405180910390fd5b6001600160a01b038516600090815260186020908152604080832033845290915290205460001914611515576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03881660009081526018825283812033825290915291909120546114f09185906124da565b6001600160a01b03861660009081526018602090815260408083203384529091529020555b611520858585612506565b50600195945050505050565b6016546006546001600160a01b03908116600090815260176020526040808220546005805490941683529082205491936115b19390926115ab92916115a5919061157790600a6143f2565b611583906161a86143fe565b611594906001600160c01b03614433565b6115a5906001600160c01b03614447565b90612c77565b90612362565b905090565b6115be61237a565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6115e861237a565b60008163ffffffff16116116525760405162461bcd60e51b815260206004820152602b60248201527f4d617820746f6b656e207065722077616c6c65742070657263656e746167652060448201526a063616e6e6f7420626520360ac1b606482015260840161145f565b601c805463ffffffff191663ffffffff8316908117909155601d5411156112665760405162461bcd60e51b815260206004820152603f60248201527f4d617820746f6b656e207065722077616c6c6574206d7573742062652061626f60448201527f7665206f7220657175616c20746f2074696d656672616d6551756f7461496e00606482015260840161145f565b3360009081526018602090815260408083206001600160a01b038616845290915281205461170f9083612356565b3360008181526018602090815260408083206001600160a01b038916808552908352928190208590555193845290927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910161135e565b61176e61237a565b600780546001600160a01b03199081166001600160a01b039687161782556008805482169587169586179055600980548216948716949094178455600a8054909116928616929092178255600093845260046020526040808520805460ff19908116600190811790925592548716865281862080548416821790559354861685528085208054831685179055915490941683529091208054909216179055565b61181661237a565b600081116118665760405162461bcd60e51b815260206004820181905260248201527f54696d656672616d652065787069726174696f6e2063616e6e6f742062652030604482015260640161145f565b601b55565b61187361237a565b603391909155603455565b61188661237a565b603191909155603255565b61189961237a565b600081116118f55760405162461bcd60e51b8152602060048201526024808201527f54696d656672616d6520746f6b656e2071756f746120696e2063616e6e6f74206044820152630626520360e41b606482015260840161145f565b601d55565b6016546001600160a01b038216600090815260176020526040812054909161136a9190612362565b61192a61237a565b6119346000612c83565b565b61193e61237a565b816119805760405162461bcd60e51b8152602060048201526012602482015271496e76616c696420506172616d657465727360701b604482015260640161145f565b60005b828110156119f15781600460008686858181106119a2576119a261445a565b90506020020160208101906119b79190614012565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806119e981614470565b915050611983565b50505050565b600c60009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611a4757600080fd5b505af11580156119f1573d6000803e3d6000fd5b611a6361237a565b602180546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b600e8181548110611a9d57600080fd5b6000918252602090912001546001600160a01b0316905081565b611abf61237a565b6021805460ff1916911515919091179055565b611ada61237a565b60028110801590611b995750600b60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5d9190614489565b6001600160a01b031682826000818110611b7957611b7961445a565b9050602002016020810190611b8e9190614012565b6001600160a01b0316145b611ba257600080fd5b611bae600e8383613ee0565b508181611bbc600182614447565b818110611bcb57611bcb61445a565b9050602002016020810190611be09190614012565b600d80546001600160a01b0319166001600160a01b03929092169190911790555050565b606060018054611280906142ab565b6000612710601d54601554611c2891906143fe565b6115b191906144a6565b6000612710601e54601554611c2891906143fe565b3360009081526018602090815260408083206001600160a01b0386168452909152812054808310611c9b573360009081526018602090815260408083206001600160a01b0388168452909152812055611cca565b611ca58184612c77565b3360009081526018602090815260408083206001600160a01b03891684529091529020555b3360008181526018602090815260408083206001600160a01b038916808552908352928190205490519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060019392505050565b6000826001600160a01b038116611d765760405162461bcd60e51b815260206004820152600c60248201526b4e756c6c204164647265737360a01b604482015260640161145f565b611d81338585612506565b50600191505b5092915050565b601c5460155460009161271091611c289163ffffffff16906143fe565b60018054611db8906142ab565b80601f0160208091040260200160405190810160405280929190818152602001828054611de4906142ab565b8015611e315780601f10611e0657610100808354040283529160200191611e31565b820191906000526020600020905b815481529060010190602001808311611e1457829003601f168201915b505050505081565b611e4161237a565b602380546001600160a01b0319166001600160a01b039390931692909217909155602455565b600f805460ff19166001179055611e7c61237a565b4715611f20576008546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611ecf576040519150601f19603f3d011682016040523d82523d6000602084013e611ed4565b606091505b5050905080611f1e5760405162461bcd60e51b81526020600482015260166024820152750aadcc2c4d8ca40a8de40aed2e8d0c8e4c2ee408aa8960531b604482015260640161145f565b505b601654306000908152601760205260408120549091611f3f9190612362565b9050801561208c576040805160028082526060820183526000926020830190803683370190505090503081600081518110611f7c57611f7c61445a565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611fd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff99190614489565b8160018151811061200c5761200c61445a565b6001600160a01b039283166020918202929092010152600b5460085460405163791ac94760e01b81529183169263791ac9479261205892879260009288929091169042906004016144ba565b600060405180830381600087803b15801561207257600080fd5b505af1158015612086573d6000803e3d6000fd5b50505050505b50600f805460ff19169055565b6120a161237a565b602255565b6120ae61237a565b80156120ce576011805461ff001916610100831515021790554260145550565b601180548215156101000261ff001990911617905550565b60008054611db8906142ab565b601654600c546001600160a01b03166000908152601760205260408120549091829161211e91612362565b905061214061212b61152c565b6115ab61213984600261236e565b869061236e565b9392505050565b61214f61237a565b600081116121ad5760405162461bcd60e51b815260206004820152602560248201527f54696d656672616d6520746f6b656e2071756f7461206f75742063616e6e6f74604482015264020626520360dc1b606482015260840161145f565b601e55565b6121ba61237a565b80156121d5576011805460ff19168215151790554260135550565b6011805482151560ff1990911617905550565b6121f061237a565b816122325760405162461bcd60e51b8152602060048201526012602482015271496e76616c696420506172616d657465727360701b604482015260640161145f565b60005b828110156119f15781601960008686858181106122545761225461445a565b90506020020160208101906122699190614012565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061229b81614470565b915050612235565b6122ab61237a565b6001600160a01b0381166123105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161145f565b61126681612c83565b61232161237a565b602b859055602c849055602e839055602d829055602f81905561234c8161140b848187818b8b612356565b6030555050505050565b600061214082846142fb565b600061214082846144a6565b600061214082846143fe565b6002546001600160a01b036101009091041633146119345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161145f565b6123e2612cdd565b6002805460ff60a81b1916600160a81b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861241d3390565b6040516001600160a01b03909116815260200160405180910390a1565b612442612d2a565b6002805460ff60a81b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa3361241d565b601a546000908152601f602090815260408083206001600160a01b03851684529091528120546124a4611c13565b61136a919061452b565b601a546000908152602080805260408083206001600160a01b03851684529091528120546124a4611c32565b600081848411156124fe5760405162461bcd60e51b815260040161145f9190613f83565b505050900390565b6000612510612cdd565b6001600160a01b03841660009081526019602052604090205460ff1615801561255257506001600160a01b03831660009081526019602052604090205460ff16155b61258c5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b604482015260640161145f565b600f5460ff16806125a45750602154610100900460ff165b156125bb576125b4848484612d7a565b9050612140565b6125c3612e25565b601a546000908152601f602090815260408083206001600160a01b0387168452909152812080548492906125f890849061454b565b9091555050601a546000908152602080805260408083206001600160a01b0388168452909152812080548492906126309084906142fb565b90915550506001600160a01b03831660009081526004602052604090205460ff1615801561266c5750600c546001600160a01b03848116911614155b15612800578161267b846118fa565b61268591906142fb565b61268d611d8e565b10156127355760405162461bcd60e51b815260206004820152606560248201527f43616e6e6f74207472616e7366657220746f20746869732077616c6c65742c2060448201527f697420776f756c642065786365656420746865206c696d69742070657220776160648201527f6c6c65742e205b62616c616e63654f66203e206d6178546f6b656e50657257616084820152646c6c65745d60d81b60a482015260c40161145f565b600061274084612476565b12156128005760405162461bcd60e51b815260206004820152607760248201527f43616e6e6f74207472616e7366657220746f20746869732077616c6c6574206660448201527f6f7220746869732074696d656672616d652c20697420776f756c64206578636560648201527f656420746865206c696d6974207065722074696d656672616d652e205b696e4160848201527f6d6f756e74203e2074696d656672616d654c696d69745d00000000000000000060a482015260c40161145f565b6001600160a01b03841660009081526004602052604090205460ff161580156128375750600c546001600160a01b03858116911614155b15612907576000612847856124ae565b12156129075760405162461bcd60e51b815260206004820152607e60248201527f43616e6e6f74207472616e73666572206f75742066726f6d207468697320776160448201527f6c6c657420666f7220746869732074696d656672616d652c20697420776f756c60648201527f642065786365656420746865206c696d6974207065722074696d656672616d6560848201527f2e205b6f7574416d6f756e74203e2074696d656672616d654c696d69745d000060a482015260c40161145f565b61290f612e42565b1561291c5761291c612eb6565b6129246130ba565b1561293157612931613105565b60006129486016548461236e90919063ffffffff16565b90506000612956868661341f565b612960578161296b565b61296b868684613497565b6021549091506201000090046001600160a01b031615801590612990575060215460ff165b15612aee57602160029054906101000a90046001600160a01b03166001600160a01b03166314b6ca96876129fd6016546115ab87604051806060016040528060268152602001614719602691396001600160a01b038e1660009081526017602052604090205491906124da565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015612a4357600080fd5b505af1925050508015612a54575060015b506021546016546001600160a01b038781166000908152601760205260409020546201000090930416916314b6ca96918891612a9591906115ab9087612356565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015612adb57600080fd5b505af1925050508015612aec575060015b505b612af6613764565b15612b1557600c54612b15906001600160a01b03878116911614613788565b612b52826040518060600160405280602b81526020016146a0602b91396001600160a01b03891660009081526017602052604090205491906124da565b6001600160a01b038088166000908152601760205260408082209390935590871681522054612b819082612356565b6001600160a01b038087166000908152601760205260409020919091556021546201000090041615801590612bb8575060215460ff165b15612c22576021546022546040516001624d3b8760e01b031981526004810191909152620100009091046001600160a01b03169063ffb2c47990602401600060405180830381600087803b158015612c0f57600080fd5b505af1925050508015612c20575060015b505b846001600160a01b0316866001600160a01b031660008051602061473f833981519152612c5a6016548561236290919063ffffffff16565b60405190815260200160405180910390a350600195945050505050565b60006121408284614447565b600280546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600254600160a81b900460ff16156119345760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161145f565b600254600160a81b900460ff166119345760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161145f565b600080612d926016548461236e90919063ffffffff16565b9050612dd1816040518060600160405280602181526020016146cb602191396001600160a01b03881660009081526017602052604090205491906124da565b6001600160a01b038087166000908152601760205260408082209390935590861681522054612e009082612356565b6001600160a01b03851660009081526017602052604090205550600190509392505050565b601b54601a544291612e36916142fb565b81111561126657601a55565b60115460009060ff168015612e715750612e5e6005600a6143f2565b612e6c9063c1b710806143fe565b601554105b8015612e885750600c546001600160a01b03163314155b8015612e975750600f5460ff16155b80156115b15750603354601354612eae91906142fb565b421015905090565b600f5460ff1615612ec357565b60008060125442612ed49190614447565b9050600060135442612ee69190614447565b90506000612eff6033548361236290919063ffffffff16565b90506000612f186033548361236e90919063ffffffff16565b90506301e13380841015612f30576034549450612f68565b6301e133808410612f445760d39450612f68565b6302d1cd408410612f5857600e9450612f68565b630d2868808410612f6857600294505b60005b82811015612fb357612f9e612f826007600a614573565b6115ab612f958961140b6007600a614573565b6015549061236e565b60155580612fab81614470565b915050612f6b565b601554612ff490612fc66005600a6143f2565b612fd2906161a86143fe565b612fe3906001600160c01b03614433565b6115ab906001600160c01b03614447565b6016556033546130129061300990859061236e565b60135490612356565b6013556003546040805160016209351760e01b0319815290516001600160a01b039092169163fff6cae99160048082019260009290919082900301818387803b15801561305e57600080fd5b505af1158015613072573d6000803e3d6000fd5b50505050817f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f26015546040516130aa91815260200190565b60405180910390a2505050505050565b601154600090610100900460ff1680156130d75750600f5460ff16155b80156130ee5750600c546001600160a01b03163314155b80156115b15750601454612eae906202a3006142fb565b600f805460ff191660011790556016546007546001600160a01b0316600090815260176020526040812054909161313c9190612362565b905060315481108061314c575080155b156131575750613413565b6007546001600160a01b03166000908152601760205260408082205430835291205461318291612356565b30600090815260176020526040808220929092556007546001600160a01b031681529081208190556131b5826002612362565b905060006131de826040518060600160405280602d81526020016146ec602d91398591906124da565b9050806000036131f057505050613413565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106132255761322561445a565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561327e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a29190614489565b816001815181106132b5576132b561445a565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b81524792919091169063791ac947906132ff9086906000908790309042906004016144ba565b600060405180830381600087803b15801561331957600080fd5b505af115801561332d573d6000803e3d6000fd5b50505050600061335882604051806060016040528060278152602001614679602791394791906124da565b905060008511801561336a5750600081115b1561340857600b5460075460405163f305d71960e01b81523060048201526024810188905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156133df573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906134049190614582565b5050505b505042601455505050505b600f805460ff19169055565b600c546000906001600160a01b03848116911614801561345857506001600160a01b03821660009081526004602052604090205460ff16155b806121405750600c546001600160a01b038381169116148015612140575050506001600160a01b031660009081526004602052604090205460ff161590565b6000806000806000806000600c60009054906101000a90046001600160a01b03166001600160a01b0316896001600160a01b0316036134f357602b549550602c549450602d549350602e549250602f5491506030549050613512565b60255495506026549450602754935060285492506029549150602a5490505b600061352a826135248b612710612362565b9061236e565b9050600061353e846135248c612710612362565b600a546001600160a01b03166000908152601760205260409020549091506135669082612356565b600a80546001600160a01b0390811660009081526017602052604090209290925554601654908216918e169060008051602061473f833981519152906135ad908590612362565b60405190815260200160405180910390a360006135dd6135d18861140b8b8a612356565b6135248d612710612362565b306000908152601760205260409020549091506135fa9082612356565b306000818152601760205260409020919091556016546001600160a01b038f169060008051602061473f83398151915290613636908590612362565b60405190815260200160405180910390a360006136598a6135248e612710612362565b6007546001600160a01b03166000908152601760205260409020549091506136819082612356565b60176000600760009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002081905550600760009054906101000a90046001600160a01b03166001600160a01b03168e6001600160a01b031660008051602061473f83398151915261370c6016548561236290919063ffffffff16565b60405190815260200160405180910390a36040805180820190915260118152706665652076616c7565206578636565647360781b6020820152613752908d9086906124da565b9e9d5050505050505050505050505050565b600f5460009060ff161580156115b1575050600c546001600160a01b031633141590565b600f805460ff191660011790556016543060009081526017602052604081205490916137b49190612362565b90506032548110806137c4575080155b156137cf575061208c565b6040805160028082526060820183524792600092919060208301908036833701905050905030816000815181106138085761380861445a565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015613861573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138859190614489565b816001815181106138985761389861445a565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b815291169063791ac947906138de9086906000908690309042906004016144ba565b600060405180830381600087803b1580156138f857600080fd5b505af115801561390c573d6000803e3d6000fd5b50505050600061393783604051806060016040528060238152602001614656602391394791906124da565b90506000806000871561395857602c549250602e549150602d549050613968565b6026549250602854915060275490505b60215460ff16613976575060005b60006139868261140b8686612356565b90506000613998826115ab888861236e565b90508015613a48576008546040516000916001600160a01b03169061753090849084818181858888f193505050503d80600081146139f2576040519150601f19603f3d011682016040523d82523d6000602084013e6139f7565b606091505b5090915050600181151514613a465760405162461bcd60e51b81526020600482015260156024820152744572726f7220506179696e6720547265617375727960581b604482015260640161145f565b505b6000613a58836115ab898761236e565b90506000613a6a826115a58a86612c77565b6023549091506001600160a01b031615801590613a8957506000602454115b15613b90576000613aa9856115ab6024548c61236e90919063ffffffff16565b9050613ae7816040518060400160405280600f81526020016e20aba31039bab110189032b93937b960891b815250846124da9092919063ffffffff16565b6023546040519193506000916001600160a01b039091169061753090849084818181858888f193505050503d8060008114613b3e576040519150601f19603f3d011682016040523d82523d6000602084013e613b43565b606091505b5090915050600181151514613b8d5760405162461bcd60e51b815260206004820152601060248201526f22b93937b9102830bcb4b733902232bb60811b604482015260640161145f565b50505b8015613c46576009546040516000916001600160a01b03169061753090849084818181858888f193505050503d8060008114613be8576040519150601f19603f3d011682016040523d82523d6000602084013e613bed565b606091505b5090915050600181151514613c445760405162461bcd60e51b815260206004820152601b60248201527f4572726f7220506179696e6720496e737572616e63652046756e640000000000604482015260640161145f565b505b601054613c539083612356565b6010556021546201000090046001600160a01b031615801590613c765750600082115b8015613c8c5750600d546001600160a01b031615155b15613ec857600d546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015613cda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cfe91906145b0565b600b5460405163b6f9de9560e01b81529192506001600160a01b03169063b6f9de95908590613d3990600090600e90309042906004016145c9565b6000604051808303818588803b158015613d5257600080fd5b505af1158015613d66573d6000803e3d6000fd5b5050600d546040516370a0823160e01b8152306004820152600094508593506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015613db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ddc91906145b0565b613de69190614447565b600d5460215460405163095ea7b360e01b81526001600160a01b03620100009092048216600482015260248101849052929350169063095ea7b3906044016020604051808303816000875af1158015613e43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e679190614638565b5060215460405163b6b55f2560e01b815260048101839052620100009091046001600160a01b03169063b6b55f2590602401600060405180830381600087803b158015613eb357600080fd5b505af1925050508015613ec4575060015b5050505b505050505050505050505050600f805460ff19169055565b828054828255906000526020600020908101928215613f33579160200282015b82811115613f335781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190613f00565b50613f3f929150613f43565b5090565b5b80821115613f3f5760008155600101613f44565b801515811461126657600080fd5b600060208284031215613f7857600080fd5b813561214081613f58565b600060208083528351808285015260005b81811015613fb057858101830151858201604001528201613f94565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461126657600080fd5b60008060408385031215613ff957600080fd5b823561400481613fd1565b946020939093013593505050565b60006020828403121561402457600080fd5b813561214081613fd1565b600080600080600060a0868803121561404757600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060006060848603121561407f57600080fd5b833561408a81613fd1565b9250602084013561409a81613fd1565b929592945050506040919091013590565b6000602082840312156140bd57600080fd5b813563ffffffff8116811461214057600080fd5b600080604083850312156140e457600080fd5b8235915060208301356140f681613fd1565b809150509250929050565b6000806000806080858703121561411757600080fd5b843561412281613fd1565b9350602085013561413281613fd1565b9250604085013561414281613fd1565b9150606085013561415281613fd1565b939692955090935050565b60006020828403121561416f57600080fd5b5035919050565b6000806040838503121561418957600080fd5b50508035926020909101359150565b60008083601f8401126141aa57600080fd5b50813567ffffffffffffffff8111156141c257600080fd5b6020830191508360208260051b85010111156141dd57600080fd5b9250929050565b6000806000604084860312156141f957600080fd5b833567ffffffffffffffff81111561421057600080fd5b61421c86828701614198565b909450925050602084013561423081613f58565b809150509250925092565b6000806020838503121561424e57600080fd5b823567ffffffffffffffff81111561426557600080fd5b61427185828601614198565b90969095509350505050565b6000806040838503121561429057600080fd5b823561429b81613fd1565b915060208301356140f681613fd1565b600181811c908216806142bf57607f821691505b6020821081036142df57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561136a5761136a6142e5565b600181815b8085111561434957816000190482111561432f5761432f6142e5565b8085161561433c57918102915b93841c9390800290614313565b509250929050565b6000826143605750600161136a565b8161436d5750600061136a565b8160018114614383576002811461438d576143a9565b600191505061136a565b60ff84111561439e5761439e6142e5565b50506001821b61136a565b5060208310610133831016604e8410600b84101617156143cc575081810a61136a565b6143d6838361430e565b80600019048211156143ea576143ea6142e5565b029392505050565b60006121408383614351565b6000816000190483118215151615614418576144186142e5565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826144425761444261441d565b500690565b8181038181111561136a5761136a6142e5565b634e487b7160e01b600052603260045260246000fd5b600060018201614482576144826142e5565b5060010190565b60006020828403121561449b57600080fd5b815161214081613fd1565b6000826144b5576144b561441d565b500490565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561450a5784516001600160a01b0316835293830193918301916001016144e5565b50506001600160a01b03969096166060850152505050608001529392505050565b8181036000831280158383131683831282161715611d8757611d876142e5565b808201828112600083128015821682158216171561456b5761456b6142e5565b505092915050565b600061214060ff841683614351565b60008060006060848603121561459757600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156145c257600080fd5b5051919050565b600060808201868352602060808185015281875480845260a0860191508860005282600020935060005b818110156146185784546001600160a01b0316835260019485019492840192016145f3565b50506001600160a01b039690961660408501525050506060015292915050565b60006020828403121561464a57600080fd5b815161214081613f5856fe737761704261636b3a204554482062616c616e6365206973206e6f7420656e6f7567686164644c69717569646974793a204554482062616c616e6365206973206e6f7420656e6f7567685f7472616e7366657246726f6d3a2073656e6465722062616c616e6365206973206e6f7420656e6f75676842617369635472616e736665723a204e6f7420456e6f7567682042616c616e63656164644c69717569646974793a206c69717569646974792062616c616e6365206973206e6f7420656e6f7567684469766964656e643a2073656e6465722062616c616e6365206973206e6f7420656e6f756768ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e2f3071e01b9d01e9df8fd81859ee3e52d1447c7b00fd9f401ea8d2d9ed9e33364736f6c63430008100033

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

000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000001b02da8cb0d097eb8d57a175b88c7d8b47997506000000000000000000000000bef7e44253b520e1595abcb2bde3aee640aac070000000000000000000000000c1d02957b4840107692ce28495340a7ba697e96800000000000000000000000088350e5eff4f2039dffe37dd1392728fed59f190000000000000000000000000e4a082ba60ef166e6e4f45b86e9604c722cee436000000000000000000000000c11c8b944c9c38a3daa942bd3a61ea03a2c733e5000000000000000000000000000000000000000000000000000000000000000c536565642046696e616e6365000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045345454400000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name_ (string): Seed Finance
Arg [1] : symbol_ (string): SEED
Arg [2] : router_ (address): 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506
Arg [3] : lr (address): 0xbef7E44253B520e1595aBCB2bdE3aEe640aaC070
Arg [4] : tr (address): 0xc1d02957b4840107692cE28495340a7BA697e968
Arg [5] : aifr (address): 0x88350E5eFF4F2039dFFe37DD1392728Fed59F190
Arg [6] : fp (address): 0xe4A082ba60ef166E6e4f45B86E9604C722CEE436
Arg [7] : dev (address): 0xC11c8B944c9c38a3daA942BD3a61eA03A2c733e5

-----Encoded View---------------
12 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [2] : 0000000000000000000000001b02da8cb0d097eb8d57a175b88c7d8b47997506
Arg [3] : 000000000000000000000000bef7e44253b520e1595abcb2bde3aee640aac070
Arg [4] : 000000000000000000000000c1d02957b4840107692ce28495340a7ba697e968
Arg [5] : 00000000000000000000000088350e5eff4f2039dffe37dd1392728fed59f190
Arg [6] : 000000000000000000000000e4a082ba60ef166e6e4f45b86e9604c722cee436
Arg [7] : 000000000000000000000000c11c8b944c9c38a3daa942bd3a61ea03a2c733e5
Arg [8] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [9] : 536565642046696e616e63650000000000000000000000000000000000000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [11] : 5345454400000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

25953:30102:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;54875:151;;;;;;;;;;-1:-1:-1;54875:151:0;;;;;:::i;:::-;;:::i;:::-;;26712:64;;;;;;;;;;-1:-1:-1;26712:64:0;;;;-1:-1:-1;;;;;26712:64:0;;;;;;-1:-1:-1;;;;;547:32:1;;;529:51;;517:2;502:18;26712:64:0;;;;;;;;25672:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;26899:31::-;;;;;;;;;;-1:-1:-1;26899:31:0;;;;-1:-1:-1;;;;;26899:31:0;;;47853:253;;;;;;;;;;-1:-1:-1;47853:253:0;;;;;:::i;:::-;;:::i;:::-;;;1765:14:1;;1758:22;1740:41;;1728:2;1713:18;47853:253:0;1600:187:1;28548:36:0;;;;;;;;;;;;;;;;;;;1938:25:1;;;1926:2;1911:18;28548:36:0;1792:177:1;51701:536:0;;;;;;;;;;-1:-1:-1;51701:536:0;;;;;:::i;:::-;;:::i;:::-;;;;2509:25:1;;;2565:2;2550:18;;2543:34;;;;2593:18;;;2586:34;;;;2651:2;2636:18;;2629:34;2694:3;2679:19;;2672:35;2738:3;2723:19;;2716:35;2496:3;2481:19;51701:536:0;2226:531:1;50311:102:0;;;;;;;;;;-1:-1:-1;50393:12:0;;50311:102;;28898:33;;;;;;;;;;;;;;;;55363:97;;;;;;;;;;-1:-1:-1;55363:97:0;;;;;:::i;:::-;;:::i;53542:542::-;;;;;;;;;;-1:-1:-1;53542:542:0;;;;;:::i;:::-;;:::i;33600:465::-;;;;;;;;;;-1:-1:-1;33600:465:0;;;;;:::i;:::-;;:::i;48114:183::-;;;;;;;;;;;;;:::i;28665:33::-;;;;;;;;;;;;;;;;26357:36;;;;;;;;;;;;26392:1;26357:36;;49963:108;;;;;;;;;;-1:-1:-1;49963:108:0;;;;;:::i;:::-;;:::i;25858:83::-;;;;;;;;;;-1:-1:-1;25924:9:0;;;;25858:83;;;3854:4:1;3842:17;;;3824:36;;3812:2;3797:18;25858:83:0;3682:184:1;50755:634:0;;;;;;;;;;-1:-1:-1;50755:634:0;;;;;:::i;:::-;;:::i;25434:22::-;;;;;;;;;;-1:-1:-1;25434:22:0;;;;;;;;26400:49;;;;;;;;;;-1:-1:-1;26400:49:0;-1:-1:-1;;26400:49:0;;47439:406;;;;;;;;;;-1:-1:-1;47439:406:0;;;;;:::i;:::-;;:::i;28778:37::-;;;;;;;;;;;;;;;;28376:25;;;;;;;;;;-1:-1:-1;28376:25:0;;;;-1:-1:-1;;;;;28376:25:0;;;28083:63;;;;;;;;;;-1:-1:-1;28083:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;48481:585;;;;;;;;;;-1:-1:-1;48481:585:0;;;;;:::i;:::-;;:::i;26187:43::-;;;;;;;;;;-1:-1:-1;26187:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;52245:290;;;;;;;;;;-1:-1:-1;52245:290:0;;;;;:::i;:::-;;:::i;26980:22::-;;;;;;;;;;-1:-1:-1;26980:22:0;;;;-1:-1:-1;;;;;26980:22:0;;;26148:32;;;;;;;;;;-1:-1:-1;26148:32:0;;;;-1:-1:-1;;;;;26148:32:0;;;55879:173;;;;;;;;;;-1:-1:-1;55879:173:0;;;;;:::i;:::-;;:::i;26937:36::-;;;;;;;;;;-1:-1:-1;26937:36:0;;;;-1:-1:-1;;;;;26937:36:0;;;26661:42;;;;;;;;;;;;26698:5;26661:42;;28984:27;;;;;;;;;;;;;;;;26783:64;;;;;;;;;;-1:-1:-1;26783:64:0;;;;-1:-1:-1;;;;;26783:64:0;;;26518:39;;;;;;;;;;;;26556:1;26518:39;;5079:86;;;;;;;;;;-1:-1:-1;5150:7:0;;-1:-1:-1;;;5150:7:0;;;;5079:86;;27512:30;;;;;;;;;;;;;;;;28338:29;;;;;;;;;;;;;;;;28822:31;;;;;;;;;;;;;;;;27104:23;;;;;;;;;;-1:-1:-1;27104:23:0;;;;-1:-1:-1;;;;;27104:23:0;;;54654:213;;;;;;;;;;-1:-1:-1;54654:213:0;;;;;:::i;:::-;;:::i;28408:21::-;;;;;;;;;;;;;;;;52543:256;;;;;;;;;;-1:-1:-1;52543:256:0;;;;;:::i;:::-;;:::i;27011:23::-;;;;;;;;;;-1:-1:-1;27011:23:0;;;;-1:-1:-1;;;27011:23:0;;;;;;50424:136;;;;;;;;;;-1:-1:-1;50424:136:0;;;;;:::i;:::-;;:::i;2675:103::-;;;;;;;;;;;;;:::i;49373:276::-;;;;;;;;;;-1:-1:-1;49373:276:0;;;;;:::i;:::-;;:::i;48398:75::-;;;;;;;;;;;;;:::i;55468:131::-;;;;;;;;;;-1:-1:-1;55468:131:0;;;;;:::i;:::-;;:::i;55248:107::-;;;;;;;;;;-1:-1:-1;55248:107:0;;;;;:::i;:::-;-1:-1:-1;;;;;55330:17:0;55303:7;55330:17;;;:12;:17;;;;;;;55248:107;28860:29;;;;;;;;;;;;;;;;28438:32;;;;;;;;;;;;;;;;29018:25;;;;;;;;;;;;;;;;27134:29;;;;;;;;;;-1:-1:-1;27134:29:0;;;;;:::i;:::-;;:::i;27192:::-;;;;;;;;;;;;;;;;28477:31;;;;;;;;;;;;;;;;55034:101;;;;;;;;;;-1:-1:-1;55034:101:0;;;;;:::i;:::-;;:::i;48305:85::-;;;;;;;;;;-1:-1:-1;48376:6:0;;;;48375:7;48305:85;;28591:30;;;;;;;;;;;;;;;;2027:87;;;;;;;;;;-1:-1:-1;2100:6:0;;;;;-1:-1:-1;;;;;2100:6:0;2027:87;;50083:220;;;;;;;;;;-1:-1:-1;50083:220:0;;;;;:::i;:::-;;:::i;27407:22::-;;;;;;;;;;-1:-1:-1;27407:22:0;;;;;;;;55143:97;;;;;;;;;;-1:-1:-1;55216:16:0;;55143:97;;28264:25;;;;;;;;;;-1:-1:-1;28264:25:0;;;;;;;;;;;28153:65;;;;;;;;;;-1:-1:-1;28153:65:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;25763:87;;;;;;;;;;;;;:::i;27549:35::-;;;;;;;;;;;;;;;;51397:143;;;;;;;;;;;;;:::i;51548:145::-;;;;;;;;;;;;;:::i;46835:596::-;;;;;;;;;;-1:-1:-1;46835:596:0;;;;;:::i;:::-;;:::i;28298:33::-;;;;;;;;;;-1:-1:-1;28298:33:0;;;;;;;-1:-1:-1;;;;;28298:33:0;;;27078:19;;;;;;;;;;-1:-1:-1;27078:19:0;;;;-1:-1:-1;;;;;27078:19:0;;;33377:215;;;;;;;;;;-1:-1:-1;33377:215:0;;;;;:::i;:::-;;:::i;50605:142::-;;;;;;;;;;;;;:::i;25406:21::-;;;;;;;;;;;;;:::i;55724:147::-;;;;;;;;;;-1:-1:-1;55724:147:0;;;;;:::i;:::-;;:::i;27471:34::-;;;;;;;;;;;;;;;;28938:37;;;;;;;;;;;;;;;;44456:767;;;;;;;;;;;;;:::i;55607:109::-;;;;;;;;;;-1:-1:-1;55607:109:0;;;;;:::i;:::-;;:::i;28628:28::-;;;;;;;;;;;;;;;;26456:55;;;;;;;;;;-1:-1:-1;26456:55:0;-1:-1:-1;;;;;26456:55:0;;28227:28;;;;;;;;;;-1:-1:-1;28227:28:0;;;;;;;;27984:41;;;;;;;;;;;;;;;;26856:36;;;;;;;;;;-1:-1:-1;26856:36:0;;;;-1:-1:-1;;;;;26856:36:0;;;28705:32;;;;;;;;;;;;;;;;46376:249;;;;;;;;;;-1:-1:-1;46376:249:0;;;;;:::i;:::-;;:::i;25380:19::-;;;;;;;;;;;;;:::i;28744:27::-;;;;;;;;;;;;;;;;27854:31;;;;;;;;;;;;;;;;49074:291;;;;;;;;;;-1:-1:-1;49074:291:0;;;;;:::i;:::-;;:::i;52807:262::-;;;;;;;;;;-1:-1:-1;52807:262:0;;;;;:::i;:::-;;:::i;46633:194::-;;;;;;;;;;-1:-1:-1;46633:194:0;;;;;:::i;:::-;-1:-1:-1;;;;;46785:25:0;;;46753:7;46785:25;;;:17;:25;;;;;;;;:34;;;;;;;;;;;;;46633:194;46141:227;;;;;;;;;;-1:-1:-1;46141:227:0;;;;;:::i;:::-;;:::i;27892:36::-;;;;;;;;;;;;;;;;49657:294;;;;;;;;;;-1:-1:-1;49657:294:0;;;;;:::i;:::-;;:::i;27436:28::-;;;;;;;;;;-1:-1:-1;27436:28:0;;;;;;;;;;;2933:201;;;;;;;;;;-1:-1:-1;2933:201:0;;;;;:::i;:::-;;:::i;28515:26::-;;;;;;;;;;;;;;;;54092:554;;;;;;;;;;-1:-1:-1;54092:554:0;;;;;:::i;:::-;;:::i;27041:30::-;;;;;;;;;;-1:-1:-1;27041:30:0;;;;-1:-1:-1;;;;;27041:30:0;;;27937:38;;;;;;;;;;-1:-1:-1;27937:38:0;;;;;;;;;;;8179:10:1;8167:23;;;8149:42;;8137:2;8122:18;27937:38:0;8005:192:1;27804:41:0;;;;;;;;;;-1:-1:-1;27804:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;28032:42;;;;;;;;;;;;;;;;54875:151;1913:13;:11;:13::i;:::-;54935:4:::1;54931:88;;;54956:8;:6;:8::i;:::-;54875:151:::0;:::o;54931:88::-:1;54997:10;:8;:10::i;25672:83::-:0;25709:13;25742:5;25735:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25672:83;:::o;47853:253::-;47996:10;47956:4;47978:29;;;:17;:29;;;;;;;;-1:-1:-1;;;;;47978:38:0;;;;;;;;;;:46;;;48040:36;47956:4;;47978:38;;48040:36;;;;48019:5;1938:25:1;;1926:2;1911:18;;1792:177;48040:36:0;;;;;;;;-1:-1:-1;48094:4:0;47853:253;;;;;:::o;51701:536::-;51805:7;51827;51849;51871:6;51892;51913:7;51989:21;;51970:16;;:40;;;;:::i;:::-;52025:26;;52066:27;;52108:32;52132:7;52108:23;:32::i;:::-;52155:33;52180:7;52155:24;:33::i;:::-;51948:281;;;;-1:-1:-1;51948:281:0;;-1:-1:-1;51948:281:0;-1:-1:-1;51948:281:0;;-1:-1:-1;52203:15:0;;-1:-1:-1;51701:536:0;-1:-1:-1;;51701:536:0:o;55363:97::-;1913:13;:11;:13::i;:::-;55431::::1;:21:::0;;;::::1;;;;-1:-1:-1::0;;55431:21:0;;::::1;::::0;;;::::1;::::0;;55363:97::o;53542:542::-;1913:13;:11;:13::i;:::-;53746:17:::1;:33:::0;;;53790:16:::1;:31:::0;;;53832:21:::1;:41:::0;;;53884:11:::1;:21:::0;;;53916:15:::1;:29:::0;;;53972:104:::1;53934:11:::0;53972:83:::1;53898:7:::0;53972:83;53856:17;53972:83;53766:13;53809:12;53972:21:::1;:39::i;:::-;:43:::0;::::1;:66::i;:104::-;53956:13;:120:::0;-1:-1:-1;;;;;53542:542:0:o;33600:465::-;33743:4;33730:2;-1:-1:-1;;;;;26294:18:0;;26286:43;;;;-1:-1:-1;;;26286:43:0;;9051:2:1;26286:43:0;;;9033:21:1;9090:2;9070:18;;;9063:30;-1:-1:-1;;;9109:18:1;;;9102:42;9161:18;;26286:43:0;;;;;;;;;-1:-1:-1;;;;;33774:23:0;::::1;26447:1;33774:23:::0;;;:17:::1;:23;::::0;;;;;;;33798:10:::1;33774:35:::0;;;;;;;;-1:-1:-1;;33774:50:0::1;33770:225;;33879:104;::::0;;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;33879:104:0::1;::::0;;::::1;::::0;;;;-1:-1:-1;;;;;33879:23:0;::::1;-1:-1:-1::0;33879:23:0;;;:17:::1;:23:::0;;;;;33921:10:::1;33879:67:::0;;;;;;;;;;:104:::1;::::0;33951:5;;33879:71:::1;:104::i;:::-;-1:-1:-1::0;;;;;33841:23:0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;;;33865:10:::1;33841:35:::0;;;;;;;:142;33770:225:::1;34005:30;34019:4;34025:2;34029:5;34005:13;:30::i;:::-;-1:-1:-1::0;34053:4:0::1;::::0;33600:465;-1:-1:-1;;;;;33600:465:0:o;48114:183::-;48272:16;;48260:4;;-1:-1:-1;;;;;48260:4:0;;;48167:7;48247:18;;;:12;:18;;;;;;;48236:4;;;;;;48223:18;;;;;;48167:7;;48207:82;;48272:16;;48208:58;;48247:18;48208:34;;48223:18;26640:12;;:2;:12;:::i;:::-;26627:25;;:10;:25;:::i;:::-;27289:35;;-1:-1:-1;;;;;27289:35:0;:::i;:::-;27277:48;;-1:-1:-1;;;;;27277:48:0;:::i;:::-;48208:14;;:34::i;:58::-;48207:64;;:82::i;:::-;48187:102;;48114:183;:::o;49963:108::-;1913:13;:11;:13::i;:::-;50026:12:::1;:37:::0;;-1:-1:-1;;;;;;50026:37:0::1;-1:-1:-1::0;;;;;50026:37:0;;;::::1;::::0;;;::::1;::::0;;49963:108::o;50755:634::-;1913:13;:11;:13::i;:::-;50927:1:::1;50899:25;:29;;;50877:122;;;::::0;-1:-1:-1;;;50877:122:0;;11321:2:1;50877:122:0::1;::::0;::::1;11303:21:1::0;11360:2;11340:18;;;11333:30;11399:34;11379:18;;;11372:62;-1:-1:-1;;;11450:18:1;;;11443:41;11501:19;;50877:122:0::1;11119:407:1::0;50877:122:0::1;51151:24;:52:::0;;-1:-1:-1;;51151:52:0::1;;::::0;::::1;::::0;;::::1;::::0;;;51264:26:::1;::::0;-1:-1:-1;51236:54:0::1;51214:167;;;::::0;-1:-1:-1;;;51214:167:0;;11733:2:1;51214:167:0::1;::::0;::::1;11715:21:1::0;11772:2;11752:18;;;11745:30;11811:34;11791:18;;;11784:62;11882:33;11862:18;;;11855:61;11933:19;;51214:167:0::1;11531:427:1::0;47439:406:0;47620:10;47539:4;47602:29;;;:17;:29;;;;;;;;-1:-1:-1;;;;;47602:62:0;;;;;;;;;;:78;;47669:10;47602:66;:78::i;:::-;47579:10;47561:29;;;;:17;:29;;;;;;;;-1:-1:-1;;;;;47561:38:0;;;;;;;;;;;;:119;;;47696;1938:25:1;;;47561:38:0;;47696:119;;1911:18:1;47696:119:0;1792:177:1;48481:585:0;1913:13;:11;:13::i;:::-;48688:21:::1;:46:::0;;-1:-1:-1;;;;;;48688:46:0;;::::1;-1:-1:-1::0;;;;;48688:46:0;;::::1;;::::0;;48745:16:::1;:36:::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;48792:21:::1;:46:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;48849:7:::1;:18:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;48880:29:0;;;:11:::1;:29;::::0;;;;;:36;;-1:-1:-1;;48880:36:0;;::::1;-1:-1:-1::0;48880:36:0;;::::1;::::0;;;48939:21;;;::::1;48927:34:::0;;;;;:41;;;::::1;::::0;::::1;::::0;;48991:21;;;::::1;48979:34:::0;;;;;:41;;;::::1;::::0;::::1;::::0;;49043:7;;;;::::1;49031:20:::0;;;;;:27;;;;::::1;;::::0;;48481:585::o;52245:290::-;1913:13;:11;:13::i;:::-;52409:1:::1;52384:22;:26;52362:108;;;::::0;-1:-1:-1;;;52362:108:0;;12165:2:1;52362:108:0::1;::::0;::::1;12147:21:1::0;;;12184:18;;;12177:30;12243:34;12223:18;;;12216:62;12295:18;;52362:108:0::1;11963:356:1::0;52362:108:0::1;52481:21;:46:::0;52245:290::o;55879:173::-;1913:13;:11;:13::i;:::-;55981:12:::1;:28:::0;;;;56020:10:::1;:24:::0;55879:173::o;54654:213::-;1913:13;:11;:13::i;:::-;54769:18:::1;:37:::0;;;;54817:22:::1;:42:::0;54654:213::o;52543:256::-;1913:13;:11;:13::i;:::-;52669:1:::1;52649:17;:21;52627:107;;;::::0;-1:-1:-1;;;52627:107:0;;12526:2:1;52627:107:0::1;::::0;::::1;12508:21:1::0;12565:2;12545:18;;;12538:30;12604:34;12584:18;;;12577:62;-1:-1:-1;;;12655:18:1;;;12648:34;12699:19;;52627:107:0::1;12324:400:1::0;52627:107:0::1;52745:26;:46:::0;52543:256::o;50424:136::-;50535:16;;-1:-1:-1;;;;;50513:17:0;;50486:7;50513:17;;;:12;:17;;;;;;50486:7;;50513:39;;:17;:21;:39::i;2675:103::-;1913:13;:11;:13::i;:::-;2740:30:::1;2767:1;2740:18;:30::i;:::-;2675:103::o:0;49373:276::-;1913:13;:11;:13::i;:::-;49474:18;49466:49:::1;;;::::0;-1:-1:-1;;;49466:49:0;;12931:2:1;49466:49:0::1;::::0;::::1;12913:21:1::0;12970:2;12950:18;;;12943:30;-1:-1:-1;;;12989:18:1;;;12982:48;13047:18;;49466:49:0::1;12729:342:1::0;49466:49:0::1;49528:9;49548:94;49560:18:::0;;::::1;49548:94;;;49627:3;49601:11;:23;49613:7;;49621:1;49613:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;49601:23:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;49601:23:0;:29;;-1:-1:-1;;49601:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;49580:4;::::1;::::0;::::1;:::i;:::-;;;;49548:94;;;49455:194;49373:276:::0;;;:::o;48398:75::-;48453:4;;;;;;;;;-1:-1:-1;;;;;48453:4:0;-1:-1:-1;;;;;48440:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;55468:131;1913:13;:11;:13::i;:::-;55551:18:::1;:40:::0;;-1:-1:-1;;;;;55551:40:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;55551:40:0;;::::1;::::0;;;::::1;::::0;;55468:131::o;27134:29::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27134:29:0;;-1:-1:-1;27134:29:0;:::o;55034:101::-;1913:13;:11;:13::i;:::-;55104:16:::1;:23:::0;;-1:-1:-1;;55104:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;55034:101::o;50083:220::-;1913:13;:11;:13::i;:::-;50188:1:::1;50172:17:::0;::::1;::::0;::::1;::::0;:46:::1;;;50205:6;;;;;;;;;-1:-1:-1::0;;;;;50205:6:0::1;-1:-1:-1::0;;;;;50205:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;50193:25:0::1;:5;;50199:1;50193:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;50193:25:0::1;;50172:46;50164:55;;;::::0;::::1;;50230:20;:12;50245:5:::0;;50230:20:::1;:::i;:::-;-1:-1:-1::0;50272:5:0;;50278:16:::1;50293:1;50272:5:::0;50278:16:::1;:::i;:::-;50272:23;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;50261:8;:34:::0;;-1:-1:-1;;;;;;50261:34:0::1;-1:-1:-1::0;;;;;50261:34:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;50083:220:0:o;25763:87::-;25802:13;25835:7;25828:14;;;;;:::i;51397:143::-;51449:7;26698:5;51492:26;;51477:12;;:41;;;;:::i;:::-;51476:56;;;;:::i;51548:145::-;51601:7;26698:5;51644:27;;51629:12;;:42;;;;:::i;46835:596::-;46999:10;46940:4;46981:29;;;:17;:29;;;;;;;;-1:-1:-1;;;;;46981:38:0;;;;;;;;;;47034:27;;;47030:237;;47096:10;47119:1;47078:29;;;:17;:29;;;;;;;;-1:-1:-1;;;;;47078:38:0;;;;;;;;;:42;47030:237;;;47194:61;:8;47225:15;47194:12;:61::i;:::-;47171:10;47153:29;;;;:17;:29;;;;;;;;-1:-1:-1;;;;;47153:38:0;;;;;;;;;:102;47030:237;47305:10;47352:29;;;;:17;:29;;;;;;;;-1:-1:-1;;;;;47282:119:0;;47352:38;;;;;;;;;;;47282:119;;1938:25:1;;;47282:119:0;;47305:10;47282:119;;1911:18:1;47282:119:0;;;;;;;-1:-1:-1;47419:4:0;;46835:596;-1:-1:-1;;;46835:596:0:o;33377:215::-;33504:4;33482:2;-1:-1:-1;;;;;26294:18:0;;26286:43;;;;-1:-1:-1;;;26286:43:0;;9051:2:1;26286:43:0;;;9033:21:1;9090:2;9070:18;;;9063:30;-1:-1:-1;;;9109:18:1;;;9102:42;9161:18;;26286:43:0;8849:336:1;26286:43:0;33526:36:::1;33540:10;33552:2;33556:5;33526:13;:36::i;:::-;;33580:4;33573:11;;26340:1;33377:215:::0;;;;;:::o;50605:142::-;50701:24;;50686:12;;50658:7;;26698:5;;50686:39;;50701:24;;;50686:39;:::i;25406:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;55724:147::-;1913:13;:11;:13::i;:::-;55812:10:::1;:24:::0;;-1:-1:-1;;;;;;55812:24:0::1;-1:-1:-1::0;;;;;55812:24:0;;;::::1;::::0;;;::::1;::::0;;;55847:6:::1;:16:::0;55724:147::o;44456:767::-;29083:6;:13;;-1:-1:-1;;29083:13:0;29092:4;29083:13;;;1913::::1;:11;:13::i;:::-;44532:21:::2;:25:::0;44528:198:::2;;44601:16;::::0;44593:64:::2;::::0;44575:12:::2;::::0;-1:-1:-1;;;;;44601:16:0::2;::::0;44631:21:::2;::::0;44575:12;44593:64;44575:12;44593:64;44631:21;44601:16;44593:64:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44574:83;;;44680:7;44672:42;;;::::0;-1:-1:-1;;;44672:42:0;;14141:2:1;44672:42:0::2;::::0;::::2;14123:21:1::0;14180:2;14160:18;;;14153:30;-1:-1:-1;;;14199:18:1;;;14192:52;14261:18;;44672:42:0::2;13939:346:1::0;44672:42:0::2;44559:167;44528:198;44793:16;::::0;44782:4:::2;44738:20;44761:27:::0;;;:12:::2;:27;::::0;;;;;44738:20;;44761:49:::2;::::0;:27;:31:::2;:49::i;:::-;44738:72:::0;-1:-1:-1;44825:16:0;;44821:395:::2;;44882:16;::::0;;44896:1:::2;44882:16:::0;;;;;::::2;::::0;;44858:21:::2;::::0;44882:16:::2;::::0;::::2;::::0;;::::2;::::0;::::2;;::::0;-1:-1:-1;44882:16:0::2;44858:40;;44931:4;44913;44918:1;44913:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;44913:23:0;;::::2;:7;::::0;;::::2;::::0;;;;;;:23;;;;44961:6:::2;::::0;:13:::2;::::0;;-1:-1:-1;;;44961:13:0;;;;:6;;;::::2;::::0;:11:::2;::::0;:13:::2;::::0;;::::2;::::0;44913:7;;44961:13;;;;;:6;:13:::2;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44951:4;44956:1;44951:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;44951:23:0;;::::2;:7;::::0;;::::2;::::0;;;;;:23;44989:6:::2;::::0;45139:16:::2;::::0;44989:215:::2;::::0;-1:-1:-1;;;44989:215:0;;:6;;::::2;::::0;:57:::2;::::0;:215:::2;::::0;45065:12;;44989:6:::2;::::0;45116:4;;45139:16;;::::2;::::0;45174:15:::2;::::0;44989:215:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;44843:373;44821:395;-1:-1:-1::0;29119:6:0;:14;;-1:-1:-1;;29119:14:0;;;44456:767::o;55607:109::-;1913:13;:11;:13::i;:::-;55682:14:::1;:26:::0;55607:109::o;46376:249::-;1913:13;:11;:13::i;:::-;46450:5:::1;46447:171;;;46472:16;:24:::0;;-1:-1:-1;;46472:24:0::1;;::::0;::::1;;;;::::0;;46534:15:::1;46511:20;:38:::0;54875:151;:::o;46447:171::-:1;46582:16;:24:::0;;;::::1;;;;-1:-1:-1::0;;46582:24:0;;::::1;;::::0;;46376:249;:::o;25380:19::-;;;;;;;:::i;49074:291::-;49244:16;;49234:4;;-1:-1:-1;;;;;49234:4:0;49169:7;49221:18;;;:12;:18;;;;;;49169:7;;;;49221:40;;:22;:40::i;:::-;49194:67;;49292:65;49334:22;:20;:22::i;:::-;49292:37;49305:23;:16;49326:1;49305:20;:23::i;:::-;49292:8;;:12;:37::i;:65::-;49272:85;49074:291;-1:-1:-1;;;49074:291:0:o;52807:262::-;1913:13;:11;:13::i;:::-;52936:1:::1;52915:18;:22;52893:109;;;::::0;-1:-1:-1;;;52893:109:0;;15609:2:1;52893:109:0::1;::::0;::::1;15591:21:1::0;15648:2;15628:18;;;15621:30;15687:34;15667:18;;;15660:62;-1:-1:-1;;;15738:18:1;;;15731:35;15783:19;;52893:109:0::1;15407:401:1::0;52893:109:0::1;53013:27;:48:::0;52807:262::o;46141:227::-;1913:13;:11;:13::i;:::-;46210:5:::1;46206:155;;;46232:10;:18:::0;;-1:-1:-1;;46232:18:0::1;::::0;::::1;;;::::0;;46283:15:::1;46265;:33:::0;54875:151;:::o;46206:155::-:1;46331:10;:18:::0;;;::::1;;-1:-1:-1::0;;46331:18:0;;::::1;;::::0;;46141:227;:::o;49657:294::-;1913:13;:11;:13::i;:::-;49763:23;49755:54:::1;;;::::0;-1:-1:-1;;;49755:54:0;;12931:2:1;49755:54:0::1;::::0;::::1;12913:21:1::0;12970:2;12950:18;;;12943:30;-1:-1:-1;;;12989:18:1;;;12982:48;13047:18;;49755:54:0::1;12729:342:1::0;49755:54:0::1;49822:9;49842:102;49854:23:::0;;::::1;49842:102;;;49929:3;49900:9;:26;49910:12;;49923:1;49910:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;49900:26:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;49900:26:0;:32;;-1:-1:-1;;49900:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;49879:4;::::1;::::0;::::1;:::i;:::-;;;;49842:102;;2933:201:::0;1913:13;:11;:13::i;:::-;-1:-1:-1;;;;;3022:22:0;::::1;3014:73;;;::::0;-1:-1:-1;;;3014:73:0;;16015:2:1;3014:73:0::1;::::0;::::1;15997:21:1::0;16054:2;16034:18;;;16027:30;16093:34;16073:18;;;16066:62;-1:-1:-1;;;16144:18:1;;;16137:36;16190:19;;3014:73:0::1;15813:402:1::0;3014:73:0::1;3098:28;3117:8;3098:18;:28::i;54092:554::-:0;1913:13;:11;:13::i;:::-;54297:18:::1;:34:::0;;;54342:17:::1;:32:::0;;;54385:22:::1;:42:::0;;;54438:12:::1;:22:::0;;;54471:16:::1;:30:::0;;;54529:109:::1;54490:11:::0;54529:87:::1;54453:7:::0;54529:87;54410:17;54529:87;54318:13;54362:12;54529:22:::1;:41::i;:109::-;54512:14;:126:::0;-1:-1:-1;;;;;54092:554:0:o;8849:98::-;8907:7;8934:5;8938:1;8934;:5;:::i;9986:98::-;10044:7;10071:5;10075:1;10071;:5;:::i;9587:98::-;9645:7;9672:5;9676:1;9672;:5;:::i;2192:132::-;2100:6;;-1:-1:-1;;;;;2100:6:0;;;;;741:10;2256:23;2248:68;;;;-1:-1:-1;;;2248:68:0;;16422:2:1;2248:68:0;;;16404:21:1;;;16441:18;;;16434:30;16500:34;16480:18;;;16473:62;16552:18;;2248:68:0;16220:356:1;5675:118:0;4684:19;:17;:19::i;:::-;5735:7:::1;:14:::0;;-1:-1:-1;;;;5735:14:0::1;-1:-1:-1::0;;;5735:14:0::1;::::0;;5765:20:::1;5772:12;741:10:::0;;661:98;5772:12:::1;5765:20;::::0;-1:-1:-1;;;;;547:32:1;;;529:51;;517:2;502:18;5765:20:0::1;;;;;;;5675:118::o:0;5934:120::-;4943:16;:14;:16::i;:::-;5993:7:::1;:15:::0;;-1:-1:-1;;;;5993:15:0::1;::::0;;6024:22:::1;741:10:::0;6033:12:::1;661:98:::0;53077:219;53262:16;;53176:6;53252:27;;;:9;:27;;;;;;;;-1:-1:-1;;;;;53252:36:0;;;;;;;;;;53227:21;:19;:21::i;:::-;53220:68;;;;:::i;53304:230::-;53499:16;;53404:6;53488:28;;;:10;:28;;;;;;;-1:-1:-1;;;;;53488:37:0;;;;;;;;;;53455:22;:20;:22::i;11128:240::-;11248:7;11309:12;11301:6;;;;11293:29;;;;-1:-1:-1;;;11293:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;11344:5:0;;;11128:240::o;34457:3124::-;34597:4;4684:19;:17;:19::i;:::-;-1:-1:-1;;;;;34625:17:0;::::1;;::::0;;;:9:::1;:17;::::0;;;;;::::1;;34624:18;:43:::0;::::1;;;-1:-1:-1::0;;;;;;34647:20:0;::::1;;::::0;;;:9:::1;:20;::::0;;;;;::::1;;34646:21;34624:43;34616:67;;;::::0;-1:-1:-1;;;34616:67:0;;16988:2:1;34616:67:0::1;::::0;::::1;16970:21:1::0;17027:2;17007:18;;;17000:30;-1:-1:-1;;;17046:18:1;;;17039:41;17097:18;;34616:67:0::1;16786:335:1::0;34616:67:0::1;34700:6;::::0;::::1;;::::0;:23:::1;;-1:-1:-1::0;34710:13:0::1;::::0;::::1;::::0;::::1;;;34700:23;34696:104;;;34747:41;34762:6;34770:9;34781:6;34747:14;:41::i;:::-;34740:48;;;;34696:104;34812:16;:14;:16::i;:::-;34851;::::0;34841:27:::1;::::0;;;:9:::1;:27;::::0;;;;;;;-1:-1:-1;;;;;34841:38:0;::::1;::::0;;;;;;;:56;;34890:6;;34841:27;:56:::1;::::0;34890:6;;34841:56:::1;:::i;:::-;::::0;;;-1:-1:-1;;34919:16:0::1;::::0;34908:28:::1;::::0;;;:10:::1;:28:::0;;;;;;;-1:-1:-1;;;;;34908:36:0;::::1;::::0;;;;;;;:46;;34948:6;;34908:28;:46:::1;::::0;34948:6;;34908:46:::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;34972:22:0;::::1;;::::0;;;:11:::1;:22;::::0;;;;;::::1;;34971:23;:44:::0;::::1;;;-1:-1:-1::0;35011:4:0::1;::::0;-1:-1:-1;;;;;34998:17:0;;::::1;35011:4:::0;::::1;34998:17;;34971:44;34967:680;;;35193:6;35170:20;35180:9;35170;:20::i;:::-;:29;;;;:::i;:::-;35144:22;:20;:22::i;:::-;:55;;35118:218;;;::::0;-1:-1:-1;;;35118:218:0;;17549:2:1;35118:218:0::1;::::0;::::1;17531:21:1::0;17588:3;17568:18;;;17561:31;17628:34;17608:18;;;17601:62;17699:34;17679:18;;;17672:62;17771:34;17750:19;;;17743:63;-1:-1:-1;;;17822:19:1;;;17815:36;17868:19;;35118:218:0::1;17347:546:1::0;35118:218:0::1;35479:1;35441:34;35465:9;35441:23;:34::i;:::-;:39;;35415:220;;;::::0;-1:-1:-1;;;35415:220:0;;18100:2:1;35415:220:0::1;::::0;::::1;18082:21:1::0;18139:3;18119:18;;;18112:31;18179:34;18159:18;;;18152:62;18250:34;18230:18;;;18223:62;18322:34;18301:19;;;18294:63;18394:25;18373:19;;;18366:54;18437:19;;35415:220:0::1;17898:564:1::0;35415:220:0::1;-1:-1:-1::0;;;;;35664:19:0;::::1;;::::0;;;:11:::1;:19;::::0;;;;;::::1;;35663:20;:38:::0;::::1;;;-1:-1:-1::0;35697:4:0::1;::::0;-1:-1:-1;;;;;35687:14:0;;::::1;35697:4:::0;::::1;35687:14;;35663:38;35659:481;;;35965:1;35929:32;35954:6;35929:24;:32::i;:::-;:37;;35903:225;;;::::0;-1:-1:-1;;;35903:225:0;;18669:2:1;35903:225:0::1;::::0;::::1;18651:21:1::0;18708:3;18688:18;;;18681:31;18748:34;18728:18;;;18721:62;18819:34;18799:18;;;18792:62;18891:34;18870:19;;;18863:63;18963:32;18942:19;;;18935:61;19013:19;;35903:225:0::1;18467:571:1::0;35903:225:0::1;36156:14;:12;:14::i;:::-;36152:55;;;36187:8;:6;:8::i;:::-;36223:20;:18;:20::i;:::-;36219:67;;;36260:14;:12;:14::i;:::-;36298:17;36318:28;36329:16;;36318:6;:10;;:28;;;;:::i;:::-;36298:48;;36359:25;36387:32;36401:6;36409:9;36387:13;:32::i;:::-;:110;;36488:9;36387:110;;;36435:37;36443:6;36451:9;36462;36435:7;:37::i;:::-;36511:18;::::0;36359:138;;-1:-1:-1;36511:18:0;;::::1;-1:-1:-1::0;;;;;36511:18:0::1;:32:::0;;::::1;::::0;:52:::1;;-1:-1:-1::0;36547:16:0::1;::::0;::::1;;36511:52;36507:418;;;36605:18;;;;;;;;;-1:-1:-1::0;;;;;36605:18:0::1;-1:-1:-1::0;;;;;36584:49:0::1;;36634:6;36642:99;36724:16;;36642:77;36667:9;36642:77;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;36642:20:0;::::1;;::::0;;;:12:::1;:20;::::0;;;;;;:77;:24:::1;:77::i;:99::-;36584:158;::::0;-1:-1:-1;;;;;;36584:158:0::1;::::0;;;;;;-1:-1:-1;;;;;19235:32:1;;;36584:158:0::1;::::0;::::1;19217:51:1::0;19284:18;;;19277:34;19190:18;;36584:158:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;36580:174:::0;36793:18:::1;::::0;36884:16:::1;::::0;-1:-1:-1;;;;;36833:23:0;;::::1;;::::0;;;:12:::1;:23;::::0;;;;;36793:18;;;::::1;;::::0;36772:49:::1;::::0;36822:9;;36833:68:::1;::::0;36884:16;36833:46:::1;::::0;36861:17;36833:27:::1;:46::i;:68::-;36772:130;::::0;-1:-1:-1;;;;;;36772:130:0::1;::::0;;;;;;-1:-1:-1;;;;;19235:32:1;;;36772:130:0::1;::::0;::::1;19217:51:1::0;19284:18;;;19277:34;19190:18;;36772:130:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;36768:146:::0;::::1;36941:16;:14;:16::i;:::-;36937:76;;;36996:4;::::0;36974:27:::1;::::0;-1:-1:-1;;;;;36983:17:0;;::::1;36996:4:::0;::::1;36983:17;36974:8;:27::i;:::-;37048:82;37073:9;37048:82;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;37048:20:0;::::1;;::::0;;;:12:::1;:20;::::0;;;;;;:82;:24:::1;:82::i;:::-;-1:-1:-1::0;;;;;37025:20:0;;::::1;;::::0;;;:12:::1;:20;::::0;;;;;:105;;;;37169:23;;::::1;::::0;;;;:70:::1;::::0;37211:17;37169:27:::1;:70::i;:::-;-1:-1:-1::0;;;;;37143:23:0;;::::1;;::::0;;;:12:::1;:23;::::0;;;;:96;;;;37256:18:::1;::::0;;;::::1;;:32:::0;;::::1;::::0;:52:::1;;-1:-1:-1::0;37292:16:0::1;::::0;::::1;;37256:52;37252:164;;;37350:18;::::0;37378:14:::1;::::0;37329:64:::1;::::0;-1:-1:-1;;;;;;37329:64:0;;::::1;::::0;::::1;1938:25:1::0;;;;37350:18:0;;;::::1;-1:-1:-1::0;;;;;37350:18:0::1;::::0;37329:48:::1;::::0;1911:18:1;;37329:64:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;37325:80:::0;::::1;37477:9;-1:-1:-1::0;;;;;37433:118:0::1;37456:6;-1:-1:-1::0;;;;;37433:118:0::1;-1:-1:-1::0;;;;;;;;;;;37501:39:0::1;37523:16;;37501:17;:21;;:39;;;;:::i;:::-;37433:118;::::0;1938:25:1;;;1926:2;1911:18;37433:118:0::1;;;;;;;-1:-1:-1::0;37569:4:0::1;::::0;34457:3124;-1:-1:-1;;;;;34457:3124:0:o;9230:98::-;9288:7;9315:5;9319:1;9315;:5;:::i;3294:191::-;3387:6;;;-1:-1:-1;;;;;3404:17:0;;;3387:6;3404:17;;;-1:-1:-1;;;;;;3404:17:0;;;;;;3437:40;;3387:6;;;;;;;;3437:40;;3368:16;;3437:40;3357:128;3294:191;:::o;5238:108::-;5150:7;;-1:-1:-1;;;5150:7:0;;;;5308:9;5300:38;;;;-1:-1:-1;;;5300:38:0;;19524:2:1;5300:38:0;;;19506:21:1;19563:2;19543:18;;;19536:30;-1:-1:-1;;;19582:18:1;;;19575:46;19638:18;;5300:38:0;19322:340:1;5423:108:0;5150:7;;-1:-1:-1;;;5150:7:0;;;;5482:41;;;;-1:-1:-1;;;5482:41:0;;19869:2:1;5482:41:0;;;19851:21:1;19908:2;19888:18;;;19881:30;-1:-1:-1;;;19927:18:1;;;19920:50;19987:18;;5482:41:0;19667:344:1;34073:376:0;34191:4;34208:17;34228:28;34239:16;;34228:6;:10;;:28;;;;:::i;:::-;34208:48;;34288:70;34311:9;34288:70;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;34288:18:0;;;;;;:12;:18;;;;;;;:70;:22;:70::i;:::-;-1:-1:-1;;;;;34267:18:0;;;;;;;:12;:18;;;;;;:91;;;;34388:16;;;;;;;:31;;34409:9;34388:20;:31::i;:::-;-1:-1:-1;;;;;34369:16:0;;;;;;:12;:16;;;;;:50;-1:-1:-1;34437:4:0;;-1:-1:-1;34073:376:0;;;;;:::o;31977:239::-;32122:21;;32103:16;;32052:15;;32103:40;;;:::i;:::-;32082:18;:61;32078:131;;;32160:16;:37;31977:239::o;45461:274::-;45545:10;;45508:4;;45545:10;;:54;;;;-1:-1:-1;27386:12:0;26392:1;27386:2;:12;:::i;:::-;27372:26;;:11;:26;:::i;:::-;45573:12;;:25;45545:54;:89;;;;-1:-1:-1;45630:4:0;;-1:-1:-1;;;;;45630:4:0;45616:10;:18;;45545:89;:114;;;;-1:-1:-1;45653:6:0;;;;45652:7;45545:114;:182;;;;;45714:12;;45696:15;;:30;;;;:::i;:::-;45676:15;:51;;45525:202;;45461:274;:::o;32224:1145::-;32267:6;;;;32262:21;;;32224:1145::o;32262:21::-;32295:19;32325:25;32371:19;;32353:15;:37;;;;:::i;:::-;32325:65;;32401:17;32439:15;;32421;:33;;;;:::i;:::-;32401:53;;32465:13;32481:27;32495:12;;32481:9;:13;;:27;;;;:::i;:::-;32465:43;;32519:13;32535:23;32545:12;;32535:5;:9;;:23;;;;:::i;:::-;32519:39;;32596:8;32575:17;:30;32571:361;;;32636:10;;32622:24;;32571:361;;;32690:8;32668:17;:31;32664:268;;32730:3;32716:17;;32664:268;;;32777:20;32755:17;:43;32751:181;;32829:2;32815:16;;32751:181;;;32875:12;32853:17;:35;32849:83;;32919:1;32905:15;;32849:83;32944:9;32964:183;32980:5;32976:1;:9;32964:183;;;33022:113;33117:17;26556:1;33117:2;:17;:::i;:::-;33022:72;33057:36;33081:11;33058:17;26556:1;33058:2;:17;:::i;33057:36::-;33022:12;;;:34;:72::i;:113::-;33007:12;:128;32987:3;;;;:::i;:::-;;;;32964:183;;;33193:12;;33178:28;;26640:12;26392:1;26640:2;:12;:::i;:::-;26627:25;;:10;:25;:::i;:::-;27289:35;;-1:-1:-1;;;;;27289:35:0;:::i;:::-;27277:48;;-1:-1:-1;;;;;27277:48:0;:::i;33178:28::-;33159:16;:47;33267:12;;33237:44;;33257:23;;:5;;:9;:23::i;:::-;33237:15;;;:19;:44::i;:::-;33219:15;:62;33294:12;;:19;;;-1:-1:-1;;;;;;33294:19:0;;;;-1:-1:-1;;;;;33294:12:0;;;;:17;;:19;;;;;:12;;:19;;;;;;;;:12;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33341:5;33331:30;33348:12;;33331:30;;;;1938:25:1;;1926:2;1911:18;;1792:177;33331:30:0;;;;;;;;32251:1118;;;;;;32224:1145::o;45743:242::-;45833:16;;45796:4;;45833:16;;;;;:41;;;;-1:-1:-1;45868:6:0;;;;45867:7;45833:41;:77;;;;-1:-1:-1;45906:4:0;;-1:-1:-1;;;;;45906:4:0;45892:10;:18;;45833:77;:144;;;;-1:-1:-1;45947:20:0;;:29;;45970:6;45947:29;:::i;39471:1593::-;29083:6;:13;;-1:-1:-1;;29083:13:0;29092:4;29083:13;;;39608:16:::1;::::0;39567:21:::1;::::0;-1:-1:-1;;;;;39567:21:0::1;29083:6:::0;39554:35;;;:12:::1;:35;::::0;;;;;29083:6;;39554:81:::1;::::0;:35;:39:::1;:81::i;:::-;39524:111;;39674:18;;39652:19;:40;:68;;;-1:-1:-1::0;39696:24:0;;39652:68:::1;39648:81;;;39722:7;;;39648:81;39830:21;::::0;-1:-1:-1;;;;;39830:21:0::1;39817:35;::::0;;;:12:::1;:35;::::0;;;;;;39792:4:::1;39771:27:::0;;;;;:92:::1;::::0;:31:::1;:92::i;:::-;39762:4;39741:27;::::0;;;:12:::1;:27;::::0;;;;;:122;;;;39887:21:::1;::::0;-1:-1:-1;;;;;39887:21:0::1;39874:35:::0;;;;;:39;;;39950:26:::1;:19:::0;39974:1:::1;39950:23;:26::i;:::-;39924:52;;39987:20;40010:89;40034:15;40010:89;;;;;;;;;;;;;;;;;:19:::0;;:89;:23:::1;:89::i;:::-;39987:112;;40116:12;40132:1;40116:17:::0;40112:57:::1;;40151:7;;;;;40112:57;40205:16;::::0;;40219:1:::1;40205:16:::0;;;;;::::1;::::0;;40181:21:::1;::::0;40205:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;40205:16:0::1;40181:40;;40250:4;40232;40237:1;40232:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;40232:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;40276:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;40276:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;40232:7;;40276:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40266:4;40271:1;40266:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;40266:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;40360:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;40360:188:0;;40326:21:::1;::::0;40360:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;40432:12;;40302:21:::1;::::0;40475:4;;40502::::1;::::0;40522:15:::1;::::0;40360:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;40561:26;40590:83;40616:13;40590:83;;;;;;;;;;;;;;;;;:21;::::0;:83;:25:::1;:83::i;:::-;40561:112;;40708:1;40690:15;:19;:45;;;;;40734:1;40713:18;:22;40690:45;40686:322;;;40752:6;::::0;40926:21:::1;::::0;40752:244:::1;::::0;-1:-1:-1;;;40752:244:0;;40828:4:::1;40752:244;::::0;::::1;20502:34:1::0;20552:18;;;20545:34;;;40752:6:0::1;20595:18:1::0;;;20588:34;;;20638:18;;;20631:34;-1:-1:-1;;;;;40926:21:0;;::::1;20681:19:1::0;;;20674:44;40966:15:0::1;20734:19:1::0;;;20727:35;40752:6:0;::::1;::::0;:22:::1;::::0;40782:18;;20436:19:1;;40752:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;40686:322;-1:-1:-1::0;;41041:15:0::1;41018:20;:38:::0;-1:-1:-1;;;;29107:1:0::1;29119:6:::0;:14;;-1:-1:-1;;29119:14:0;;;39471:1593::o;45231:222::-;45374:4;;45330;;-1:-1:-1;;;;;45374:12:0;;;:4;;:12;:32;;;;-1:-1:-1;;;;;;45391:15:0;;;;;;:11;:15;;;;;;;;45390:16;45374:32;45373:72;;;-1:-1:-1;45412:4:0;;-1:-1:-1;;;;;45412:10:0;;;:4;;:10;:32;;;;-1:-1:-1;;;;;;;;45427:17:0;;;;;:11;:17;;;;;;;;45426:18;;45231:222::o;37589:1874::-;37713:7;37733:21;37765:20;37796:15;37822:25;37858:19;37888:17;37935:4;;;;;;;;;-1:-1:-1;;;;;37935:4:0;-1:-1:-1;;;;;37922:17:0;:9;-1:-1:-1;;;;;37922:17:0;;37918:622;;37984:18;;37968:34;;38032:17;;38017:32;;38074:12;;38064:22;;38121;;38101:42;;38172:16;;38158:30;;38215:14;;38203:26;;37918:622;;;38289:17;;38273:33;;38336:16;;38321:31;;38377:11;;38367:21;;38423;;38403:41;;38473:15;;38459:29;;38515:13;;38503:25;;37918:622;38552:17;38572:40;38602:9;38572:25;:9;26698:5;38572:13;:25::i;:::-;:29;;:40::i;:::-;38552:60;-1:-1:-1;38632:25:0;38660:42;38690:11;38660:25;:9;26698:5;38660:13;:25::i;:42::-;38750:7;;-1:-1:-1;;;;;38750:7:0;38737:21;;;;:12;:21;;;;;;38632:70;;-1:-1:-1;38737:44:0;;38632:70;38737:25;:44::i;:::-;38726:7;;;-1:-1:-1;;;;;38726:7:0;;;38713:21;;;;:12;:21;;;;;:68;;;;38814:7;38845:16;;38814:7;;;;38797:66;;;-1:-1:-1;;;;;;;;;;;38797:66:0;38823:39;;:17;;:21;:39::i;:::-;38797:66;;1938:25:1;;;1926:2;1911:18;38797:66:0;;;;;;;38876:16;38895:79;38925:48;38965:7;38925:35;:12;38942:17;38925:16;:35::i;:48::-;38895:25;:9;26698:5;38895:13;:25::i;:79::-;39036:4;39015:27;;;;:12;:27;;;;;;38876:98;;-1:-1:-1;39015:41:0;;38876:98;39015:31;:41::i;:::-;39006:4;38985:27;;;;:12;:27;;;;;:71;;;;39117:16;;-1:-1:-1;;;;;39072:63:0;;;-1:-1:-1;;;;;;;;;;;39072:63:0;39104:30;;:8;;:12;:30::i;:::-;39072:63;;1938:25:1;;;1926:2;1911:18;39072:63:0;;;;;;;39148:14;39165:44;39195:13;39165:25;:9;26698:5;39165:13;:25::i;:44::-;39271:21;;-1:-1:-1;;;;;39271:21:0;39258:35;;;;:12;:35;;;;;;39148:61;;-1:-1:-1;39258:47:0;;39148:61;39258:39;:47::i;:::-;39220:12;:35;39233:21;;;;;;;;;-1:-1:-1;;;;;39233:21:0;-1:-1:-1;;;;;39220:35:0;-1:-1:-1;;;;;39220:35:0;;;;;;;;;;;;:85;;;;39338:21;;;;;;;;;-1:-1:-1;;;;;39338:21:0;-1:-1:-1;;;;;39321:69:0;39330:6;-1:-1:-1;;;;;39321:69:0;-1:-1:-1;;;;;;;;;;;39361:28:0;39372:16;;39361:6;:10;;:28;;;;:::i;:::-;39321:69;;1938:25:1;;;1926:2;1911:18;39321:69:0;;;;;;;39410:45;;;;;;;;;;;;-1:-1:-1;;;39410:45:0;;;;;;:9;;39424;;39410:13;:45::i;:::-;39403:52;37589:1874;-1:-1:-1;;;;;;;;;;;;;;37589:1874:0:o;45993:140::-;46081:6;;46042:4;;46081:6;;46080:7;:42;;;;-1:-1:-1;;46118:4:0;;-1:-1:-1;;;;;46118:4:0;46104:10;:18;;;45993:140::o;41072:3376::-;29083:6;:13;;-1:-1:-1;;29083:13:0;29092:4;29083:13;;;41193:16:::1;::::0;41182:4:::1;29083:6:::0;41161:27;;;:12:::1;:27;::::0;;;;;29083:6;;41161:49:::1;::::0;:27;:31:::1;:49::i;:::-;41138:72;;41242:22;;41227:12;:37;:58;;;-1:-1:-1::0;41268:17:0;;41227:58:::1;41223:71;;;41287:7;;;41223:71;41386:16;::::0;;41400:1:::1;41386:16:::0;;;;;::::1;::::0;;41330:21:::1;::::0;41306::::1;::::0;41386:16;41400:1;41386:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;41386:16:0::1;41362:40;;41431:4;41413;41418:1;41413:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;41413:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;41457:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;41457:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;41413:7;;41457:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41447:4;41452:1;41447:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;41447:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;41483:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;41483:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;41555:12;;41483:6:::1;::::0;41598:4;;41625::::1;::::0;41645:15:::1;::::0;41483:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;41684:33;41720:79;41746:13;41720:79;;;;;;;;;;;;;;;;;:21;::::0;:79;:25:::1;:79::i;:::-;41684:115;;41812:20;41843:25:::0;41879:15:::1;41911:10;41907:325;;;41953:17;;41938:32;;42005:22;;41985:42;;42052:12;;42042:22;;41907:325;;;42112:16;;42097:31;;42163:21;;42143:41;;42209:11;;42199:21;;41907:325;42249:16;::::0;::::1;;42244:61;;-1:-1:-1::0;42292:1:0::1;42244:61;42317:14;42334:48;42374:7:::0;42334:35:::1;:12:::0;42351:17;42334:16:::1;:35::i;:48::-;42317:65:::0;-1:-1:-1;42393:25:0::1;42421:55;42317:65:::0;42421:43:::1;:25:::0;42451:12;42421:29:::1;:43::i;:55::-;42393:83:::0;-1:-1:-1;42493:21:0;;42489:258:::1;;42558:16;::::0;42550:121:::1;::::0;42532:12:::1;::::0;-1:-1:-1;;;;;42558:16:0::1;::::0;42647:5:::1;::::0;42606:17;;42532:12;42550:121;42532:12;42550:121;42606:17;42558:16;42647:5;42550:121:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;42531:140:0;;-1:-1:-1;;42705:4:0::1;42694:15:::0;::::1;;;42686:49;;;::::0;-1:-1:-1;;;42686:49:0;;21286:2:1;42686:49:0::1;::::0;::::1;21268:21:1::0;21325:2;21305:18;;;21298:30;-1:-1:-1;;;21344:18:1;;;21337:51;21405:18;;42686:49:0::1;21084:345:1::0;42686:49:0::1;42516:231;42489:258;42767:20;42790:50;42833:6:::0;42790:38:::1;:25:::0;42820:7;42790:29:::1;:38::i;:50::-;42767:73:::0;-1:-1:-1;42851:26:0::1;42880:66;42767:73:::0;42880:48:::1;:25:::0;42910:17;42880:29:::1;:48::i;:66::-;42963:10;::::0;42851:95;;-1:-1:-1;;;;;;42963:10:0::1;:24:::0;;::::1;::::0;:38:::1;;;43000:1;42991:6;;:10;42963:38;42959:439;;;43018:20;43041:49;43083:6;43041:37;43071:6;;43041:25;:29;;:37;;;;:::i;:49::-;43018:72;;43126:55;43149:12;43126:55;;;;;;;;;;;;;-1:-1:-1::0;;;43126:55:0::1;;::::0;:18:::1;:22;;:55;;;;;:::i;:::-;43225:10;::::0;43217:110:::1;::::0;43105:76;;-1:-1:-1;43199:12:0::1;::::0;-1:-1:-1;;;;;43225:10:0;;::::1;::::0;43303:5:::1;::::0;43267:12;;43199;43217:110;43199:12;43217:110;43267:12;43225:10;43303:5;43217:110:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;43198:129:0;;-1:-1:-1;;43361:4:0::1;43350:15:::0;::::1;;;43342:44;;;::::0;-1:-1:-1;;;43342:44:0;;21636:2:1;43342:44:0::1;::::0;::::1;21618:21:1::0;21675:2;21655:18;;;21648:30;-1:-1:-1;;;21694:18:1;;;21687:46;21750:18;;43342:44:0::1;21434:340:1::0;43342:44:0::1;43003:395;;42959:439;43414:22:::0;;43410:271:::1;;43480:21;::::0;43472:127:::1;::::0;43454:12:::1;::::0;-1:-1:-1;;;;;43480:21:0::1;::::0;43575:5:::1;::::0;43533:18;;43454:12;43472:127;43454:12;43472:127;43533:18;43480:21;43575:5;43472:127:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;43453:146:0;;-1:-1:-1;;43633:4:0::1;43622:15:::0;::::1;;;43614:55;;;::::0;-1:-1:-1;;;43614:55:0;;21981:2:1;43614:55:0::1;::::0;::::1;21963:21:1::0;22020:2;22000:18;;;21993:30;22059:29;22039:18;;;22032:57;22106:18;;43614:55:0::1;21779:351:1::0;43614:55:0::1;43438:243;43410:271;43710:14;::::0;:32:::1;::::0;43729:12;43710:18:::1;:32::i;:::-;43693:14;:49:::0;43759:18:::1;::::0;;;::::1;-1:-1:-1::0;;;;;43759:18:0::1;:32:::0;;::::1;::::0;:52:::1;;;43810:1;43795:12;:16;43759:52;:78;;;;-1:-1:-1::0;43815:8:0::1;::::0;-1:-1:-1;;;;;43815:8:0::1;:22:::0;::::1;43759:78;43755:686;;;43884:8;::::0;43877:41:::1;::::0;-1:-1:-1;;;43877:41:0;;43912:4:::1;43877:41;::::0;::::1;529:51:1::0;43854:20:0::1;::::0;-1:-1:-1;;;;;43884:8:0::1;::::0;43877:26:::1;::::0;502:18:1;;43877:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43950:6;::::0;43933:228:::1;::::0;-1:-1:-1;;;43933:228:0;;43854:64;;-1:-1:-1;;;;;;43950:6:0::1;::::0;43933:75:::1;::::0;44016:12;;43933:228:::1;::::0;43950:6:::1;::::0;44068:12:::1;::::0;44107:4:::1;::::0;44131:15:::1;::::0;43933:228:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;44209:8:0::1;::::0;44202:41:::1;::::0;-1:-1:-1;;;44202:41:0;;44237:4:::1;44202:41;::::0;::::1;529:51:1::0;44176:23:0::1;::::0;-1:-1:-1;44246:12:0;;-1:-1:-1;;;;;;44209:8:0;;::::1;::::0;-1:-1:-1;44202:26:0::1;::::0;502:18:1;;44202:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;;;;:::i;:::-;44280:8;::::0;44298:18:::1;::::0;44273:61:::1;::::0;-1:-1:-1;;;44273:61:0;;-1:-1:-1;;;;;44298:18:0;;;::::1;::::0;::::1;44273:61;::::0;::::1;19217:51:1::0;19284:18;;;19277:34;;;;;-1:-1:-1;44280:8:0::1;::::0;44273:24:::1;::::0;19190:18:1;;44273:61:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;44374:18:0::1;::::0;44353:65:::1;::::0;-1:-1:-1;;;44353:65:0;;::::1;::::0;::::1;1938:25:1::0;;;44374:18:0;;;::::1;-1:-1:-1::0;;;;;44374:18:0::1;::::0;44353:48:::1;::::0;1911:18:1;;44353:65:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;44349:81:::0;43839:602:::1;;43755:686;41125:3323;;;;;;;;;;;-1:-1:-1::0;29119:6:0;:14;;-1:-1:-1;;29119:14:0;;;41072:3376::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:118:1;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;137:241;193:6;246:2;234:9;225:7;221:23;217:32;214:52;;;262:1;259;252:12;214:52;301:9;288:23;320:28;342:5;320:28;:::i;591:548::-;703:4;732:2;761;750:9;743:21;793:6;787:13;836:6;831:2;820:9;816:18;809:34;861:1;871:140;885:6;882:1;879:13;871:140;;;980:14;;;976:23;;970:30;946:17;;;965:2;942:26;935:66;900:10;;871:140;;;875:3;1060:1;1055:2;1046:6;1035:9;1031:22;1027:31;1020:42;1130:2;1123;1119:7;1114:2;1106:6;1102:15;1098:29;1087:9;1083:45;1079:54;1071:62;;;;591:548;;;;:::o;1144:131::-;-1:-1:-1;;;;;1219:31:1;;1209:42;;1199:70;;1265:1;1262;1255:12;1280:315;1348:6;1356;1409:2;1397:9;1388:7;1384:23;1380:32;1377:52;;;1425:1;1422;1415:12;1377:52;1464:9;1451:23;1483:31;1508:5;1483:31;:::i;:::-;1533:5;1585:2;1570:18;;;;1557:32;;-1:-1:-1;;;1280:315:1:o;1974:247::-;2033:6;2086:2;2074:9;2065:7;2061:23;2057:32;2054:52;;;2102:1;2099;2092:12;2054:52;2141:9;2128:23;2160:31;2185:5;2160:31;:::i;2762:454::-;2857:6;2865;2873;2881;2889;2942:3;2930:9;2921:7;2917:23;2913:33;2910:53;;;2959:1;2956;2949:12;2910:53;-1:-1:-1;;2982:23:1;;;3052:2;3037:18;;3024:32;;-1:-1:-1;3103:2:1;3088:18;;3075:32;;3154:2;3139:18;;3126:32;;-1:-1:-1;3205:3:1;3190:19;3177:33;;-1:-1:-1;2762:454:1;-1:-1:-1;2762:454:1:o;3221:456::-;3298:6;3306;3314;3367:2;3355:9;3346:7;3342:23;3338:32;3335:52;;;3383:1;3380;3373:12;3335:52;3422:9;3409:23;3441:31;3466:5;3441:31;:::i;:::-;3491:5;-1:-1:-1;3548:2:1;3533:18;;3520:32;3561:33;3520:32;3561:33;:::i;:::-;3221:456;;3613:7;;-1:-1:-1;;;3667:2:1;3652:18;;;;3639:32;;3221:456::o;3871:276::-;3929:6;3982:2;3970:9;3961:7;3957:23;3953:32;3950:52;;;3998:1;3995;3988:12;3950:52;4037:9;4024:23;4087:10;4080:5;4076:22;4069:5;4066:33;4056:61;;4113:1;4110;4103:12;4152:315;4220:6;4228;4281:2;4269:9;4260:7;4256:23;4252:32;4249:52;;;4297:1;4294;4287:12;4249:52;4333:9;4320:23;4310:33;;4393:2;4382:9;4378:18;4365:32;4406:31;4431:5;4406:31;:::i;:::-;4456:5;4446:15;;;4152:315;;;;;:::o;4652:671::-;4738:6;4746;4754;4762;4815:3;4803:9;4794:7;4790:23;4786:33;4783:53;;;4832:1;4829;4822:12;4783:53;4871:9;4858:23;4890:31;4915:5;4890:31;:::i;:::-;4940:5;-1:-1:-1;4997:2:1;4982:18;;4969:32;5010:33;4969:32;5010:33;:::i;:::-;5062:7;-1:-1:-1;5121:2:1;5106:18;;5093:32;5134:33;5093:32;5134:33;:::i;:::-;5186:7;-1:-1:-1;5245:2:1;5230:18;;5217:32;5258:33;5217:32;5258:33;:::i;:::-;4652:671;;;;-1:-1:-1;4652:671:1;;-1:-1:-1;;4652:671:1:o;5328:180::-;5387:6;5440:2;5428:9;5419:7;5415:23;5411:32;5408:52;;;5456:1;5453;5446:12;5408:52;-1:-1:-1;5479:23:1;;5328:180;-1:-1:-1;5328:180:1:o;5741:248::-;5809:6;5817;5870:2;5858:9;5849:7;5845:23;5841:32;5838:52;;;5886:1;5883;5876:12;5838:52;-1:-1:-1;;5909:23:1;;;5979:2;5964:18;;;5951:32;;-1:-1:-1;5741:248:1:o;5994:367::-;6057:8;6067:6;6121:3;6114:4;6106:6;6102:17;6098:27;6088:55;;6139:1;6136;6129:12;6088:55;-1:-1:-1;6162:20:1;;6205:18;6194:30;;6191:50;;;6237:1;6234;6227:12;6191:50;6274:4;6266:6;6262:17;6250:29;;6334:3;6327:4;6317:6;6314:1;6310:14;6302:6;6298:27;6294:38;6291:47;6288:67;;;6351:1;6348;6341:12;6288:67;5994:367;;;;;:::o;6366:566::-;6458:6;6466;6474;6527:2;6515:9;6506:7;6502:23;6498:32;6495:52;;;6543:1;6540;6533:12;6495:52;6583:9;6570:23;6616:18;6608:6;6605:30;6602:50;;;6648:1;6645;6638:12;6602:50;6687:70;6749:7;6740:6;6729:9;6725:22;6687:70;:::i;:::-;6776:8;;-1:-1:-1;6661:96:1;-1:-1:-1;;6861:2:1;6846:18;;6833:32;6874:28;6833:32;6874:28;:::i;:::-;6921:5;6911:15;;;6366:566;;;;;:::o;6937:437::-;7023:6;7031;7084:2;7072:9;7063:7;7059:23;7055:32;7052:52;;;7100:1;7097;7090:12;7052:52;7140:9;7127:23;7173:18;7165:6;7162:30;7159:50;;;7205:1;7202;7195:12;7159:50;7244:70;7306:7;7297:6;7286:9;7282:22;7244:70;:::i;:::-;7333:8;;7218:96;;-1:-1:-1;6937:437:1;-1:-1:-1;;;;6937:437:1:o;7379:388::-;7447:6;7455;7508:2;7496:9;7487:7;7483:23;7479:32;7476:52;;;7524:1;7521;7514:12;7476:52;7563:9;7550:23;7582:31;7607:5;7582:31;:::i;:::-;7632:5;-1:-1:-1;7689:2:1;7674:18;;7661:32;7702:33;7661:32;7702:33;:::i;8202:380::-;8281:1;8277:12;;;;8324;;;8345:61;;8399:4;8391:6;8387:17;8377:27;;8345:61;8452:2;8444:6;8441:14;8421:18;8418:38;8415:161;;8498:10;8493:3;8489:20;8486:1;8479:31;8533:4;8530:1;8523:15;8561:4;8558:1;8551:15;8415:161;;8202:380;;;:::o;8587:127::-;8648:10;8643:3;8639:20;8636:1;8629:31;8679:4;8676:1;8669:15;8703:4;8700:1;8693:15;8719:125;8784:9;;;8805:10;;;8802:36;;;8818:18;;:::i;9190:422::-;9279:1;9322:5;9279:1;9336:270;9357:7;9347:8;9344:21;9336:270;;;9416:4;9412:1;9408:6;9404:17;9398:4;9395:27;9392:53;;;9425:18;;:::i;:::-;9475:7;9465:8;9461:22;9458:55;;;9495:16;;;;9458:55;9574:22;;;;9534:15;;;;9336:270;;;9340:3;9190:422;;;;;:::o;9617:806::-;9666:5;9696:8;9686:80;;-1:-1:-1;9737:1:1;9751:5;;9686:80;9785:4;9775:76;;-1:-1:-1;9822:1:1;9836:5;;9775:76;9867:4;9885:1;9880:59;;;;9953:1;9948:130;;;;9860:218;;9880:59;9910:1;9901:10;;9924:5;;;9948:130;9985:3;9975:8;9972:17;9969:43;;;9992:18;;:::i;:::-;-1:-1:-1;;10048:1:1;10034:16;;10063:5;;9860:218;;10162:2;10152:8;10149:16;10143:3;10137:4;10134:13;10130:36;10124:2;10114:8;10111:16;10106:2;10100:4;10097:12;10093:35;10090:77;10087:159;;;-1:-1:-1;10199:19:1;;;10231:5;;10087:159;10278:34;10303:8;10297:4;10278:34;:::i;:::-;10348:6;10344:1;10340:6;10336:19;10327:7;10324:32;10321:58;;;10359:18;;:::i;:::-;10397:20;;9617:806;-1:-1:-1;;;9617:806:1:o;10428:131::-;10488:5;10517:36;10544:8;10538:4;10517:36;:::i;10564:168::-;10604:7;10670:1;10666;10662:6;10658:14;10655:1;10652:21;10647:1;10640:9;10633:17;10629:45;10626:71;;;10677:18;;:::i;:::-;-1:-1:-1;10717:9:1;;10564:168::o;10737:127::-;10798:10;10793:3;10789:20;10786:1;10779:31;10829:4;10826:1;10819:15;10853:4;10850:1;10843:15;10869:112;10901:1;10927;10917:35;;10932:18;;:::i;:::-;-1:-1:-1;10966:9:1;;10869:112::o;10986:128::-;11053:9;;;11074:11;;;11071:37;;;11088:18;;:::i;13076:127::-;13137:10;13132:3;13128:20;13125:1;13118:31;13168:4;13165:1;13158:15;13192:4;13189:1;13182:15;13208:135;13247:3;13268:17;;;13265:43;;13288:18;;:::i;:::-;-1:-1:-1;13335:1:1;13324:13;;13208:135::o;13348:251::-;13418:6;13471:2;13459:9;13450:7;13446:23;13442:32;13439:52;;;13487:1;13484;13477:12;13439:52;13519:9;13513:16;13538:31;13563:5;13538:31;:::i;13604:120::-;13644:1;13670;13660:35;;13675:18;;:::i;:::-;-1:-1:-1;13709:9:1;;13604:120::o;14422:980::-;14684:4;14732:3;14721:9;14717:19;14763:6;14752:9;14745:25;14789:2;14827:6;14822:2;14811:9;14807:18;14800:34;14870:3;14865:2;14854:9;14850:18;14843:31;14894:6;14929;14923:13;14960:6;14952;14945:22;14998:3;14987:9;14983:19;14976:26;;15037:2;15029:6;15025:15;15011:29;;15058:1;15068:195;15082:6;15079:1;15076:13;15068:195;;;15147:13;;-1:-1:-1;;;;;15143:39:1;15131:52;;15238:15;;;;15203:12;;;;15179:1;15097:9;15068:195;;;-1:-1:-1;;;;;;;15319:32:1;;;;15314:2;15299:18;;15292:60;-1:-1:-1;;;15383:3:1;15368:19;15361:35;15280:3;14422:980;-1:-1:-1;;;14422:980:1:o;16581:200::-;16647:9;;;16620:4;16675:9;;16703:10;;16715:12;;;16699:29;16738:12;;;16730:21;;16696:56;16693:82;;;16755:18;;:::i;17126:216::-;17190:9;;;17218:11;;;17165:3;17248:9;;17276:10;;17272:19;;17301:10;;17293:19;;17269:44;17266:70;;;17316:18;;:::i;:::-;17266:70;;17126:216;;;;:::o;20016:140::-;20074:5;20103:47;20144:4;20134:8;20130:19;20124:4;20103:47;:::i;20773:306::-;20861:6;20869;20877;20930:2;20918:9;20909:7;20905:23;20901:32;20898:52;;;20946:1;20943;20936:12;20898:52;20975:9;20969:16;20959:26;;21025:2;21014:9;21010:18;21004:25;20994:35;;21069:2;21058:9;21054:18;21048:25;21038:35;;20773:306;;;;;:::o;22135:184::-;22205:6;22258:2;22246:9;22237:7;22233:23;22229:32;22226:52;;;22274:1;22271;22264:12;22226:52;-1:-1:-1;22297:16:1;;22135:184;-1:-1:-1;22135:184:1:o;22324:931::-;22555:4;22603:3;22592:9;22588:19;22634:6;22623:9;22616:25;22660:2;22698:3;22693:2;22682:9;22678:18;22671:31;22722:6;22757;22751:13;22788:6;22780;22773:22;22826:3;22815:9;22811:19;22804:26;;22849:6;22846:1;22839:17;22892:2;22889:1;22879:16;22865:30;;22913:1;22923:194;22937:6;22934:1;22931:13;22923:194;;;23002:13;;-1:-1:-1;;;;;22998:39:1;22986:52;;23034:1;23093:14;;;;23058:12;;;;22952:9;22923:194;;;-1:-1:-1;;;;;;;23173:32:1;;;;23168:2;23153:18;;23146:60;-1:-1:-1;;;23237:2:1;23222:18;23215:34;23134:3;22324:931;-1:-1:-1;;22324:931:1:o;23260:245::-;23327:6;23380:2;23368:9;23359:7;23355:23;23351:32;23348:52;;;23396:1;23393;23386:12;23348:52;23428:9;23422:16;23447:28;23469:5;23447:28;:::i

Swarm Source

ipfs://e2f3071e01b9d01e9df8fd81859ee3e52d1447c7b00fd9f401ea8d2d9ed9e333

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.