ETH Price: $2,930.96 (-9.56%)
Gas: 49 Gwei

Contract

0x611c7e02CCDCE08419c7E42cA81492DaE2C260B1
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Withdraw132437032021-09-17 14:24:061021 days ago1631888646IN
0x611c7e02...aE2C260B1
0 ETH0.004237658.39741717
Set Funds Unlock...132436992021-09-17 14:23:201021 days ago1631888600IN
0x611c7e02...aE2C260B1
0 ETH0.0013574257.0323306
Set Funds Addres...132436922021-09-17 14:21:331021 days ago1631888493IN
0x611c7e02...aE2C260B1
0 ETH0.0020011563.52253036
Withdraw132053312021-09-11 15:44:501027 days ago1631375090IN
0x611c7e02...aE2C260B1
0 ETH0.004209353.85706869
Set Funds Addres...132053132021-09-11 15:41:301027 days ago1631374890IN
0x611c7e02...aE2C260B1
0 ETH0.0019526261.98215065
Transfer131912932021-09-09 11:36:421029 days ago1631187402IN
0x611c7e02...aE2C260B1
2 ETH0.1191275500
Transfer131912692021-09-09 11:30:521029 days ago1631187052IN
0x611c7e02...aE2C260B1
2 ETH0.0186652275.33743093
Batch Set Allowa...131912522021-09-09 11:27:511029 days ago1631186871IN
0x611c7e02...aE2C260B1
0 ETH0.0056416779.57459444
Batch Set Allowa...131912432021-09-09 11:26:181029 days ago1631186778IN
0x611c7e02...aE2C260B1
0 ETH0.0057006980.40696323
Transfer131912432021-09-09 11:26:181029 days ago1631186778IN
0x611c7e02...aE2C260B1
4 ETH0.0344178293.6519179
Transfer131912282021-09-09 11:21:521029 days ago1631186512IN
0x611c7e02...aE2C260B1
2 ETH0.0179202875.2147157
Transfer131912012021-09-09 11:16:561029 days ago1631186216IN
0x611c7e02...aE2C260B1
0 ETH0.0368428172.24236483
Batch Set Allowa...131911892021-09-09 11:14:031029 days ago1631186043IN
0x611c7e02...aE2C260B1
0 ETH0.0050219570.83347648
Batch Set Allowa...131911822021-09-09 11:12:411029 days ago1631185961IN
0x611c7e02...aE2C260B1
0 ETH0.0039061876.70314294
Transfer131911312021-09-09 11:01:041029 days ago1631185264IN
0x611c7e02...aE2C260B1
10 ETH0.0535224575.64294812
Transfer131911282021-09-09 11:00:491029 days ago1631185249IN
0x611c7e02...aE2C260B1
10 ETH0.0580740582.07570361
Transfer131910982021-09-09 10:54:161029 days ago1631184856IN
0x611c7e02...aE2C260B1
4 ETH0.0349455395.08782416
Transfer131910902021-09-09 10:51:391029 days ago1631184699IN
0x611c7e02...aE2C260B1
2 ETH0.050511200
Batch Set Allowa...131910832021-09-09 10:50:041029 days ago1631184604IN
0x611c7e02...aE2C260B1
0 ETH0.04887643111.39522728
Batch Set Allowa...131910022021-09-09 10:31:281029 days ago1631183488IN
0x611c7e02...aE2C260B1
0 ETH0.0119776120.28967635
Transfer131906432021-09-09 9:11:451029 days ago1631178705IN
0x611c7e02...aE2C260B1
2 ETH0.03618552155
Transfer131905412021-09-09 8:47:401029 days ago1631177260IN
0x611c7e02...aE2C260B1
2 ETH0.02936582115
Transfer131903442021-09-09 8:02:211029 days ago1631174541IN
0x611c7e02...aE2C260B1
8 ETH0.06224714107.63555048
Transfer131902612021-09-09 7:44:341029 days ago1631173474IN
0x611c7e02...aE2C260B1
2 ETH0.02408754101.09986075
Transfer131900992021-09-09 7:04:201029 days ago1631171060IN
0x611c7e02...aE2C260B1
2 ETH0.02454026103
View all transactions

Latest 9 internal transactions

Advanced mode:
Parent Transaction Hash Block From To Value
132437032021-09-17 14:24:061021 days ago1631888646
0x611c7e02...aE2C260B1
46.43125 ETH
132437032021-09-17 14:24:061021 days ago1631888646
0x611c7e02...aE2C260B1
46.43125 ETH
132437032021-09-17 14:24:061021 days ago1631888646
0x611c7e02...aE2C260B1
46.43125 ETH
132437032021-09-17 14:24:061021 days ago1631888646
0x611c7e02...aE2C260B1
46.43125 ETH
132053312021-09-11 15:44:501027 days ago1631375090
0x611c7e02...aE2C260B1
19.55 ETH
132053312021-09-11 15:44:501027 days ago1631375090
0x611c7e02...aE2C260B1
46.43125 ETH
132053312021-09-11 15:44:501027 days ago1631375090
0x611c7e02...aE2C260B1
46.43125 ETH
132053312021-09-11 15:44:501027 days ago1631375090
0x611c7e02...aE2C260B1
46.43125 ETH
132053312021-09-11 15:44:501027 days ago1631375090
0x611c7e02...aE2C260B1
46.43125 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
LandSale

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 5: LandSale.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "./SafeMath.sol";
import "./Ownable.sol";
import "./ReentrancyGuard.sol";


interface ILand {
  function totalSupply() external view returns (uint256);
  function maximumSupply() external view returns (uint256);
  function mintToken(address account, uint256 count) external;
  function burnLastToken(address account) external;
}

