ETH Price: $3,247.22 (-0.39%)
Gas: 1 Gwei

Contract

0x95954C10fF5319ec1fDCC352D22E74066399A6f7
 

Overview

ETH Balance

0.138 ETH

Eth Value

$448.12 (@ $3,247.22/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Buy With ETH195529072024-03-31 9:11:11118 days ago1711876271IN
0x95954C10...66399A6f7
0.109 ETH0.0017719418.74061654
Buy With ETH195528512024-03-31 8:59:59118 days ago1711875599IN
0x95954C10...66399A6f7
0.029 ETH0.0016158716.59843091
Buy With ETH145200172022-04-04 14:22:20845 days ago1649082140IN
0x95954C10...66399A6f7
0.27 ETH0.0045072768.64780757
Buy With ETH145200162022-04-04 14:22:19845 days ago1649082139IN
0x95954C10...66399A6f7
0.27 ETH0.0048046273.17646131
Buy With ETH145200122022-04-04 14:20:47845 days ago1649082047IN
0x95954C10...66399A6f7
0.26 ETH0.0038421158.51705772
Buy With ETH145019172022-04-01 18:10:51848 days ago1648836651IN
0x95954C10...66399A6f7
0.1 ETH0.0064141297.68999014
Withdraw ERC20144878112022-03-30 13:28:58850 days ago1648646938IN
0x95954C10...66399A6f7
0 ETH0.0019125933.07099406
Withdraw ETH144877902022-03-30 13:24:31850 days ago1648646671IN
0x95954C10...66399A6f7
0 ETH0.0012070534.00360436
Withdraw ERC20144877352022-03-30 13:13:56850 days ago1648646036IN
0x95954C10...66399A6f7
0 ETH0.0024569557.68995434
Buy With ETH144864442022-03-30 8:15:26850 days ago1648628126IN
0x95954C10...66399A6f7
0.09 ETH0.0034794336.79960312
Transfer144864342022-03-30 8:12:54850 days ago1648627974IN
0x95954C10...66399A6f7
0.10546545 ETH0.000536425.54309996
Transfer144864192022-03-30 8:10:27850 days ago1648627827IN
0x95954C10...66399A6f7
0.1068738 ETH0.0007298134.75320536
Buy With ETH144859022022-03-30 6:16:24850 days ago1648620984IN
0x95954C10...66399A6f7
0.09 ETH0.002471830.80095782
Buy With ETH144854642022-03-30 4:36:39850 days ago1648614999IN
0x95954C10...66399A6f7
0.15 ETH0.0022952628.60103247
Buy With ETH144845952022-03-30 1:21:56850 days ago1648603316IN
0x95954C10...66399A6f7
0.2145 ETH0.0028564130.21029956
Buy With ETH144845382022-03-30 1:10:42850 days ago1648602642IN
0x95954C10...66399A6f7
0.0937 ETH0.0037054739.1902103
Buy With ERC20144843302022-03-30 0:21:34851 days ago1648599694IN
0x95954C10...66399A6f7
0 ETH0.004325542.97999608
Buy With ETH144842352022-03-30 0:02:05851 days ago1648598525IN
0x95954C10...66399A6f7
0.15 ETH0.0051203954.1548608
Buy With ETH144839962022-03-29 23:07:25851 days ago1648595245IN
0x95954C10...66399A6f7
0.15347 ETH0.006080964.31344839
Buy With ETH144838982022-03-29 22:46:56851 days ago1648594016IN
0x95954C10...66399A6f7
0.11 ETH0.0047253149.97632524
Buy With ETH144838672022-03-29 22:39:12851 days ago1648593552IN
0x95954C10...66399A6f7
0.19 ETH0.0031603633.42500166
Buy With ETH144837622022-03-29 22:20:15851 days ago1648592415IN
0x95954C10...66399A6f7
0.13 ETH0.004759250.33478761
Buy With ETH144835132022-03-29 21:22:35851 days ago1648588955IN
0x95954C10...66399A6f7
0.0886 ETH0.0036055138.13300229
Buy With ETH144834982022-03-29 21:20:21851 days ago1648588821IN
0x95954C10...66399A6f7
0.09 ETH0.0053611755.07054976
Buy With ETH144834582022-03-29 21:10:22851 days ago1648588222IN
0x95954C10...66399A6f7
0.09 ETH0.0047889950.64986903
View all transactions

Latest 5 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
144877902022-03-30 13:24:31850 days ago1648646671
0x95954C10...66399A6f7
22.34313266 ETH
144418072022-03-23 9:46:26857 days ago1648028786
0x95954C10...66399A6f7
61.2186844 ETH
142752232022-02-25 12:22:44883 days ago1645791764
0x95954C10...66399A6f7
29.86115 ETH
141867972022-02-11 20:02:05897 days ago1644609725
0x95954C10...66399A6f7
33.60560686 ETH
137959812021-12-13 9:24:05957 days ago1639387445
0x95954C10...66399A6f7
7.6624 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Escrow

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

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() {
        _setOwner(_msgSender());
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(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");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/**
 * @title SafeERC20
 * @dev Wrappers around ERC20 operations that throw on failure (when the token
 * contract returns false). Tokens that return no value (and instead revert or
 * throw on failure) are also supported, non-reverting calls are assumed to be
 * successful.
 * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
library SafeERC20 {
    using Address for address;

    function safeTransfer(
        IERC20 token,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    /**
     * @dev Deprecated. This function has issues similar to the ones found in
     * {IERC20-approve}, and its usage is discouraged.
     *
     * Whenever possible, use {safeIncreaseAllowance} and
     * {safeDecreaseAllowance} instead.
     */
    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        // safeApprove should only be called when setting an initial allowance,
        // or when resetting it to zero. To increase and decrease it, use
        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
        require(
            (value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function safeIncreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 newAllowance = token.allowance(address(this), spender) + value;
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function safeDecreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        unchecked {
            uint256 oldAllowance = token.allowance(address(this), spender);
            require(oldAllowance >= value, "SafeERC20: decreased allowance below zero");
            uint256 newAllowance = oldAllowance - value;
            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
        }
    }

    /**
     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
     * on the return value: the return value is optional (but if data is returned, it must not be false).
     * @param token The token targeted by the call.
     * @param data The call data (encoded using abi.encode or one of its variants).
     */
    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that
        // the target address contains contract code and also asserts for success in the low-level call.

        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) {
            // Return data is optional
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

interface IPriceOracleGetter {
  function getAssetPrice(address asset) external view returns (uint256);
}

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

contract Escrow is Ownable {
    using Address for address payable;
    using SafeERC20 for IERC20;

    event BoughtOffline(address indexed recipient, uint256 indexed amount);
    event ERC20Deposited(address indexed payee, address indexed token, uint256 indexed amount);
    event ERC20Withdrawn(address indexed payee, address indexed token, uint256 indexed amount);
    event Deposited(address indexed payee, uint256 indexed weiAmount);
    event Withdrawn(address indexed payee, uint256 indexed weiAmount);
    
    mapping(address => bool) public whitelistedTokens;
    mapping(address => uint256) public conversionRates;

    address public offlineSpender;
    uint256 public pricePerUnitInUSD;
    uint256 public lastRecordedPrice;
    uint256 public minimumTicket;
    uint256 public constant ONE = 10**18;
    bool public paused;
    
    IERC20 public wbkn;
    IPriceOracleGetter public ethUSDCFeed;

    modifier onlySpender {
        require(msg.sender == offlineSpender, "Caller is not spender");
        _;
    }
    
    modifier whenNotPaused {
        require(!paused, "Functionality is paused");
        _;
    }
    
    constructor(
        address _wbkn,
        address _offlineSpender,
        uint256 _pricePerUnitInUsd,
        uint256 _minimumTicket,
        address _priceOracleGetter,
        address[] memory _whitelistedTokens,
        uint256[] memory _conversionRates
    ) {
        require(_whitelistedTokens.length == _conversionRates.length, "Lengths mismatch");
        require(_wbkn != address(0), "Invalid WBKN address");

        pricePerUnitInUSD = _pricePerUnitInUsd;        
        wbkn = IERC20(_wbkn);
        minimumTicket = _minimumTicket;
        offlineSpender = _offlineSpender;
        ethUSDCFeed = IPriceOracleGetter(_priceOracleGetter);
        lastRecordedPrice = ethUSDCFeed.getAssetPrice(0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48);
        
        for(uint8 i = 0; i<_whitelistedTokens.length; i++) {
            whitelistedTokens[_whitelistedTokens[i]] = true;
            conversionRates[_whitelistedTokens[i]] =_conversionRates[i];
        }
    }
    
    function pause(bool _pause) public onlyOwner {
        paused = _pause;
    }
    
    function configERC20(address token, uint256 conversionRate) public onlyOwner {
        if(conversionRate != 0) {
            if(!whitelistedTokens[token]) whitelistedTokens[token] = true;
        } else {
            if(whitelistedTokens[token]) whitelistedTokens[token] = false;
        }
        
        if(conversionRate != conversionRates[token]) conversionRates[token] = conversionRate;
    }
    
    function configUSDPrice(uint256 newValue) public onlyOwner {
        pricePerUnitInUSD = newValue;
    }

    function configMinimumTicket(uint256 newValue) public onlyOwner {
        minimumTicket = newValue;
    }
    
    function buyOffline(uint256 amountBought, address recipient) public onlySpender {
        require(amountBought <= wbkn.balanceOf(address(this)), "Amount exceeds contract's reserve");
        require(amountBought >= minimumTicket, "Minimum ticket not satisfied");

        wbkn.safeTransfer(recipient, amountBought);
        
        emit BoughtOffline(recipient, amountBought);
    }
    
    function buyWithERC20(address token, uint256 amount) public whenNotPaused {
        require(whitelistedTokens[token], "This address is not whitelisted");
        require(conversionRates[token] > 0, "Invalid conversion rate");
        require(amount > 0, "Zero amount not allowed");
        require(IERC20(token).allowance(msg.sender, address(this)) >= amount, "Contract has not enough allowance");
        
        uint256 amountBought = amount * conversionRates[token];
        require(amountBought >= minimumTicket, "Minimum ticket not satisfied");
        require(amountBought <= wbkn.balanceOf(address(this)), "Amount exceeds contract's reserve");
        
        IERC20(token).safeTransferFrom(msg.sender, address(this), amount);
        wbkn.safeTransfer(msg.sender, amountBought);

        emit ERC20Deposited(msg.sender, token, amount);
    }

    function buyWithETH() public payable whenNotPaused {
        uint256 amount = msg.value;
        require(amount > 0, "Zero amount not allowed");

        lastRecordedPrice = ethUSDCFeed.getAssetPrice(0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48);
        
        uint256 amountInUSD = amount*ONE / lastRecordedPrice;
        uint256 amountBought = amountInUSD*ONE / pricePerUnitInUSD;

        require(amountBought >= minimumTicket, "Minimum ticket not satisfied");
        require(amountBought <= wbkn.balanceOf(address(this)), "Amount exceeds contract's reserve");
        
        wbkn.safeTransfer(msg.sender, amountBought);
        
        emit Deposited(msg.sender, amountInUSD);
    }

    function withdrawETH(address payable recipient) public onlyOwner {
        emit Withdrawn(recipient, address(this).balance);
        recipient.sendValue(address(this).balance);
    }
    
    function withdrawERC20(address token, address recipient) public onlyOwner {

        IERC20(token).safeTransfer(recipient, IERC20(token).balanceOf(address(this)));

        emit ERC20Withdrawn(recipient, token, IERC20(token).balanceOf(address(this)));
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_wbkn","type":"address"},{"internalType":"address","name":"_offlineSpender","type":"address"},{"internalType":"uint256","name":"_pricePerUnitInUsd","type":"uint256"},{"internalType":"uint256","name":"_minimumTicket","type":"uint256"},{"internalType":"address","name":"_priceOracleGetter","type":"address"},{"internalType":"address[]","name":"_whitelistedTokens","type":"address[]"},{"internalType":"uint256[]","name":"_conversionRates","type":"uint256[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BoughtOffline","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":true,"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ERC20Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ERC20Withdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":true,"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"ONE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountBought","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"buyOffline","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buyWithERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyWithETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"conversionRate","type":"uint256"}],"name":"configERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"configMinimumTicket","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"configUSDPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"conversionRates","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ethUSDCFeed","outputs":[{"internalType":"contract IPriceOracleGetter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRecordedPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTicket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"offlineSpender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_pause","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pricePerUnitInUSD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wbkn","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistedTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"recipient","type":"address"}],"name":"withdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"recipient","type":"address"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040516200372638038062003726833981810160405281019062000037919062000632565b620000576200004b620003dc60201b60201c565b620003e460201b60201c565b80518251146200009e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200009590620007d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141562000111576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200010890620007f3565b60405180910390fd5b8460048190555086600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360068190555085600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b3596f0773a0b86991c6218b36c1d19d4a2e9eb0ce3606eb486040518263ffffffff1660e01b8152600401620002539190620007b4565b60206040518083038186803b1580156200026c57600080fd5b505afa15801562000281573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a7919062000723565b60058190555060005b82518160ff161015620003ce576001806000858460ff1681518110620002db57620002da6200098c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550818160ff16815181106200034d576200034c6200098c565b5b602002602001015160026000858460ff16815181106200037257620003716200098c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080620003c5906200092e565b915050620002b0565b505050505050505062000a95565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000620004bf620004b9846200083e565b62000815565b90508083825260208201905082856020860282011115620004e557620004e4620009ef565b5b60005b85811015620005195781620004fe88826200059e565b845260208401935060208301925050600181019050620004e8565b5050509392505050565b60006200053a62000534846200086d565b62000815565b9050808382526020820190508285602086028201111562000560576200055f620009ef565b5b60005b858110156200059457816200057988826200061b565b84526020840193506020830192505060018101905062000563565b5050509392505050565b600081519050620005af8162000a61565b92915050565b600082601f830112620005cd57620005cc620009ea565b5b8151620005df848260208601620004a8565b91505092915050565b600082601f8301126200060057620005ff620009ea565b5b81516200061284826020860162000523565b91505092915050565b6000815190506200062c8162000a7b565b92915050565b600080600080600080600060e0888a031215620006545762000653620009f9565b5b6000620006648a828b016200059e565b9750506020620006778a828b016200059e565b96505060406200068a8a828b016200061b565b95505060606200069d8a828b016200061b565b9450506080620006b08a828b016200059e565b93505060a088015167ffffffffffffffff811115620006d457620006d3620009f4565b5b620006e28a828b01620005b5565b92505060c088015167ffffffffffffffff811115620007065762000705620009f4565b5b620007148a828b01620005e8565b91505092959891949750929550565b6000602082840312156200073c576200073b620009f9565b5b60006200074c848285016200061b565b91505092915050565b6200076081620008ad565b82525050565b6000620007756010836200089c565b9150620007828262000a0f565b602082019050919050565b60006200079c6014836200089c565b9150620007a98262000a38565b602082019050919050565b6000602082019050620007cb600083018462000755565b92915050565b60006020820190508181036000830152620007ec8162000766565b9050919050565b600060208201905081810360008301526200080e816200078d565b9050919050565b60006200082162000834565b90506200082f8282620008f8565b919050565b6000604051905090565b600067ffffffffffffffff8211156200085c576200085b620009bb565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156200088b576200088a620009bb565b5b602082029050602081019050919050565b600082825260208201905092915050565b6000620008ba82620008c1565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6200090382620009fe565b810181811067ffffffffffffffff82111715620009255762000924620009bb565b5b80604052505050565b60006200093b82620008eb565b915060ff8214156200095257620009516200095d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4c656e67746873206d69736d6174636800000000000000000000000000000000600082015250565b7f496e76616c69642057424b4e2061646472657373000000000000000000000000600082015250565b62000a6c81620008ad565b811462000a7857600080fd5b50565b62000a8681620008e1565b811462000a9257600080fd5b50565b612c818062000aa56000396000f3fe6080604052600436106101355760003560e01c80636dce1220116100ab578063c28ace4e1161006f578063c28ace4e146103a9578063c2ee3a08146103d2578063c50d5210146103fd578063daf9c21014610426578063e97116b114610463578063f2fde38b146104a057610135565b80636dce1220146102ea578063715018a6146103155780638da5cb5b1461032c5780638f9c6008146103575780639456fbcc1461038057610135565b806349c3818d116100fd57806349c3818d146101ec5780634c58ddf7146102175780635c975abb146102425780635f14a10c1461026d5780635f359f4214610298578063690d8320146102c157610135565b806302329a291461013a578063150d283d146101635780631def80af1461016d578063333e78fa14610196578063447b99c9146101c1575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190611f84565b6104c9565b005b61016b610562565b005b34801561017957600080fd5b50610194600480360381019061018f9190611f44565b6108d1565b005b3480156101a257600080fd5b506101ab610b3e565b6040516101b89190612463565b60405180910390f35b3480156101cd57600080fd5b506101d6610b64565b6040516101e39190612389565b60405180910390f35b3480156101f857600080fd5b50610201610b8a565b60405161020e9190612680565b60405180910390f35b34801561022357600080fd5b5061022c610b90565b6040516102399190612680565b60405180910390f35b34801561024e57600080fd5b50610257610b96565b604051610264919061242d565b60405180910390f35b34801561027957600080fd5b50610282610ba9565b60405161028f9190612680565b60405180910390f35b3480156102a457600080fd5b506102bf60048036038101906102ba9190611fde565b610baf565b005b3480156102cd57600080fd5b506102e860048036038101906102e39190611ed7565b610c35565b005b3480156102f657600080fd5b506102ff610d21565b60405161030c9190612448565b60405180910390f35b34801561032157600080fd5b5061032a610d47565b005b34801561033857600080fd5b50610341610dcf565b60405161034e9190612389565b60405180910390f35b34801561036357600080fd5b5061037e60048036038101906103799190611fde565b610df8565b005b34801561038c57600080fd5b506103a760048036038101906103a29190611f04565b610e7e565b005b3480156103b557600080fd5b506103d060048036038101906103cb9190611f44565b611094565b005b3480156103de57600080fd5b506103e761155d565b6040516103f49190612680565b60405180910390f35b34801561040957600080fd5b50610424600480360381019061041f9190612038565b611569565b005b34801561043257600080fd5b5061044d60048036038101906104489190611eaa565b6117c0565b60405161045a919061242d565b60405180910390f35b34801561046f57600080fd5b5061048a60048036038101906104859190611eaa565b6117e0565b6040516104979190612680565b60405180910390f35b3480156104ac57600080fd5b506104c760048036038101906104c29190611eaa565b6117f8565b005b6104d16118f0565b73ffffffffffffffffffffffffffffffffffffffff166104ef610dcf565b73ffffffffffffffffffffffffffffffffffffffff1614610545576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053c906125a0565b60405180910390fd5b80600760006101000a81548160ff02191690831515021790555050565b600760009054906101000a900460ff16156105b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906125c0565b60405180910390fd5b6000349050600081116105fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f1906125e0565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b3596f0773a0b86991c6218b36c1d19d4a2e9eb0ce3606eb486040518263ffffffff1660e01b81526004016106699190612389565b60206040518083038186803b15801561068157600080fd5b505afa158015610695573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b9919061200b565b6005819055506000600554670de0b6b3a7640000836106d891906126fe565b6106e291906126cd565b90506000600454670de0b6b3a7640000836106fd91906126fe565b61070791906126cd565b905060065481101561074e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074590612620565b60405180910390fd5b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016107a99190612389565b60206040518083038186803b1580156107c157600080fd5b505afa1580156107d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f9919061200b565b81111561083b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083290612560565b60405180910390fd5b6108883382600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118f89092919063ffffffff16565b813373ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c460405160405180910390a3505050565b6108d96118f0565b73ffffffffffffffffffffffffffffffffffffffff166108f7610dcf565b73ffffffffffffffffffffffffffffffffffffffff161461094d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610944906125a0565b60405180910390fd5b60008114610a0357600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166109fe5760018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b610aaf565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610aae576000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548114610b3a5780600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60065481565b600760009054906101000a900460ff1681565b60045481565b610bb76118f0565b73ffffffffffffffffffffffffffffffffffffffff16610bd5610dcf565b73ffffffffffffffffffffffffffffffffffffffff1614610c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c22906125a0565b60405180910390fd5b8060048190555050565b610c3d6118f0565b73ffffffffffffffffffffffffffffffffffffffff16610c5b610dcf565b73ffffffffffffffffffffffffffffffffffffffff1614610cb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca8906125a0565b60405180910390fd5b478173ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d560405160405180910390a3610d1e478273ffffffffffffffffffffffffffffffffffffffff1661197e90919063ffffffff16565b50565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d4f6118f0565b73ffffffffffffffffffffffffffffffffffffffff16610d6d610dcf565b73ffffffffffffffffffffffffffffffffffffffff1614610dc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dba906125a0565b60405180910390fd5b610dcd6000611a72565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e006118f0565b73ffffffffffffffffffffffffffffffffffffffff16610e1e610dcf565b73ffffffffffffffffffffffffffffffffffffffff1614610e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6b906125a0565b60405180910390fd5b8060068190555050565b610e866118f0565b73ffffffffffffffffffffffffffffffffffffffff16610ea4610dcf565b73ffffffffffffffffffffffffffffffffffffffff1614610efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef1906125a0565b60405180910390fd5b610fad818373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f379190612389565b60206040518083038186803b158015610f4f57600080fd5b505afa158015610f63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f87919061200b565b8473ffffffffffffffffffffffffffffffffffffffff166118f89092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fe69190612389565b60206040518083038186803b158015610ffe57600080fd5b505afa158015611012573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611036919061200b565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fbfed55bdcd242e3dd0f60ddd7d1e87c67f61c34cd9527b3e6455d841b102536260405160405180910390a45050565b600760009054906101000a900460ff16156110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db906125c0565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611170576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116790612580565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116111f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e990612500565b60405180910390fd5b60008111611235576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122c906125e0565b60405180910390fd5b808273ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b81526004016112719291906123a4565b60206040518083038186803b15801561128957600080fd5b505afa15801561129d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c1919061200b565b1015611302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f990612660565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261134f91906126fe565b9050600654811015611396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138d90612620565b60405180910390fd5b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113f19190612389565b60206040518083038186803b15801561140957600080fd5b505afa15801561141d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611441919061200b565b811115611483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147a90612560565b60405180910390fd5b6114b03330848673ffffffffffffffffffffffffffffffffffffffff16611b36909392919063ffffffff16565b6114fd3382600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118f89092919063ffffffff16565b818373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe33e9822e3317b004d587136bab2627ea1ecfbba4eb79abddd0a56cfdd09c0e160405160405180910390a4505050565b670de0b6b3a764000081565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f0906124a0565b60405180910390fd5b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116549190612389565b60206040518083038186803b15801561166c57600080fd5b505afa158015611680573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a4919061200b565b8211156116e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116dd90612560565b60405180910390fd5b60065482101561172b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172290612620565b60405180910390fd5b6117788183600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118f89092919063ffffffff16565b818173ffffffffffffffffffffffffffffffffffffffff167f77ebc66f38487257567e3e83344dacd2dc7a05c11a46d6dd2a91fa8a9f17be9260405160405180910390a35050565b60016020528060005260406000206000915054906101000a900460ff1681565b60026020528060005260406000206000915090505481565b6118006118f0565b73ffffffffffffffffffffffffffffffffffffffff1661181e610dcf565b73ffffffffffffffffffffffffffffffffffffffff1614611874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186b906125a0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118db906124c0565b60405180910390fd5b6118ed81611a72565b50565b600033905090565b6119798363a9059cbb60e01b8484604051602401611917929190612404565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611bbf565b505050565b804710156119c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b890612520565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516119e790612374565b60006040518083038185875af1925050503d8060008114611a24576040519150601f19603f3d011682016040523d82523d6000602084013e611a29565b606091505b5050905080611a6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a64906124e0565b60405180910390fd5b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611bb9846323b872dd60e01b858585604051602401611b57939291906123cd565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611bbf565b50505050565b6000611c21826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611c869092919063ffffffff16565b9050600081511115611c815780806020019051810190611c419190611fb1565b611c80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7790612640565b60405180910390fd5b5b505050565b6060611c958484600085611c9e565b90509392505050565b606082471015611ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cda90612540565b60405180910390fd5b611cec85611db2565b611d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2290612600565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611d54919061235d565b60006040518083038185875af1925050503d8060008114611d91576040519150601f19603f3d011682016040523d82523d6000602084013e611d96565b606091505b5091509150611da6828286611dc5565b92505050949350505050565b600080823b905060008111915050919050565b60608315611dd557829050611e25565b600083511115611de85782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1c919061247e565b60405180910390fd5b9392505050565b600081359050611e3b81612bef565b92915050565b600081359050611e5081612c06565b92915050565b600081359050611e6581612c1d565b92915050565b600081519050611e7a81612c1d565b92915050565b600081359050611e8f81612c34565b92915050565b600081519050611ea481612c34565b92915050565b600060208284031215611ec057611ebf61288b565b5b6000611ece84828501611e2c565b91505092915050565b600060208284031215611eed57611eec61288b565b5b6000611efb84828501611e41565b91505092915050565b60008060408385031215611f1b57611f1a61288b565b5b6000611f2985828601611e2c565b9250506020611f3a85828601611e2c565b9150509250929050565b60008060408385031215611f5b57611f5a61288b565b5b6000611f6985828601611e2c565b9250506020611f7a85828601611e80565b9150509250929050565b600060208284031215611f9a57611f9961288b565b5b6000611fa884828501611e56565b91505092915050565b600060208284031215611fc757611fc661288b565b5b6000611fd584828501611e6b565b91505092915050565b600060208284031215611ff457611ff361288b565b5b600061200284828501611e80565b91505092915050565b6000602082840312156120215761202061288b565b5b600061202f84828501611e95565b91505092915050565b6000806040838503121561204f5761204e61288b565b5b600061205d85828601611e80565b925050602061206e85828601611e2c565b9150509250929050565b61208181612758565b82525050565b6120908161277c565b82525050565b60006120a18261269b565b6120ab81856126b1565b93506120bb8185602086016127fa565b80840191505092915050565b6120d0816127b2565b82525050565b6120df816127c4565b82525050565b60006120f0826126a6565b6120fa81856126bc565b935061210a8185602086016127fa565b61211381612890565b840191505092915050565b600061212b6015836126bc565b9150612136826128a1565b602082019050919050565b600061214e6026836126bc565b9150612159826128ca565b604082019050919050565b6000612171603a836126bc565b915061217c82612919565b604082019050919050565b60006121946017836126bc565b915061219f82612968565b602082019050919050565b60006121b7601d836126bc565b91506121c282612991565b602082019050919050565b60006121da6026836126bc565b91506121e5826129ba565b604082019050919050565b60006121fd6021836126bc565b915061220882612a09565b604082019050919050565b6000612220601f836126bc565b915061222b82612a58565b602082019050919050565b60006122436020836126bc565b915061224e82612a81565b602082019050919050565b60006122666017836126bc565b915061227182612aaa565b602082019050919050565b60006122896000836126b1565b915061229482612ad3565b600082019050919050565b60006122ac6017836126bc565b91506122b782612ad6565b602082019050919050565b60006122cf601d836126bc565b91506122da82612aff565b602082019050919050565b60006122f2601c836126bc565b91506122fd82612b28565b602082019050919050565b6000612315602a836126bc565b915061232082612b51565b604082019050919050565b60006123386021836126bc565b915061234382612ba0565b604082019050919050565b612357816127a8565b82525050565b60006123698284612096565b915081905092915050565b600061237f8261227c565b9150819050919050565b600060208201905061239e6000830184612078565b92915050565b60006040820190506123b96000830185612078565b6123c66020830184612078565b9392505050565b60006060820190506123e26000830186612078565b6123ef6020830185612078565b6123fc604083018461234e565b949350505050565b60006040820190506124196000830185612078565b612426602083018461234e565b9392505050565b60006020820190506124426000830184612087565b92915050565b600060208201905061245d60008301846120c7565b92915050565b600060208201905061247860008301846120d6565b92915050565b6000602082019050818103600083015261249881846120e5565b905092915050565b600060208201905081810360008301526124b98161211e565b9050919050565b600060208201905081810360008301526124d981612141565b9050919050565b600060208201905081810360008301526124f981612164565b9050919050565b6000602082019050818103600083015261251981612187565b9050919050565b60006020820190508181036000830152612539816121aa565b9050919050565b60006020820190508181036000830152612559816121cd565b9050919050565b60006020820190508181036000830152612579816121f0565b9050919050565b6000602082019050818103600083015261259981612213565b9050919050565b600060208201905081810360008301526125b981612236565b9050919050565b600060208201905081810360008301526125d981612259565b9050919050565b600060208201905081810360008301526125f98161229f565b9050919050565b60006020820190508181036000830152612619816122c2565b9050919050565b60006020820190508181036000830152612639816122e5565b9050919050565b6000602082019050818103600083015261265981612308565b9050919050565b600060208201905081810360008301526126798161232b565b9050919050565b6000602082019050612695600083018461234e565b92915050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b60006126d8826127a8565b91506126e3836127a8565b9250826126f3576126f261285c565b5b828204905092915050565b6000612709826127a8565b9150612714836127a8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561274d5761274c61282d565b5b828202905092915050565b600061276382612788565b9050919050565b600061277582612788565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006127bd826127d6565b9050919050565b60006127cf826127d6565b9050919050565b60006127e1826127e8565b9050919050565b60006127f382612788565b9050919050565b60005b838110156128185780820151818401526020810190506127fd565b83811115612827576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f43616c6c6572206973206e6f74207370656e6465720000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b7f496e76616c696420636f6e76657273696f6e2072617465000000000000000000600082015250565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206578636565647320636f6e747261637427732072657365727660008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b7f546869732061646472657373206973206e6f742077686974656c697374656400600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f46756e6374696f6e616c69747920697320706175736564000000000000000000600082015250565b50565b7f5a65726f20616d6f756e74206e6f7420616c6c6f776564000000000000000000600082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f4d696e696d756d207469636b6574206e6f742073617469736669656400000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f436f6e747261637420686173206e6f7420656e6f75676820616c6c6f77616e6360008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b612bf881612758565b8114612c0357600080fd5b50565b612c0f8161276a565b8114612c1a57600080fd5b50565b612c268161277c565b8114612c3157600080fd5b50565b612c3d816127a8565b8114612c4857600080fd5b5056fea26469706673582212200145b84d45f0a02cd33913045e2201fbe950640720c2ffb205a91a21a13a48d764736f6c63430008070033000000000000000000000000f6b6235f6725f84457f5d6f0b0aa3c962a079977000000000000000000000000d7cf5b61898e0a06b81efadc6516e666dff0957d000000000000000000000000000000000000000000000000011c37937e080000000000000000000000000000000000000000000000000043c33c193756480000000000000000000000000000a50ba011c48153de246e5192c8f9258a2ba79ca900000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000b5e620f4800

Deployed Bytecode

0x6080604052600436106101355760003560e01c80636dce1220116100ab578063c28ace4e1161006f578063c28ace4e146103a9578063c2ee3a08146103d2578063c50d5210146103fd578063daf9c21014610426578063e97116b114610463578063f2fde38b146104a057610135565b80636dce1220146102ea578063715018a6146103155780638da5cb5b1461032c5780638f9c6008146103575780639456fbcc1461038057610135565b806349c3818d116100fd57806349c3818d146101ec5780634c58ddf7146102175780635c975abb146102425780635f14a10c1461026d5780635f359f4214610298578063690d8320146102c157610135565b806302329a291461013a578063150d283d146101635780631def80af1461016d578063333e78fa14610196578063447b99c9146101c1575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190611f84565b6104c9565b005b61016b610562565b005b34801561017957600080fd5b50610194600480360381019061018f9190611f44565b6108d1565b005b3480156101a257600080fd5b506101ab610b3e565b6040516101b89190612463565b60405180910390f35b3480156101cd57600080fd5b506101d6610b64565b6040516101e39190612389565b60405180910390f35b3480156101f857600080fd5b50610201610b8a565b60405161020e9190612680565b60405180910390f35b34801561022357600080fd5b5061022c610b90565b6040516102399190612680565b60405180910390f35b34801561024e57600080fd5b50610257610b96565b604051610264919061242d565b60405180910390f35b34801561027957600080fd5b50610282610ba9565b60405161028f9190612680565b60405180910390f35b3480156102a457600080fd5b506102bf60048036038101906102ba9190611fde565b610baf565b005b3480156102cd57600080fd5b506102e860048036038101906102e39190611ed7565b610c35565b005b3480156102f657600080fd5b506102ff610d21565b60405161030c9190612448565b60405180910390f35b34801561032157600080fd5b5061032a610d47565b005b34801561033857600080fd5b50610341610dcf565b60405161034e9190612389565b60405180910390f35b34801561036357600080fd5b5061037e60048036038101906103799190611fde565b610df8565b005b34801561038c57600080fd5b506103a760048036038101906103a29190611f04565b610e7e565b005b3480156103b557600080fd5b506103d060048036038101906103cb9190611f44565b611094565b005b3480156103de57600080fd5b506103e761155d565b6040516103f49190612680565b60405180910390f35b34801561040957600080fd5b50610424600480360381019061041f9190612038565b611569565b005b34801561043257600080fd5b5061044d60048036038101906104489190611eaa565b6117c0565b60405161045a919061242d565b60405180910390f35b34801561046f57600080fd5b5061048a60048036038101906104859190611eaa565b6117e0565b6040516104979190612680565b60405180910390f35b3480156104ac57600080fd5b506104c760048036038101906104c29190611eaa565b6117f8565b005b6104d16118f0565b73ffffffffffffffffffffffffffffffffffffffff166104ef610dcf565b73ffffffffffffffffffffffffffffffffffffffff1614610545576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053c906125a0565b60405180910390fd5b80600760006101000a81548160ff02191690831515021790555050565b600760009054906101000a900460ff16156105b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906125c0565b60405180910390fd5b6000349050600081116105fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f1906125e0565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b3596f0773a0b86991c6218b36c1d19d4a2e9eb0ce3606eb486040518263ffffffff1660e01b81526004016106699190612389565b60206040518083038186803b15801561068157600080fd5b505afa158015610695573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b9919061200b565b6005819055506000600554670de0b6b3a7640000836106d891906126fe565b6106e291906126cd565b90506000600454670de0b6b3a7640000836106fd91906126fe565b61070791906126cd565b905060065481101561074e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074590612620565b60405180910390fd5b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016107a99190612389565b60206040518083038186803b1580156107c157600080fd5b505afa1580156107d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f9919061200b565b81111561083b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083290612560565b60405180910390fd5b6108883382600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118f89092919063ffffffff16565b813373ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c460405160405180910390a3505050565b6108d96118f0565b73ffffffffffffffffffffffffffffffffffffffff166108f7610dcf565b73ffffffffffffffffffffffffffffffffffffffff161461094d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610944906125a0565b60405180910390fd5b60008114610a0357600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166109fe5760018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b610aaf565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610aae576000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548114610b3a5780600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60065481565b600760009054906101000a900460ff1681565b60045481565b610bb76118f0565b73ffffffffffffffffffffffffffffffffffffffff16610bd5610dcf565b73ffffffffffffffffffffffffffffffffffffffff1614610c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c22906125a0565b60405180910390fd5b8060048190555050565b610c3d6118f0565b73ffffffffffffffffffffffffffffffffffffffff16610c5b610dcf565b73ffffffffffffffffffffffffffffffffffffffff1614610cb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca8906125a0565b60405180910390fd5b478173ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d560405160405180910390a3610d1e478273ffffffffffffffffffffffffffffffffffffffff1661197e90919063ffffffff16565b50565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d4f6118f0565b73ffffffffffffffffffffffffffffffffffffffff16610d6d610dcf565b73ffffffffffffffffffffffffffffffffffffffff1614610dc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dba906125a0565b60405180910390fd5b610dcd6000611a72565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e006118f0565b73ffffffffffffffffffffffffffffffffffffffff16610e1e610dcf565b73ffffffffffffffffffffffffffffffffffffffff1614610e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6b906125a0565b60405180910390fd5b8060068190555050565b610e866118f0565b73ffffffffffffffffffffffffffffffffffffffff16610ea4610dcf565b73ffffffffffffffffffffffffffffffffffffffff1614610efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef1906125a0565b60405180910390fd5b610fad818373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f379190612389565b60206040518083038186803b158015610f4f57600080fd5b505afa158015610f63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f87919061200b565b8473ffffffffffffffffffffffffffffffffffffffff166118f89092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fe69190612389565b60206040518083038186803b158015610ffe57600080fd5b505afa158015611012573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611036919061200b565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fbfed55bdcd242e3dd0f60ddd7d1e87c67f61c34cd9527b3e6455d841b102536260405160405180910390a45050565b600760009054906101000a900460ff16156110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db906125c0565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611170576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116790612580565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116111f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e990612500565b60405180910390fd5b60008111611235576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122c906125e0565b60405180910390fd5b808273ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b81526004016112719291906123a4565b60206040518083038186803b15801561128957600080fd5b505afa15801561129d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c1919061200b565b1015611302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f990612660565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261134f91906126fe565b9050600654811015611396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138d90612620565b60405180910390fd5b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113f19190612389565b60206040518083038186803b15801561140957600080fd5b505afa15801561141d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611441919061200b565b811115611483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147a90612560565b60405180910390fd5b6114b03330848673ffffffffffffffffffffffffffffffffffffffff16611b36909392919063ffffffff16565b6114fd3382600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118f89092919063ffffffff16565b818373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe33e9822e3317b004d587136bab2627ea1ecfbba4eb79abddd0a56cfdd09c0e160405160405180910390a4505050565b670de0b6b3a764000081565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f0906124a0565b60405180910390fd5b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116549190612389565b60206040518083038186803b15801561166c57600080fd5b505afa158015611680573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a4919061200b565b8211156116e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116dd90612560565b60405180910390fd5b60065482101561172b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172290612620565b60405180910390fd5b6117788183600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118f89092919063ffffffff16565b818173ffffffffffffffffffffffffffffffffffffffff167f77ebc66f38487257567e3e83344dacd2dc7a05c11a46d6dd2a91fa8a9f17be9260405160405180910390a35050565b60016020528060005260406000206000915054906101000a900460ff1681565b60026020528060005260406000206000915090505481565b6118006118f0565b73ffffffffffffffffffffffffffffffffffffffff1661181e610dcf565b73ffffffffffffffffffffffffffffffffffffffff1614611874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186b906125a0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118db906124c0565b60405180910390fd5b6118ed81611a72565b50565b600033905090565b6119798363a9059cbb60e01b8484604051602401611917929190612404565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611bbf565b505050565b804710156119c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b890612520565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516119e790612374565b60006040518083038185875af1925050503d8060008114611a24576040519150601f19603f3d011682016040523d82523d6000602084013e611a29565b606091505b5050905080611a6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a64906124e0565b60405180910390fd5b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611bb9846323b872dd60e01b858585604051602401611b57939291906123cd565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611bbf565b50505050565b6000611c21826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611c869092919063ffffffff16565b9050600081511115611c815780806020019051810190611c419190611fb1565b611c80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7790612640565b60405180910390fd5b5b505050565b6060611c958484600085611c9e565b90509392505050565b606082471015611ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cda90612540565b60405180910390fd5b611cec85611db2565b611d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2290612600565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611d54919061235d565b60006040518083038185875af1925050503d8060008114611d91576040519150601f19603f3d011682016040523d82523d6000602084013e611d96565b606091505b5091509150611da6828286611dc5565b92505050949350505050565b600080823b905060008111915050919050565b60608315611dd557829050611e25565b600083511115611de85782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1c919061247e565b60405180910390fd5b9392505050565b600081359050611e3b81612bef565b92915050565b600081359050611e5081612c06565b92915050565b600081359050611e6581612c1d565b92915050565b600081519050611e7a81612c1d565b92915050565b600081359050611e8f81612c34565b92915050565b600081519050611ea481612c34565b92915050565b600060208284031215611ec057611ebf61288b565b5b6000611ece84828501611e2c565b91505092915050565b600060208284031215611eed57611eec61288b565b5b6000611efb84828501611e41565b91505092915050565b60008060408385031215611f1b57611f1a61288b565b5b6000611f2985828601611e2c565b9250506020611f3a85828601611e2c565b9150509250929050565b60008060408385031215611f5b57611f5a61288b565b5b6000611f6985828601611e2c565b9250506020611f7a85828601611e80565b9150509250929050565b600060208284031215611f9a57611f9961288b565b5b6000611fa884828501611e56565b91505092915050565b600060208284031215611fc757611fc661288b565b5b6000611fd584828501611e6b565b91505092915050565b600060208284031215611ff457611ff361288b565b5b600061200284828501611e80565b91505092915050565b6000602082840312156120215761202061288b565b5b600061202f84828501611e95565b91505092915050565b6000806040838503121561204f5761204e61288b565b5b600061205d85828601611e80565b925050602061206e85828601611e2c565b9150509250929050565b61208181612758565b82525050565b6120908161277c565b82525050565b60006120a18261269b565b6120ab81856126b1565b93506120bb8185602086016127fa565b80840191505092915050565b6120d0816127b2565b82525050565b6120df816127c4565b82525050565b60006120f0826126a6565b6120fa81856126bc565b935061210a8185602086016127fa565b61211381612890565b840191505092915050565b600061212b6015836126bc565b9150612136826128a1565b602082019050919050565b600061214e6026836126bc565b9150612159826128ca565b604082019050919050565b6000612171603a836126bc565b915061217c82612919565b604082019050919050565b60006121946017836126bc565b915061219f82612968565b602082019050919050565b60006121b7601d836126bc565b91506121c282612991565b602082019050919050565b60006121da6026836126bc565b91506121e5826129ba565b604082019050919050565b60006121fd6021836126bc565b915061220882612a09565b604082019050919050565b6000612220601f836126bc565b915061222b82612a58565b602082019050919050565b60006122436020836126bc565b915061224e82612a81565b602082019050919050565b60006122666017836126bc565b915061227182612aaa565b602082019050919050565b60006122896000836126b1565b915061229482612ad3565b600082019050919050565b60006122ac6017836126bc565b91506122b782612ad6565b602082019050919050565b60006122cf601d836126bc565b91506122da82612aff565b602082019050919050565b60006122f2601c836126bc565b91506122fd82612b28565b602082019050919050565b6000612315602a836126bc565b915061232082612b51565b604082019050919050565b60006123386021836126bc565b915061234382612ba0565b604082019050919050565b612357816127a8565b82525050565b60006123698284612096565b915081905092915050565b600061237f8261227c565b9150819050919050565b600060208201905061239e6000830184612078565b92915050565b60006040820190506123b96000830185612078565b6123c66020830184612078565b9392505050565b60006060820190506123e26000830186612078565b6123ef6020830185612078565b6123fc604083018461234e565b949350505050565b60006040820190506124196000830185612078565b612426602083018461234e565b9392505050565b60006020820190506124426000830184612087565b92915050565b600060208201905061245d60008301846120c7565b92915050565b600060208201905061247860008301846120d6565b92915050565b6000602082019050818103600083015261249881846120e5565b905092915050565b600060208201905081810360008301526124b98161211e565b9050919050565b600060208201905081810360008301526124d981612141565b9050919050565b600060208201905081810360008301526124f981612164565b9050919050565b6000602082019050818103600083015261251981612187565b9050919050565b60006020820190508181036000830152612539816121aa565b9050919050565b60006020820190508181036000830152612559816121cd565b9050919050565b60006020820190508181036000830152612579816121f0565b9050919050565b6000602082019050818103600083015261259981612213565b9050919050565b600060208201905081810360008301526125b981612236565b9050919050565b600060208201905081810360008301526125d981612259565b9050919050565b600060208201905081810360008301526125f98161229f565b9050919050565b60006020820190508181036000830152612619816122c2565b9050919050565b60006020820190508181036000830152612639816122e5565b9050919050565b6000602082019050818103600083015261265981612308565b9050919050565b600060208201905081810360008301526126798161232b565b9050919050565b6000602082019050612695600083018461234e565b92915050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b60006126d8826127a8565b91506126e3836127a8565b9250826126f3576126f261285c565b5b828204905092915050565b6000612709826127a8565b9150612714836127a8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561274d5761274c61282d565b5b828202905092915050565b600061276382612788565b9050919050565b600061277582612788565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006127bd826127d6565b9050919050565b60006127cf826127d6565b9050919050565b60006127e1826127e8565b9050919050565b60006127f382612788565b9050919050565b60005b838110156128185780820151818401526020810190506127fd565b83811115612827576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f43616c6c6572206973206e6f74207370656e6465720000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b7f496e76616c696420636f6e76657273696f6e2072617465000000000000000000600082015250565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206578636565647320636f6e747261637427732072657365727660008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b7f546869732061646472657373206973206e6f742077686974656c697374656400600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f46756e6374696f6e616c69747920697320706175736564000000000000000000600082015250565b50565b7f5a65726f20616d6f756e74206e6f7420616c6c6f776564000000000000000000600082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f4d696e696d756d207469636b6574206e6f742073617469736669656400000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f436f6e747261637420686173206e6f7420656e6f75676820616c6c6f77616e6360008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b612bf881612758565b8114612c0357600080fd5b50565b612c0f8161276a565b8114612c1a57600080fd5b50565b612c268161277c565b8114612c3157600080fd5b50565b612c3d816127a8565b8114612c4857600080fd5b5056fea26469706673582212200145b84d45f0a02cd33913045e2201fbe950640720c2ffb205a91a21a13a48d764736f6c63430008070033

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

000000000000000000000000f6b6235f6725f84457f5d6f0b0aa3c962a079977000000000000000000000000d7cf5b61898e0a06b81efadc6516e666dff0957d000000000000000000000000000000000000000000000000011c37937e080000000000000000000000000000000000000000000000000043c33c193756480000000000000000000000000000a50ba011c48153de246e5192c8f9258a2ba79ca900000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000b5e620f4800

-----Decoded View---------------
Arg [0] : _wbkn (address): 0xf6B6235f6725f84457f5D6f0b0Aa3c962A079977
Arg [1] : _offlineSpender (address): 0xD7cF5b61898E0A06b81efAdc6516e666DfF0957D
Arg [2] : _pricePerUnitInUsd (uint256): 80000000000000000
Arg [3] : _minimumTicket (uint256): 1250000000000000000000
Arg [4] : _priceOracleGetter (address): 0xA50ba011c48153De246E5192C8f9258A2ba79Ca9
Arg [5] : _whitelistedTokens (address[]): 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
Arg [6] : _conversionRates (uint256[]): 12500000000000

-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 000000000000000000000000f6b6235f6725f84457f5d6f0b0aa3c962a079977
Arg [1] : 000000000000000000000000d7cf5b61898e0a06b81efadc6516e666dff0957d
Arg [2] : 000000000000000000000000000000000000000000000000011c37937e080000
Arg [3] : 000000000000000000000000000000000000000000000043c33c193756480000
Arg [4] : 000000000000000000000000a50ba011c48153de246e5192c8f9258a2ba79ca9
Arg [5] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [8] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [10] : 00000000000000000000000000000000000000000000000000000b5e620f4800


Deployed Bytecode Sourcemap

17048:5372:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19227:79;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21244:706;;;:::i;:::-;;19318:406;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17941:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17693:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17768:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17807:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17885:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17729:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19736:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21958:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17916:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1872:94;;;;;;;;;;;;;:::i;:::-;;1221:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19850:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22155:262;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20371:865;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17842:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19969:390;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17578:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17634:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2121:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19227:79;1452:12;:10;:12::i;:::-;1441:23;;:7;:5;:7::i;:::-;:23;;;1433:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19292:6:::1;19283;;:15;;;;;;;;;;;;;;;;;;19227:79:::0;:::o;21244:706::-;18156:6;;;;;;;;;;;18155:7;18147:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;21306:14:::1;21323:9;21306:26;;21360:1;21351:6;:10;21343:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;21422:11;;;;;;;;;;;:25;;;21448:42;21422:69;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21402:17;:89;;;;21512:19;21547:17;;17872:6;21534;:10;;;;:::i;:::-;:30;;;;:::i;:::-;21512:52;;21575:20;21616:17;;17872:6;21598:11;:15;;;;:::i;:::-;:35;;;;:::i;:::-;21575:58;;21670:13;;21654:12;:29;;21646:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21751:4;;;;;;;;;;;:14;;;21774:4;21751:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21735:12;:45;;21727:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;21839:43;21857:10;21869:12;21839:4;;;;;;;;;;;:17;;;;:43;;;;;:::i;:::-;21930:11;21918:10;21908:34;;;;;;;;;;;;21295:655;;;21244:706::o:0;19318:406::-;1452:12;:10;:12::i;:::-;1441:23;;:7;:5;:7::i;:::-;:23;;;1433:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19427:1:::1;19409:14;:19;19406:206;;19449:17;:24;19467:5;19449:24;;;;;;;;;;;;;;;;;;;;;;;;;19445:61;;19502:4;19475:17:::0;:24:::1;19493:5;19475:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;19445:61;19406:206;;;19542:17;:24;19560:5;19542:24;;;;;;;;;;;;;;;;;;;;;;;;;19539:61;;;19595:5;19568:17;:24;19586:5;19568:24;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;19539:61;19406:206;19653:15;:22;19669:5;19653:22;;;;;;;;;;;;;;;;19635:14;:40;19632:84;;19702:14;19677:15;:22;19693:5;19677:22;;;;;;;;;;;;;;;:39;;;;19632:84;19318:406:::0;;:::o;17941:37::-;;;;;;;;;;;;;:::o;17693:29::-;;;;;;;;;;;;;:::o;17768:32::-;;;;:::o;17807:28::-;;;;:::o;17885:18::-;;;;;;;;;;;;;:::o;17729:32::-;;;;:::o;19736:106::-;1452:12;:10;:12::i;:::-;1441:23;;:7;:5;:7::i;:::-;:23;;;1433:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19826:8:::1;19806:17;:28;;;;19736:106:::0;:::o;21958:185::-;1452:12;:10;:12::i;:::-;1441:23;;:7;:5;:7::i;:::-;:23;;;1433:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22060:21:::1;22049:9;22039:43;;;;;;;;;;;;22093:42;22113:21;22093:9;:19;;;;:42;;;;:::i;:::-;21958:185:::0;:::o;17916:18::-;;;;;;;;;;;;;:::o;1872:94::-;1452:12;:10;:12::i;:::-;1441:23;;:7;:5;:7::i;:::-;:23;;;1433:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1937:21:::1;1955:1;1937:9;:21::i;:::-;1872:94::o:0;1221:87::-;1267:7;1294:6;;;;;;;;;;;1287:13;;1221:87;:::o;19850:107::-;1452:12;:10;:12::i;:::-;1441:23;;:7;:5;:7::i;:::-;:23;;;1433:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19941:8:::1;19925:13;:24;;;;19850:107:::0;:::o;22155:262::-;1452:12;:10;:12::i;:::-;1441:23;;:7;:5;:7::i;:::-;:23;;;1433:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22242:77:::1;22269:9;22287:5;22280:23;;;22312:4;22280:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22249:5;22242:26;;;;:77;;;;;:::i;:::-;22377:5;22370:23;;;22402:4;22370:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22363:5;22337:72;;22352:9;22337:72;;;;;;;;;;;;22155:262:::0;;:::o;20371:865::-;18156:6;;;;;;;;;;;18155:7;18147:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;20464:17:::1;:24;20482:5;20464:24;;;;;;;;;;;;;;;;;;;;;;;;;20456:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20568:1;20543:15;:22;20559:5;20543:22;;;;;;;;;;;;;;;;:26;20535:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;20625:1;20616:6;:10;20608:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;20727:6;20680:5;20673:23;;;20697:10;20717:4;20673:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:60;;20665:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;20792:20;20824:15;:22;20840:5;20824:22;;;;;;;;;;;;;;;;20815:6;:31;;;;:::i;:::-;20792:54;;20881:13;;20865:12;:29;;20857:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;20962:4;;;;;;;;;;;:14;;;20985:4;20962:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20946:12;:45;;20938:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;21050:65;21081:10;21101:4;21108:6;21057:5;21050:30;;;;:65;;;;;;:::i;:::-;21126:43;21144:10;21156:12;21126:4;;;;;;;;;;;:17;;;;:43;;;;;:::i;:::-;21221:6;21214:5;21187:41;;21202:10;21187:41;;;;;;;;;;;;20445:791;20371:865:::0;;:::o;17842:36::-;17872:6;17842:36;:::o;19969:390::-;18041:14;;;;;;;;;;;18027:28;;:10;:28;;;18019:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;20084:4:::1;;;;;;;;;;;:14;;;20107:4;20084:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20068:12;:45;;20060:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;20186:13;;20170:12;:29;;20162:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;20245:42;20263:9;20274:12;20245:4;;;;;;;;;;;:17;;;;:42;;;;;:::i;:::-;20338:12;20327:9;20313:38;;;;;;;;;;;;19969:390:::0;;:::o;17578:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;17634:50::-;;;;;;;;;;;;;;;;;:::o;2121:192::-;1452:12;:10;:12::i;:::-;1441:23;;:7;:5;:7::i;:::-;:23;;;1433:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2230:1:::1;2210:22;;:8;:22;;;;2202:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2286:19;2296:8;2286:9;:19::i;:::-;2121:192:::0;:::o;604:98::-;657:7;684:10;677:17;;604:98;:::o;10968:211::-;11085:86;11105:5;11135:23;;;11160:2;11164:5;11112:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11085:19;:86::i;:::-;10968:211;;;:::o;4433:317::-;4548:6;4523:21;:31;;4515:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;4602:12;4620:9;:14;;4642:6;4620:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4601:52;;;4672:7;4664:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;4504:246;4433:317;;:::o;2321:173::-;2377:16;2396:6;;;;;;;;;;;2377:25;;2422:8;2413:6;;:17;;;;;;;;;;;;;;;;;;2477:8;2446:40;;2467:8;2446:40;;;;;;;;;;;;2366:128;2321:173;:::o;11187:248::-;11331:96;11351:5;11381:27;;;11410:4;11416:2;11420:5;11358:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11331:19;:96::i;:::-;11187:248;;;;:::o;13541:716::-;13965:23;13991:69;14019:4;13991:69;;;;;;;;;;;;;;;;;13999:5;13991:27;;;;:69;;;;;:::i;:::-;13965:95;;14095:1;14075:10;:17;:21;14071:179;;;14172:10;14161:30;;;;;;;;;;;;:::i;:::-;14153:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14071:179;13611:646;13541:716;;:::o;5917:229::-;6054:12;6086:52;6108:6;6116:4;6122:1;6125:12;6086:21;:52::i;:::-;6079:59;;5917:229;;;;;:::o;7037:510::-;7207:12;7265:5;7240:21;:30;;7232:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;7332:18;7343:6;7332:10;:18::i;:::-;7324:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;7398:12;7412:23;7439:6;:11;;7458:5;7465:4;7439:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7397:73;;;;7488:51;7505:7;7514:10;7526:12;7488:16;:51::i;:::-;7481:58;;;;7037:510;;;;;;:::o;3111:387::-;3171:4;3379:12;3446:7;3434:20;3426:28;;3489:1;3482:4;:8;3475:15;;;3111:387;;;:::o;9723:712::-;9873:12;9902:7;9898:530;;;9933:10;9926:17;;;;9898:530;10067:1;10047:10;:17;:21;10043:374;;;10245:10;10239:17;10306:15;10293:10;10289:2;10285:19;10278:44;10043:374;10388:12;10381:20;;;;;;;;;;;:::i;:::-;;;;;;;;9723:712;;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:155::-;206:5;244:6;231:20;222:29;;260:41;295:5;260:41;:::i;:::-;152:155;;;;:::o;313:133::-;356:5;394:6;381:20;372:29;;410:30;434:5;410:30;:::i;:::-;313:133;;;;:::o;452:137::-;506:5;537:6;531:13;522:22;;553:30;577:5;553:30;:::i;:::-;452:137;;;;:::o;595:139::-;641:5;679:6;666:20;657:29;;695:33;722:5;695:33;:::i;:::-;595:139;;;;:::o;740:143::-;797:5;828:6;822:13;813:22;;844:33;871:5;844:33;:::i;:::-;740:143;;;;:::o;889:329::-;948:6;997:2;985:9;976:7;972:23;968:32;965:119;;;1003:79;;:::i;:::-;965:119;1123:1;1148:53;1193:7;1184:6;1173:9;1169:22;1148:53;:::i;:::-;1138:63;;1094:117;889:329;;;;:::o;1224:345::-;1291:6;1340:2;1328:9;1319:7;1315:23;1311:32;1308:119;;;1346:79;;:::i;:::-;1308:119;1466:1;1491:61;1544:7;1535:6;1524:9;1520:22;1491:61;:::i;:::-;1481:71;;1437:125;1224:345;;;;:::o;1575:474::-;1643:6;1651;1700:2;1688:9;1679:7;1675:23;1671:32;1668:119;;;1706:79;;:::i;:::-;1668:119;1826:1;1851:53;1896:7;1887:6;1876:9;1872:22;1851:53;:::i;:::-;1841:63;;1797:117;1953:2;1979:53;2024:7;2015:6;2004:9;2000:22;1979:53;:::i;:::-;1969:63;;1924:118;1575:474;;;;;:::o;2055:::-;2123:6;2131;2180:2;2168:9;2159:7;2155:23;2151:32;2148:119;;;2186:79;;:::i;:::-;2148:119;2306:1;2331:53;2376:7;2367:6;2356:9;2352:22;2331:53;:::i;:::-;2321:63;;2277:117;2433:2;2459:53;2504:7;2495:6;2484:9;2480:22;2459:53;:::i;:::-;2449:63;;2404:118;2055:474;;;;;:::o;2535:323::-;2591:6;2640:2;2628:9;2619:7;2615:23;2611:32;2608:119;;;2646:79;;:::i;:::-;2608:119;2766:1;2791:50;2833:7;2824:6;2813:9;2809:22;2791:50;:::i;:::-;2781:60;;2737:114;2535:323;;;;:::o;2864:345::-;2931:6;2980:2;2968:9;2959:7;2955:23;2951:32;2948:119;;;2986:79;;:::i;:::-;2948:119;3106:1;3131:61;3184:7;3175:6;3164:9;3160:22;3131:61;:::i;:::-;3121:71;;3077:125;2864:345;;;;:::o;3215:329::-;3274:6;3323:2;3311:9;3302:7;3298:23;3294:32;3291:119;;;3329:79;;:::i;:::-;3291:119;3449:1;3474:53;3519:7;3510:6;3499:9;3495:22;3474:53;:::i;:::-;3464:63;;3420:117;3215:329;;;;:::o;3550:351::-;3620:6;3669:2;3657:9;3648:7;3644:23;3640:32;3637:119;;;3675:79;;:::i;:::-;3637:119;3795:1;3820:64;3876:7;3867:6;3856:9;3852:22;3820:64;:::i;:::-;3810:74;;3766:128;3550:351;;;;:::o;3907:474::-;3975:6;3983;4032:2;4020:9;4011:7;4007:23;4003:32;4000:119;;;4038:79;;:::i;:::-;4000:119;4158:1;4183:53;4228:7;4219:6;4208:9;4204:22;4183:53;:::i;:::-;4173:63;;4129:117;4285:2;4311:53;4356:7;4347:6;4336:9;4332:22;4311:53;:::i;:::-;4301:63;;4256:118;3907:474;;;;;:::o;4387:118::-;4474:24;4492:5;4474:24;:::i;:::-;4469:3;4462:37;4387:118;;:::o;4511:109::-;4592:21;4607:5;4592:21;:::i;:::-;4587:3;4580:34;4511:109;;:::o;4626:373::-;4730:3;4758:38;4790:5;4758:38;:::i;:::-;4812:88;4893:6;4888:3;4812:88;:::i;:::-;4805:95;;4909:52;4954:6;4949:3;4942:4;4935:5;4931:16;4909:52;:::i;:::-;4986:6;4981:3;4977:16;4970:23;;4734:265;4626:373;;;;:::o;5005:159::-;5106:51;5151:5;5106:51;:::i;:::-;5101:3;5094:64;5005:159;;:::o;5170:183::-;5283:63;5340:5;5283:63;:::i;:::-;5278:3;5271:76;5170:183;;:::o;5359:364::-;5447:3;5475:39;5508:5;5475:39;:::i;:::-;5530:71;5594:6;5589:3;5530:71;:::i;:::-;5523:78;;5610:52;5655:6;5650:3;5643:4;5636:5;5632:16;5610:52;:::i;:::-;5687:29;5709:6;5687:29;:::i;:::-;5682:3;5678:39;5671:46;;5451:272;5359:364;;;;:::o;5729:366::-;5871:3;5892:67;5956:2;5951:3;5892:67;:::i;:::-;5885:74;;5968:93;6057:3;5968:93;:::i;:::-;6086:2;6081:3;6077:12;6070:19;;5729:366;;;:::o;6101:::-;6243:3;6264:67;6328:2;6323:3;6264:67;:::i;:::-;6257:74;;6340:93;6429:3;6340:93;:::i;:::-;6458:2;6453:3;6449:12;6442:19;;6101:366;;;:::o;6473:::-;6615:3;6636:67;6700:2;6695:3;6636:67;:::i;:::-;6629:74;;6712:93;6801:3;6712:93;:::i;:::-;6830:2;6825:3;6821:12;6814:19;;6473:366;;;:::o;6845:::-;6987:3;7008:67;7072:2;7067:3;7008:67;:::i;:::-;7001:74;;7084:93;7173:3;7084:93;:::i;:::-;7202:2;7197:3;7193:12;7186:19;;6845:366;;;:::o;7217:::-;7359:3;7380:67;7444:2;7439:3;7380:67;:::i;:::-;7373:74;;7456:93;7545:3;7456:93;:::i;:::-;7574:2;7569:3;7565:12;7558:19;;7217:366;;;:::o;7589:::-;7731:3;7752:67;7816:2;7811:3;7752:67;:::i;:::-;7745:74;;7828:93;7917:3;7828:93;:::i;:::-;7946:2;7941:3;7937:12;7930:19;;7589:366;;;:::o;7961:::-;8103:3;8124:67;8188:2;8183:3;8124:67;:::i;:::-;8117:74;;8200:93;8289:3;8200:93;:::i;:::-;8318:2;8313:3;8309:12;8302:19;;7961:366;;;:::o;8333:::-;8475:3;8496:67;8560:2;8555:3;8496:67;:::i;:::-;8489:74;;8572:93;8661:3;8572:93;:::i;:::-;8690:2;8685:3;8681:12;8674:19;;8333:366;;;:::o;8705:::-;8847:3;8868:67;8932:2;8927:3;8868:67;:::i;:::-;8861:74;;8944:93;9033:3;8944:93;:::i;:::-;9062:2;9057:3;9053:12;9046:19;;8705:366;;;:::o;9077:::-;9219:3;9240:67;9304:2;9299:3;9240:67;:::i;:::-;9233:74;;9316:93;9405:3;9316:93;:::i;:::-;9434:2;9429:3;9425:12;9418:19;;9077:366;;;:::o;9449:398::-;9608:3;9629:83;9710:1;9705:3;9629:83;:::i;:::-;9622:90;;9721:93;9810:3;9721:93;:::i;:::-;9839:1;9834:3;9830:11;9823:18;;9449:398;;;:::o;9853:366::-;9995:3;10016:67;10080:2;10075:3;10016:67;:::i;:::-;10009:74;;10092:93;10181:3;10092:93;:::i;:::-;10210:2;10205:3;10201:12;10194:19;;9853:366;;;:::o;10225:::-;10367:3;10388:67;10452:2;10447:3;10388:67;:::i;:::-;10381:74;;10464:93;10553:3;10464:93;:::i;:::-;10582:2;10577:3;10573:12;10566:19;;10225:366;;;:::o;10597:::-;10739:3;10760:67;10824:2;10819:3;10760:67;:::i;:::-;10753:74;;10836:93;10925:3;10836:93;:::i;:::-;10954:2;10949:3;10945:12;10938:19;;10597:366;;;:::o;10969:::-;11111:3;11132:67;11196:2;11191:3;11132:67;:::i;:::-;11125:74;;11208:93;11297:3;11208:93;:::i;:::-;11326:2;11321:3;11317:12;11310:19;;10969:366;;;:::o;11341:::-;11483:3;11504:67;11568:2;11563:3;11504:67;:::i;:::-;11497:74;;11580:93;11669:3;11580:93;:::i;:::-;11698:2;11693:3;11689:12;11682:19;;11341:366;;;:::o;11713:118::-;11800:24;11818:5;11800:24;:::i;:::-;11795:3;11788:37;11713:118;;:::o;11837:271::-;11967:3;11989:93;12078:3;12069:6;11989:93;:::i;:::-;11982:100;;12099:3;12092:10;;11837:271;;;;:::o;12114:379::-;12298:3;12320:147;12463:3;12320:147;:::i;:::-;12313:154;;12484:3;12477:10;;12114:379;;;:::o;12499:222::-;12592:4;12630:2;12619:9;12615:18;12607:26;;12643:71;12711:1;12700:9;12696:17;12687:6;12643:71;:::i;:::-;12499:222;;;;:::o;12727:332::-;12848:4;12886:2;12875:9;12871:18;12863:26;;12899:71;12967:1;12956:9;12952:17;12943:6;12899:71;:::i;:::-;12980:72;13048:2;13037:9;13033:18;13024:6;12980:72;:::i;:::-;12727:332;;;;;:::o;13065:442::-;13214:4;13252:2;13241:9;13237:18;13229:26;;13265:71;13333:1;13322:9;13318:17;13309:6;13265:71;:::i;:::-;13346:72;13414:2;13403:9;13399:18;13390:6;13346:72;:::i;:::-;13428;13496:2;13485:9;13481:18;13472:6;13428:72;:::i;:::-;13065:442;;;;;;:::o;13513:332::-;13634:4;13672:2;13661:9;13657:18;13649:26;;13685:71;13753:1;13742:9;13738:17;13729:6;13685:71;:::i;:::-;13766:72;13834:2;13823:9;13819:18;13810:6;13766:72;:::i;:::-;13513:332;;;;;:::o;13851:210::-;13938:4;13976:2;13965:9;13961:18;13953:26;;13989:65;14051:1;14040:9;14036:17;14027:6;13989:65;:::i;:::-;13851:210;;;;:::o;14067:250::-;14174:4;14212:2;14201:9;14197:18;14189:26;;14225:85;14307:1;14296:9;14292:17;14283:6;14225:85;:::i;:::-;14067:250;;;;:::o;14323:274::-;14442:4;14480:2;14469:9;14465:18;14457:26;;14493:97;14587:1;14576:9;14572:17;14563:6;14493:97;:::i;:::-;14323:274;;;;:::o;14603:313::-;14716:4;14754:2;14743:9;14739:18;14731:26;;14803:9;14797:4;14793:20;14789:1;14778:9;14774:17;14767:47;14831:78;14904:4;14895:6;14831:78;:::i;:::-;14823:86;;14603:313;;;;:::o;14922:419::-;15088:4;15126:2;15115:9;15111:18;15103:26;;15175:9;15169:4;15165:20;15161:1;15150:9;15146:17;15139:47;15203:131;15329:4;15203:131;:::i;:::-;15195:139;;14922:419;;;:::o;15347:::-;15513:4;15551:2;15540:9;15536:18;15528:26;;15600:9;15594:4;15590:20;15586:1;15575:9;15571:17;15564:47;15628:131;15754:4;15628:131;:::i;:::-;15620:139;;15347:419;;;:::o;15772:::-;15938:4;15976:2;15965:9;15961:18;15953:26;;16025:9;16019:4;16015:20;16011:1;16000:9;15996:17;15989:47;16053:131;16179:4;16053:131;:::i;:::-;16045:139;;15772:419;;;:::o;16197:::-;16363:4;16401:2;16390:9;16386:18;16378:26;;16450:9;16444:4;16440:20;16436:1;16425:9;16421:17;16414:47;16478:131;16604:4;16478:131;:::i;:::-;16470:139;;16197:419;;;:::o;16622:::-;16788:4;16826:2;16815:9;16811:18;16803:26;;16875:9;16869:4;16865:20;16861:1;16850:9;16846:17;16839:47;16903:131;17029:4;16903:131;:::i;:::-;16895:139;;16622:419;;;:::o;17047:::-;17213:4;17251:2;17240:9;17236:18;17228:26;;17300:9;17294:4;17290:20;17286:1;17275:9;17271:17;17264:47;17328:131;17454:4;17328:131;:::i;:::-;17320:139;;17047:419;;;:::o;17472:::-;17638:4;17676:2;17665:9;17661:18;17653:26;;17725:9;17719:4;17715:20;17711:1;17700:9;17696:17;17689:47;17753:131;17879:4;17753:131;:::i;:::-;17745:139;;17472:419;;;:::o;17897:::-;18063:4;18101:2;18090:9;18086:18;18078:26;;18150:9;18144:4;18140:20;18136:1;18125:9;18121:17;18114:47;18178:131;18304:4;18178:131;:::i;:::-;18170:139;;17897:419;;;:::o;18322:::-;18488:4;18526:2;18515:9;18511:18;18503:26;;18575:9;18569:4;18565:20;18561:1;18550:9;18546:17;18539:47;18603:131;18729:4;18603:131;:::i;:::-;18595:139;;18322:419;;;:::o;18747:::-;18913:4;18951:2;18940:9;18936:18;18928:26;;19000:9;18994:4;18990:20;18986:1;18975:9;18971:17;18964:47;19028:131;19154:4;19028:131;:::i;:::-;19020:139;;18747:419;;;:::o;19172:::-;19338:4;19376:2;19365:9;19361:18;19353:26;;19425:9;19419:4;19415:20;19411:1;19400:9;19396:17;19389:47;19453:131;19579:4;19453:131;:::i;:::-;19445:139;;19172:419;;;:::o;19597:::-;19763:4;19801:2;19790:9;19786:18;19778:26;;19850:9;19844:4;19840:20;19836:1;19825:9;19821:17;19814:47;19878:131;20004:4;19878:131;:::i;:::-;19870:139;;19597:419;;;:::o;20022:::-;20188:4;20226:2;20215:9;20211:18;20203:26;;20275:9;20269:4;20265:20;20261:1;20250:9;20246:17;20239:47;20303:131;20429:4;20303:131;:::i;:::-;20295:139;;20022:419;;;:::o;20447:::-;20613:4;20651:2;20640:9;20636:18;20628:26;;20700:9;20694:4;20690:20;20686:1;20675:9;20671:17;20664:47;20728:131;20854:4;20728:131;:::i;:::-;20720:139;;20447:419;;;:::o;20872:::-;21038:4;21076:2;21065:9;21061:18;21053:26;;21125:9;21119:4;21115:20;21111:1;21100:9;21096:17;21089:47;21153:131;21279:4;21153:131;:::i;:::-;21145:139;;20872:419;;;:::o;21297:222::-;21390:4;21428:2;21417:9;21413:18;21405:26;;21441:71;21509:1;21498:9;21494:17;21485:6;21441:71;:::i;:::-;21297:222;;;;:::o;21606:98::-;21657:6;21691:5;21685:12;21675:22;;21606:98;;;:::o;21710:99::-;21762:6;21796:5;21790:12;21780:22;;21710:99;;;:::o;21815:147::-;21916:11;21953:3;21938:18;;21815:147;;;;:::o;21968:169::-;22052:11;22086:6;22081:3;22074:19;22126:4;22121:3;22117:14;22102:29;;21968:169;;;;:::o;22143:185::-;22183:1;22200:20;22218:1;22200:20;:::i;:::-;22195:25;;22234:20;22252:1;22234:20;:::i;:::-;22229:25;;22273:1;22263:35;;22278:18;;:::i;:::-;22263:35;22320:1;22317;22313:9;22308:14;;22143:185;;;;:::o;22334:348::-;22374:7;22397:20;22415:1;22397:20;:::i;:::-;22392:25;;22431:20;22449:1;22431:20;:::i;:::-;22426:25;;22619:1;22551:66;22547:74;22544:1;22541:81;22536:1;22529:9;22522:17;22518:105;22515:131;;;22626:18;;:::i;:::-;22515:131;22674:1;22671;22667:9;22656:20;;22334:348;;;;:::o;22688:96::-;22725:7;22754:24;22772:5;22754:24;:::i;:::-;22743:35;;22688:96;;;:::o;22790:104::-;22835:7;22864:24;22882:5;22864:24;:::i;:::-;22853:35;;22790:104;;;:::o;22900:90::-;22934:7;22977:5;22970:13;22963:21;22952:32;;22900:90;;;:::o;22996:126::-;23033:7;23073:42;23066:5;23062:54;23051:65;;22996:126;;;:::o;23128:77::-;23165:7;23194:5;23183:16;;23128:77;;;:::o;23211:140::-;23275:9;23308:37;23339:5;23308:37;:::i;:::-;23295:50;;23211:140;;;:::o;23357:152::-;23433:9;23466:37;23497:5;23466:37;:::i;:::-;23453:50;;23357:152;;;:::o;23515:126::-;23565:9;23598:37;23629:5;23598:37;:::i;:::-;23585:50;;23515:126;;;:::o;23647:113::-;23697:9;23730:24;23748:5;23730:24;:::i;:::-;23717:37;;23647:113;;;:::o;23766:307::-;23834:1;23844:113;23858:6;23855:1;23852:13;23844:113;;;23943:1;23938:3;23934:11;23928:18;23924:1;23919:3;23915:11;23908:39;23880:2;23877:1;23873:10;23868:15;;23844:113;;;23975:6;23972:1;23969:13;23966:101;;;24055:1;24046:6;24041:3;24037:16;24030:27;23966:101;23815:258;23766:307;;;:::o;24079:180::-;24127:77;24124:1;24117:88;24224:4;24221:1;24214:15;24248:4;24245:1;24238:15;24265:180;24313:77;24310:1;24303:88;24410:4;24407:1;24400:15;24434:4;24431:1;24424:15;24574:117;24683:1;24680;24673:12;24697:102;24738:6;24789:2;24785:7;24780:2;24773:5;24769:14;24765:28;24755:38;;24697:102;;;:::o;24805:171::-;24945:23;24941:1;24933:6;24929:14;24922:47;24805:171;:::o;24982:225::-;25122:34;25118:1;25110:6;25106:14;25099:58;25191:8;25186:2;25178:6;25174:15;25167:33;24982:225;:::o;25213:245::-;25353:34;25349:1;25341:6;25337:14;25330:58;25422:28;25417:2;25409:6;25405:15;25398:53;25213:245;:::o;25464:173::-;25604:25;25600:1;25592:6;25588:14;25581:49;25464:173;:::o;25643:179::-;25783:31;25779:1;25771:6;25767:14;25760:55;25643:179;:::o;25828:225::-;25968:34;25964:1;25956:6;25952:14;25945:58;26037:8;26032:2;26024:6;26020:15;26013:33;25828:225;:::o;26059:220::-;26199:34;26195:1;26187:6;26183:14;26176:58;26268:3;26263:2;26255:6;26251:15;26244:28;26059:220;:::o;26285:181::-;26425:33;26421:1;26413:6;26409:14;26402:57;26285:181;:::o;26472:182::-;26612:34;26608:1;26600:6;26596:14;26589:58;26472:182;:::o;26660:173::-;26800:25;26796:1;26788:6;26784:14;26777:49;26660:173;:::o;26839:114::-;;:::o;26959:173::-;27099:25;27095:1;27087:6;27083:14;27076:49;26959:173;:::o;27138:179::-;27278:31;27274:1;27266:6;27262:14;27255:55;27138:179;:::o;27323:178::-;27463:30;27459:1;27451:6;27447:14;27440:54;27323:178;:::o;27507:229::-;27647:34;27643:1;27635:6;27631:14;27624:58;27716:12;27711:2;27703:6;27699:15;27692:37;27507:229;:::o;27742:220::-;27882:34;27878:1;27870:6;27866:14;27859:58;27951:3;27946:2;27938:6;27934:15;27927:28;27742:220;:::o;27968:122::-;28041:24;28059:5;28041:24;:::i;:::-;28034:5;28031:35;28021:63;;28080:1;28077;28070:12;28021:63;27968:122;:::o;28096:138::-;28177:32;28203:5;28177:32;:::i;:::-;28170:5;28167:43;28157:71;;28224:1;28221;28214:12;28157:71;28096:138;:::o;28240:116::-;28310:21;28325:5;28310:21;:::i;:::-;28303:5;28300:32;28290:60;;28346:1;28343;28336:12;28290:60;28240:116;:::o;28362:122::-;28435:24;28453:5;28435:24;:::i;:::-;28428:5;28425:35;28415:63;;28474:1;28471;28464:12;28415:63;28362:122;:::o

Swarm Source

ipfs://0145b84d45f0a02cd33913045e2201fbe950640720c2ffb205a91a21a13a48d7

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.