ETH Price: $2,919.51 (+3.55%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Lets Withdraw_on...100806912020-05-17 1:46:461636 days ago1589680006IN
Zapper.Fi: Unipool UnZap
0 ETH0.004730338
Lets Withdraw_on...100806912020-05-17 1:46:461636 days ago1589680006IN
Zapper.Fi: Unipool UnZap
0 ETH0.004730338
Lets Withdraw_on...99783502020-05-01 5:01:491652 days ago1588309309IN
Zapper.Fi: Unipool UnZap
0 ETH0.0019426210
Lets Withdraw_on...99777482020-05-01 2:55:481652 days ago1588301748IN
Zapper.Fi: Unipool UnZap
0 ETH0.00109596.7
Lets Withdraw_on...99776482020-05-01 2:36:061652 days ago1588300566IN
Zapper.Fi: Unipool UnZap
0 ETH0.001120955
Lets Withdraw_on...99776482020-05-01 2:36:061652 days ago1588300566IN
Zapper.Fi: Unipool UnZap
0 ETH0.001131175
Lets Withdraw_on...99775432020-05-01 2:13:311652 days ago1588299211IN
Zapper.Fi: Unipool UnZap
0 ETH0.001986436
Lets Withdraw_on...99775432020-05-01 2:13:311652 days ago1588299211IN
Zapper.Fi: Unipool UnZap
0 ETH0.000969685.6
Lets Withdraw_on...99749272020-04-30 16:08:541652 days ago1588262934IN
Zapper.Fi: Unipool UnZap
0 ETH0.0072537412.2
Lets Withdraw_on...99748652020-04-30 15:55:541652 days ago1588262154IN
Zapper.Fi: Unipool UnZap
0 ETH0.0021202712.3
Lets Withdraw_on...99733722020-04-30 10:22:431653 days ago1588242163IN
Zapper.Fi: Unipool UnZap
0 ETH0.0095113924
Lets Withdraw_on...99720652020-04-30 5:31:561653 days ago1588224716IN
Zapper.Fi: Unipool UnZap
0 ETH0.0025975815
Lets Withdraw_on...99695442020-04-29 20:11:431653 days ago1588191103IN
Zapper.Fi: Unipool UnZap
0 ETH0.002064548
Lets Withdraw_on...99691932020-04-29 18:53:421653 days ago1588186422IN
Zapper.Fi: Unipool UnZap
0 ETH0.0082961122
Lets Withdraw_on...99691542020-04-29 18:45:121653 days ago1588185912IN
Zapper.Fi: Unipool UnZap
0 ETH0.0026965515.1
Lets Withdraw_on...99691292020-04-29 18:40:111653 days ago1588185611IN
Zapper.Fi: Unipool UnZap
0 ETH0.0066214620
Lets Withdraw_on...99683582020-04-29 15:51:091653 days ago1588175469IN
Zapper.Fi: Unipool UnZap
0 ETH0.0024906514.4
Lets Withdraw_on...99683062020-04-29 15:34:291653 days ago1588174469IN
Zapper.Fi: Unipool UnZap
0 ETH0.0029465716.5
Lets Withdraw_on...99676262020-04-29 13:04:271653 days ago1588165467IN
Zapper.Fi: Unipool UnZap
0 ETH0.002011636
Lets Withdraw_on...99672092020-04-29 11:34:011653 days ago1588160041IN
Zapper.Fi: Unipool UnZap
0 ETH0.0049662715
Lets Withdraw_on...99639732020-04-28 23:39:491654 days ago1588117189IN
Zapper.Fi: Unipool UnZap
0 ETH0.000761462.3
Lets Withdraw_on...99639102020-04-28 23:22:411654 days ago1588116161IN
Zapper.Fi: Unipool UnZap
0 ETH0.002413877.2
Lets Withdraw_on...99631802020-04-28 20:43:241654 days ago1588106604IN
Zapper.Fi: Unipool UnZap
0 ETH0.002298515.8
Lets Withdraw_on...99600542020-04-28 9:08:071655 days ago1588064887IN
Zapper.Fi: Unipool UnZap
0 ETH0.002189576
Lets Withdraw_on...99591542020-04-28 5:44:151655 days ago1588052655IN
Zapper.Fi: Unipool UnZap
0 ETH0.001824765
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
99783502020-05-01 5:01:491652 days ago1588309309
Zapper.Fi: Unipool UnZap
1.26195301 ETH
99783502020-05-01 5:01:491652 days ago1588309309
Zapper.Fi: Unipool UnZap
1.26195301 ETH
99777482020-05-01 2:55:481652 days ago1588301748
Zapper.Fi: Unipool UnZap
0.05038276 ETH
99777482020-05-01 2:55:481652 days ago1588301748
Zapper.Fi: Unipool UnZap
0.05038276 ETH
99776482020-05-01 2:36:061652 days ago1588300566
Zapper.Fi: Unipool UnZap
0.15898846 ETH
99776482020-05-01 2:36:061652 days ago1588300566
Zapper.Fi: Unipool UnZap
0.15898846 ETH
99776482020-05-01 2:36:061652 days ago1588300566
Zapper.Fi: Unipool UnZap
0.15971114 ETH
99776482020-05-01 2:36:061652 days ago1588300566
Zapper.Fi: Unipool UnZap
0.15971114 ETH
99775432020-05-01 2:13:311652 days ago1588299211
Zapper.Fi: Unipool UnZap
0.24642794 ETH
99775432020-05-01 2:13:311652 days ago1588299211
Zapper.Fi: Unipool UnZap
0.24642794 ETH
99775432020-05-01 2:13:311652 days ago1588299211
Zapper.Fi: Unipool UnZap
0.26627078 ETH
99775432020-05-01 2:13:311652 days ago1588299211
Zapper.Fi: Unipool UnZap
0.26627078 ETH
99749272020-04-30 16:08:541652 days ago1588262934
Zapper.Fi: Unipool UnZap
0.68009442 ETH
99748652020-04-30 15:55:541652 days ago1588262154
Zapper.Fi: Unipool UnZap
0.01117617 ETH
99748652020-04-30 15:55:541652 days ago1588262154
Zapper.Fi: Unipool UnZap
0.01117617 ETH
99733722020-04-30 10:22:431653 days ago1588242163
Zapper.Fi: Unipool UnZap
16.64357675 ETH
99733722020-04-30 10:22:431653 days ago1588242163
Zapper.Fi: Unipool UnZap
16.64357675 ETH
99720652020-04-30 5:31:561653 days ago1588224716
Zapper.Fi: Unipool UnZap
2.84585632 ETH
99720652020-04-30 5:31:561653 days ago1588224716
Zapper.Fi: Unipool UnZap
2.84585632 ETH
99695442020-04-29 20:11:431653 days ago1588191103
Zapper.Fi: Unipool UnZap
0.04405626 ETH
99695442020-04-29 20:11:431653 days ago1588191103
Zapper.Fi: Unipool UnZap
0.04405626 ETH
99691932020-04-29 18:53:421653 days ago1588186422
Zapper.Fi: Unipool UnZap
0.00514355 ETH
99691932020-04-29 18:53:421653 days ago1588186422
Zapper.Fi: Unipool UnZap
0.00514355 ETH
99691542020-04-29 18:45:121653 days ago1588185912
Zapper.Fi: Unipool UnZap
1.2193896 ETH
99691542020-04-29 18:45:121653 days ago1588185912
Zapper.Fi: Unipool UnZap
1.2193896 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UniSwapRemoveLiquityGeneral_v1

Compiler Version
v0.5.13+commit.5b0b510c

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv2 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-02-03
*/

// File: @openzeppelin/upgrades/contracts/Initializable.sol

pragma solidity >=0.4.24 <0.6.0;


/**
 * @title Initializable
 *
 * @dev Helper contract to support initializer functions. To use it, replace
 * the constructor with a function that has the `initializer` modifier.
 * WARNING: Unlike constructors, initializer functions must be manually
 * invoked. This applies both to deploying an Initializable contract, as well
 * as extending an Initializable contract via inheritance.
 * WARNING: When used with inheritance, manual care must be taken to not invoke
 * a parent initializer twice, or ensure that all initializers are idempotent,
 * because this is not dealt with automatically as with constructors.
 */
contract Initializable {

  /**
   * @dev Indicates that the contract has been initialized.
   */
  bool private initialized;

  /**
   * @dev Indicates that the contract is in the process of being initialized.
   */
  bool private initializing;

  /**
   * @dev Modifier to use in the initializer function of a contract.
   */
  modifier initializer() {
    require(initializing || isConstructor() || !initialized, "Contract instance has already been initialized");

    bool isTopLevelCall = !initializing;
    if (isTopLevelCall) {
      initializing = true;
      initialized = true;
    }

    _;

    if (isTopLevelCall) {
      initializing = false;
    }
  }

  /// @dev Returns true if and only if the function is running in the constructor
  function isConstructor() private view returns (bool) {
    // extcodesize checks the size of the code stored in an address, and
    // address returns the current address. Since the code is still not
    // deployed when running a constructor, any checks on its code size will
    // yield zero, making it an effective way to detect if a contract is
    // under construction or not.
    uint256 cs;
    assembly { cs := extcodesize(address) }
    return cs == 0;
  }

  // Reserved storage space to allow for layout changes in the future.
  uint256[50] private ______gap;
}

// File: @openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol

pragma solidity ^0.5.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     *
     * _Available since v2.4.0._
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     *
     * _Available since v2.4.0._
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     *
     * _Available since v2.4.0._
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

// File: @openzeppelin/contracts-ethereum-package/contracts/token/ERC20/IERC20.sol

pragma solidity ^0.5.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP. Does not include
 * the optional functions; to access them see {ERC20Detailed}.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

// File: @openzeppelin/contracts-ethereum-package/contracts/utils/ReentrancyGuard.sol

pragma solidity ^0.5.0;


/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 */
contract ReentrancyGuard is Initializable {
    // counter to allow mutex lock with only one SSTORE operation
    uint256 private _guardCounter;

    function initialize() public initializer {
        // The counter starts at one to prevent changing it from zero to a non-zero
        // value, which is a more expensive operation.
        _guardCounter = 1;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        _guardCounter += 1;
        uint256 localCounter = _guardCounter;
        _;
        require(localCounter == _guardCounter, "ReentrancyGuard: reentrant call");
    }

    uint256[50] private ______gap;
}

// File: contracts/UpdatedZaps/WIP/UniSwapRemoveLiquidityGeneral_v1.sol

// Copyright (C) 2019, 2020 dipeshsukhani, nodarjonashi, toshsharma, suhailg

// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Affero General Public License for more details.
//
// Visit <https://www.gnu.org/licenses/>for a copy of the GNU Affero General Public License

/**
 * WARNING: This is an upgradable contract. Be careful not to disrupt
 * the existing storage layout when making upgrades to the contract. In particular,
 * existing fields should not be removed and should not have their types changed.
 * The order of field declarations must not be changed, and new fields must be added
 * below all existing declarations.
 *
 * The base contracts and the order in which they are declared must not be changed.
 * New fields must not be added to base contracts (unless the base contract has
 * reserved placeholder fields for this purpose).
 *
 * See https://docs.zeppelinos.org/docs/writing_contracts.html for more info.
*/

pragma solidity ^0.5.0;





///@author DeFiZap
///@notice this contract implements one click conversion from Unipool liquidity tokens to ETH

interface IuniswapFactory_UniSwapRemoveLiquityGeneral_v1 {
    function getExchange(address token)
        external
        view
        returns (address exchange);
}

interface IuniswapExchange_UniSwapRemoveLiquityGeneral_v1 {
    // for removing liquidity (returns ETH removed, ERC20 Removed)
    function removeLiquidity(
        uint256 amount,
        uint256 min_eth,
        uint256 min_tokens,
        uint256 deadline
    ) external returns (uint256, uint256);

    // to convert ERC20 to ETH and transfer
    function getTokenToEthInputPrice(uint256 tokens_sold)
        external
        view
        returns (uint256 eth_bought);
    function tokenToEthTransferInput(
        uint256 tokens_sold,
        uint256 min_eth,
        uint256 deadline,
        address recipient
    ) external returns (uint256 eth_bought);
    /// -- optional
    function tokenToEthSwapInput(
        uint256 tokens_sold,
        uint256 min_eth,
        uint256 deadline
    ) external returns (uint256 eth_bought);

    // to convert ETH to ERC20 and transfer
    function getEthToTokenInputPrice(uint256 eth_sold)
        external
        view
        returns (uint256 tokens_bought);
    function ethToTokenTransferInput(
        uint256 min_tokens,
        uint256 deadline,
        address recipient
    ) external payable returns (uint256 tokens_bought);
    /// -- optional
    function ethToTokenSwapInput(uint256 min_tokens, uint256 deadline)
        external
        payable
        returns (uint256 tokens_bought);

    // converting ERC20 to ERC20 and transfer
    function tokenToTokenTransferInput(
        uint256 tokens_sold,
        uint256 min_tokens_bought,
        uint256 min_eth_bought,
        uint256 deadline,
        address recipient,
        address token_addr
    ) external returns (uint256 tokens_bought);

    // misc
    function allowance(address _owner, address _spender)
        external
        view
        returns (uint256);
    function balanceOf(address _owner) external view returns (uint256);
    function transfer(address _to, uint256 _value) external returns (bool);
    function transferFrom(address from, address to, uint256 tokens)
        external
        returns (bool success);

}

contract UniSwapRemoveLiquityGeneral_v1 is Initializable, ReentrancyGuard {
    using SafeMath for uint256;

    // state variables

    // - THESE MUST ALWAYS STAY IN THE SAME LAYOUT
    bool private stopped;
    address payable public owner;
    IuniswapFactory_UniSwapRemoveLiquityGeneral_v1 public UniSwapFactoryAddress;
    uint16 public goodwill;
    address public dzgoodwillAddress;
    mapping(address => uint256) private userBalance;
    IERC20 public DaiTokenAddress;

    // events
    event details(
        IuniswapExchange_UniSwapRemoveLiquityGeneral_v1 indexed ExchangeAddress,
        IERC20 TokenAdddress,
        address _user,
        uint256 LiqRed,
        uint256 ethRec,
        uint256 tokenRec,
        string indexed func
    );

    // circuit breaker modifiers
    modifier stopInEmergency {
        if (stopped) {
            revert("Temporarily Paused");
        } else {
            _;
        }
    }
    modifier onlyOwner() {
        require(isOwner(), "you are not authorised to call this function");
        _;
    }

    function initialize(
        address _UniSwapFactoryAddress,
        uint16 _goodwill,
        address _dzgoodwillAddress,
        address _DaiTokenAddress
    ) public initializer {
        ReentrancyGuard.initialize();
        stopped = false;
        owner = msg.sender;
        UniSwapFactoryAddress = IuniswapFactory_UniSwapRemoveLiquityGeneral_v1(
            _UniSwapFactoryAddress
        );
        goodwill = _goodwill;
        dzgoodwillAddress = _dzgoodwillAddress;
        DaiTokenAddress = IERC20(_DaiTokenAddress);
    }

    function set_new_UniSwapFactoryAddress(address _new_UniSwapFactoryAddress)
        public
        onlyOwner
    {
        UniSwapFactoryAddress = IuniswapFactory_UniSwapRemoveLiquityGeneral_v1(
            _new_UniSwapFactoryAddress
        );

    }

    function set_new_goodwill(uint16 _new_goodwill) public onlyOwner {
        require(
            _new_goodwill > 0 && _new_goodwill < 10000,
            "GoodWill Value not allowed"
        );
        goodwill = _new_goodwill;

    }

    function set_new_dzgoodwillAddress(address _new_dzgoodwillAddress)
        public
        onlyOwner
    {
        dzgoodwillAddress = _new_dzgoodwillAddress;
    }

    function LetsWithdraw_onlyETH(
        address _TokenContractAddress,
        uint256 LiquidityTokenSold
    ) public payable stopInEmergency nonReentrant returns (bool) {
        IuniswapExchange_UniSwapRemoveLiquityGeneral_v1 UniSwapExchangeContractAddress = IuniswapExchange_UniSwapRemoveLiquityGeneral_v1(
            UniSwapFactoryAddress.getExchange(_TokenContractAddress)
        );
        uint256 maxtokensPermitted = UniSwapExchangeContractAddress.allowance(
            msg.sender,
            address(this)
        );
        require(
            LiquidityTokenSold <= maxtokensPermitted,
            "Permission to DeFiZap is less than requested"
        );
        uint256 goodwillPortion = SafeMath.div(
            SafeMath.mul(LiquidityTokenSold, goodwill),
            10000
        );
        require(
            UniSwapExchangeContractAddress.transferFrom(
                msg.sender,
                address(this),
                SafeMath.sub(LiquidityTokenSold, goodwillPortion)
            ),
            "error2:defizap"
        );
        require(
            UniSwapExchangeContractAddress.transferFrom(
                msg.sender,
                dzgoodwillAddress,
                goodwillPortion
            ),
            "error3:defizap"
        );

        (uint256 ethReceived, uint256 erc20received) = UniSwapExchangeContractAddress
            .removeLiquidity(
            SafeMath.sub(LiquidityTokenSold, goodwillPortion),
            1,
            1,
            SafeMath.add(now, 1800)
        );

        uint256 eth_againstERC20 = UniSwapExchangeContractAddress
            .getTokenToEthInputPrice(erc20received);
        IERC20(_TokenContractAddress).approve(
            address(UniSwapExchangeContractAddress),
            erc20received
        );
        UniSwapExchangeContractAddress.tokenToEthTransferInput(
            erc20received,
            SafeMath.div(SafeMath.mul(eth_againstERC20, 98), 100),
            SafeMath.add(now, 1800),
            msg.sender
        );
        userBalance[msg.sender] = ethReceived;
        require(send_out_eth(msg.sender), "issue in transfer ETH");
        emit details(
            UniSwapExchangeContractAddress,
            IERC20(_TokenContractAddress),
            msg.sender,
            SafeMath.sub(LiquidityTokenSold, goodwillPortion),
            ethReceived,
            erc20received,
            "onlyETH"
        );
        return true;
    }

    function LetsWithdraw_onlyERC(
        address _TokenContractAddress,
        uint256 LiquidityTokenSold,
        bool _returnInDai
    ) public payable stopInEmergency nonReentrant returns (bool) {
        IuniswapExchange_UniSwapRemoveLiquityGeneral_v1 UniSwapExchangeContractAddress = IuniswapExchange_UniSwapRemoveLiquityGeneral_v1(
            UniSwapFactoryAddress.getExchange(_TokenContractAddress)
        );
        IuniswapExchange_UniSwapRemoveLiquityGeneral_v1 DAIUniSwapExchangeContractAddress = IuniswapExchange_UniSwapRemoveLiquityGeneral_v1(
            UniSwapFactoryAddress.getExchange(address(DaiTokenAddress))
        );
        uint256 maxtokensPermitted = UniSwapExchangeContractAddress.allowance(
            msg.sender,
            address(this)
        );
        require(
            LiquidityTokenSold <= maxtokensPermitted,
            "Permission to DeFiZap is less than requested"
        );
        uint256 goodwillPortion = SafeMath.div(
            SafeMath.mul(LiquidityTokenSold, goodwill),
            10000
        );
        require(
            UniSwapExchangeContractAddress.transferFrom(
                msg.sender,
                address(this),
                SafeMath.sub(LiquidityTokenSold, goodwillPortion)
            ),
            "error2:defizap"
        );
        require(
            UniSwapExchangeContractAddress.transferFrom(
                msg.sender,
                dzgoodwillAddress,
                goodwillPortion
            ),
            "error3:defizap"
        );
        (uint256 ethReceived, uint256 erc20received) = UniSwapExchangeContractAddress
            .removeLiquidity(
            SafeMath.sub(LiquidityTokenSold, goodwillPortion),
            1,
            1,
            SafeMath.add(now, 1800)
        );
        if (_returnInDai) {
            require(
                _TokenContractAddress != address(DaiTokenAddress),
                "error5:defizap"
            );
            DAIUniSwapExchangeContractAddress.ethToTokenTransferInput.value(
                ethReceived
            )(1, SafeMath.add(now, 1800), msg.sender);
            IERC20(_TokenContractAddress).approve(
                address(UniSwapExchangeContractAddress),
                erc20received
            );
            UniSwapExchangeContractAddress.tokenToTokenTransferInput(
                erc20received,
                1,
                1,
                SafeMath.add(now, 1800),
                msg.sender,
                address(DaiTokenAddress)
            );
            emit details(
                UniSwapExchangeContractAddress,
                IERC20(_TokenContractAddress),
                msg.sender,
                SafeMath.sub(LiquidityTokenSold, goodwillPortion),
                ethReceived,
                erc20received,
                "onlyDAI"
            );
        } else {
            UniSwapExchangeContractAddress.ethToTokenTransferInput.value(
                ethReceived
            )(1, SafeMath.add(now, 1800), msg.sender);
            IERC20(_TokenContractAddress).transfer(msg.sender, erc20received);
            emit details(
                UniSwapExchangeContractAddress,
                IERC20(_TokenContractAddress),
                msg.sender,
                SafeMath.sub(LiquidityTokenSold, goodwillPortion),
                ethReceived,
                erc20received,
                "onlyERC"
            );
        }

        return true;
    }

    function send_out_eth(address _towhomtosendtheETH) internal returns (bool) {
        require(userBalance[_towhomtosendtheETH] > 0, "error4:DefiZap");
        uint256 amount = userBalance[_towhomtosendtheETH];
        userBalance[_towhomtosendtheETH] = 0;
        (bool success, ) = _towhomtosendtheETH.call.value(amount)("");
        require(success, "error5:DefiZap");
        return true;
    }

    // - fallback function let you / anyone send ETH to this wallet without the need to call any function
    function() external payable {}

    // Should there be a need to withdraw any other ERC20 token
    function withdrawERC20Token(IERC20 _targetContractAddress)
        public
        onlyOwner
    {
        uint256 OtherTokenBalance = _targetContractAddress.balanceOf(
            address(this)
        );
        _targetContractAddress.transfer(owner, OtherTokenBalance);
    }

    // - to Pause the contract
    function toggleContractActive() public onlyOwner {
        stopped = !stopped;
    }

    // - to withdraw any ETH balance sitting in the contract
    function withdraw() public onlyOwner {
        owner.transfer(address(this).balance);
    }

    // - to kill the contract
    function destruct() public onlyOwner {
        selfdestruct(owner);
    }

    /**
     * @return true if `msg.sender` is the owner of the contract.
     */
    function isOwner() public view returns (bool) {
        return msg.sender == owner;
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address payable newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     */
    function _transferOwnership(address payable newOwner) internal {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        owner = newOwner;
    }

}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IuniswapExchange_UniSwapRemoveLiquityGeneral_v1","name":"ExchangeAddress","type":"address"},{"indexed":false,"internalType":"contract IERC20","name":"TokenAdddress","type":"address"},{"indexed":false,"internalType":"address","name":"_user","type":"address"},{"indexed":false,"internalType":"uint256","name":"LiqRed","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethRec","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokenRec","type":"uint256"},{"indexed":true,"internalType":"string","name":"func","type":"string"}],"name":"details","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"DaiTokenAddress","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_TokenContractAddress","type":"address"},{"internalType":"uint256","name":"LiquidityTokenSold","type":"uint256"},{"internalType":"bool","name":"_returnInDai","type":"bool"}],"name":"LetsWithdraw_onlyERC","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_TokenContractAddress","type":"address"},{"internalType":"uint256","name":"LiquidityTokenSold","type":"uint256"}],"name":"LetsWithdraw_onlyETH","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"UniSwapFactoryAddress","outputs":[{"internalType":"contract IuniswapFactory_UniSwapRemoveLiquityGeneral_v1","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"destruct","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"dzgoodwillAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"goodwill","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_UniSwapFactoryAddress","type":"address"},{"internalType":"uint16","name":"_goodwill","type":"uint16"},{"internalType":"address","name":"_dzgoodwillAddress","type":"address"},{"internalType":"address","name":"_DaiTokenAddress","type":"address"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_new_UniSwapFactoryAddress","type":"address"}],"name":"set_new_UniSwapFactoryAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_new_dzgoodwillAddress","type":"address"}],"name":"set_new_dzgoodwillAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint16","name":"_new_goodwill","type":"uint16"}],"name":"set_new_goodwill","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"toggleContractActive","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract IERC20","name":"_targetContractAddress","type":"address"}],"name":"withdrawERC20Token","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50611fa2806100206000396000f3fe6080604052600436106101095760003560e01c8063849e25f411610095578063b10e1dbc11610064578063b10e1dbc146102f5578063c3a8fcb014610323578063f2fde38b14610338578063f882cbcc1461036b578063fa6723421461039f57610109565b8063849e25f4146102515780638da5cb5b146102845780638f32d59b14610299578063ae4de7fa146102c257610109565b80633ccfd60b116100dc5780633ccfd60b14610199578063525d509e146101ae5780635de0398e146101c357806367abbc82146101ef5780638129fc1c1461023c57610109565b80631385d24c1461010b5780632a0d86d9146101205780632b68b9c6146101515780633bdebbe114610166575b005b34801561011757600080fd5b506101096103cb565b34801561012c57600080fd5b50610135610422565b604080516001600160a01b039092168252519081900360200190f35b34801561015d57600080fd5b50610109610431565b34801561017257600080fd5b506101096004803603602081101561018957600080fd5b50356001600160a01b0316610487565b3480156101a557600080fd5b506101096105ce565b3480156101ba57600080fd5b50610135610655565b3480156101cf57600080fd5b506101d8610664565b6040805161ffff9092168252519081900360200190f35b3480156101fb57600080fd5b506101096004803603608081101561021257600080fd5b506001600160a01b03813581169161ffff6020820135169160408201358116916060013516610675565b34801561024857600080fd5b5061010961078b565b34801561025d57600080fd5b506101096004803603602081101561027457600080fd5b50356001600160a01b0316610831565b34801561029057600080fd5b50610135610896565b3480156102a557600080fd5b506102ae6108aa565b604080519115158252519081900360200190f35b3480156102ce57600080fd5b50610109600480360360208110156102e557600080fd5b50356001600160a01b03166108c0565b34801561030157600080fd5b506101096004803603602081101561031857600080fd5b503561ffff16610925565b34801561032f57600080fd5b506101356109f4565b34801561034457600080fd5b506101096004803603602081101561035b57600080fd5b50356001600160a01b0316610a03565b6102ae6004803603606081101561038157600080fd5b506001600160a01b0381351690602081013590604001351515610a4f565b6102ae600480360360408110156103b557600080fd5b506001600160a01b0381351690602001356113c8565b6103d36108aa565b61040e5760405162461bcd60e51b815260040180806020018281038252602c815260200180611ec7602c913960400191505060405180910390fd5b6066805460ff19811660ff90911615179055565b606a546001600160a01b031681565b6104396108aa565b6104745760405162461bcd60e51b815260040180806020018281038252602c815260200180611ec7602c913960400191505060405180910390fd5b60665461010090046001600160a01b0316ff5b61048f6108aa565b6104ca5760405162461bcd60e51b815260040180806020018281038252602c815260200180611ec7602c913960400191505060405180910390fd5b604080516370a0823160e01b815230600482015290516000916001600160a01b038416916370a0823191602480820192602092909190829003018186803b15801561051457600080fd5b505afa158015610528573d6000803e3d6000fd5b505050506040513d602081101561053e57600080fd5b50516066546040805163a9059cbb60e01b81526101009092046001600160a01b03908116600484015260248301849052905192935084169163a9059cbb916044808201926020929091908290030181600087803b15801561059e57600080fd5b505af11580156105b2573d6000803e3d6000fd5b505050506040513d60208110156105c857600080fd5b50505050565b6105d66108aa565b6106115760405162461bcd60e51b815260040180806020018281038252602c815260200180611ec7602c913960400191505060405180910390fd5b6066546040516001600160a01b036101009092049190911690303180156108fc02916000818181858888f19350505050158015610652573d6000803e3d6000fd5b50565b6067546001600160a01b031681565b606754600160a01b900461ffff1681565b600054610100900460ff168061068e575061068e611ae4565b8061069c575060005460ff16155b6106d75760405162461bcd60e51b815260040180806020018281038252602e815260200180611f14602e913960400191505060405180910390fd5b600054610100900460ff16158015610702576000805460ff1961ff0019909116610100171660011790555b61070a61078b565b606680546001600160a81b0319166101003302179055606780546001600160a01b03199081166001600160a01b038881169190911761ffff60a01b1916600160a01b61ffff89160217909255606880548216868416179055606a80549091169184169190911790558015610784576000805461ff00191690555b5050505050565b600054610100900460ff16806107a457506107a4611ae4565b806107b2575060005460ff16155b6107ed5760405162461bcd60e51b815260040180806020018281038252602e815260200180611f14602e913960400191505060405180910390fd5b600054610100900460ff16158015610818576000805460ff1961ff0019909116610100171660011790555b60016033558015610652576000805461ff001916905550565b6108396108aa565b6108745760405162461bcd60e51b815260040180806020018281038252602c815260200180611ec7602c913960400191505060405180910390fd5b606880546001600160a01b0319166001600160a01b0392909216919091179055565b60665461010090046001600160a01b031681565b60665461010090046001600160a01b0316331490565b6108c86108aa565b6109035760405162461bcd60e51b815260040180806020018281038252602c815260200180611ec7602c913960400191505060405180910390fd5b606780546001600160a01b0319166001600160a01b0392909216919091179055565b61092d6108aa565b6109685760405162461bcd60e51b815260040180806020018281038252602c815260200180611ec7602c913960400191505060405180910390fd5b60008161ffff1611801561098157506127108161ffff16105b6109d2576040805162461bcd60e51b815260206004820152601a60248201527f476f6f6457696c6c2056616c7565206e6f7420616c6c6f776564000000000000604482015290519081900360640190fd5b6067805461ffff909216600160a01b0261ffff60a01b19909216919091179055565b6068546001600160a01b031681565b610a0b6108aa565b610a465760405162461bcd60e51b815260040180806020018281038252602c815260200180611ec7602c913960400191505060405180910390fd5b61065281611aea565b60665460009060ff1615610a9f576040805162461bcd60e51b815260206004820152601260248201527115195b5c1bdc985c9a5b1e4814185d5cd95960721b604482015290519081900360640190fd5b6033805460010190819055606754604080516303795fb160e11b81526001600160a01b038881166004830152915160009392909216916306f2bf6291602480820192602092909190829003018186803b158015610afb57600080fd5b505afa158015610b0f573d6000803e3d6000fd5b505050506040513d6020811015610b2557600080fd5b5051606754606a54604080516303795fb160e11b81526001600160a01b039283166004820152905193945060009391909216916306f2bf62916024808301926020929190829003018186803b158015610b7d57600080fd5b505afa158015610b91573d6000803e3d6000fd5b505050506040513d6020811015610ba757600080fd5b505160408051636eb1769f60e11b815233600482015230602482015290519192506000916001600160a01b0385169163dd62ed3e916044808301926020929190829003018186803b158015610bfb57600080fd5b505afa158015610c0f573d6000803e3d6000fd5b505050506040513d6020811015610c2557600080fd5b5051905080871115610c685760405162461bcd60e51b815260040180806020018281038252602c815260200180611f42602c913960400191505060405180910390fd5b606754600090610c9090610c88908a90600160a01b900461ffff16611b57565b612710611bb7565b9050836001600160a01b03166323b872dd3330610cad8c86611bf9565b6040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050602060405180830381600087803b158015610d1557600080fd5b505af1158015610d29573d6000803e3d6000fd5b505050506040513d6020811015610d3f57600080fd5b5051610d83576040805162461bcd60e51b815260206004820152600e60248201526d06572726f72323a646566697a61760941b604482015290519081900360640190fd5b606854604080516323b872dd60e01b81523360048201526001600160a01b039283166024820152604481018490529051918616916323b872dd916064808201926020929091908290030181600087803b158015610ddf57600080fd5b505af1158015610df3573d6000803e3d6000fd5b505050506040513d6020811015610e0957600080fd5b5051610e4d576040805162461bcd60e51b815260206004820152600e60248201526d06572726f72333a646566697a61760941b604482015290519081900360640190fd5b600080856001600160a01b031663f88bf15a610e698c86611bf9565b600180610e7842610708611c3b565b6040518563ffffffff1660e01b8152600401808581526020018481526020018381526020018281526020019450505050506040805180830381600087803b158015610ec257600080fd5b505af1158015610ed6573d6000803e3d6000fd5b505050506040513d6040811015610eec57600080fd5b508051602090910151909250905088156111b957606a546001600160a01b038c811691161415610f54576040805162461bcd60e51b815260206004820152600e60248201526d06572726f72353a646566697a61760941b604482015290519081900360640190fd5b846001600160a01b031663ad65d76d836001610f7242610708611c3b565b336040518563ffffffff1660e01b815260040180848152602001838152602001826001600160a01b03166001600160a01b0316815260200193505050506020604051808303818588803b158015610fc857600080fd5b505af1158015610fdc573d6000803e3d6000fd5b50505050506040513d6020811015610ff357600080fd5b50506040805163095ea7b360e01b81526001600160a01b038881166004830152602482018490529151918d169163095ea7b3916044808201926020929091908290030181600087803b15801561104857600080fd5b505af115801561105c573d6000803e3d6000fd5b505050506040513d602081101561107257600080fd5b50506001600160a01b03861663f552d91b8260018061109342610708611c3b565b606a54604080516001600160e01b031960e089901b16815260048101969096526024860194909452604485019290925260648401523360848401526001600160a01b031660a48301525160c48083019260209291908290030181600087803b1580156110fe57600080fd5b505af1158015611112573d6000803e3d6000fd5b505050506040513d602081101561112857600080fd5b505060408051666f6e6c7944414960c81b815290519081900360070190206001600160a01b0387167fe9fe044b3557c78a96b97e3deb80d2bf7d9460225802982c02ea824b6bb8db038d3361117d8f89611bf9565b604080516001600160a01b03948516815292909316602083015281830152606081018790526080810186905290519081900360a00190a3611360565b856001600160a01b031663ad65d76d8360016111d742610708611c3b565b336040518563ffffffff1660e01b815260040180848152602001838152602001826001600160a01b03166001600160a01b0316815260200193505050506020604051808303818588803b15801561122d57600080fd5b505af1158015611241573d6000803e3d6000fd5b50505050506040513d602081101561125857600080fd5b50506040805163a9059cbb60e01b81523360048201526024810183905290516001600160a01b038d169163a9059cbb9160448083019260209291908290030181600087803b1580156112a957600080fd5b505af11580156112bd573d6000803e3d6000fd5b505050506040513d60208110156112d357600080fd5b505060408051666f6e6c7945524360c81b815290519081900360070190206001600160a01b0387167fe9fe044b3557c78a96b97e3deb80d2bf7d9460225802982c02ea824b6bb8db038d336113288f89611bf9565b604080516001600160a01b03948516815292909316602083015281830152606081018790526080810186905290519081900360a00190a35b6001975050505050505060335481146113c0576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b509392505050565b60665460009060ff1615611418576040805162461bcd60e51b815260206004820152601260248201527115195b5c1bdc985c9a5b1e4814185d5cd95960721b604482015290519081900360640190fd5b6033805460010190819055606754604080516303795fb160e11b81526001600160a01b038781166004830152915160009392909216916306f2bf6291602480820192602092909190829003018186803b15801561147457600080fd5b505afa158015611488573d6000803e3d6000fd5b505050506040513d602081101561149e57600080fd5b505160408051636eb1769f60e11b815233600482015230602482015290519192506000916001600160a01b0384169163dd62ed3e916044808301926020929190829003018186803b1580156114f257600080fd5b505afa158015611506573d6000803e3d6000fd5b505050506040513d602081101561151c57600080fd5b505190508085111561155f5760405162461bcd60e51b815260040180806020018281038252602c815260200180611f42602c913960400191505060405180910390fd5b60675460009061157f90610c88908890600160a01b900461ffff16611b57565b9050826001600160a01b03166323b872dd333061159c8a86611bf9565b6040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050602060405180830381600087803b15801561160457600080fd5b505af1158015611618573d6000803e3d6000fd5b505050506040513d602081101561162e57600080fd5b5051611672576040805162461bcd60e51b815260206004820152600e60248201526d06572726f72323a646566697a61760941b604482015290519081900360640190fd5b606854604080516323b872dd60e01b81523360048201526001600160a01b039283166024820152604481018490529051918516916323b872dd916064808201926020929091908290030181600087803b1580156116ce57600080fd5b505af11580156116e2573d6000803e3d6000fd5b505050506040513d60208110156116f857600080fd5b505161173c576040805162461bcd60e51b815260206004820152600e60248201526d06572726f72333a646566697a61760941b604482015290519081900360640190fd5b600080846001600160a01b031663f88bf15a6117588a86611bf9565b60018061176742610708611c3b565b6040518563ffffffff1660e01b8152600401808581526020018481526020018381526020018281526020019450505050506040805180830381600087803b1580156117b157600080fd5b505af11580156117c5573d6000803e3d6000fd5b505050506040513d60408110156117db57600080fd5b508051602091820151604080516395b68fe760e01b81526004810183905290519295509093506000926001600160a01b038916926395b68fe7926024808201939291829003018186803b15801561183157600080fd5b505afa158015611845573d6000803e3d6000fd5b505050506040513d602081101561185b57600080fd5b50516040805163095ea7b360e01b81526001600160a01b038981166004830152602482018690529151929350908c169163095ea7b3916044808201926020929091908290030181600087803b1580156118b357600080fd5b505af11580156118c7573d6000803e3d6000fd5b505050506040513d60208110156118dd57600080fd5b50506001600160a01b038616637237e031836119046118fd856062611b57565b6064611bb7565b61191042610708611c3b565b604080516001600160e01b031960e087901b1681526004810194909452602484019290925260448301523360648301525160848083019260209291908290030181600087803b15801561196257600080fd5b505af1158015611976573d6000803e3d6000fd5b505050506040513d602081101561198c57600080fd5b50503360008181526069602052604090208490556119a990611c95565b6119f2576040805162461bcd60e51b81526020600482015260156024820152740d2e6e6eaca40d2dc40e8e4c2dce6cccae4408aa89605b1b604482015290519081900360640190fd5b60408051660dedcd8f28aa8960cb1b815290519081900360070190206001600160a01b0387167fe9fe044b3557c78a96b97e3deb80d2bf7d9460225802982c02ea824b6bb8db038c33611a458e8a611bf9565b604080516001600160a01b03948516815292909316602083015281830152606081018890526080810187905290519081900360a00190a3600197505050505050506033548114611adc576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b505b92915050565b303b1590565b6001600160a01b038116611b2f5760405162461bcd60e51b8152600401808060200182810382526026815260200180611ea16026913960400191505060405180910390fd5b606680546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600082611b6657506000611ade565b82820282848281611b7357fe5b0414611bb05760405162461bcd60e51b8152600401808060200182810382526021815260200180611ef36021913960400191505060405180910390fd5b9392505050565b6000611bb083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611da4565b6000611bb083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e46565b600082820183811015611bb0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b038116600090815260696020526040812054611cf0576040805162461bcd60e51b815260206004820152600e60248201526d06572726f72343a446566695a61760941b604482015290519081900360640190fd5b6001600160a01b038216600081815260696020526040808220805490839055905190929083908381818185875af1925050503d8060008114611d4e576040519150601f19603f3d011682016040523d82523d6000602084013e611d53565b606091505b5050905080611d9a576040805162461bcd60e51b815260206004820152600e60248201526d06572726f72353a446566695a61760941b604482015290519081900360640190fd5b5060019392505050565b60008183611e305760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611df5578181015183820152602001611ddd565b50505050905090810190601f168015611e225780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611e3c57fe5b0495945050505050565b60008184841115611e985760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611df5578181015183820152602001611ddd565b50505090039056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373796f7520617265206e6f7420617574686f726973656420746f2063616c6c20746869732066756e6374696f6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a65645065726d697373696f6e20746f20446546695a6170206973206c657373207468616e20726571756573746564a265627a7a72315820045d79e140fca5902c77182843013b8939292348e6f3713c240b8d61a2ba577164736f6c634300050d0032