contract LandSale is Ownable, ReentrancyGuard {
  using SafeMath for uint256;

  struct Purchase {
    uint256 count;
    uint256 price;
  }

  // Land-DAO token contract interface
  ILand public tokenContract;

  // Stores the allowed minting count and token price for each whitelisted address
  mapping (address => Purchase) private _allowances;
  // Stores the list of purchases along with the pricing
  mapping (address => Purchase[]) private _purchases;

  // Indicates the number of fund addresses (including treasury)
  uint8 constant _fundsAddressCount = 5;
  // Stores the total amount of owed (unlocked) funds for the founders
  uint256 public unlockedFunds;
  // Stores the total amount of owed (locked) funds for the founders
  uint256 public lockedFunds;
  // Stores the total amount of owed funds for the treasury
  uint256 public reserveFunds;
  // Stores the list of addresses owned by the reserve (at 0-index) and founders
  address[] public fundsAddresses;
  // Stores the timestamp on which the locked funds can be withdrawn
  uint256 public fundsUnlockTimestamp;

  constructor() {
    // By default, all founder addresses are set to the owner
    for (uint8 i = 0; i < _fundsAddressCount; i++) {
      fundsAddresses.push(msg.sender);
    }
  }

  // Add this modifier to all functions which are only accessible by the finance related addresses
  modifier onlyFinance() {
    require(msg.sender == fundsAddresses[0] ||
    msg.sender == fundsAddresses[1] ||
    msg.sender == fundsAddresses[2] ||
    msg.sender == fundsAddresses[3] ||
    msg.sender == fundsAddresses[4], "Unauthorized Access");
    _;
  }


  function setTokenContract(address _newTokenContract) external onlyOwner {
    require(_newTokenContract != address(0), "Invalid Address");
    tokenContract = ILand(_newTokenContract);
  }

  function setFundsAddress(uint8 _index, address _address) external onlyOwner {
    require(_address != address(0), "Invalid Address");
    require(_index >= 0 && _index < _fundsAddressCount, "Invalid Index");
    fundsAddresses[_index] = _address;
  }

  // Set the allowance for the specified address
  function setAllowance(address _address, uint256 _count, uint256 _price) public onlyOwner {
    require(_address != address(0), "Invalid Address");
    _allowances[_address] = Purchase(_count, _price);
  }

  // Set the allowance for the specified address
  function batchSetAllowances(
    address[] calldata _addresses,
    uint256[] calldata _counts,
    uint256[] calldata _prices
  ) external onlyOwner {
    uint256 count = _addresses.length;

    for (uint8 i = 0; i < count; i++) {
      setAllowance(_addresses[i], _counts[i], _prices[i]);
    }
  }

  // Get the allowance for the specified address
  function allowance(address _address) public view returns (
    uint256 count,
    uint256 price
  ) {
    Purchase memory _allowance = _allowances[_address];
    count = _allowance.count;
    price = _allowance.price;
  }

  // Set the UNIX timestamp for the funds unlock time
  function setFundsUnlockTimestamp(uint256 _unlock) external onlyOwner {     
    fundsUnlockTimestamp = _unlock;
  }

  // Handles token purchases
  receive() external payable nonReentrant {
    // Check if tokens are still available for sale
    uint256 remainingTokenCount = tokenContract.maximumSupply() - tokenContract.totalSupply();
    require(remainingTokenCount > 0, "Sold Out");

    // Check if sufficient funds are sent, and that the address is whitelisted (has valid allowance)
    // with enough funds to purchase at least 1 token
    uint256 accountLimit;
    uint256 tokenPrice;
    (accountLimit, tokenPrice) = allowance(msg.sender);
    require(accountLimit > 0, "Not Whitelisted For The Sale Or Insufficient Allowance");
    require(msg.value >= tokenPrice, "Insufficient Funds");

    // Calculate the actual amount of tokens to be minted, which must be within the set limits
    uint256 specifiedAmount = (tokenPrice == 0 ? accountLimit : msg.value.div(tokenPrice));
    uint256 actualAmount = (specifiedAmount > accountLimit ? accountLimit : specifiedAmount);
    actualAmount = (remainingTokenCount < actualAmount ? remainingTokenCount : actualAmount);
    _allowances[msg.sender].count -= actualAmount;
    tokenContract.mintToken(msg.sender, actualAmount);

    uint256 totalSpent = actualAmount.mul(tokenPrice);
    if (totalSpent > 0) {
      // Update the total received funds for the founders' share (95%)
      // Half of which are locked for 30 days after the end of the sale
      uint256 totalFounderShare = totalSpent.mul(95).div(100);
      uint256 lockedShare = totalFounderShare.div(2);
      uint256 unlockedShare = totalFounderShare.sub(lockedShare);
      lockedFunds = lockedFunds.add(lockedShare);
      unlockedFunds = unlockedFunds.add(unlockedShare);

      // 0-index is reserved for the treasury (5%) fully unlocked
      reserveFunds = reserveFunds.add(totalSpent.sub(totalFounderShare));

      _purchases[msg.sender].push(Purchase(actualAmount, tokenPrice));
    }

    // Calculate any excess/unspent funds and transfer it back to the buyer
    uint256 unspent = msg.value.sub(totalSpent);
    if (unspent > 0) {
      payable(msg.sender).transfer(unspent);
    }
  }

  // Handles refund requests which would send back 50% of the price at the time of purchase
  // and also subsequently burn the last token minted for the address
  function refund() external nonReentrant {
    require(_purchases[msg.sender].length > 0, "No Refund Available");
    Purchase memory purchase = _purchases[msg.sender][_purchases[msg.sender].length - 1];
    uint256 refundAmount = purchase.price.div(2);
    require(refundAmount <= lockedFunds, "Insufficient Funds Available");

    // Update the purchase records and burn the token
    if (purchase.count > 1) {
      _purchases[msg.sender][_purchases[msg.sender].length - 1].count -= 1;
    } else {
      _purchases[msg.sender].pop();
    }

    // Deduct from the locked funds
    lockedFunds = lockedFunds.sub(refundAmount);

    tokenContract.burnLastToken(msg.sender);

    payable(msg.sender).transfer(refundAmount);
  }

  // Used by the fund addresses to withdraw any owed funds
  function withdraw() external onlyFinance {
    // Calculate total owed funds based on the timing of the withdrawal
    uint256 totalOwed;
    if (block.timestamp >= fundsUnlockTimestamp) {
      totalOwed = unlockedFunds.add(lockedFunds);
      unlockedFunds = 0;
      lockedFunds = 0;
    } else {
      totalOwed = unlockedFunds;
      unlockedFunds = 0;
    }

    require(totalOwed > 0, "Withdrawal Not Available");

    // Starting from 1, as 0 is for the treasury
    uint256 individualShare = totalOwed.div(_fundsAddressCount - 1);
    for (uint8 i = 1; i < _fundsAddressCount; i++) {
      payable(fundsAddresses[i]).transfer(individualShare);
    }

    // Doing the same for the treasury
    if (reserveFunds > 0) {
      uint256 owed = reserveFunds;
      reserveFunds = 0;
      payable(fundsAddresses[0]).transfer(owed);
    }
  }
}

File 2 of 5: Context.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

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

File 3 of 5: Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "./Context.sol";

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

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _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);
    }
}

File 4 of 5: ReentrancyGuard.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}