Deployed Bytecode

0x6080604052600436106101095760003560e01c8063849e25f411610095578063b10e1dbc11610064578063b10e1dbc146102f5578063c3a8fcb014610323578063f2fde38b14610338578063f882cbcc1461036b578063fa6723421461039f57610109565b8063849e25f4146102515780638da5cb5b146102845780638f32d59b14610299578063ae4de7fa146102c257610109565b80633ccfd60b116100dc5780633ccfd60b14610199578063525d509e146101ae5780635de0398e146101c357806367abbc82146101ef5780638129fc1c1461023c57610109565b80631385d24c1461010b5780632a0d86d9146101205780632b68b9c6146101515780633bdebbe114610166575b005b34801561011757600080fd5b506101096103cb565b34801561012c57600080fd5b50610135610422565b604080516001600160a01b039092168252519081900360200190f35b34801561015d57600080fd5b50610109610431565b34801561017257600080fd5b506101096004803603602081101561018957600080fd5b50356001600160a01b0316610487565b3480156101a557600080fd5b506101096105ce565b3480156101ba57600080fd5b50610135610655565b3480156101cf57600080fd5b506101d8610664565b6040805161ffff9092168252519081900360200190f35b3480156101fb57600080fd5b506101096004803603608081101561021257600080fd5b506001600160a01b03813581169161ffff6020820135169160408201358116916060013516610675565b34801561024857600080fd5b5061010961078b565b34801561025d57600080fd5b506101096004803603602081101561027457600080fd5b50356001600160a01b0316610831565b34801561029057600080fd5b50610135610896565b3480156102a557600080fd5b506102ae6108aa565b604080519115158252519081900360200190f35b3480156102ce57600080fd5b50610109600480360360208110156102e557600080fd5b50356001600160a01b03166108c0565b34801561030157600080fd5b506101096004803603602081101561031857600080fd5b503561ffff16610925565b34801561032f57600080fd5b506101356109f4565b34801561034457600080fd5b506101096004803603602081101561035b57600080fd5b50356001600160a01b0316610a03565b6102ae6004803603606081101561038157600080fd5b506001600160a01b0381351690602081013590604001351515610a4f565b6102ae600480360360408110156103b557600080fd5b506001600160a01b0381351690602001356113c8565b6103d36108aa565b61040e5760405162461bcd60e51b815260040180806020018281038252602c815260200180611ec7602c913960400191505060405180910390fd5b6066805460ff19811660ff90911615179055565b606a546001600160a01b031681565b6104396108aa565b6104745760405162461bcd60e51b815260040180806020018281038252602c815260200180611ec7602c913960400191505060405180910390fd5b60665461010090046001600160a01b0316ff5b61048f6108aa565b6104ca5760405162461bcd60e51b815260040180806020018281038252602c815260200180611ec7602c913960400191505060405180910390fd5b604080516370a0823160e01b815230600482015290516000916001600160a01b038416916370a0823191602480820192602092909190829003018186803b15801561051457600080fd5b505afa158015610528573d6000803e3d6000fd5b505050506040513d602081101561053e57600080fd5b50516066546040805163a9059cbb60e01b81526101009092046001600160a01b03908116600484015260248301849052905192935084169163a9059cbb916044808201926020929091908290030181600087803b15801561059e57600080fd5b505af11580156105b2573d6000803e3d6000fd5b505050506040513d60208110156105c857600080fd5b50505050565b6105d66108aa565b6106115760405162461bcd60e51b815260040180806020018281038252602c815260200180611ec7602c913960400191505060405180910390fd5b6066546040516001600160a01b036101009092049190911690303180156108fc02916000818181858888f19350505050158015610652573d6000803e3d6000fd5b50565b6067546001600160a01b031681565b606754600160a01b900461ffff1681565b600054610100900460ff168061068e575061068e611ae4565b8061069c575060005460ff16155b6106d75760405162461bcd60e51b815260040180806020018281038252602e815260200180611f14602e913960400191505060405180910390fd5b600054610100900460ff16158015610702576000805460ff1961ff0019909116610100171660011790555b61070a61078b565b606680546001600160a81b0319166101003302179055606780546001600160a01b03199081166001600160a01b038881169190911761ffff60a01b1916600160a01b61ffff89160217909255606880548216868416179055606a80549091169184169190911790558015610784576000805461ff00191690555b5050505050565b600054610100900460ff16806107a457506107a4611ae4565b806107b2575060005460ff16155b6107ed5760405162461bcd60e51b815260040180806020018281038252602e815260200180611f14602e913960400191505060405180910390fd5b600054610100900460ff16158015610818576000805460ff1961ff0019909116610100171660011790555b60016033558015610652576000805461ff001916905550565b6108396108aa565b6108745760405162461bcd60e51b815260040180806020018281038252602c815260200180611ec7602c913960400191505060405180910390fd5b606880546001600160a01b0319166001600160a01b0392909216919091179055565b60665461010090046001600160a01b031681565b60665461010090046001600160a01b0316331490565b6108c86108aa565b6109035760405162461bcd60e51b815260040180806020018281038252602c815260200180611ec7602c913960400191505060405180910390fd5b606780546001600160a01b0319166001600160a01b0392909216919091179055565b61092d6108aa565b6109685760405162461bcd60e51b815260040180806020018281038252602c815260200180611ec7602c913960400191505060405180910390fd5b60008161ffff1611801561098157506127108161ffff16105b6109d2576040805162461bcd60e51b815260206004820152601a60248201527f476f6f6457696c6c2056616c7565206e6f7420616c6c6f776564000000000000604482015290519081900360640190fd5b6067805461ffff909216600160a01b0261ffff60a01b19909216919091179055565b6068546001600160a01b031681565b610a0b6108aa565b610a465760405162461bcd60e51b815260040180806020018281038252602c815260200180611ec7602c913960400191505060405180910390fd5b61065281611aea565b60665460009060ff1615610a9f576040805162461bcd60e51b815260206004820152601260248201527115195b5c1bdc985c9a5b1e4814185d5cd95960721b604482015290519081900360640190fd5b6033805460010190819055606754604080516303795fb160e11b81526001600160a01b038881166004830152915160009392909216916306f2bf6291602480820192602092909190829003018186803b158015610afb57600080fd5b505afa158015610b0f573d6000803e3d6000fd5b505050506040513d6020811015610b2557600080fd5b5051606754606a54604080516303795fb160e11b81526001600160a01b039283166004820152905193945060009391909216916306f2bf62916024808301926020929190829003018186803b158015610b7d57600080fd5b505afa158015610b91573d6000803e3d6000fd5b505050506040513d6020811015610ba757600080fd5b505160408051636eb1769f60e11b815233600482015230602482015290519192506000916001600160a01b0385169163dd62ed3e916044808301926020929190829003018186803b158015610bfb57600080fd5b505afa158015610c0f573d6000803e3d6000fd5b505050506040513d6020811015610c2557600080fd5b5051905080871115610c685760405162461bcd60e51b815260040180806020018281038252602c815260200180611f42602c913960400191505060405180910390fd5b606754600090610c9090610c88908a90600160a01b900461ffff16611b57565b612710611bb7565b9050836001600160a01b03166323b872dd3330610cad8c86611bf9565b6040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050602060405180830381600087803b158015610d1557600080fd5b505af1158015610d29573d6000803e3d6000fd5b505050506040513d6020811015610d3f57600080fd5b5051610d83576040805162461bcd60e51b815260206004820152600e60248201526d06572726f72323a646566697a61760941b604482015290519081900360640190fd5b606854604080516323b872dd60e01b81523360048201526001600160a01b039283166024820152604481018490529051918616916323b872dd916064808201926020929091908290030181600087803b158015610ddf57600080fd5b505af1158015610df3573d6000803e3d6000fd5b505050506040513d6020811015610e0957600080fd5b5051610e4d576040805162461bcd60e51b815260206004820152600e60248201526d06572726f72333a646566697a61760941b604482015290519081900360640190fd5b600080856001600160a01b031663f88bf15a610e698c86611bf9565b600180610e7842610708611c3b565b6040518563ffffffff1660e01b8152600401808581526020018481526020018381526020018281526020019450505050506040805180830381600087803b158015610ec257600080fd5b505af1158015610ed6573d6000803e3d6000fd5b505050506040513d6040811015610eec57600080fd5b508051602090910151909250905088156111b957606a546001600160a01b038c811691161415610f54576040805162461bcd60e51b815260206004820152600e60248201526d06572726f72353a646566697a61760941b604482015290519081900360640190fd5b846001600160a01b031663ad65d76d836001610f7242610708611c3b565b336040518563ffffffff1660e01b815260040180848152602001838152602001826001600160a01b03166001600160a01b0316815260200193505050506020604051808303818588803b158015610fc857600080fd5b505af1158015610fdc573d6000803e3d6000fd5b50505050506040513d6020811015610ff357600080fd5b50506040805163095ea7b360e01b81526001600160a01b038881166004830152602482018490529151918d169163095ea7b3916044808201926020929091908290030181600087803b15801561104857600080fd5b505af115801561105c573d6000803e3d6000fd5b505050506040513d602081101561107257600080fd5b50506001600160a01b03861663f552d91b8260018061109342610708611c3b565b606a54604080516001600160e01b031960e089901b16815260048101969096526024860194909452604485019290925260648401523360848401526001600160a01b031660a48301525160c48083019260209291908290030181600087803b1580156110fe57600080fd5b505af1158015611112573d6000803e3d6000fd5b505050506040513d602081101561112857600080fd5b505060408051666f6e6c7944414960c81b815290519081900360070190206001600160a01b0387167fe9fe044b3557c78a96b97e3deb80d2bf7d9460225802982c02ea824b6bb8db038d3361117d8f89611bf9565b604080516001600160a01b03948516815292909316602083015281830152606081018790526080810186905290519081900360a00190a3611360565b856001600160a01b031663ad65d76d8360016111d742610708611c3b565b336040518563ffffffff1660e01b815260040180848152602001838152602001826001600160a01b03166001600160a01b0316815260200193505050506020604051808303818588803b15801561122d57600080fd5b505af1158015611241573d6000803e3d6000fd5b50505050506040513d602081101561125857600080fd5b50506040805163a9059cbb60e01b81523360048201526024810183905290516001600160a01b038d169163a9059cbb9160448083019260209291908290030181600087803b1580156112a957600080fd5b505af11580156112bd573d6000803e3d6000fd5b505050506040513d60208110156112d357600080fd5b505060408051666f6e6c7945524360c81b815290519081900360070190206001600160a01b0387167fe9fe044b3557c78a96b97e3deb80d2bf7d9460225802982c02ea824b6bb8db038d336113288f89611bf9565b604080516001600160a01b03948516815292909316602083015281830152606081018790526080810186905290519081900360a00190a35b6001975050505050505060335481146113c0576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b509392505050565b60665460009060ff1615611418576040805162461bcd60e51b815260206004820152601260248201527115195b5c1bdc985c9a5b1e4814185d5cd95960721b604482015290519081900360640190fd5b6033805460010190819055606754604080516303795fb160e11b81526001600160a01b038781166004830152915160009392909216916306f2bf6291602480820192602092909190829003018186803b15801561147457600080fd5b505afa158015611488573d6000803e3d6000fd5b505050506040513d602081101561149e57600080fd5b505160408051636eb1769f60e11b815233600482015230602482015290519192506000916001600160a01b0384169163dd62ed3e916044808301926020929190829003018186803b1580156114f257600080fd5b505afa158015611506573d6000803e3d6000fd5b505050506040513d602081101561151c57600080fd5b505190508085111561155f5760405162461bcd60e51b815260040180806020018281038252602c815260200180611f42602c913960400191505060405180910390fd5b60675460009061157f90610c88908890600160a01b900461ffff16611b57565b9050826001600160a01b03166323b872dd333061159c8a86611bf9565b6040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050602060405180830381600087803b15801561160457600080fd5b505af1158015611618573d6000803e3d6000fd5b505050506040513d602081101561162e57600080fd5b5051611672576040805162461bcd60e51b815260206004820152600e60248201526d06572726f72323a646566697a61760941b604482015290519081900360640190fd5b606854604080516323b872dd60e01b81523360048201526001600160a01b039283166024820152604481018490529051918516916323b872dd916064808201926020929091908290030181600087803b1580156116ce57600080fd5b505af11580156116e2573d6000803e3d6000fd5b505050506040513d60208110156116f857600080fd5b505161173c576040805162461bcd60e51b815260206004820152600e60248201526d06572726f72333a646566697a61760941b604482015290519081900360640190fd5b600080846001600160a01b031663f88bf15a6117588a86611bf9565b60018061176742610708611c3b565b6040518563ffffffff1660e01b8152600401808581526020018481526020018381526020018281526020019450505050506040805180830381600087803b1580156117b157600080fd5b505af11580156117c5573d6000803e3d6000fd5b505050506040513d60408110156117db57600080fd5b508051602091820151604080516395b68fe760e01b81526004810183905290519295509093506000926001600160a01b038916926395b68fe7926024808201939291829003018186803b15801561183157600080fd5b505afa158015611845573d6000803e3d6000fd5b505050506040513d602081101561185b57600080fd5b50516040805163095ea7b360e01b81526001600160a01b038981166004830152602482018690529151929350908c169163095ea7b3916044808201926020929091908290030181600087803b1580156118b357600080fd5b505af11580156118c7573d6000803e3d6000fd5b505050506040513d60208110156118dd57600080fd5b50506001600160a01b038616637237e031836119046118fd856062611b57565b6064611bb7565b61191042610708611c3b565b604080516001600160e01b031960e087901b1681526004810194909452602484019290925260448301523360648301525160848083019260209291908290030181600087803b15801561196257600080fd5b505af1158015611976573d6000803e3d6000fd5b505050506040513d602081101561198c57600080fd5b50503360008181526069602052604090208490556119a990611c95565b6119f2576040805162461bcd60e51b81526020600482015260156024820152740d2e6e6eaca40d2dc40e8e4c2dce6cccae4408aa89605b1b604482015290519081900360640190fd5b60408051660dedcd8f28aa8960cb1b815290519081900360070190206001600160a01b0387167fe9fe044b3557c78a96b97e3deb80d2bf7d9460225802982c02ea824b6bb8db038c33611a458e8a611bf9565b604080516001600160a01b03948516815292909316602083015281830152606081018890526080810187905290519081900360a00190a3600197505050505050506033548114611adc576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b505b92915050565b303b1590565b6001600160a01b038116611b2f5760405162461bcd60e51b8152600401808060200182810382526026815260200180611ea16026913960400191505060405180910390fd5b606680546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600082611b6657506000611ade565b82820282848281611b7357fe5b0414611bb05760405162461bcd60e51b8152600401808060200182810382526021815260200180611ef36021913960400191505060405180910390fd5b9392505050565b6000611bb083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611da4565b6000611bb083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e46565b600082820183811015611bb0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b038116600090815260696020526040812054611cf0576040805162461bcd60e51b815260206004820152600e60248201526d06572726f72343a446566695a61760941b604482015290519081900360640190fd5b6001600160a01b038216600081815260696020526040808220805490839055905190929083908381818185875af1925050503d8060008114611d4e576040519150601f19603f3d011682016040523d82523d6000602084013e611d53565b606091505b5050905080611d9a576040805162461bcd60e51b815260206004820152600e60248201526d06572726f72353a446566695a61760941b604482015290519081900360640190fd5b5060019392505050565b60008183611e305760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611df5578181015183820152602001611ddd565b50505050905090810190601f168015611e225780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611e3c57fe5b0495945050505050565b60008184841115611e985760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611df5578181015183820152602001611ddd565b50505090039056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373796f7520617265206e6f7420617574686f726973656420746f2063616c6c20746869732066756e6374696f6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a65645065726d697373696f6e20746f20446546695a6170206973206c657373207468616e20726571756573746564a265627a7a72315820045d79e140fca5902c77182843013b8939292348e6f3713c240b8d61a2ba577164736f6c634300050d0032