File 5 of 5: SafeMath.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

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

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

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

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

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

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

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

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

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

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

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

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

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256[]","name":"_counts","type":"uint256[]"},{"internalType":"uint256[]","name":"_prices","type":"uint256[]"}],"name":"batchSetAllowances","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"fundsAddresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fundsUnlockTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockedFunds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refund","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reserveFunds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_count","type":"uint256"},{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"setAllowance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_index","type":"uint8"},{"internalType":"address","name":"_address","type":"address"}],"name":"setFundsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_unlock","type":"uint256"}],"name":"setFundsUnlockTimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newTokenContract","type":"address"}],"name":"setTokenContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenContract","outputs":[{"internalType":"contract ILand","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockedFunds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b5061001a33610087565b6001805560005b600560ff8216101561008157600880546001810182556000919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319163317905580610079816100d7565b915050610021565b50610105565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060ff821660ff8114156100fc57634e487b7160e01b600052601160045260246000fd5b60010192915050565b6116f2806101146000396000f3fe6080604052600436106101125760003560e01c8063715018a6116100a5578063b746a8da11610074578063bbcd5bbe11610059578063bbcd5bbe146107d6578063e7e1f1c7146107f6578063f2fde38b1461081657600080fd5b8063b746a8da146107a0578063b8afaa48146107c057600080fd5b8063715018a61461073757806372a9e2321461074c5780638da5cb5b14610762578063af8480a11461078057600080fd5b806354c39e32116100e157806354c39e32146106b057806355a373d6146106d4578063578f88ed1461070c578063590e1ae31461072257600080fd5b806304acbb99146105ec5780633ccfd60b1461060e5780633e5beab91461062357806342dbb4ef1461069057600080fd5b366105e7576002600154141561016f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b6002600181905554604080517f18160ddd00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b1580156101d257600080fd5b505afa1580156101e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020a9190611573565b600260009054906101000a90046001600160a01b03166001600160a01b0316630480e58b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561025857600080fd5b505afa15801561026c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102909190611573565b61029a9190611620565b9050600081116102ec5760405162461bcd60e51b815260206004820152600860248201527f536f6c64204f75740000000000000000000000000000000000000000000000006044820152606401610166565b336000908152600360209081526040918290208251808401909352805480845260019091015492909101829052908161038d5760405162461bcd60e51b815260206004820152603660248201527f4e6f742057686974656c697374656420466f72205468652053616c65204f722060448201527f496e73756666696369656e7420416c6c6f77616e6365000000000000000000006064820152608401610166565b803410156103dd5760405162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e742046756e647300000000000000000000000000006044820152606401610166565b600081156103f4576103ef3483610836565b6103f6565b825b905060008382116104075781610409565b835b9050808510610418578061041a565b845b3360009081526003602052604081208054929350839290919061043e908490611620565b90915550506002546040517f79c65068000000000000000000000000000000000000000000000000000000008152336004820152602481018390526001600160a01b03909116906379c6506890604401600060405180830381600087803b1580156104a857600080fd5b505af11580156104bc573d6000803e3d6000fd5b5050505060006104d5848361084990919063ffffffff16565b905080156105975760006104f560646104ef84605f610849565b90610836565b90506000610504826002610836565b905060006105128383610855565b6006549091506105229083610861565b6006556005546105329082610861565b60055561054b6105428585610855565b60075490610861565b6007555050336000908152600460209081526040808320815180830190925286825281830189815281546001818101845592865293909420915160029093029091019182559151910155505b60006105a33483610855565b905080156105da57604051339082156108fc029083906000818181858888f193505050501580156105d8573d6000803e3d6000fd5b505b5050600180555050505050005b600080fd5b3480156105f857600080fd5b5061060c61060736600461148d565b61086d565b005b34801561061a57600080fd5b5061060c610949565b34801561062f57600080fd5b5061067661063e366004611472565b6001600160a01b0316600090815260036020908152604091829020825180840190935280548084526001909101549290910182905291565b604080519283526020830191909152015b60405180910390f35b34801561069c57600080fd5b5061060c6106ab3660046114c0565b610c16565b3480156106bc57600080fd5b506106c660055481565b604051908152602001610687565b3480156106e057600080fd5b506002546106f4906001600160a01b031681565b6040516001600160a01b039091168152602001610687565b34801561071857600080fd5b506106c660095481565b34801561072e57600080fd5b5061060c610d05565b34801561074357600080fd5b5061060c610fcd565b34801561075857600080fd5b506106c660075481565b34801561076e57600080fd5b506000546001600160a01b03166106f4565b34801561078c57600080fd5b5061060c61079b36600461158c565b611033565b3480156107ac57600080fd5b5061060c6107bb36600461155a565b611171565b3480156107cc57600080fd5b506106c660065481565b3480156107e257600080fd5b5061060c6107f1366004611472565b6111d0565b34801561080257600080fd5b506106f461081136600461155a565b6112a1565b34801561082257600080fd5b5061060c610831366004611472565b6112cb565b600061084282846115df565b9392505050565b60006108428284611601565b60006108428284611620565b600061084282846115c7565b6000546001600160a01b031633146108c75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610166565b6001600160a01b03831661090f5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204164647265737360881b6044820152606401610166565b60408051808201825292835260208084019283526001600160a01b0390941660009081526003909452909220905181559051600190910155565b600860008154811061095d5761095d6116a6565b6000918252602090912001546001600160a01b03163314806109a65750600860018154811061098e5761098e6116a6565b6000918252602090912001546001600160a01b031633145b806109d8575060086002815481106109c0576109c06116a6565b6000918252602090912001546001600160a01b031633145b80610a0a575060086003815481106109f2576109f26116a6565b6000918252602090912001546001600160a01b031633145b80610a3c57506008600481548110610a2457610a246116a6565b6000918252602090912001546001600160a01b031633145b610a885760405162461bcd60e51b815260206004820152601360248201527f556e617574686f72697a656420416363657373000000000000000000000000006044820152606401610166565b60006009544210610ab357600654600554610aa291610861565b600060058190556006559050610abe565b506005805460009091555b60008111610b0e5760405162461bcd60e51b815260206004820152601860248201527f5769746864726177616c204e6f7420417661696c61626c6500000000000000006044820152606401610166565b6000610b29610b1f60016005611637565b839060ff16610836565b905060015b600560ff82161015610ba35760088160ff1681548110610b5057610b506116a6565b60009182526020822001546040516001600160a01b039091169184156108fc02918591818181858888f19350505050158015610b90573d6000803e3d6000fd5b5080610b9b8161165a565b915050610b2e565b5060075415610c12576000600754905060006007819055506008600081548110610bcf57610bcf6116a6565b60009182526020822001546040516001600160a01b039091169183156108fc02918491818181858888f19350505050158015610c0f573d6000803e3d6000fd5b50505b5050565b6000546001600160a01b03163314610c705760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610166565b8460005b818160ff161015610cfb57610ce988888360ff16818110610c9757610c976116a6565b9050602002016020810190610cac9190611472565b87878460ff16818110610cc157610cc16116a6565b9050602002013586868560ff16818110610cdd57610cdd6116a6565b9050602002013561086d565b80610cf38161165a565b915050610c74565b5050505050505050565b60026001541415610d585760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610166565b600260015533600090815260046020526040902054610db95760405162461bcd60e51b815260206004820152601360248201527f4e6f20526566756e6420417661696c61626c65000000000000000000000000006044820152606401610166565b3360009081526004602052604081208054610dd690600190611620565b81548110610de657610de66116a6565b6000918252602080832060408051808201909152600293840290910180548252600101549181018290529350610e1b91610836565b9050600654811115610e6f5760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e742046756e647320417661696c61626c65000000006044820152606401610166565b815160011015610ed457336000908152600460205260409020805460019190610e99908390611620565b81548110610ea957610ea96116a6565b90600052602060002090600202016000016000828254610ec99190611620565b90915550610f119050565b336000908152600460205260409020805480610ef257610ef2611690565b6000828152602081206002600019909301928302018181556001015590555b600654610f1e9082610855565b6006556002546040517f0e370c3d0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0390911690630e370c3d90602401600060405180830381600087803b158015610f7f57600080fd5b505af1158015610f93573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f19350505050158015610fc4573d6000803e3d6000fd5b50506001805550565b6000546001600160a01b031633146110275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610166565b61103160006113ad565b565b6000546001600160a01b0316331461108d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610166565b6001600160a01b0381166110d55760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204164647265737360881b6044820152606401610166565b600560ff8316106111285760405162461bcd60e51b815260206004820152600d60248201527f496e76616c696420496e646578000000000000000000000000000000000000006044820152606401610166565b8060088360ff168154811061113f5761113f6116a6565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050565b6000546001600160a01b031633146111cb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610166565b600955565b6000546001600160a01b0316331461122a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610166565b6001600160a01b0381166112725760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204164647265737360881b6044820152606401610166565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600881815481106112b157600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b031633146113255760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610166565b6001600160a01b0381166113a15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610166565b6113aa816113ad565b50565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b038116811461142157600080fd5b919050565b60008083601f84011261143857600080fd5b50813567ffffffffffffffff81111561145057600080fd5b6020830191508360208260051b850101111561146b57600080fd5b9250929050565b60006020828403121561148457600080fd5b6108428261140a565b6000806000606084860312156114a257600080fd5b6114ab8461140a565b95602085013595506040909401359392505050565b600080600080600080606087890312156114d957600080fd5b863567ffffffffffffffff808211156114f157600080fd5b6114fd8a838b01611426565b9098509650602089013591508082111561151657600080fd5b6115228a838b01611426565b9096509450604089013591508082111561153b57600080fd5b5061154889828a01611426565b979a9699509497509295939492505050565b60006020828403121561156c57600080fd5b5035919050565b60006020828403121561158557600080fd5b5051919050565b6000806040838503121561159f57600080fd5b823560ff811681146115b057600080fd5b91506115be6020840161140a565b90509250929050565b600082198211156115da576115da61167a565b500190565b6000826115fc57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561161b5761161b61167a565b500290565b6000828210156116325761163261167a565b500390565b600060ff821660ff8416808210156116515761165161167a565b90039392505050565b600060ff821660ff8114156116715761167161167a565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea26469706673582212202e6b1df8a479432b6fe0e7760a37e4d695d3bd85b671f4db688c0cfe21da9cc464736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101125760003560e01c8063715018a6116100a5578063b746a8da11610074578063bbcd5bbe11610059578063bbcd5bbe146107d6578063e7e1f1c7146107f6578063f2fde38b1461081657600080fd5b8063b746a8da146107a0578063b8afaa48146107c057600080fd5b8063715018a61461073757806372a9e2321461074c5780638da5cb5b14610762578063af8480a11461078057600080fd5b806354c39e32116100e157806354c39e32146106b057806355a373d6146106d4578063578f88ed1461070c578063590e1ae31461072257600080fd5b806304acbb99146105ec5780633ccfd60b1461060e5780633e5beab91461062357806342dbb4ef1461069057600080fd5b366105e7576002600154141561016f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b6002600181905554604080517f18160ddd00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b1580156101d257600080fd5b505afa1580156101e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020a9190611573565b600260009054906101000a90046001600160a01b03166001600160a01b0316630480e58b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561025857600080fd5b505afa15801561026c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102909190611573565b61029a9190611620565b9050600081116102ec5760405162461bcd60e51b815260206004820152600860248201527f536f6c64204f75740000000000000000000000000000000000000000000000006044820152606401610166565b336000908152600360209081526040918290208251808401909352805480845260019091015492909101829052908161038d5760405162461bcd60e51b815260206004820152603660248201527f4e6f742057686974656c697374656420466f72205468652053616c65204f722060448201527f496e73756666696369656e7420416c6c6f77616e6365000000000000000000006064820152608401610166565b803410156103dd5760405162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e742046756e647300000000000000000000000000006044820152606401610166565b600081156103f4576103ef3483610836565b6103f6565b825b905060008382116104075781610409565b835b9050808510610418578061041a565b845b3360009081526003602052604081208054929350839290919061043e908490611620565b90915550506002546040517f79c65068000000000000000000000000000000000000000000000000000000008152336004820152602481018390526001600160a01b03909116906379c6506890604401600060405180830381600087803b1580156104a857600080fd5b505af11580156104bc573d6000803e3d6000fd5b5050505060006104d5848361084990919063ffffffff16565b905080156105975760006104f560646104ef84605f610849565b90610836565b90506000610504826002610836565b905060006105128383610855565b6006549091506105229083610861565b6006556005546105329082610861565b60055561054b6105428585610855565b60075490610861565b6007555050336000908152600460209081526040808320815180830190925286825281830189815281546001818101845592865293909420915160029093029091019182559151910155505b60006105a33483610855565b905080156105da57604051339082156108fc029083906000818181858888f193505050501580156105d8573d6000803e3d6000fd5b505b5050600180555050505050005b600080fd5b3480156105f857600080fd5b5061060c61060736600461148d565b61086d565b005b34801561061a57600080fd5b5061060c610949565b34801561062f57600080fd5b5061067661063e366004611472565b6001600160a01b0316600090815260036020908152604091829020825180840190935280548084526001909101549290910182905291565b604080519283526020830191909152015b60405180910390f35b34801561069c57600080fd5b5061060c6106ab3660046114c0565b610c16565b3480156106bc57600080fd5b506106c660055481565b604051908152602001610687565b3480156106e057600080fd5b506002546106f4906001600160a01b031681565b6040516001600160a01b039091168152602001610687565b34801561071857600080fd5b506106c660095481565b34801561072e57600080fd5b5061060c610d05565b34801561074357600080fd5b5061060c610fcd565b34801561075857600080fd5b506106c660075481565b34801561076e57600080fd5b506000546001600160a01b03166106f4565b34801561078c57600080fd5b5061060c61079b36600461158c565b611033565b3480156107ac57600080fd5b5061060c6107bb36600461155a565b611171565b3480156107cc57600080fd5b506106c660065481565b3480156107e257600080fd5b5061060c6107f1366004611472565b6111d0565b34801561080257600080fd5b506106f461081136600461155a565b6112a1565b34801561082257600080fd5b5061060c610831366004611472565b6112cb565b600061084282846115df565b9392505050565b60006108428284611601565b60006108428284611620565b600061084282846115c7565b6000546001600160a01b031633146108c75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610166565b6001600160a01b03831661090f5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204164647265737360881b6044820152606401610166565b60408051808201825292835260208084019283526001600160a01b0390941660009081526003909452909220905181559051600190910155565b600860008154811061095d5761095d6116a6565b6000918252602090912001546001600160a01b03163314806109a65750600860018154811061098e5761098e6116a6565b6000918252602090912001546001600160a01b031633145b806109d8575060086002815481106109c0576109c06116a6565b6000918252602090912001546001600160a01b031633145b80610a0a575060086003815481106109f2576109f26116a6565b6000918252602090912001546001600160a01b031633145b80610a3c57506008600481548110610a2457610a246116a6565b6000918252602090912001546001600160a01b031633145b610a885760405162461bcd60e51b815260206004820152601360248201527f556e617574686f72697a656420416363657373000000000000000000000000006044820152606401610166565b60006009544210610ab357600654600554610aa291610861565b600060058190556006559050610abe565b506005805460009091555b60008111610b0e5760405162461bcd60e51b815260206004820152601860248201527f5769746864726177616c204e6f7420417661696c61626c6500000000000000006044820152606401610166565b6000610b29610b1f60016005611637565b839060ff16610836565b905060015b600560ff82161015610ba35760088160ff1681548110610b5057610b506116a6565b60009182526020822001546040516001600160a01b039091169184156108fc02918591818181858888f19350505050158015610b90573d6000803e3d6000fd5b5080610b9b8161165a565b915050610b2e565b5060075415610c12576000600754905060006007819055506008600081548110610bcf57610bcf6116a6565b60009182526020822001546040516001600160a01b039091169183156108fc02918491818181858888f19350505050158015610c0f573d6000803e3d6000fd5b50505b5050565b6000546001600160a01b03163314610c705760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610166565b8460005b818160ff161015610cfb57610ce988888360ff16818110610c9757610c976116a6565b9050602002016020810190610cac9190611472565b87878460ff16818110610cc157610cc16116a6565b9050602002013586868560ff16818110610cdd57610cdd6116a6565b9050602002013561086d565b80610cf38161165a565b915050610c74565b5050505050505050565b60026001541415610d585760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610166565b600260015533600090815260046020526040902054610db95760405162461bcd60e51b815260206004820152601360248201527f4e6f20526566756e6420417661696c61626c65000000000000000000000000006044820152606401610166565b3360009081526004602052604081208054610dd690600190611620565b81548110610de657610de66116a6565b6000918252602080832060408051808201909152600293840290910180548252600101549181018290529350610e1b91610836565b9050600654811115610e6f5760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e742046756e647320417661696c61626c65000000006044820152606401610166565b815160011015610ed457336000908152600460205260409020805460019190610e99908390611620565b81548110610ea957610ea96116a6565b90600052602060002090600202016000016000828254610ec99190611620565b90915550610f119050565b336000908152600460205260409020805480610ef257610ef2611690565b6000828152602081206002600019909301928302018181556001015590555b600654610f1e9082610855565b6006556002546040517f0e370c3d0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0390911690630e370c3d90602401600060405180830381600087803b158015610f7f57600080fd5b505af1158015610f93573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f19350505050158015610fc4573d6000803e3d6000fd5b50506001805550565b6000546001600160a01b031633146110275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610166565b61103160006113ad565b565b6000546001600160a01b0316331461108d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610166565b6001600160a01b0381166110d55760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204164647265737360881b6044820152606401610166565b600560ff8316106111285760405162461bcd60e51b815260206004820152600d60248201527f496e76616c696420496e646578000000000000000000000000000000000000006044820152606401610166565b8060088360ff168154811061113f5761113f6116a6565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050565b6000546001600160a01b031633146111cb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610166565b600955565b6000546001600160a01b0316331461122a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610166565b6001600160a01b0381166112725760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204164647265737360881b6044820152606401610166565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600881815481106112b157600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b031633146113255760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610166565b6001600160a01b0381166113a15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610166565b6113aa816113ad565b50565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b038116811461142157600080fd5b919050565b60008083601f84011261143857600080fd5b50813567ffffffffffffffff81111561145057600080fd5b6020830191508360208260051b850101111561146b57600080fd5b9250929050565b60006020828403121561148457600080fd5b6108428261140a565b6000806000606084860312156114a257600080fd5b6114ab8461140a565b95602085013595506040909401359392505050565b600080600080600080606087890312156114d957600080fd5b863567ffffffffffffffff808211156114f157600080fd5b6114fd8a838b01611426565b9098509650602089013591508082111561151657600080fd5b6115228a838b01611426565b9096509450604089013591508082111561153b57600080fd5b5061154889828a01611426565b979a9699509497509295939492505050565b60006020828403121561156c57600080fd5b5035919050565b60006020828403121561158557600080fd5b5051919050565b6000806040838503121561159f57600080fd5b823560ff811681146115b057600080fd5b91506115be6020840161140a565b90509250929050565b600082198211156115da576115da61167a565b500190565b6000826115fc57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561161b5761161b61167a565b500290565b6000828210156116325761163261167a565b500390565b600060ff821660ff8416808210156116515761165161167a565b90039392505050565b600060ff821660ff8114156116715761167161167a565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea26469706673582212202e6b1df8a479432b6fe0e7760a37e4d695d3bd85b671f4db688c0cfe21da9cc464736f6c63430008070033

Deployed Bytecode Sourcemap

394:7035:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1680:1:3;2259:7;;:19;;2251:63;;;;-1:-1:-1;;;2251:63:3;;7522:2:5;2251:63:3;;;7504:21:5;7561:2;7541:18;;;7534:30;7600:33;7580:18;;;7573:61;7651:18;;2251:63:3;;;;;;;;;1680:1;2389:7;:18;;;3719:13:1;:27:::1;::::0;;;;;;;3657::::1;::::0;-1:-1:-1;;;;;3719:13:1::1;::::0;:25:::1;::::0;:27:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:13;:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3687:13;;;;;;;;;-1:-1:-1::0;;;;;3687:13:1::1;-1:-1:-1::0;;;;;3687:27:1::1;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:59;;;;:::i;:::-;3657:89;;3782:1;3760:19;:23;3752:44;;;::::0;-1:-1:-1;;;3752:44:1;;3898:2:5;3752:44:1::1;::::0;::::1;3880:21:5::0;3937:1;3917:18;;;3910:29;3975:10;3955:18;;;3948:38;4003:18;;3752:44:1::1;3696:331:5::0;3752:44:1::1;4047:10;3958:20;3267:21:::0;;;:11;:21;;;;;;;;;3238:50;;;;;;;;;;;;;;;;;;;;;;;;;;;4064:83:::1;;;::::0;-1:-1:-1;;;4064:83:1;;6037:2:5;4064:83:1::1;::::0;::::1;6019:21:5::0;6076:2;6056:18;;;6049:30;6115:34;6095:18;;;6088:62;6186:24;6166:18;;;6159:52;6228:19;;4064:83:1::1;5835:418:5::0;4064:83:1::1;4174:10;4161:9;:23;;4153:54;;;::::0;-1:-1:-1;;;4153:54:1;;5342:2:5;4153:54:1::1;::::0;::::1;5324:21:5::0;5381:2;5361:18;;;5354:30;5420:20;5400:18;;;5393:48;5458:18;;4153:54:1::1;5140:342:5::0;4153:54:1::1;4309:23;4336:15:::0;;:58:::1;;4369:25;:9;4383:10:::0;4369:13:::1;:25::i;:::-;4336:58;;;4354:12;4336:58;4309:86;;4401:20;4443:12;4425:15;:30;:63;;4473:15;4425:63;;;4458:12;4425:63;4401:88;;4533:12;4511:19;:34;:71;;4570:12;4511:71;;;4548:19;4511:71;4601:10;4589:23;::::0;;;:11:::1;:23;::::0;;;;:45;;4495:88;;-1:-1:-1;4495:88:1;;4589:23;;;:45:::1;::::0;4495:88;;4589:45:::1;:::i;:::-;::::0;;;-1:-1:-1;;4640:13:1::1;::::0;:49:::1;::::0;;;;4664:10:::1;4640:49;::::0;::::1;3325:74:5::0;3415:18;;;3408:34;;;-1:-1:-1;;;;;4640:13:1;;::::1;::::0;:23:::1;::::0;3298:18:5;;4640:49:1::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;4696:18;4717:28;4734:10;4717:12;:16;;:28;;;;:::i;:::-;4696:49:::0;-1:-1:-1;4755:14:1;;4751:672:::1;;4922:25;4950:27;4973:3;4950:18;:10:::0;4965:2:::1;4950:14;:18::i;:::-;:22:::0;::::1;:27::i;:::-;4922:55:::0;-1:-1:-1;4985:19:1::1;5007:24;4922:55:::0;5029:1:::1;5007:21;:24::i;:::-;4985:46:::0;-1:-1:-1;5039:21:1::1;5063:34;:17:::0;4985:46;5063:21:::1;:34::i;:::-;5119:11;::::0;5039:58;;-1:-1:-1;5119:28:1::1;::::0;5135:11;5119:15:::1;:28::i;:::-;5105:11;:42:::0;5171:13:::1;::::0;:32:::1;::::0;5189:13;5171:17:::1;:32::i;:::-;5155:13;:48:::0;5293:51:::1;5310:33;:10:::0;5325:17;5310:14:::1;:33::i;:::-;5293:12;::::0;;:16:::1;:51::i;:::-;5278:12;:66:::0;-1:-1:-1;;5364:10:1::1;5353:22;::::0;;;:10:::1;:22;::::0;;;;;;;5381:34;;;;::::1;::::0;;;;;;;;::::1;::::0;;;5353:63;;::::1;::::0;;::::1;::::0;;;;;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;::::1;::::0;-1:-1:-1;4751:672:1::1;5505:15;5523:25;:9;5537:10:::0;5523:13:::1;:25::i;:::-;5505:43:::0;-1:-1:-1;5558:11:1;;5554:69:::1;;5579:37;::::0;5587:10:::1;::::0;5579:37;::::1;;;::::0;5608:7;;5579:37:::1;::::0;;;5608:7;5587:10;5579:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;5554:69;-1:-1:-1::0;;1637:1:3;2562:22;;-1:-1:-1;;;;;394:7035:1;;;;;2522:204;;;;;;;;;;-1:-1:-1;2522:204:1;;;;;:::i;:::-;;:::i;:::-;;6583:844;;;;;;;;;;;;;:::i;3132:221::-;;;;;;;;;;-1:-1:-1;3132:221:1;;;;;:::i;:::-;-1:-1:-1;;;;;3267:21:1;3195:13;3267:21;;;:11;:21;;;;;;;;;3238:50;;;;;;;;;;;;;;;;;;;;;;;;;;3132:221;;;;;8378:25:5;;;8434:2;8419:18;;8412:34;;;;8351:18;3132:221:1;;;;;;;;2779:300;;;;;;;;;;-1:-1:-1;2779:300:1;;;;;:::i;:::-;;:::i;1033:28::-;;;;;;;;;;;;;;;;;;;8168:25:5;;;8156:2;8141:18;1033:28:1;8022:177:5;577:26:1;;;;;;;;;;-1:-1:-1;577:26:1;;;;-1:-1:-1;;;;;577:26:1;;;;;;-1:-1:-1;;;;;3084:55:5;;;3066:74;;3054:2;3039:18;577:26:1;2920:226:5;1440:35:1;;;;;;;;;;;;;;;;5793:727;;;;;;;;;;;;;:::i;1598:92:2:-;;;;;;;;;;;;;:::i;1224:27:1:-;;;;;;;;;;;;;;;;966:85:2;;;;;;;;;;-1:-1:-1;1012:7:2;1038:6;-1:-1:-1;;;;;1038:6:2;966:85;;2219:250:1;;;;;;;;;;-1:-1:-1;2219:250:1;;;;;:::i;:::-;;:::i;3411:115::-;;;;;;;;;;-1:-1:-1;3411:115:1;;;;;:::i;:::-;;:::i;1134:26::-;;;;;;;;;;;;;;;;2027:188;;;;;;;;;;-1:-1:-1;2027:188:1;;;;;:::i;:::-;;:::i;1336:31::-;;;;;;;;;;-1:-1:-1;1336:31:1;;;;;:::i;:::-;;:::i;1839:189:2:-;;;;;;;;;;-1:-1:-1;1839:189:2;;;;;:::i;:::-;;:::i;3767:96:4:-;3825:7;3851:5;3855:1;3851;:5;:::i;:::-;3844:12;3767:96;-1:-1:-1;;;3767:96:4:o;3382:::-;3440:7;3466:5;3470:1;3466;:5;:::i;3039:96::-;3097:7;3123:5;3127:1;3123;:5;:::i;2672:96::-;2730:7;2756:5;2760:1;2756;:5;:::i;2522:204:1:-;1012:7:2;1038:6;-1:-1:-1;;;;;1038:6:2;666:10:0;1178:23:2;1170:68;;;;-1:-1:-1;;;1170:68:2;;6817:2:5;1170:68:2;;;6799:21:5;;;6836:18;;;6829:30;6895:34;6875:18;;;6868:62;6947:18;;1170:68:2;6615:356:5;1170:68:2;-1:-1:-1;;;;;2625:22:1;::::1;2617:50;;;::::0;-1:-1:-1;;;2617:50:1;;7178:2:5;2617:50:1::1;::::0;::::1;7160:21:5::0;7217:2;7197:18;;;7190:30;-1:-1:-1;;;7236:18:5;;;7229:45;7291:18;;2617:50:1::1;6976:339:5::0;2617:50:1::1;2697:24;::::0;;;;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;;;;;2673:21:1;;::::1;-1:-1:-1::0;2673:21:1;;;:11:::1;:21:::0;;;;;;:48;;;;;;::::1;::::0;;::::1;::::0;2522:204::o;6583:844::-;1813:14;1828:1;1813:17;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;1813:17:1;1799:10;:31;;:70;;;1852:14;1867:1;1852:17;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;1852:17:1;1838:10;:31;1799:70;:109;;;;1891:14;1906:1;1891:17;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;1891:17:1;1877:10;:31;1799:109;:148;;;;1930:14;1945:1;1930:17;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;1930:17:1;1916:10;:31;1799:148;:187;;;;1969:14;1984:1;1969:17;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;1969:17:1;1955:10;:31;1799:187;1791:219;;;;-1:-1:-1;;;1791:219:1;;5689:2:5;1791:219:1;;;5671:21:5;5728:2;5708:18;;;5701:30;5767:21;5747:18;;;5740:49;5806:18;;1791:219:1;5487:343:5;1791:219:1;6702:17:::1;6748:20;;6729:15;:39;6725:221;;6808:11;::::0;6790:13:::1;::::0;:30:::1;::::0;:17:::1;:30::i;:::-;6844:1;6828:13;:17:::0;;;6853:11:::1;:15:::0;6778:42;-1:-1:-1;6725:221:1::1;;;-1:-1:-1::0;6901:13:1::1;::::0;;6938:1:::1;6922:17:::0;;;6725:221:::1;6972:1;6960:9;:13;6952:50;;;::::0;-1:-1:-1;;;6952:50:1;;4989:2:5;6952:50:1::1;::::0;::::1;4971:21:5::0;5028:2;5008:18;;;5001:30;5067:26;5047:18;;;5040:54;5111:18;;6952:50:1::1;4787:348:5::0;6952:50:1::1;7058:23;7084:37;7098:22;7119:1;957;7098:22;:::i;:::-;7084:9:::0;;:37:::1;;:13;:37::i;:::-;7058:63:::0;-1:-1:-1;7142:1:1::1;7127:114;957:1;7145:22;::::0;::::1;;7127:114;;;7190:14;7205:1;7190:17;;;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;::::1;::::0;7182:52:::1;::::0;-1:-1:-1;;;;;7190:17:1;;::::1;::::0;7182:52;::::1;;;::::0;7218:15;;7182:52;7190:17;7182:52;7218:15;7190:17;7182:52;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;7169:3:1;::::1;::::0;::::1;:::i;:::-;;;;7127:114;;;-1:-1:-1::0;7290:12:1::1;::::0;:16;7286:137:::1;;7316:12;7331;;7316:27;;7366:1;7351:12;:16;;;;7383:14;7398:1;7383:17;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;::::1;::::0;7375:41:::1;::::0;-1:-1:-1;;;;;7383:17:1;;::::1;::::0;7375:41;::::1;;;::::0;7411:4;;7375:41;7383:17;7375:41;7411:4;7383:17;7375:41;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;7308:115;7286:137;6624:803;;6583:844::o:0;2779:300::-;1012:7:2;1038:6;-1:-1:-1;;;;;1038:6:2;666:10:0;1178:23:2;1170:68;;;;-1:-1:-1;;;1170:68:2;;6817:2:5;1170:68:2;;;6799:21:5;;;6836:18;;;6829:30;6895:34;6875:18;;;6868:62;6947:18;;1170:68:2;6615:356:5;1170:68:2;2951:10:1;2935:13:::1;2975:100;2997:5;2993:1;:9;;;2975:100;;;3017:51;3030:10;;3041:1;3030:13;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;3045:7;;3053:1;3045:10;;;;;;;;;:::i;:::-;;;;;;;3057:7;;3065:1;3057:10;;;;;;;;;:::i;:::-;;;;;;;3017:12;:51::i;:::-;3004:3:::0;::::1;::::0;::::1;:::i;:::-;;;;2975:100;;;;2929:150;2779:300:::0;;;;;;:::o;5793:727::-;1680:1:3;2259:7;;:19;;2251:63;;;;-1:-1:-1;;;2251:63:3;;7522:2:5;2251:63:3;;;7504:21:5;7561:2;7541:18;;;7534:30;7600:33;7580:18;;;7573:61;7651:18;;2251:63:3;7320:355:5;2251:63:3;1680:1;2389:7;:18;5858:10:1::1;5879:1;5847:22:::0;;;:10:::1;:22;::::0;;;;:29;5839:65:::1;;;::::0;-1:-1:-1;;;5839:65:1;;4641:2:5;5839:65:1::1;::::0;::::1;4623:21:5::0;4680:2;4660:18;;;4653:30;4719:21;4699:18;;;4692:49;4758:18;;5839:65:1::1;4439:343:5::0;5839:65:1::1;5948:10;5910:24;5937:22:::0;;;:10:::1;:22;::::0;;;;5960:29;;:33:::1;::::0;5992:1:::1;::::0;5960:33:::1;:::i;:::-;5937:57;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;5910:84:::1;::::0;;;;::::1;::::0;;;5937:57:::1;::::0;;::::1;::::0;;::::1;5910:84:::0;;;;::::1;;::::0;;;::::1;::::0;;;;-1:-1:-1;6023:21:1::1;::::0;:18:::1;:21::i;:::-;6000:44;;6074:11;;6058:12;:27;;6050:68;;;::::0;-1:-1:-1;;;6050:68:1;;6460:2:5;6050:68:1::1;::::0;::::1;6442:21:5::0;6499:2;6479:18;;;6472:30;6538;6518:18;;;6511:58;6586:18;;6050:68:1::1;6258:352:5::0;6050:68:1::1;6183:14:::0;;6200:1:::1;-1:-1:-1::0;6179:156:1::1;;;6222:10;6211:22;::::0;;;:10:::1;:22;::::0;;;;6234:29;;6278:1:::1;::::0;6211:22;6234:33:::1;::::0;6278:1;;6234:33:::1;:::i;:::-;6211:57;;;;;;;;:::i;:::-;;;;;;;;;;;:63;;;:68;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;6179:156:1::1;::::0;-1:-1:-1;6179:156:1::1;;6311:10;6300:22;::::0;;;:10:::1;:22;::::0;;;;:28;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;::::1;-1:-1:-1::0;;6300:28:1;;;;;::::1;;::::0;;;::::1;;::::0;;;6179:156:::1;6391:11;::::0;:29:::1;::::0;6407:12;6391:15:::1;:29::i;:::-;6377:11;:43:::0;6427:13:::1;::::0;:39:::1;::::0;;;;6455:10:::1;6427:39;::::0;::::1;3066:74:5::0;-1:-1:-1;;;;;6427:13:1;;::::1;::::0;:27:::1;::::0;3039:18:5;;6427:39:1::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6473:42:1::1;::::0;6481:10:::1;::::0;-1:-1:-1;6473:42:1;::::1;;;::::0;-1:-1:-1;6502:12:1;;6473:42:::1;::::0;;;6502:12;6481:10;6473:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1637:1:3;2562:22;;-1:-1:-1;5793:727:1:o;1598:92:2:-;1012:7;1038:6;-1:-1:-1;;;;;1038:6:2;666:10:0;1178:23:2;1170:68;;;;-1:-1:-1;;;1170:68:2;;6817:2:5;1170:68:2;;;6799:21:5;;;6836:18;;;6829:30;6895:34;6875:18;;;6868:62;6947:18;;1170:68:2;6615:356:5;1170:68:2;1662:21:::1;1680:1;1662:9;:21::i;:::-;1598:92::o:0;2219:250:1:-;1012:7:2;1038:6;-1:-1:-1;;;;;1038:6:2;666:10:0;1178:23:2;1170:68;;;;-1:-1:-1;;;1170:68:2;;6817:2:5;1170:68:2;;;6799:21:5;;;6836:18;;;6829:30;6895:34;6875:18;;;6868:62;6947:18;;1170:68:2;6615:356:5;1170:68:2;-1:-1:-1;;;;;2309:22:1;::::1;2301:50;;;::::0;-1:-1:-1;;;2301:50:1;;7178:2:5;2301:50:1::1;::::0;::::1;7160:21:5::0;7217:2;7197:18;;;7190:30;-1:-1:-1;;;7236:18:5;;;7229:45;7291:18;;2301:50:1::1;6976:339:5::0;2301:50:1::1;957:1;2380:27;::::0;::::1;;2357:68;;;::::0;-1:-1:-1;;;2357:68:1;;7882:2:5;2357:68:1::1;::::0;::::1;7864:21:5::0;7921:2;7901:18;;;7894:30;7960:15;7940:18;;;7933:43;7993:18;;2357:68:1::1;7680:337:5::0;2357:68:1::1;2456:8;2431:14;2446:6;2431:22;;;;;;;;;;:::i;:::-;;;;;;;;;:33;;;;;-1:-1:-1::0;;;;;2431:33:1::1;;;;;-1:-1:-1::0;;;;;2431:33:1::1;;;;;;2219:250:::0;;:::o;3411:115::-;1012:7:2;1038:6;-1:-1:-1;;;;;1038:6:2;666:10:0;1178:23:2;1170:68;;;;-1:-1:-1;;;1170:68:2;;6817:2:5;1170:68:2;;;6799:21:5;;;6836:18;;;6829:30;6895:34;6875:18;;;6868:62;6947:18;;1170:68:2;6615:356:5;1170:68:2;3491:20:1::1;:30:::0;3411:115::o;2027:188::-;1012:7:2;1038:6;-1:-1:-1;;;;;1038:6:2;666:10:0;1178:23:2;1170:68;;;;-1:-1:-1;;;1170:68:2;;6817:2:5;1170:68:2;;;6799:21:5;;;6836:18;;;6829:30;6895:34;6875:18;;;6868:62;6947:18;;1170:68:2;6615:356:5;1170:68:2;-1:-1:-1;;;;;2113:31:1;::::1;2105:59;;;::::0;-1:-1:-1;;;2105:59:1;;7178:2:5;2105:59:1::1;::::0;::::1;7160:21:5::0;7217:2;7197:18;;;7190:30;-1:-1:-1;;;7236:18:5;;;7229:45;7291:18;;2105:59:1::1;6976:339:5::0;2105:59:1::1;2170:13;:40:::0;;-1:-1:-1;;2170:40:1::1;-1:-1:-1::0;;;;;2170:40:1;;;::::1;::::0;;;::::1;::::0;;2027:188::o;1336:31::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1336:31:1;;-1:-1:-1;1336:31:1;:::o;1839:189:2:-;1012:7;1038:6;-1:-1:-1;;;;;1038:6:2;666:10:0;1178:23:2;1170:68;;;;-1:-1:-1;;;1170:68:2;;6817:2:5;1170:68:2;;;6799:21:5;;;6836:18;;;6829:30;6895:34;6875:18;;;6868:62;6947:18;;1170:68:2;6615:356:5;1170:68:2;-1:-1:-1;;;;;1927:22:2;::::1;1919:73;;;::::0;-1:-1:-1;;;1919:73:2;;4234:2:5;1919:73:2::1;::::0;::::1;4216:21:5::0;4273:2;4253:18;;;4246:30;4312:34;4292:18;;;4285:62;4383:8;4363:18;;;4356:36;4409:19;;1919:73:2::1;4032:402:5::0;1919:73:2::1;2002:19;2012:8;2002:9;:19::i;:::-;1839:189:::0;:::o;2034:169::-;2089:16;2108:6;;-1:-1:-1;;;;;2124:17:2;;;-1:-1:-1;;2124:17:2;;;;;;2156:40;;2108:6;;;;;;;2156:40;;2089:16;2156:40;2079:124;2034:169;:::o;14:196:5:-;82:20;;-1:-1:-1;;;;;131:54:5;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:367::-;278:8;288:6;342:3;335:4;327:6;323:17;319:27;309:55;;360:1;357;350:12;309:55;-1:-1:-1;383:20:5;;426:18;415:30;;412:50;;;458:1;455;448:12;412:50;495:4;487:6;483:17;471:29;;555:3;548:4;538:6;535:1;531:14;523:6;519:27;515:38;512:47;509:67;;;572:1;569;562:12;509:67;215:367;;;;;:::o;587:186::-;646:6;699:2;687:9;678:7;674:23;670:32;667:52;;;715:1;712;705:12;667:52;738:29;757:9;738:29;:::i;778:322::-;855:6;863;871;924:2;912:9;903:7;899:23;895:32;892:52;;;940:1;937;930:12;892:52;963:29;982:9;963:29;:::i;:::-;953:39;1039:2;1024:18;;1011:32;;-1:-1:-1;1090:2:5;1075:18;;;1062:32;;778:322;-1:-1:-1;;;778:322:5:o;1105:1088::-;1263:6;1271;1279;1287;1295;1303;1356:2;1344:9;1335:7;1331:23;1327:32;1324:52;;;1372:1;1369;1362:12;1324:52;1412:9;1399:23;1441:18;1482:2;1474:6;1471:14;1468:34;;;1498:1;1495;1488:12;1468:34;1537:70;1599:7;1590:6;1579:9;1575:22;1537:70;:::i;:::-;1626:8;;-1:-1:-1;1511:96:5;-1:-1:-1;1714:2:5;1699:18;;1686:32;;-1:-1:-1;1730:16:5;;;1727:36;;;1759:1;1756;1749:12;1727:36;1798:72;1862:7;1851:8;1840:9;1836:24;1798:72;:::i;:::-;1889:8;;-1:-1:-1;1772:98:5;-1:-1:-1;1977:2:5;1962:18;;1949:32;;-1:-1:-1;1993:16:5;;;1990:36;;;2022:1;2019;2012:12;1990:36;;2061:72;2125:7;2114:8;2103:9;2099:24;2061:72;:::i;:::-;1105:1088;;;;-1:-1:-1;1105:1088:5;;-1:-1:-1;1105:1088:5;;2152:8;;1105:1088;-1:-1:-1;;;1105:1088:5:o;2198:180::-;2257:6;2310:2;2298:9;2289:7;2285:23;2281:32;2278:52;;;2326:1;2323;2316:12;2278:52;-1:-1:-1;2349:23:5;;2198:180;-1:-1:-1;2198:180:5:o;2383:184::-;2453:6;2506:2;2494:9;2485:7;2481:23;2477:32;2474:52;;;2522:1;2519;2512:12;2474:52;-1:-1:-1;2545:16:5;;2383:184;-1:-1:-1;2383:184:5:o;2572:343::-;2638:6;2646;2699:2;2687:9;2678:7;2674:23;2670:32;2667:52;;;2715:1;2712;2705:12;2667:52;2754:9;2741:23;2804:4;2797:5;2793:16;2786:5;2783:27;2773:55;;2824:1;2821;2814:12;2773:55;2847:5;-1:-1:-1;2871:38:5;2905:2;2890:18;;2871:38;:::i;:::-;2861:48;;2572:343;;;;;:::o;8457:128::-;8497:3;8528:1;8524:6;8521:1;8518:13;8515:39;;;8534:18;;:::i;:::-;-1:-1:-1;8570:9:5;;8457:128::o;8590:274::-;8630:1;8656;8646:189;;-1:-1:-1;;;8688:1:5;8681:88;8792:4;8789:1;8782:15;8820:4;8817:1;8810:15;8646:189;-1:-1:-1;8849:9:5;;8590:274::o;8869:168::-;8909:7;8975:1;8971;8967:6;8963:14;8960:1;8957:21;8952:1;8945:9;8938:17;8934:45;8931:71;;;8982:18;;:::i;:::-;-1:-1:-1;9022:9:5;;8869:168::o;9042:125::-;9082:4;9110:1;9107;9104:8;9101:34;;;9115:18;;:::i;:::-;-1:-1:-1;9152:9:5;;9042:125::o;9172:195::-;9210:4;9247;9244:1;9240:12;9279:4;9276:1;9272:12;9304:3;9299;9296:12;9293:38;;;9311:18;;:::i;:::-;9348:13;;;9172:195;-1:-1:-1;;;9172:195:5:o;9372:175::-;9409:3;9453:4;9446:5;9442:16;9482:4;9473:7;9470:17;9467:43;;;9490:18;;:::i;:::-;9539:1;9526:15;;9372:175;-1:-1:-1;;9372:175:5:o;9552:184::-;-1:-1:-1;;;9601:1:5;9594:88;9701:4;9698:1;9691:15;9725:4;9722:1;9715:15;9741:184;-1:-1:-1;;;9790:1:5;9783:88;9890:4;9887:1;9880:15;9914:4;9911:1;9904:15;9930:184;-1:-1:-1;;;9979:1:5;9972:88;10079:4;10076:1;10069:15;10103:4;10100:1;10093:15

Swarm Source

ipfs://2e6b1df8a479432b6fe0e7760a37e4d695d3bd85b671f4db688c0cfe21da9cc4

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.