Deployed Bytecode Sourcemap

16126:10516:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25493:86;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25493:86:0;;;:::i;16586:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16586:29:0;;;:::i;:::-;;;;-1:-1:-1;;;;;16586:29:0;;;;;;;;;;;;;;25781:75;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25781:75:0;;;:::i;25168:285::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25168:285:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25168:285:0;-1:-1:-1;;;;;25168:285:0;;:::i;25649:93::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25649:93:0;;;:::i;16382:75::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16382:75:0;;;:::i;16464:22::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16464:22:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17223:550;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17223:550:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;17223:550:0;;;;;;;;;;;;;;;;;;;;;;;;:::i;11370:218::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11370:218:0;;;:::i;18294:168::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18294:168:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18294:168:0;-1:-1:-1;;;;;18294:168:0;;:::i;16347:28::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16347:28:0;;;:::i;25949:91::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25949:91:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;17781:258;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17781:258:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17781:258:0;-1:-1:-1;;;;;17781:258:0;;:::i;18047:239::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18047:239:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18047:239:0;;;;:::i;16493:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16493:32:0;;;:::i;26195:117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26195:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26195:117:0;-1:-1:-1;;;;;26195:117:0;;:::i;20993:3546::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;20993:3546:0;;;;;;;;;;;;;;;:::i;18470:2515::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;18470:2515:0;;;;;;;;:::i;25493:86::-;17137:9;:7;:9::i;:::-;17129:66;;;;-1:-1:-1;;;17129:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25564:7;;;-1:-1:-1;;25553:18:0;;25564:7;;;;25563:8;25553:18;;;25493:86::o;16586:29::-;;;-1:-1:-1;;;;;16586:29:0;;:::o;25781:75::-;17137:9;:7;:9::i;:::-;17129:66;;;;-1:-1:-1;;;17129:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25842:5;;;;;-1:-1:-1;;;;;25842:5:0;25829:19;25168:285;17137:9;:7;:9::i;:::-;17129:66;;;;-1:-1:-1;;;17129:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25306:71;;;-1:-1:-1;;;25306:71:0;;25361:4;25306:71;;;;;;25278:25;;-1:-1:-1;;;;;25306:32:0;;;;;:71;;;;;;;;;;;;;;;:32;:71;;;5:2:-1;;;;30:1;27;20:12;5:2;25306:71:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25306:71:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25306:71:0;25420:5;;25388:57;;;-1:-1:-1;;;25388:57:0;;25420:5;;;;-1:-1:-1;;;;;25420:5:0;;;25388:57;;;;;;;;;;;;25306:71;;-1:-1:-1;25388:31:0;;;;;:57;;;;;25306:71;;25388:57;;;;;;;;-1:-1:-1;25388:31:0;:57;;;5:2:-1;;;;30:1;27;20:12;5:2;25388:57:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25388:57:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;25168:285:0:o;25649:93::-;17137:9;:7;:9::i;:::-;17129:66;;;;-1:-1:-1;;;17129:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25697:5;;:37;;-1:-1:-1;;;;;25697:5:0;;;;;;;;;25720:4;25712:21;25697:37;;;;;;;;;25712:21;25697:5;:37;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25697:37:0;25649:93::o;16382:75::-;;;-1:-1:-1;;;;;16382:75:0;;:::o;16464:22::-;;;-1:-1:-1;;;16464:22:0;;;;;:::o;17223:550::-;1118:12;;;;;;;;:31;;;1134:15;:13;:15::i;:::-;1118:47;;;-1:-1:-1;1154:11:0;;;;1153:12;1118:47;1110:106;;;;-1:-1:-1;;;1110:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1225:19;1248:12;;;;;;1247:13;1267:83;;;;1296:12;:19;;-1:-1:-1;;;;1296:19:0;;;;;1324:18;1311:4;1324:18;;;1267:83;17420:28;:26;:28::i;:::-;17459:7;:15;;-1:-1:-1;;;;;;17485:18:0;17459:15;17493:10;17485:18;;;;17514:21;:118;;-1:-1:-1;;;;;;17514:118:0;;;-1:-1:-1;;;;;17514:118:0;;;;;;;-1:-1:-1;;;;17643:20:0;-1:-1:-1;;;17643:20:0;;;;;;;;17674:17;:38;;;;;;;;;;17723:15;:42;;;;;;;;;;;;;;1368:57;;;;1412:5;1397:20;;-1:-1:-1;;1397:20:0;;;1368:57;17223:550;;;;;:::o;11370:218::-;1118:12;;;;;;;;:31;;;1134:15;:13;:15::i;:::-;1118:47;;;-1:-1:-1;1154:11:0;;;;1153:12;1118:47;1110:106;;;;-1:-1:-1;;;1110:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1225:19;1248:12;;;;;;1247:13;1267:83;;;;1296:12;:19;;-1:-1:-1;;;;1296:19:0;;;;;1324:18;1311:4;1324:18;;;1267:83;11579:1;11563:13;:17;1368:57;;;;1412:5;1397:20;;-1:-1:-1;;1397:20:0;;;11370:218;:::o;18294:168::-;17137:9;:7;:9::i;:::-;17129:66;;;;-1:-1:-1;;;17129:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18412:17;:42;;-1:-1:-1;;;;;;18412:42:0;-1:-1:-1;;;;;18412:42:0;;;;;;;;;;18294:168::o;16347:28::-;;;;;;-1:-1:-1;;;;;16347:28:0;;:::o;25949:91::-;26027:5;;;;;-1:-1:-1;;;;;26027:5:0;26013:10;:19;;25949:91::o;17781:258::-;17137:9;:7;:9::i;:::-;17129:66;;;;-1:-1:-1;;;17129:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17907:21;:122;;-1:-1:-1;;;;;;17907:122:0;-1:-1:-1;;;;;17907:122:0;;;;;;;;;;17781:258::o;18047:239::-;17137:9;:7;:9::i;:::-;17129:66;;;;-1:-1:-1;;;17129:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18161:1;18145:13;:17;;;:42;;;;;18182:5;18166:13;:21;;;18145:42;18123:118;;;;;-1:-1:-1;;;18123:118:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;18252:8;:24;;;;;;-1:-1:-1;;;18252:24:0;-1:-1:-1;;;;18252:24:0;;;;;;;;;18047:239::o;16493:32::-;;;-1:-1:-1;;;;;16493:32:0;;:::o;26195:117::-;17137:9;:7;:9::i;:::-;17129:66;;;;-1:-1:-1;;;17129:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26276:28;26295:8;26276:18;:28::i;20993:3546::-;16986:7;;21188:4;;16986:7;;16982:102;;;17010:28;;;-1:-1:-1;;;17010:28:0;;;;;;;;;;;;-1:-1:-1;;;17010:28:0;;;;;;;;;;;;;;16982:102;12007:13;:18;;12024:1;12007:18;;;;;21348:21;;:56;;;-1:-1:-1;;;21348:56:0;;-1:-1:-1;;;;;21348:56:0;;;;;;;;;12007:13;;21348:21;;;;;:33;;:56;;;;;;;;;;;;;;;:21;:56;;;5:2:-1;;;;30:1;27;20:12;5:2;21348:56:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21348:56:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21348:56:0;21572:21;;21614:15;;21572:59;;;-1:-1:-1;;;21572:59:0;;-1:-1:-1;;;;;21614:15:0;;;21572:59;;;;;;21348:56;;-1:-1:-1;21426:81:0;;21572:21;;;;;:33;;:59;;;;;21348:56;;21572:59;;;;;;;:21;:59;;;5:2:-1;;;;30:1;27;20:12;5:2;21572:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21572:59:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21572:59:0;21682:104;;;-1:-1:-1;;;21682:104:0;;21737:10;21682:104;;;;21770:4;21682:104;;;;;;21572:59;;-1:-1:-1;21653:26:0;;-1:-1:-1;;;;;21682:40:0;;;;;:104;;;;;21572:59;;21682:104;;;;;;;:40;:104;;;5:2:-1;;;;30:1;27;20:12;5:2;21682:104:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21682:104:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21682:104:0;;-1:-1:-1;21819:40:0;;;;21797:134;;;;-1:-1:-1;;;21797:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22028:8;;21942:23;;21968:100;;21995:42;;22008:18;;-1:-1:-1;;;22028:8:0;;;;21995:12;:42::i;:::-;22052:5;21968:12;:100::i;:::-;21942:126;;22101:30;-1:-1:-1;;;;;22101:43:0;;22163:10;22200:4;22224:49;22237:18;22257:15;22224:12;:49::i;:::-;22101:187;;;;;;;;;;;;;-1:-1:-1;;;;;22101:187:0;-1:-1:-1;;;;;22101:187:0;;;;;;-1:-1:-1;;;;;22101:187:0;-1:-1:-1;;;;;22101:187:0;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22101:187:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22101:187:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22101:187:0;22079:251;;;;;-1:-1:-1;;;22079:251:0;;;;;;;;;;;;-1:-1:-1;;;22079:251:0;;;;;;;;;;;;;;;22454:17;;22363:157;;;-1:-1:-1;;;22363:157:0;;22425:10;22363:157;;;;-1:-1:-1;;;;;22454:17:0;;;22363:157;;;;;;;;;;;;:43;;;;;;:157;;;;;;;;;;;;;;;22454:17;22363:43;:157;;;5:2:-1;;;;30:1;27;20:12;5:2;22363:157:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22363:157:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22363:157:0;22341:221;;;;;-1:-1:-1;;;22341:221:0;;;;;;;;;;;;-1:-1:-1;;;22341:221:0;;;;;;;;;;;;;;;22574:19;22595:21;22620:30;-1:-1:-1;;;;;22620:60:0;;22695:49;22708:18;22728:15;22695:12;:49::i;:::-;22759:1;22775;22791:23;22804:3;22809:4;22791:12;:23::i;:::-;22620:205;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22620:205:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22620:205:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22620:205:0;;;;;;;;;-1:-1:-1;22620:205:0;-1:-1:-1;22836:1672:0;;;;22928:15;;-1:-1:-1;;;;;22895:49:0;;;22928:15;;22895:49;;22869:125;;;;;-1:-1:-1;;;22869:125:0;;;;;;;;;;;;-1:-1:-1;;;22869:125:0;;;;;;;;;;;;;;;23009:33;-1:-1:-1;;;;;23009:57:0;;23091:11;23118:1;23121:23;23134:3;23139:4;23121:12;:23::i;:::-;23146:10;23009:148;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23009:148:0;-1:-1:-1;;;;;23009:148:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23009:148:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23009:148:0;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;23172:142:0;;;-1:-1:-1;;;23172:142:0;;-1:-1:-1;;;;;23172:142:0;;;;;;;;;;;;;;;:37;;;;;;:142;;;;;23009:148;;23172:142;;;;;;;;-1:-1:-1;23172:37:0;:142;;;5:2:-1;;;;30:1;27;20:12;5:2;23172:142:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23172:142:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;;23329:56:0;;;23404:13;23436:1;;23476:23;23489:3;23494:4;23476:12;:23::i;:::-;23555:15;;23329:257;;;-1:-1:-1;;;;;;23329:257:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23518:10;23329:257;;;;-1:-1:-1;;;;;23555:15:0;23329:257;;;;;;;;;;;;;;;;;;;23555:15;23329:257;;;;5:2:-1;;;;30:1;27;20:12;5:2;23329:257:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23329:257:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;23606:306:0;;;-1:-1:-1;;;23606:306:0;;;;;;;;;;;;-1:-1:-1;;;;;23606:306:0;;;23688:21;23729:10;23758:49;23771:18;23791:15;23758:12;:49::i;:::-;23606:306;;;-1:-1:-1;;;;;23606:306:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22836:1672;;;23945:30;-1:-1:-1;;;;;23945:54:0;;24024:11;24051:1;24054:23;24067:3;24072:4;24054:12;:23::i;:::-;24079:10;23945:145;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23945:145:0;-1:-1:-1;;;;;23945:145:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23945:145:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23945:145:0;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;24105:65:0;;;-1:-1:-1;;;24105:65:0;;24144:10;24105:65;;;;;;;;;;;;-1:-1:-1;;;;;24105:38:0;;;;;:65;;;;;23945:145;;24105:65;;;;;;;-1:-1:-1;24105:38:0;:65;;;5:2:-1;;;;30:1;27;20:12;5:2;24105:65:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24105:65:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;24190:306:0;;;-1:-1:-1;;;24190:306:0;;;;;;;;;;;;-1:-1:-1;;;;;24190:306:0;;;24272:21;24313:10;24342:49;24355:18;24375:15;24342:12;:49::i;:::-;24190:306;;;-1:-1:-1;;;;;24190:306:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22836:1672;24527:4;24520:11;;;;;;;;12119:13;;12103:12;:29;12095:73;;;;;-1:-1:-1;;;12095:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17071:1;20993:3546;;;;;:::o;18470:2515::-;16986:7;;18637:4;;16986:7;;16982:102;;;17010:28;;;-1:-1:-1;;;17010:28:0;;;;;;;;;;;;-1:-1:-1;;;17010:28:0;;;;;;;;;;;;;;16982:102;12007:13;:18;;12024:1;12007:18;;;;;18797:21;;:56;;;-1:-1:-1;;;18797:56:0;;-1:-1:-1;;;;;18797:56:0;;;;;;;;;12007:13;;18797:21;;;;;:33;;:56;;;;;;;;;;;;;;;:21;:56;;;5:2:-1;;;;30:1;27;20:12;5:2;18797:56:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18797:56:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18797:56:0;18904:104;;;-1:-1:-1;;;18904:104:0;;18959:10;18904:104;;;;18992:4;18904:104;;;;;;18797:56;;-1:-1:-1;18875:26:0;;-1:-1:-1;;;;;18904:40:0;;;;;:104;;;;;18797:56;;18904:104;;;;;;;:40;:104;;;5:2:-1;;;;30:1;27;20:12;5:2;18904:104:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18904:104:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18904:104:0;;-1:-1:-1;19041:40:0;;;;19019:134;;;;-1:-1:-1;;;19019:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19250:8;;19164:23;;19190:100;;19217:42;;19230:18;;-1:-1:-1;;;19250:8:0;;;;19217:12;:42::i;19190:100::-;19164:126;;19323:30;-1:-1:-1;;;;;19323:43:0;;19385:10;19422:4;19446:49;19459:18;19479:15;19446:12;:49::i;:::-;19323:187;;;;;;;;;;;;;-1:-1:-1;;;;;19323:187:0;-1:-1:-1;;;;;19323:187:0;;;;;;-1:-1:-1;;;;;19323:187:0;-1:-1:-1;;;;;19323:187:0;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19323:187:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19323:187:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19323:187:0;19301:251;;;;;-1:-1:-1;;;19301:251:0;;;;;;;;;;;;-1:-1:-1;;;19301:251:0;;;;;;;;;;;;;;;19676:17;;19585:157;;;-1:-1:-1;;;19585:157:0;;19647:10;19585:157;;;;-1:-1:-1;;;;;19676:17:0;;;19585:157;;;;;;;;;;;;:43;;;;;;:157;;;;;;;;;;;;;;;19676:17;19585:43;:157;;;5:2:-1;;;;30:1;27;20:12;5:2;19585:157:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19585:157:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19585:157:0;19563:221;;;;;-1:-1:-1;;;19563:221:0;;;;;;;;;;;;-1:-1:-1;;;19563:221:0;;;;;;;;;;;;;;;19798:19;19819:21;19844:30;-1:-1:-1;;;;;19844:60:0;;19919:49;19932:18;19952:15;19919:12;:49::i;:::-;19983:1;19999;20015:23;20028:3;20033:4;20015:12;:23::i;:::-;19844:205;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19844:205:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19844:205:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19844:205:0;;;;;;;;20089:83;;-1:-1:-1;;;20089:83:0;;;;;;;;;;19844:205;;-1:-1:-1;19844:205:0;;-1:-1:-1;20062:24:0;;-1:-1:-1;;;;;20089:68:0;;;;;:83;;;;;19844:205;20089:83;;;;;;:68;:83;;;5:2:-1;;;;30:1;27;20:12;5:2;20089:83:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20089:83:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20089:83:0;20183:130;;;-1:-1:-1;;;20183:130:0;;-1:-1:-1;;;;;20183:130:0;;;;;;;;;;;;;;;20089:83;;-1:-1:-1;20183:37:0;;;;;;:130;;;;;20089:83;;20183:130;;;;;;;;-1:-1:-1;20183:37:0;:130;;;5:2:-1;;;;30:1;27;20:12;5:2;20183:130:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20183:130:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;;20324:54:0;;;20393:13;20421:53;20434:34;20447:16;20465:2;20434:12;:34::i;:::-;20470:3;20421:12;:53::i;:::-;20489:23;20502:3;20507:4;20489:12;:23::i;:::-;20324:224;;;-1:-1:-1;;;;;;20324:224:0;;;;;;;;;;;;;;;;;;;;;;;;;20527:10;20324:224;;;;;;;;;;;;;;;;;;;-1:-1:-1;20324:224:0;;;;5:2:-1;;;;30:1;27;20:12;5:2;20324:224:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20324:224:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;20571:10:0;20559:23;;;;:11;20324:224;20559:23;;;;:37;;;20615:24;;:12;:24::i;:::-;20607:58;;;;;-1:-1:-1;;;20607:58:0;;;;;;;;;;;;-1:-1:-1;;;20607:58:0;;;;;;;;;;;;;;;20681:274;;;-1:-1:-1;;;20681:274:0;;;;;;;;;;;;-1:-1:-1;;;;;20681:274:0;;;20755:21;20792:10;20817:49;20830:18;20850:15;20817:12;:49::i;:::-;20681:274;;;-1:-1:-1;;;;;20681:274:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20973:4;20966:11;;;;;;;;12119:13;;12103:12;:29;12095:73;;;;;-1:-1:-1;;;12095:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17071:1;16982:102;18470:2515;;;;:::o;1519:476::-;1959:7;1947:20;1982:7;1519:476;:::o;26418:219::-;-1:-1:-1;;;;;26514:22:0;;26492:110;;;;-1:-1:-1;;;26492:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26613:5;:16;;-1:-1:-1;;;;;26613:16:0;;;;;-1:-1:-1;;;;;;26613:16:0;;;;;;;;;26418:219::o;4422:471::-;4480:7;4725:6;4721:47;;-1:-1:-1;4755:1:0;4748:8;;4721:47;4792:5;;;4796:1;4792;:5;:1;4816:5;;;;;:10;4808:56;;;;-1:-1:-1;;;4808:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4884:1;4422:471;-1:-1:-1;;;4422:471:0:o;5361:132::-;5419:7;5446:39;5450:1;5453;5446:39;;;;;;;;;;;;;;;;;:3;:39::i;3506:136::-;3564:7;3591:43;3595:1;3598;3591:43;;;;;;;;;;;;;;;;;:3;:43::i;3050:181::-;3108:7;3140:5;;;3164:6;;;;3156:46;;;;;-1:-1:-1;;;3156:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;24547:403;-1:-1:-1;;;;;24641:32:0;;24616:4;24641:32;;;:11;:32;;;;;;24633:63;;;;;-1:-1:-1;;;24633:63:0;;;;;;;;;;;;-1:-1:-1;;;24633:63:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24724:32:0;;24707:14;24724:32;;;:11;:32;;;;;;;;24767:36;;;;24833:42;;24724:32;;;;;24707:14;24833:42;24707:14;24833:42;24724:32;;24833:42;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;24814:61:0;;;24894:7;24886:34;;;;;-1:-1:-1;;;24886:34:0;;;;;;;;;;;;-1:-1:-1;;;24886:34:0;;;;;;;;;;;;;;;-1:-1:-1;24938:4:0;;24547:403;-1:-1:-1;;;24547:403:0:o;6023:345::-;6109:7;6211:12;6204:5;6196:28;;;;-1:-1:-1;;;6196:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6196:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6235:9;6251:1;6247;:5;;;;;;;6023:345;-1:-1:-1;;;;;6023:345:0:o;3979:192::-;4065:7;4101:12;4093:6;;;;4085:29;;;;-1:-1:-1;;;4085:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4085:29:0;-1:-1:-1;;;4137:5:0;;;3979:192::o

Swarm Source

bzzr://045d79e140fca5902c77182843013b8939292348e6f3713c240b8d61a2ba5771

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
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.