ETH Price: $2,009.42 (-0.06%)

Contract

0xAFaf0114d26E43161211f1D4945ee2128d48Ff93
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Redeem220388602025-03-13 15:31:4714 days ago1741879907IN
0xAFaf0114...28d48Ff93
0 ETH0.000112661.11
Redeem219092042025-02-23 13:04:3532 days ago1740315875IN
0xAFaf0114...28d48Ff93
0 ETH0.000110611.09
Redeem215593622025-01-05 16:06:2381 days ago1736093183IN
0xAFaf0114...28d48Ff93
0 ETH0.0011531111.35861561
Redeem214132362024-12-16 6:17:35101 days ago1734329855IN
0xAFaf0114...28d48Ff93
0 ETH0.0010505710.34859069
Redeem213283802024-12-04 9:56:23113 days ago1733306183IN
0xAFaf0114...28d48Ff93
0 ETH0.00215521.23424911
Set Event Status212560392024-11-24 7:13:11123 days ago1732432391IN
0xAFaf0114...28d48Ff93
0 ETH0.000224397.88319352
Set Event Status212560352024-11-24 7:12:23123 days ago1732432343IN
0xAFaf0114...28d48Ff93
0 ETH0.000218897.69003271
Set Event Status212560312024-11-24 7:11:35123 days ago1732432295IN
0xAFaf0114...28d48Ff93
0 ETH0.000215387.56663819
Set Event Status212560222024-11-24 7:09:47123 days ago1732432187IN
0xAFaf0114...28d48Ff93
0 ETH0.0002318.11549105
Redeem212470282024-11-23 1:03:35124 days ago1732323815IN
0xAFaf0114...28d48Ff93
0 ETH0.0016475813.89626542
Redeem209819142024-10-17 1:10:47161 days ago1729127447IN
0xAFaf0114...28d48Ff93
0 ETH0.001026298.65348934
Redeem207393242024-09-13 4:32:11195 days ago1726201931IN
0xAFaf0114...28d48Ff93
0 ETH0.000253892.50149797
Redeem201671012024-06-25 7:07:35275 days ago1719299255IN
0xAFaf0114...28d48Ff93
0 ETH0.000516024.7546432
Set Event Status201667812024-06-25 6:02:47275 days ago1719295367IN
0xAFaf0114...28d48Ff93
0 ETH0.000101953.58163428
Create Event201667762024-06-25 6:01:35275 days ago1719295295IN
0xAFaf0114...28d48Ff93
0 ETH0.000481194.01856409
Set Event Status201667672024-06-25 5:59:47275 days ago1719295187IN
0xAFaf0114...28d48Ff93
0 ETH0.000112693.95922852
Create Event201611012024-06-24 10:59:23276 days ago1719226763IN
0xAFaf0114...28d48Ff93
0 ETH0.000559654.6738302
Redeem201298262024-06-20 2:00:35280 days ago1718848835IN
0xAFaf0114...28d48Ff93
0 ETH0.000843147.76788674
Create Event201251852024-06-19 10:27:35281 days ago1718792855IN
0xAFaf0114...28d48Ff93
0 ETH0.000502774.19920181
Redeem201189472024-06-18 13:30:11282 days ago1718717411IN
0xAFaf0114...28d48Ff93
0 ETH0.0021896320.1752027
Create Event201189052024-06-18 13:21:47282 days ago1718716907IN
0xAFaf0114...28d48Ff93
0 ETH0.0012396310.35255559
Redeem201150992024-06-18 0:32:11282 days ago1718670731IN
0xAFaf0114...28d48Ff93
0 ETH0.000705746.95471395
Create Event201123722024-06-17 15:22:23283 days ago1718637743IN
0xAFaf0114...28d48Ff93
0 ETH0.0016762214
Redeem200820922024-06-13 9:44:59287 days ago1718271899IN
0xAFaf0114...28d48Ff93
0 ETH0.0014024211.82390779
Redeem199327902024-05-23 13:09:35308 days ago1716469775IN
0xAFaf0114...28d48Ff93
0 ETH0.0023134822.7909735
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Method Block
From
To
0x60806040153904412022-08-22 13:15:18948 days ago1661174118  Contract Creation0 ETH
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xAf3BC4Bb...187c719a2
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Coin98Vault

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Apache-2.0
pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {

  /**
    * @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 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 Required interface of an ERC721 compliant contract.
 */
interface IERC721 {

  /**
    * @dev Transfers `tokenId` token from `from` to `to`.
    *
    * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
    *
    * Requirements:
    *
    * - `from` cannot be the zero address.
    * - `to` cannot be the zero address.
    * - `tokenId` token must be owned by `from`.
    * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
    *
    * Emits a {Transfer} event.
    */
  function transferFrom(
    address from,
    address to,
    uint256 tokenId
  ) external;
}

interface IVaultConfig {

  function fee() external view returns (uint256);
  function gasLimit() external view returns (uint256);
  function ownerReward() external view returns (uint256);
}

/*
 * @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 GSN 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 returns (address) {
    return msg.sender;
  }

  function _msgData() internal view returns (bytes memory) {
    this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
    return msg.data;
  }

  function _msgValue() internal view returns (uint256) {
    return msg.value;
  }
}

/**
 * @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;
  address private _newOwner;

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

  /**
   * @dev Initializes the contract setting the deployer as the initial owner.
   */
  constructor (address owner_) {
    _owner = owner_;
    emit OwnershipTransferred(address(0), owner_);
  }

  /**
   * @dev Returns the address of the current owner.
   */
  function owner() public view 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 Accept the ownership transfer. This is to make sure that the contract is
   * transferred to a working address
   *
   * Can only be called by the newly transfered owner.
   */
  function acceptOwnership() public {
    require(_msgSender() == _newOwner, "Ownable: only new owner can accept ownership");
    address oldOwner = _owner;
    _owner = _newOwner;
    _newOwner = address(0);
    emit OwnershipTransferred(oldOwner, _owner);
  }

  /**
   * @dev Transfers ownership of the contract to a new account (`newOwner`).
   *
   * Can only be called by the current owner.
   */
  function transferOwnership(address newOwner) public onlyOwner {
    require(newOwner != address(0), "Ownable: new owner is the zero address");
    _newOwner = newOwner;
  }
}

/**
 * @dev Enable contract to receive gas token
 */
abstract contract Payable {

  event Deposited(address indexed sender, uint256 value);

  fallback() external payable {
    if(msg.value > 0) {
      emit Deposited(msg.sender, msg.value);
    }
  }

  /// @dev enable wallet to receive ETH
  receive() external payable {
    if(msg.value > 0) {
      emit Deposited(msg.sender, msg.value);
    }
  }
}

/**
 * @dev These functions deal with verification of Merkle trees (hash trees),
 */
library MerkleProof {
  /**
    * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree
    * defined by `root`. For this, a `proof` must be provided, containing
    * sibling hashes on the branch from the leaf to the root of the tree. Each
    * pair of leaves and each pair of pre-images are assumed to be sorted.
    */
  function verify(bytes32[] memory proof, bytes32 root, bytes32 leaf) internal pure returns (bool) {
    bytes32 computedHash = leaf;

    for (uint256 i = 0; i < proof.length; i++) {
      bytes32 proofElement = proof[i];

      if (computedHash <= proofElement) {
        // Hash(current computed hash + current element of the proof)
        computedHash = keccak256(abi.encodePacked(computedHash, proofElement));
      } else {
        // Hash(current element of the proof + current computed hash)
        computedHash = keccak256(abi.encodePacked(proofElement, computedHash));
      }
    }

    // Check if the computed hash (root) is equal to the provided root
    return computedHash == root;
  }
}

/**
 * @dev Coin98Vault contract to enable vesting funds to investors
 */
contract Coin98Vault is Ownable, Payable {

  address private _factory;
  address[] private _admins;
  mapping(address => bool) private _adminStatuses;
  mapping(uint256 => EventData) private _eventDatas;
  mapping(uint256 => mapping(uint256 => bool)) private _eventRedemptions;

  /// @dev Initialize a new vault
  /// @param factory_ Back reference to the factory initialized this vault for global configuration
  /// @param owner_ Owner of this vault
  constructor(address factory_, address owner_) Ownable(owner_) {
    _factory = factory_;
  }

  struct EventData {
    uint256 timestamp;
    bytes32 merkleRoot;
    address receivingToken;
    address sendingToken;
    uint8 isActive;
  }

  event AdminAdded(address indexed admin);
  event AdminRemoved(address indexed admin);
  event EventCreated(uint256 eventId, EventData eventData);
  event EventUpdated(uint256 eventId, uint8 isActive);
  event Redeemed(uint256 eventId, uint256 index, address indexed recipient, address indexed receivingToken, uint256 receivingTokenAmount, address indexed sendingToken, uint256 sendingTokenAmount);
  event Withdrawn(address indexed owner, address indexed recipient, address indexed token, uint256 value);

  function _setRedemption(uint256 eventId_, uint256 index_) private {
    _eventRedemptions[eventId_][index_] = true;
  }

  /// @dev Access Control, only owner and admins are able to access the specified function
  modifier onlyAdmin() {
    require(owner() == _msgSender() || _adminStatuses[_msgSender()], "Ownable: caller is not an admin");
    _;
  }

  /// @dev returns current admins who can manage the vault
  function admins() public view returns (address[] memory) {
    return _admins;
  }

  /// @dev returns info of an event
  /// @param eventId_ ID of the event
  function eventInfo(uint256 eventId_) public view returns (EventData memory) {
    return _eventDatas[eventId_];
  }

  /// @dev address of the factory
  function factory() public view returns (address) {
    return _factory;
  }

  /// @dev check an index whether it's redeemed
  /// @param eventId_ event ID
  /// @param index_ index of redemption pre-assigned to user
  function isRedeemed(uint256 eventId_, uint256 index_) public view returns (bool) {
    return _eventRedemptions[eventId_][index_];
  }

  /// @dev claim the token which user is eligible from schedule
  /// @param eventId_ event ID
  /// @param index_ index of redemption pre-assigned to user
  /// @param recipient_ index of redemption pre-assigned to user
  /// @param receivingAmount_ amount of *receivingToken* user is eligible to redeem
  /// @param sendingAmount_ amount of *sendingToken* user must send the contract to get *receivingToken*
  /// @param proofs additional data to validate that the inputted information is valid
  function redeem(uint256 eventId_, uint256 index_, address recipient_, uint256 receivingAmount_, uint256 sendingAmount_, bytes32[] calldata proofs) public payable {
    uint256 fee = IVaultConfig(_factory).fee();
    uint256 gasLimit = IVaultConfig(_factory).gasLimit();
    if(fee > 0) {
      require(_msgValue() == fee, "C98Vault: Invalid fee");
    }

    EventData storage eventData = _eventDatas[eventId_];
    require(eventData.isActive > 0, "C98Vault: Invalid event");
    require(eventData.timestamp <= block.timestamp, "C98Vault: Schedule locked");
    require(recipient_ != address(0), "C98Vault: Invalid schedule");

    bytes32 node = keccak256(abi.encodePacked(index_, recipient_, receivingAmount_, sendingAmount_));
    require(MerkleProof.verify(proofs, eventData.merkleRoot, node), "C98Vault: Invalid proof");
    require(!isRedeemed(eventId_, index_), "C98Vault: Redeemed");

    uint256 availableAmount;
    if(eventData.receivingToken == address(0)) {
      availableAmount = address(this).balance;
    } else {
      availableAmount = IERC20(eventData.receivingToken).balanceOf(address(this));
    }

    require(receivingAmount_ <= availableAmount, "C98Vault: Insufficient token");

    _setRedemption(eventId_, index_);
    if(fee > 0) {
      uint256 reward = IVaultConfig(_factory).ownerReward();
      uint256 finalFee = fee - reward;
      (bool success, bytes memory data) = _factory.call{value:finalFee, gas:gasLimit}("");
      require(success, "C98Vault: Unable to charge fee");
    }
    if(sendingAmount_ > 0) {
      IERC20(eventData.sendingToken).transferFrom(_msgSender(), address(this), sendingAmount_);
    }
    if(eventData.receivingToken == address(0)) {
      recipient_.call{value:receivingAmount_, gas:gasLimit}("");
    } else {
      IERC20(eventData.receivingToken).transfer(recipient_, receivingAmount_);
    }

    emit Redeemed(eventId_, index_, recipient_, eventData.receivingToken, receivingAmount_, eventData.sendingToken, sendingAmount_);
  }

  /// @dev withdraw the token in the vault, no limit
  /// @param token_ address of the token, use address(0) to withdraw gas token
  /// @param destination_ recipient address to receive the fund
  /// @param amount_ amount of fund to withdaw
  function withdraw(address token_, address destination_, uint256 amount_) public onlyAdmin {
    require(destination_ != address(0), "C98Vault: Destination is zero address");

    uint256 availableAmount;
    if(token_ == address(0)) {
      availableAmount = address(this).balance;
    } else {
      availableAmount = IERC20(token_).balanceOf(address(this));
    }

    require(amount_ <= availableAmount, "C98Vault: Not enough balance");

    uint256 gasLimit = IVaultConfig(_factory).gasLimit();
    if(token_ == address(0)) {
      destination_.call{value:amount_, gas:gasLimit}("");
    } else {
      IERC20(token_).transfer(destination_, amount_);
    }

    emit Withdrawn(_msgSender(), destination_, token_, amount_);
  }

  /// @dev withdraw NFT from contract
  /// @param token_ address of the token, use address(0) to withdraw gas token
  /// @param destination_ recipient address to receive the fund
  /// @param tokenId_ ID of NFT to withdraw
  function withdrawNft(address token_, address destination_, uint256 tokenId_) public onlyAdmin {
    require(destination_ != address(0), "C98Vault: destination is zero address");

    IERC721(token_).transferFrom(address(this), destination_, tokenId_);

    emit Withdrawn(_msgSender(), destination_, token_, 1);
  }

  /// @dev create an event to specify how user can claim their token
  /// @param eventId_ event ID
  /// @param timestamp_ when the token will be available for redemption
  /// @param receivingToken_ token user will be receiving, mandatory
  /// @param sendingToken_ token user need to send in order to receive *receivingToken_*
  function createEvent(uint256 eventId_, uint256 timestamp_, bytes32 merkleRoot_, address receivingToken_, address sendingToken_) public onlyAdmin {
    require(_eventDatas[eventId_].timestamp == 0, "C98Vault: Event existed");
    require(timestamp_ != 0, "C98Vault: Invalid timestamp");
    _eventDatas[eventId_].timestamp = timestamp_;
    _eventDatas[eventId_].merkleRoot = merkleRoot_;
    _eventDatas[eventId_].receivingToken = receivingToken_;
    _eventDatas[eventId_].sendingToken = sendingToken_;
    _eventDatas[eventId_].isActive = 1;

    emit EventCreated(eventId_, _eventDatas[eventId_]);
  }

  /// @dev enable/disable a particular event
  /// @param eventId_ event ID
  /// @param isActive_ zero to inactive, any number to active
  function setEventStatus(uint256 eventId_, uint8 isActive_) public onlyAdmin {
    require(_eventDatas[eventId_].timestamp != 0, "C98Vault: Invalid event");
    _eventDatas[eventId_].isActive = isActive_;

    emit EventUpdated(eventId_, isActive_);
  }

  /// @dev add/remove admin of the vault.
  /// @param nAdmins_ list to address to update
  /// @param nStatuses_ address with same index will be added if true, or remove if false
  /// admins will have access to all tokens in the vault, and can define vesting schedule
  function setAdmins(address[] memory nAdmins_, bool[] memory nStatuses_) public onlyOwner {
    require(nAdmins_.length != 0, "C98Vault: Empty arguments");
    require(nStatuses_.length != 0, "C98Vault: Empty arguments");
    require(nAdmins_.length == nStatuses_.length, "C98Vault: Invalid arguments");

    uint256 i;
    for(i = 0; i < nAdmins_.length; i++) {
      address nAdmin = nAdmins_[i];
      if(nStatuses_[i]) {
        if(!_adminStatuses[nAdmin]) {
          _admins.push(nAdmin);
          _adminStatuses[nAdmin] = nStatuses_[i];
          emit AdminAdded(nAdmin);
        }
      } else {
        uint256 j;
        for(j = 0; j < _admins.length; j++) {
          if(_admins[j] == nAdmin) {
            _admins[j] = _admins[_admins.length - 1];
            _admins.pop();
            delete _adminStatuses[nAdmin];
            emit AdminRemoved(nAdmin);
            break;
          }
        }
      }
    }
  }
}

contract Coin98VaultFactory is Ownable, Payable, IVaultConfig {

  uint256 private _fee;
  uint256 private _gasLimit;
  uint256 private _ownerReward;
  address[] private _vaults;

  constructor () Ownable(_msgSender()) {
    _gasLimit = 9000;
  }

  /// @dev Emit `FeeUpdated` when a new vault is created
  event Created(address indexed vault);
  /// @dev Emit `FeeUpdated` when fee of the protocol is updated
  event FeeUpdated(uint256 fee);
  /// @dev Emit `OwnerRewardUpdated` when reward for vault owner is updated
  event OwnerRewardUpdated(uint256 fee);
  /// @dev Emit `Withdrawn` when owner withdraw fund from the factory
  event Withdrawn(address indexed owner, address indexed recipient, address indexed token, uint256 value);

  /// @dev get current protocol fee in gas token
  function fee() override external view returns (uint256) {
    return _fee;
  }

  /// @dev limit gas to send native token
  function gasLimit() override external view returns (uint256) {
    return _gasLimit;
  }

  /// @dev get current owner reward in gas token
  function ownerReward() override external view returns (uint256) {
    return _ownerReward;
  }

  /// @dev get list of vaults initialized through this factory
  function vaults() external view returns (address[] memory) {
    return _vaults;
  }

  /// @dev create a new vault
  /// @param owner_ Owner of newly created vault
  function createVault(address owner_) external returns (Coin98Vault vault) {
    vault = new Coin98Vault(address(this), owner_);
    _vaults.push(address(vault));
    emit Created(address(vault));
  }

  function setGasLimit(uint256 limit_) public onlyOwner {
    _gasLimit = limit_;
  }

  /// @dev change protocol fee
  /// @param fee_ amount of gas token to charge for every redeem. can be ZERO to disable protocol fee
  /// @param reward_ amount of gas token to incentive vault owner. this reward will be deduce from protocol fee
  function setFee(uint256 fee_, uint256 reward_) public onlyOwner {
    require(fee_ >= reward_, "C98Vault: Invalid reward amount");

    _fee = fee_;
    _ownerReward = reward_;

    emit FeeUpdated(fee_);
    emit OwnerRewardUpdated(reward_);
  }

  /// @dev withdraw fee collected for protocol
  /// @param token_ address of the token, use address(0) to withdraw gas token
  /// @param destination_ recipient address to receive the fund
  /// @param amount_ amount of fund to withdaw
  function withdraw(address token_, address destination_, uint256 amount_) public onlyOwner {
    require(destination_ != address(0), "C98Vault: Destination is zero address");

    uint256 availableAmount;
    if(token_ == address(0)) {
      availableAmount = address(this).balance;
    } else {
      availableAmount = IERC20(token_).balanceOf(address(this));
    }

    require(amount_ <= availableAmount, "C98Vault: Not enough balance");

    if(token_ == address(0)) {
      destination_.call{value:amount_, gas:_gasLimit}("");
    } else {
      IERC20(token_).transfer(destination_, amount_);
    }

    emit Withdrawn(_msgSender(), destination_, token_, amount_);
  }

  /// @dev withdraw NFT from contract
  /// @param token_ address of the token, use address(0) to withdraw gas token
  /// @param destination_ recipient address to receive the fund
  /// @param tokenId_ ID of NFT to withdraw
  function withdrawNft(address token_, address destination_, uint256 tokenId_) public onlyOwner {
    require(destination_ != address(0), "C98Vault: destination is zero address");

    IERC721(token_).transferFrom(address(this), destination_, tokenId_);

    emit Withdrawn(_msgSender(), destination_, token_, 1);
  }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"factory_","type":"address"},{"internalType":"address","name":"owner_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"}],"name":"AdminAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"}],"name":"AdminRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"eventId","type":"uint256"},{"components":[{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"address","name":"receivingToken","type":"address"},{"internalType":"address","name":"sendingToken","type":"address"},{"internalType":"uint8","name":"isActive","type":"uint8"}],"indexed":false,"internalType":"struct Coin98Vault.EventData","name":"eventData","type":"tuple"}],"name":"EventCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"eventId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"isActive","type":"uint8"}],"name":"EventUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"eventId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"address","name":"receivingToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"receivingTokenAmount","type":"uint256"},{"indexed":true,"internalType":"address","name":"sendingToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"sendingTokenAmount","type":"uint256"}],"name":"Redeemed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Withdrawn","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admins","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"eventId_","type":"uint256"},{"internalType":"uint256","name":"timestamp_","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot_","type":"bytes32"},{"internalType":"address","name":"receivingToken_","type":"address"},{"internalType":"address","name":"sendingToken_","type":"address"}],"name":"createEvent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"eventId_","type":"uint256"}],"name":"eventInfo","outputs":[{"components":[{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"address","name":"receivingToken","type":"address"},{"internalType":"address","name":"sendingToken","type":"address"},{"internalType":"uint8","name":"isActive","type":"uint8"}],"internalType":"struct Coin98Vault.EventData","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"eventId_","type":"uint256"},{"internalType":"uint256","name":"index_","type":"uint256"}],"name":"isRedeemed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"eventId_","type":"uint256"},{"internalType":"uint256","name":"index_","type":"uint256"},{"internalType":"address","name":"recipient_","type":"address"},{"internalType":"uint256","name":"receivingAmount_","type":"uint256"},{"internalType":"uint256","name":"sendingAmount_","type":"uint256"},{"internalType":"bytes32[]","name":"proofs","type":"bytes32[]"}],"name":"redeem","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"nAdmins_","type":"address[]"},{"internalType":"bool[]","name":"nStatuses_","type":"bool[]"}],"name":"setAdmins","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"eventId_","type":"uint256"},{"internalType":"uint8","name":"isActive_","type":"uint8"}],"name":"setEventStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"address","name":"destination_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"address","name":"destination_","type":"address"},{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"withdrawNft","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

Deployed Bytecode

0x6080604052600436106100c65760003560e01c8063a5de36191161007f578063d6b7277211610059578063d6b72772146102ff578063d9caed1214610328578063f2fde38b14610351578063ff3367081461037a57610125565b8063a5de36191461026c578063c45a015514610297578063c87234b9146102c257610125565b80634a6ba2f11461017f5780634f7f8870146101a857806379ba5097146101c4578063833b463f146101db5780638da5cb5b146102045780639d0c025b1461022f57610125565b36610125576000341115610123573373ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c43460405161011a9190612450565b60405180910390a25b005b600034111561017d573373ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4346040516101749190612450565b60405180910390a25b005b34801561018b57600080fd5b506101a660048036038101906101a19190612731565b6103a3565b005b6101c260048036038101906101bd9190612830565b6108e0565b005b3480156101d057600080fd5b506101d961125e565b005b3480156101e757600080fd5b5061020260048036038101906101fd9190612915565b61143c565b005b34801561021057600080fd5b50610219611712565b604051610226919061299f565b60405180910390f35b34801561023b57600080fd5b50610256600480360381019061025191906129ba565b61173b565b6040516102639190612a98565b60405180910390f35b34801561027857600080fd5b50610281611845565b60405161028e9190612b62565b60405180910390f35b3480156102a357600080fd5b506102ac6118d3565b6040516102b9919061299f565b60405180910390f35b3480156102ce57600080fd5b506102e960048036038101906102e49190612b84565b6118fd565b6040516102f69190612bd3565b60405180910390f35b34801561030b57600080fd5b5061032660048036038101906103219190612bee565b611939565b005b34801561033457600080fd5b5061034f600480360381019061034a9190612bee565b611b78565b005b34801561035d57600080fd5b5061037860048036038101906103739190612c41565b612002565b005b34801561038657600080fd5b506103a1600480360381019061039c9190612c9a565b612132565b005b6103ab6122cf565b73ffffffffffffffffffffffffffffffffffffffff166103c9611712565b73ffffffffffffffffffffffffffffffffffffffff161461041f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041690612d37565b60405180910390fd5b600082511415610464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045b90612da3565b60405180910390fd5b6000815114156104a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a090612da3565b60405180910390fd5b80518251146104ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e490612e0f565b60405180910390fd5b60005b82518110156108db57600083828151811061050e5761050d612e2f565b5b6020026020010151905082828151811061052b5761052a612e2f565b5b6020026020010151156106a657600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166106a1576003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508282815181106105ff576105fe612e2f565b5b6020026020010151600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e33960405160405180910390a25b6108c7565b60005b6003805490508110156108c5578173ffffffffffffffffffffffffffffffffffffffff16600382815481106106e1576106e0612e2f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156108b2576003600160038054905061073c9190612e8d565b8154811061074d5761074c612e2f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003828154811061078c5761078b612e2f565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060038054806107e6576107e5612ec1565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558173ffffffffffffffffffffffffffffffffffffffff167fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f60405160405180910390a26108c5565b80806108bd90612ef0565b9150506106a9565b505b5080806108d390612ef0565b9150506104f0565b505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa15801561094f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109739190612f4e565b90506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f68016b76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a089190612f4e565b90506000821115610a5d5781610a1c6122d7565b14610a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5390612fc7565b60405180910390fd5b5b6000600560008b8152602001908152602001600020905060008160030160149054906101000a900460ff1660ff1611610acb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac290613033565b60405180910390fd5b4281600001541115610b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b099061309f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415610b82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b799061310b565b60405180910390fd5b600089898989604051602001610b9b9493929190613194565b604051602081830303815290604052805190602001209050610c03868680806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508360010154836122df565b610c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c399061322e565b60405180910390fd5b610c4c8b8b6118fd565b15610c8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c839061329a565b60405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff168360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610cee57479050610d8f565b8260020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d4b919061299f565b602060405180830381865afa158015610d68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8c9190612f4e565b90505b80891115610dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc990613306565b60405180910390fd5b610ddc8c8c612395565b6000851115610f62576000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630c0116ba6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e789190612f4e565b905060008187610e889190612e8d565b9050600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16838990604051610ed590613357565b600060405180830381858888f193505050503d8060008114610f13576040519150601f19603f3d011682016040523d82523d6000602084013e610f18565b606091505b509150915081610f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f54906133b8565b60405180910390fd5b505050505b6000881115611018578260030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd610fb36122cf565b308b6040518463ffffffff1660e01b8152600401610fd3939291906133d8565b6020604051808303816000875af1158015610ff2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110169190613424565b505b600073ffffffffffffffffffffffffffffffffffffffff168360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156110e2578973ffffffffffffffffffffffffffffffffffffffff1689859060405161109790613357565b600060405180830381858888f193505050503d80600081146110d5576040519150601f19603f3d011682016040523d82523d6000602084013e6110da565b606091505b505050611186565b8260020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8b8b6040518363ffffffff1660e01b8152600401611141929190613451565b6020604051808303816000875af1158015611160573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111849190613424565b505b8260030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167ff409ae64b6834450b7c7d1a871be39b3e8e5e1410392dece1609e952a0bbed258f8f8e8e604051611248949392919061347a565b60405180910390a4505050505050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661129f6122cf565b73ffffffffffffffffffffffffffffffffffffffff16146112f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ec90613531565b60405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6114446122cf565b73ffffffffffffffffffffffffffffffffffffffff16611462611712565b73ffffffffffffffffffffffffffffffffffffffff1614806114d457506004600061148b6122cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150a9061359d565b60405180910390fd5b600060056000878152602001908152602001600020600001541461156c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156390613609565b60405180910390fd5b60008414156115b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a790613675565b60405180910390fd5b836005600087815260200190815260200160002060000181905550826005600087815260200190815260200160002060010181905550816005600087815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806005600087815260200190815260200160002060030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016005600087815260200190815260200160002060030160146101000a81548160ff021916908360ff1602179055507f3794e18b3f4d3de301daa976248a2476083cf6ae9075916ca3746ec7c07acbd785600560008881526020019081526020016000206040516117039291906137f2565b60405180910390a15050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6117436123d6565b600560008381526020019081526020016000206040518060a001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820160149054906101000a900460ff1660ff1660ff16815250509050919050565b606060038054806020026020016040519081016040528092919081815260200182805480156118c957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161187f575b5050505050905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600060066000848152602001908152602001600020600083815260200190815260200160002060009054906101000a900460ff16905092915050565b6119416122cf565b73ffffffffffffffffffffffffffffffffffffffff1661195f611712565b73ffffffffffffffffffffffffffffffffffffffff1614806119d15750600460006119886122cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611a10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a079061359d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a779061388d565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166323b872dd3084846040518463ffffffff1660e01b8152600401611abd939291906133d8565b600060405180830381600087803b158015611ad757600080fd5b505af1158015611aeb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16611b256122cf565b73ffffffffffffffffffffffffffffffffffffffff167fa4195c37c2947bbe89165f03e320b6903116f0b10d8cfdb522330f7ce6f9fa246001604051611b6b91906138f2565b60405180910390a4505050565b611b806122cf565b73ffffffffffffffffffffffffffffffffffffffff16611b9e611712565b73ffffffffffffffffffffffffffffffffffffffff161480611c10575060046000611bc76122cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c469061359d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb69061397f565b60405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611cfd57479050611d7a565b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611d36919061299f565b602060405180830381865afa158015611d53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d779190612f4e565b90505b80821115611dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db4906139eb565b60405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f68016b76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e509190612f4e565b9050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611ef8578373ffffffffffffffffffffffffffffffffffffffff16838290604051611ead90613357565b600060405180830381858888f193505050503d8060008114611eeb576040519150601f19603f3d011682016040523d82523d6000602084013e611ef0565b606091505b505050611f78565b8473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff1660e01b8152600401611f33929190613451565b6020604051808303816000875af1158015611f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f769190613424565b505b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16611fae6122cf565b73ffffffffffffffffffffffffffffffffffffffff167fa4195c37c2947bbe89165f03e320b6903116f0b10d8cfdb522330f7ce6f9fa2486604051611ff39190612450565b60405180910390a45050505050565b61200a6122cf565b73ffffffffffffffffffffffffffffffffffffffff16612028611712565b73ffffffffffffffffffffffffffffffffffffffff161461207e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207590612d37565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156120ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e590613a7d565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61213a6122cf565b73ffffffffffffffffffffffffffffffffffffffff16612158611712565b73ffffffffffffffffffffffffffffffffffffffff1614806121ca5750600460006121816122cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612209576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122009061359d565b60405180910390fd5b600060056000848152602001908152602001600020600001541415612263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225a90613033565b60405180910390fd5b806005600084815260200190815260200160002060030160146101000a81548160ff021916908360ff1602179055507f2d1b07be957769da732a7889c8d02d769c80659ae1bd2302944e78380f06164482826040516122c3929190613aac565b60405180910390a15050565b600033905090565b600034905090565b60008082905060005b855181101561238757600086828151811061230657612305612e2f565b5b6020026020010151905080831161234757828160405160200161232a929190613af6565b604051602081830303815290604052805190602001209250612373565b808360405160200161235a929190613af6565b6040516020818303038152906040528051906020012092505b50808061237f90612ef0565b9150506122e8565b508381149150509392505050565b600160066000848152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6040518060a001604052806000815260200160008019168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600060ff1681525090565b6000819050919050565b61244a81612437565b82525050565b60006020820190506124656000830184612441565b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6124cd82612484565b810181811067ffffffffffffffff821117156124ec576124eb612495565b5b80604052505050565b60006124ff61246b565b905061250b82826124c4565b919050565b600067ffffffffffffffff82111561252b5761252a612495565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061256c82612541565b9050919050565b61257c81612561565b811461258757600080fd5b50565b60008135905061259981612573565b92915050565b60006125b26125ad84612510565b6124f5565b905080838252602082019050602084028301858111156125d5576125d461253c565b5b835b818110156125fe57806125ea888261258a565b8452602084019350506020810190506125d7565b5050509392505050565b600082601f83011261261d5761261c61247f565b5b813561262d84826020860161259f565b91505092915050565b600067ffffffffffffffff82111561265157612650612495565b5b602082029050602081019050919050565b60008115159050919050565b61267781612662565b811461268257600080fd5b50565b6000813590506126948161266e565b92915050565b60006126ad6126a884612636565b6124f5565b905080838252602082019050602084028301858111156126d0576126cf61253c565b5b835b818110156126f957806126e58882612685565b8452602084019350506020810190506126d2565b5050509392505050565b600082601f8301126127185761271761247f565b5b813561272884826020860161269a565b91505092915050565b6000806040838503121561274857612747612475565b5b600083013567ffffffffffffffff8111156127665761276561247a565b5b61277285828601612608565b925050602083013567ffffffffffffffff8111156127935761279261247a565b5b61279f85828601612703565b9150509250929050565b6127b281612437565b81146127bd57600080fd5b50565b6000813590506127cf816127a9565b92915050565b600080fd5b60008083601f8401126127f0576127ef61247f565b5b8235905067ffffffffffffffff81111561280d5761280c6127d5565b5b6020830191508360208202830111156128295761282861253c565b5b9250929050565b600080600080600080600060c0888a03121561284f5761284e612475565b5b600061285d8a828b016127c0565b975050602061286e8a828b016127c0565b965050604061287f8a828b0161258a565b95505060606128908a828b016127c0565b94505060806128a18a828b016127c0565b93505060a088013567ffffffffffffffff8111156128c2576128c161247a565b5b6128ce8a828b016127da565b925092505092959891949750929550565b6000819050919050565b6128f2816128df565b81146128fd57600080fd5b50565b60008135905061290f816128e9565b92915050565b600080600080600060a0868803121561293157612930612475565b5b600061293f888289016127c0565b9550506020612950888289016127c0565b945050604061296188828901612900565b93505060606129728882890161258a565b92505060806129838882890161258a565b9150509295509295909350565b61299981612561565b82525050565b60006020820190506129b46000830184612990565b92915050565b6000602082840312156129d0576129cf612475565b5b60006129de848285016127c0565b91505092915050565b6129f081612437565b82525050565b6129ff816128df565b82525050565b612a0e81612561565b82525050565b600060ff82169050919050565b612a2a81612a14565b82525050565b60a082016000820151612a4660008501826129e7565b506020820151612a5960208501826129f6565b506040820151612a6c6040850182612a05565b506060820151612a7f6060850182612a05565b506080820151612a926080850182612a21565b50505050565b600060a082019050612aad6000830184612a30565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000612aeb8383612a05565b60208301905092915050565b6000602082019050919050565b6000612b0f82612ab3565b612b198185612abe565b9350612b2483612acf565b8060005b83811015612b55578151612b3c8882612adf565b9750612b4783612af7565b925050600181019050612b28565b5085935050505092915050565b60006020820190508181036000830152612b7c8184612b04565b905092915050565b60008060408385031215612b9b57612b9a612475565b5b6000612ba9858286016127c0565b9250506020612bba858286016127c0565b9150509250929050565b612bcd81612662565b82525050565b6000602082019050612be86000830184612bc4565b92915050565b600080600060608486031215612c0757612c06612475565b5b6000612c158682870161258a565b9350506020612c268682870161258a565b9250506040612c37868287016127c0565b9150509250925092565b600060208284031215612c5757612c56612475565b5b6000612c658482850161258a565b91505092915050565b612c7781612a14565b8114612c8257600080fd5b50565b600081359050612c9481612c6e565b92915050565b60008060408385031215612cb157612cb0612475565b5b6000612cbf858286016127c0565b9250506020612cd085828601612c85565b9150509250929050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612d21602083612cda565b9150612d2c82612ceb565b602082019050919050565b60006020820190508181036000830152612d5081612d14565b9050919050565b7f4339385661756c743a20456d70747920617267756d656e747300000000000000600082015250565b6000612d8d601983612cda565b9150612d9882612d57565b602082019050919050565b60006020820190508181036000830152612dbc81612d80565b9050919050565b7f4339385661756c743a20496e76616c696420617267756d656e74730000000000600082015250565b6000612df9601b83612cda565b9150612e0482612dc3565b602082019050919050565b60006020820190508181036000830152612e2881612dec565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e9882612437565b9150612ea383612437565b925082821015612eb657612eb5612e5e565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000612efb82612437565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612f2e57612f2d612e5e565b5b600182019050919050565b600081519050612f48816127a9565b92915050565b600060208284031215612f6457612f63612475565b5b6000612f7284828501612f39565b91505092915050565b7f4339385661756c743a20496e76616c6964206665650000000000000000000000600082015250565b6000612fb1601583612cda565b9150612fbc82612f7b565b602082019050919050565b60006020820190508181036000830152612fe081612fa4565b9050919050565b7f4339385661756c743a20496e76616c6964206576656e74000000000000000000600082015250565b600061301d601783612cda565b915061302882612fe7565b602082019050919050565b6000602082019050818103600083015261304c81613010565b9050919050565b7f4339385661756c743a205363686564756c65206c6f636b656400000000000000600082015250565b6000613089601983612cda565b915061309482613053565b602082019050919050565b600060208201905081810360008301526130b88161307c565b9050919050565b7f4339385661756c743a20496e76616c6964207363686564756c65000000000000600082015250565b60006130f5601a83612cda565b9150613100826130bf565b602082019050919050565b60006020820190508181036000830152613124816130e8565b9050919050565b6000819050919050565b61314661314182612437565b61312b565b82525050565b60008160601b9050919050565b60006131648261314c565b9050919050565b600061317682613159565b9050919050565b61318e61318982612561565b61316b565b82525050565b60006131a08287613135565b6020820191506131b0828661317d565b6014820191506131c08285613135565b6020820191506131d08284613135565b60208201915081905095945050505050565b7f4339385661756c743a20496e76616c69642070726f6f66000000000000000000600082015250565b6000613218601783612cda565b9150613223826131e2565b602082019050919050565b600060208201905081810360008301526132478161320b565b9050919050565b7f4339385661756c743a2052656465656d65640000000000000000000000000000600082015250565b6000613284601283612cda565b915061328f8261324e565b602082019050919050565b600060208201905081810360008301526132b381613277565b9050919050565b7f4339385661756c743a20496e73756666696369656e7420746f6b656e00000000600082015250565b60006132f0601c83612cda565b91506132fb826132ba565b602082019050919050565b6000602082019050818103600083015261331f816132e3565b9050919050565b600081905092915050565b50565b6000613341600083613326565b915061334c82613331565b600082019050919050565b600061336282613334565b9150819050919050565b7f4339385661756c743a20556e61626c6520746f20636861726765206665650000600082015250565b60006133a2601e83612cda565b91506133ad8261336c565b602082019050919050565b600060208201905081810360008301526133d181613395565b9050919050565b60006060820190506133ed6000830186612990565b6133fa6020830185612990565b6134076040830184612441565b949350505050565b60008151905061341e8161266e565b92915050565b60006020828403121561343a57613439612475565b5b60006134488482850161340f565b91505092915050565b60006040820190506134666000830185612990565b6134736020830184612441565b9392505050565b600060808201905061348f6000830187612441565b61349c6020830186612441565b6134a96040830185612441565b6134b66060830184612441565b95945050505050565b7f4f776e61626c653a206f6e6c79206e6577206f776e65722063616e206163636560008201527f7074206f776e6572736869700000000000000000000000000000000000000000602082015250565b600061351b602c83612cda565b9150613526826134bf565b604082019050919050565b6000602082019050818103600083015261354a8161350e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420616e2061646d696e00600082015250565b6000613587601f83612cda565b915061359282613551565b602082019050919050565b600060208201905081810360008301526135b68161357a565b9050919050565b7f4339385661756c743a204576656e742065786973746564000000000000000000600082015250565b60006135f3601783612cda565b91506135fe826135bd565b602082019050919050565b60006020820190508181036000830152613622816135e6565b9050919050565b7f4339385661756c743a20496e76616c69642074696d657374616d700000000000600082015250565b600061365f601b83612cda565b915061366a82613629565b602082019050919050565b6000602082019050818103600083015261368e81613652565b9050919050565b60008160001c9050919050565b6000819050919050565b60006136bf6136ba83613695565b6136a2565b9050919050565b6000819050919050565b60006136e36136de83613695565b6136c6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061371d61371883613695565b6136ea565b9050919050565b60008160a01c9050919050565b600060ff82169050919050565b600061375161374c83613724565b613731565b9050919050565b60a08201600080830154905061376d816136ac565b61377a60008601826129e7565b506001830154905061378b816136d0565b61379860208601826129f6565b50600283015490506137a98161370a565b6137b66040860182612a05565b50600383015490506137c78161370a565b6137d46060860182612a05565b506137de8161373e565b6137eb6080860182612a21565b5050505050565b600060c0820190506138076000830185612441565b6138146020830184613758565b9392505050565b7f4339385661756c743a2064657374696e6174696f6e206973207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613877602583612cda565b91506138828261381b565b604082019050919050565b600060208201905081810360008301526138a68161386a565b9050919050565b6000819050919050565b6000819050919050565b60006138dc6138d76138d2846138ad565b6138b7565b612437565b9050919050565b6138ec816138c1565b82525050565b600060208201905061390760008301846138e3565b92915050565b7f4339385661756c743a2044657374696e6174696f6e206973207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613969602583612cda565b91506139748261390d565b604082019050919050565b600060208201905081810360008301526139988161395c565b9050919050565b7f4339385661756c743a204e6f7420656e6f7567682062616c616e636500000000600082015250565b60006139d5601c83612cda565b91506139e08261399f565b602082019050919050565b60006020820190508181036000830152613a04816139c8565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a67602683612cda565b9150613a7282613a0b565b604082019050919050565b60006020820190508181036000830152613a9681613a5a565b9050919050565b613aa681612a14565b82525050565b6000604082019050613ac16000830185612441565b613ace6020830184613a9d565b9392505050565b6000819050919050565b613af0613aeb826128df565b613ad5565b82525050565b6000613b028285613adf565b602082019150613b128284613adf565b602082019150819050939250505056fea2646970667358221220fa13a3c1b51345bc9dec8c75e27bc82350ec1c51045ed8fcb8c06e55265b4a7364736f6c634300080a0033

Deployed Bytecode Sourcemap

6573:9051:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5262:1;5250:9;:13;5247:72;;;5289:10;5279:32;;;5301:9;5279:32;;;;;;:::i;:::-;;;;;;;;5247:72;6573:9051;;5104:1;5092:9;:13;5089:72;;;5131:10;5121:32;;;5143:9;5121:32;;;;;;:::i;:::-;;;;;;;;5089:72;6573:9051;14667:954;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9432:2037;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4306:265;;;;;;;;;;;;;:::i;:::-;;13369:614;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3833:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8402:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8236:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8560:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8786:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12707:321;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11722:750;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4722:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14130:257;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14667:954;4038:12;:10;:12::i;:::-;4027:23;;:7;:5;:7::i;:::-;:23;;;4019:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14790:1:::1;14771:8;:15;:20;;14763:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;14857:1;14836:10;:17;:22;;14828:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;14922:10;:17;14903:8;:15;:36;14895:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;14980:9;14996:620;15011:8;:15;15007:1;:19;14996:620;;;15042:14;15059:8;15068:1;15059:11;;;;;;;;:::i;:::-;;;;;;;;15042:28;;15082:10;15093:1;15082:13;;;;;;;;:::i;:::-;;;;;;;;15079:530;;;15112:14;:22;15127:6;15112:22;;;;;;;;;;;;;;;;;;;;;;;;;15108:160;;15149:7;15162:6;15149:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15207:10;15218:1;15207:13;;;;;;;;:::i;:::-;;;;;;;;15182:14;:22;15197:6;15182:22;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;15249:6;15238:18;;;;;;;;;;;;15108:160;15079:530;;;15294:9;15314:286;15329:7;:14;;;;15325:1;:18;15314:286;;;15380:6;15366:20;;:7;15374:1;15366:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:20;;;15363:226;;;15416:7;15441:1;15424:7;:14;;;;:18;;;;:::i;:::-;15416:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15403:7;15411:1;15403:10;;;;;;;;:::i;:::-;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;15458:7;:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;15493:14;:22;15508:6;15493:22;;;;;;;;;;;;;;;;15486:29;;;;;;;;;;;15548:6;15535:20;;;;;;;;;;;;15570:5;;15363:226;15345:3;;;;;:::i;:::-;;;;15314:286;;;15283:326;15079:530;15033:583;15028:3;;;;;:::i;:::-;;;;14996:620;;;14756:865;14667:954:::0;;:::o;9432:2037::-;9601:11;9628:8;;;;;;;;;;;9615:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9601:42;;9650:16;9682:8;;;;;;;;;;;9669:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9650:52;;9718:1;9712:3;:7;9709:81;;;9753:3;9738:11;:9;:11::i;:::-;:18;9730:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;9709:81;9798:27;9828:11;:21;9840:8;9828:21;;;;;;;;;;;9798:51;;9885:1;9864:9;:18;;;;;;;;;;;;:22;;;9856:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;9952:15;9929:9;:19;;;:38;;9921:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;10034:1;10012:24;;:10;:24;;;;10004:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10076:12;10118:6;10126:10;10138:16;10156:14;10101:70;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10091:81;;;;;;10076:96;;10187:54;10206:6;;10187:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10214:9;:20;;;10236:4;10187:18;:54::i;:::-;10179:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;10285:28;10296:8;10306:6;10285:10;:28::i;:::-;10284:29;10276:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;10345:23;10414:1;10378:38;;:9;:24;;;;;;;;;;;;:38;;;10375:197;;;10445:21;10427:39;;10375:197;;;10514:9;:24;;;;;;;;;;;;10507:42;;;10558:4;10507:57;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10489:75;;10375:197;10608:15;10588:16;:35;;10580:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;10665:32;10680:8;10690:6;10665:14;:32::i;:::-;10713:1;10707:3;:7;10704:273;;;10725:14;10755:8;;;;;;;;;;;10742:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10725:53;;10787:16;10812:6;10806:3;:12;;;;:::i;:::-;10787:31;;10828:12;10842:17;10863:8;;;;;;;;;;;:13;;10883:8;10897;10863:47;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10827:83;;;;10927:7;10919:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;10716:261;;;;10704:273;11003:1;10986:14;:18;10983:128;;;11022:9;:22;;;;;;;;;;;;11015:43;;;11059:12;:10;:12::i;:::-;11081:4;11088:14;11015:88;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10983:128;11156:1;11120:38;;:9;:24;;;;;;;;;;;;:38;;;11117:211;;;11169:10;:15;;11191:16;11213:8;11169:57;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11117:211;;;11256:9;:24;;;;;;;;;;;;11249:41;;;11291:10;11303:16;11249:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11117:211;11424:9;:22;;;;;;;;;;;;11341:122;;11380:9;:24;;;;;;;;;;;;11341:122;;11368:10;11341:122;;;11350:8;11360:6;11406:16;11448:14;11341:122;;;;;;;;;:::i;:::-;;;;;;;;9594:1875;;;;;9432:2037;;;;;;;:::o;4306:265::-;4371:9;;;;;;;;;;;4355:25;;:12;:10;:12::i;:::-;:25;;;4347:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;4436:16;4455:6;;;;;;;;;;;4436:25;;4477:9;;;;;;;;;;;4468:6;;:18;;;;;;;;;;;;;;;;;;4513:1;4493:9;;:22;;;;;;;;;;;;;;;;;;4558:6;;;;;;;;;;4527:38;;4548:8;4527:38;;;;;;;;;;;;4340:231;4306:265::o;13369:614::-;8076:12;:10;:12::i;:::-;8065:23;;:7;:5;:7::i;:::-;:23;;;:55;;;;8092:14;:28;8107:12;:10;:12::i;:::-;8092:28;;;;;;;;;;;;;;;;;;;;;;;;;8065:55;8057:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;13564:1:::1;13529:11;:21;13541:8;13529:21;;;;;;;;;;;:31;;;:36;13521:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;13622:1;13608:10;:15;;13600:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;13696:10;13662:11;:21;13674:8;13662:21;;;;;;;;;;;:31;;:44;;;;13748:11;13713;:21;13725:8;13713:21;;;;;;;;;;;:32;;:46;;;;13805:15;13766:11;:21;13778:8;13766:21;;;;;;;;;;;:36;;;:54;;;;;;;;;;;;;;;;;;13864:13;13827:11;:21;13839:8;13827:21;;;;;;;;;;;:34;;;:50;;;;;;;;;;;;;;;;;;13917:1;13884:11;:21;13896:8;13884:21;;;;;;;;;;;:30;;;:34;;;;;;;;;;;;;;;;;;13932:45;13945:8;13955:11;:21;13967:8;13955:21;;;;;;;;;;;13932:45;;;;;;;:::i;:::-;;;;;;;;13369:614:::0;;;;;:::o;3833:73::-;3871:7;3894:6;;;;;;;;;;;3887:13;;3833:73;:::o;8402:117::-;8460:16;;:::i;:::-;8492:11;:21;8504:8;8492:21;;;;;;;;;;;8485:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8402:117;;;:::o;8236:84::-;8275:16;8307:7;8300:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8236:84;:::o;8560:77::-;8600:7;8623:8;;;;;;;;;;;8616:15;;8560:77;:::o;8786:136::-;8861:4;8881:17;:27;8899:8;8881:27;;;;;;;;;;;:35;8909:6;8881:35;;;;;;;;;;;;;;;;;;;;;8874:42;;8786:136;;;;:::o;12707:321::-;8076:12;:10;:12::i;:::-;8065:23;;:7;:5;:7::i;:::-;:23;;;:55;;;;8092:14;:28;8107:12;:10;:12::i;:::-;8092:28;;;;;;;;;;;;;;;;;;;;;;;;;8065:55;8057:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;12840:1:::1;12816:26;;:12;:26;;;;12808:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;12901:6;12893:28;;;12930:4;12937:12;12951:8;12893:67;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13012:6;12974:48;;12998:12;12974:48;;12984:12;:10;:12::i;:::-;12974:48;;;13020:1;12974:48;;;;;;:::i;:::-;;;;;;;;12707:321:::0;;;:::o;11722:750::-;8076:12;:10;:12::i;:::-;8065:23;;:7;:5;:7::i;:::-;:23;;;:55;;;;8092:14;:28;8107:12;:10;:12::i;:::-;8092:28;;;;;;;;;;;;;;;;;;;;;;;;;8065:55;8057:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;11851:1:::1;11827:26;;:12;:26;;;;11819:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;11904:23;11955:1:::0;11937:20:::1;;:6;:20;;;11934:161;;;11986:21;11968:39;;11934:161;;;12055:6;12048:24;;;12081:4;12048:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12030:57;;11934:161;12122:15;12111:7;:26;;12103:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12179:16;12211:8;;;;;;;;;;;12198:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12179:52;;12259:1;12241:20;;:6;:20;;;12238:161;;;12272:12;:17;;12296:7;12309:8;12272:50;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12238:161;;;12352:6;12345:23;;;12369:12;12383:7;12345:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12238:161;12450:6;12412:54;;12436:12;12412:54;;12422:12;:10;:12::i;:::-;12412:54;;;12458:7;12412:54;;;;;;:::i;:::-;;;;;;;;11812:660;;11722:750:::0;;;:::o;4722:175::-;4038:12;:10;:12::i;:::-;4027:23;;:7;:5;:7::i;:::-;:23;;;4019:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4819:1:::1;4799:22;;:8;:22;;;;4791:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;4883:8;4871:9;;:20;;;;;;;;;;;;;;;;;;4722:175:::0;:::o;14130:257::-;8076:12;:10;:12::i;:::-;8065:23;;:7;:5;:7::i;:::-;:23;;;:55;;;;8092:14;:28;8107:12;:10;:12::i;:::-;8092:28;;;;;;;;;;;;;;;;;;;;;;;;;8065:55;8057:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;14256:1:::1;14221:11;:21;14233:8;14221:21;;;;;;;;;;;:31;;;:36;;14213:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;14325:9;14292:11;:21;14304:8;14292:21;;;;;;;;;;;:30;;;:42;;;;;;;;;;;;;;;;;;14348:33;14361:8;14371:9;14348:33;;;;;;;:::i;:::-;;;;;;;;14130:257:::0;;:::o;2460:84::-;2505:7;2528:10;2521:17;;2460:84;:::o;2771:82::-;2815:7;2838:9;2831:16;;2771:82;:::o;5771:718::-;5862:4;5875:20;5898:4;5875:27;;5916:9;5911:465;5935:5;:12;5931:1;:16;5911:465;;;5963:20;5986:5;5992:1;5986:8;;;;;;;;:::i;:::-;;;;;;;;5963:31;;6025:12;6009;:28;6005:364;;6163:12;6177;6146:44;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6136:55;;;;;;6121:70;;6005:364;;;6331:12;6345;6314:44;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6304:55;;;;;;6289:70;;6005:364;5954:422;5949:3;;;;;:::i;:::-;;;;5911:465;;;;6479:4;6463:12;:20;6456:27;;;5771:718;;;;;:::o;7810:121::-;7921:4;7883:17;:27;7901:8;7883:27;;;;;;;;;;;:35;7911:6;7883:35;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;7810:121;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:75::-;475:6;508:2;502:9;492:19;;442:75;:::o;523:117::-;632:1;629;622:12;646:117;755:1;752;745:12;769:117;878:1;875;868:12;892:102;933:6;984:2;980:7;975:2;968:5;964:14;960:28;950:38;;892:102;;;:::o;1000:180::-;1048:77;1045:1;1038:88;1145:4;1142:1;1135:15;1169:4;1166:1;1159:15;1186:281;1269:27;1291:4;1269:27;:::i;:::-;1261:6;1257:40;1399:6;1387:10;1384:22;1363:18;1351:10;1348:34;1345:62;1342:88;;;1410:18;;:::i;:::-;1342:88;1450:10;1446:2;1439:22;1229:238;1186:281;;:::o;1473:129::-;1507:6;1534:20;;:::i;:::-;1524:30;;1563:33;1591:4;1583:6;1563:33;:::i;:::-;1473:129;;;:::o;1608:311::-;1685:4;1775:18;1767:6;1764:30;1761:56;;;1797:18;;:::i;:::-;1761:56;1847:4;1839:6;1835:17;1827:25;;1907:4;1901;1897:15;1889:23;;1608:311;;;:::o;1925:117::-;2034:1;2031;2024:12;2048:126;2085:7;2125:42;2118:5;2114:54;2103:65;;2048:126;;;:::o;2180:96::-;2217:7;2246:24;2264:5;2246:24;:::i;:::-;2235:35;;2180:96;;;:::o;2282:122::-;2355:24;2373:5;2355:24;:::i;:::-;2348:5;2345:35;2335:63;;2394:1;2391;2384:12;2335:63;2282:122;:::o;2410:139::-;2456:5;2494:6;2481:20;2472:29;;2510:33;2537:5;2510:33;:::i;:::-;2410:139;;;;:::o;2572:710::-;2668:5;2693:81;2709:64;2766:6;2709:64;:::i;:::-;2693:81;:::i;:::-;2684:90;;2794:5;2823:6;2816:5;2809:21;2857:4;2850:5;2846:16;2839:23;;2910:4;2902:6;2898:17;2890:6;2886:30;2939:3;2931:6;2928:15;2925:122;;;2958:79;;:::i;:::-;2925:122;3073:6;3056:220;3090:6;3085:3;3082:15;3056:220;;;3165:3;3194:37;3227:3;3215:10;3194:37;:::i;:::-;3189:3;3182:50;3261:4;3256:3;3252:14;3245:21;;3132:144;3116:4;3111:3;3107:14;3100:21;;3056:220;;;3060:21;2674:608;;2572:710;;;;;:::o;3305:370::-;3376:5;3425:3;3418:4;3410:6;3406:17;3402:27;3392:122;;3433:79;;:::i;:::-;3392:122;3550:6;3537:20;3575:94;3665:3;3657:6;3650:4;3642:6;3638:17;3575:94;:::i;:::-;3566:103;;3382:293;3305:370;;;;:::o;3681:308::-;3755:4;3845:18;3837:6;3834:30;3831:56;;;3867:18;;:::i;:::-;3831:56;3917:4;3909:6;3905:17;3897:25;;3977:4;3971;3967:15;3959:23;;3681:308;;;:::o;3995:90::-;4029:7;4072:5;4065:13;4058:21;4047:32;;3995:90;;;:::o;4091:116::-;4161:21;4176:5;4161:21;:::i;:::-;4154:5;4151:32;4141:60;;4197:1;4194;4187:12;4141:60;4091:116;:::o;4213:133::-;4256:5;4294:6;4281:20;4272:29;;4310:30;4334:5;4310:30;:::i;:::-;4213:133;;;;:::o;4366:701::-;4459:5;4484:78;4500:61;4554:6;4500:61;:::i;:::-;4484:78;:::i;:::-;4475:87;;4582:5;4611:6;4604:5;4597:21;4645:4;4638:5;4634:16;4627:23;;4698:4;4690:6;4686:17;4678:6;4674:30;4727:3;4719:6;4716:15;4713:122;;;4746:79;;:::i;:::-;4713:122;4861:6;4844:217;4878:6;4873:3;4870:15;4844:217;;;4953:3;4982:34;5012:3;5000:10;4982:34;:::i;:::-;4977:3;4970:47;5046:4;5041:3;5037:14;5030:21;;4920:141;4904:4;4899:3;4895:14;4888:21;;4844:217;;;4848:21;4465:602;;4366:701;;;;;:::o;5087:364::-;5155:5;5204:3;5197:4;5189:6;5185:17;5181:27;5171:122;;5212:79;;:::i;:::-;5171:122;5329:6;5316:20;5354:91;5441:3;5433:6;5426:4;5418:6;5414:17;5354:91;:::i;:::-;5345:100;;5161:290;5087:364;;;;:::o;5457:888::-;5572:6;5580;5629:2;5617:9;5608:7;5604:23;5600:32;5597:119;;;5635:79;;:::i;:::-;5597:119;5783:1;5772:9;5768:17;5755:31;5813:18;5805:6;5802:30;5799:117;;;5835:79;;:::i;:::-;5799:117;5940:78;6010:7;6001:6;5990:9;5986:22;5940:78;:::i;:::-;5930:88;;5726:302;6095:2;6084:9;6080:18;6067:32;6126:18;6118:6;6115:30;6112:117;;;6148:79;;:::i;:::-;6112:117;6253:75;6320:7;6311:6;6300:9;6296:22;6253:75;:::i;:::-;6243:85;;6038:300;5457:888;;;;;:::o;6351:122::-;6424:24;6442:5;6424:24;:::i;:::-;6417:5;6414:35;6404:63;;6463:1;6460;6453:12;6404:63;6351:122;:::o;6479:139::-;6525:5;6563:6;6550:20;6541:29;;6579:33;6606:5;6579:33;:::i;:::-;6479:139;;;;:::o;6624:117::-;6733:1;6730;6723:12;6764:568;6837:8;6847:6;6897:3;6890:4;6882:6;6878:17;6874:27;6864:122;;6905:79;;:::i;:::-;6864:122;7018:6;7005:20;6995:30;;7048:18;7040:6;7037:30;7034:117;;;7070:79;;:::i;:::-;7034:117;7184:4;7176:6;7172:17;7160:29;;7238:3;7230:4;7222:6;7218:17;7208:8;7204:32;7201:41;7198:128;;;7245:79;;:::i;:::-;7198:128;6764:568;;;;;:::o;7338:1287::-;7469:6;7477;7485;7493;7501;7509;7517;7566:3;7554:9;7545:7;7541:23;7537:33;7534:120;;;7573:79;;:::i;:::-;7534:120;7693:1;7718:53;7763:7;7754:6;7743:9;7739:22;7718:53;:::i;:::-;7708:63;;7664:117;7820:2;7846:53;7891:7;7882:6;7871:9;7867:22;7846:53;:::i;:::-;7836:63;;7791:118;7948:2;7974:53;8019:7;8010:6;7999:9;7995:22;7974:53;:::i;:::-;7964:63;;7919:118;8076:2;8102:53;8147:7;8138:6;8127:9;8123:22;8102:53;:::i;:::-;8092:63;;8047:118;8204:3;8231:53;8276:7;8267:6;8256:9;8252:22;8231:53;:::i;:::-;8221:63;;8175:119;8361:3;8350:9;8346:19;8333:33;8393:18;8385:6;8382:30;8379:117;;;8415:79;;:::i;:::-;8379:117;8528:80;8600:7;8591:6;8580:9;8576:22;8528:80;:::i;:::-;8510:98;;;;8304:314;7338:1287;;;;;;;;;;:::o;8631:77::-;8668:7;8697:5;8686:16;;8631:77;;;:::o;8714:122::-;8787:24;8805:5;8787:24;:::i;:::-;8780:5;8777:35;8767:63;;8826:1;8823;8816:12;8767:63;8714:122;:::o;8842:139::-;8888:5;8926:6;8913:20;8904:29;;8942:33;8969:5;8942:33;:::i;:::-;8842:139;;;;:::o;8987:911::-;9082:6;9090;9098;9106;9114;9163:3;9151:9;9142:7;9138:23;9134:33;9131:120;;;9170:79;;:::i;:::-;9131:120;9290:1;9315:53;9360:7;9351:6;9340:9;9336:22;9315:53;:::i;:::-;9305:63;;9261:117;9417:2;9443:53;9488:7;9479:6;9468:9;9464:22;9443:53;:::i;:::-;9433:63;;9388:118;9545:2;9571:53;9616:7;9607:6;9596:9;9592:22;9571:53;:::i;:::-;9561:63;;9516:118;9673:2;9699:53;9744:7;9735:6;9724:9;9720:22;9699:53;:::i;:::-;9689:63;;9644:118;9801:3;9828:53;9873:7;9864:6;9853:9;9849:22;9828:53;:::i;:::-;9818:63;;9772:119;8987:911;;;;;;;;:::o;9904:118::-;9991:24;10009:5;9991:24;:::i;:::-;9986:3;9979:37;9904:118;;:::o;10028:222::-;10121:4;10159:2;10148:9;10144:18;10136:26;;10172:71;10240:1;10229:9;10225:17;10216:6;10172:71;:::i;:::-;10028:222;;;;:::o;10256:329::-;10315:6;10364:2;10352:9;10343:7;10339:23;10335:32;10332:119;;;10370:79;;:::i;:::-;10332:119;10490:1;10515:53;10560:7;10551:6;10540:9;10536:22;10515:53;:::i;:::-;10505:63;;10461:117;10256:329;;;;:::o;10591:108::-;10668:24;10686:5;10668:24;:::i;:::-;10663:3;10656:37;10591:108;;:::o;10705:::-;10782:24;10800:5;10782:24;:::i;:::-;10777:3;10770:37;10705:108;;:::o;10819:::-;10896:24;10914:5;10896:24;:::i;:::-;10891:3;10884:37;10819:108;;:::o;10933:86::-;10968:7;11008:4;11001:5;10997:16;10986:27;;10933:86;;;:::o;11025:102::-;11098:22;11114:5;11098:22;:::i;:::-;11093:3;11086:35;11025:102;;:::o;11201:1060::-;11350:4;11345:3;11341:14;11442:4;11435:5;11431:16;11425:23;11461:63;11518:4;11513:3;11509:14;11495:12;11461:63;:::i;:::-;11365:169;11622:4;11615:5;11611:16;11605:23;11641:63;11698:4;11693:3;11689:14;11675:12;11641:63;:::i;:::-;11544:170;11806:4;11799:5;11795:16;11789:23;11825:63;11882:4;11877:3;11873:14;11859:12;11825:63;:::i;:::-;11724:174;11988:4;11981:5;11977:16;11971:23;12007:63;12064:4;12059:3;12055:14;12041:12;12007:63;:::i;:::-;11908:172;12166:4;12159:5;12155:16;12149:23;12185:59;12238:4;12233:3;12229:14;12215:12;12185:59;:::i;:::-;12090:164;11319:942;11201:1060;;:::o;12267:327::-;12412:4;12450:3;12439:9;12435:19;12427:27;;12464:123;12584:1;12573:9;12569:17;12560:6;12464:123;:::i;:::-;12267:327;;;;:::o;12600:114::-;12667:6;12701:5;12695:12;12685:22;;12600:114;;;:::o;12720:184::-;12819:11;12853:6;12848:3;12841:19;12893:4;12888:3;12884:14;12869:29;;12720:184;;;;:::o;12910:132::-;12977:4;13000:3;12992:11;;13030:4;13025:3;13021:14;13013:22;;12910:132;;;:::o;13048:179::-;13117:10;13138:46;13180:3;13172:6;13138:46;:::i;:::-;13216:4;13211:3;13207:14;13193:28;;13048:179;;;;:::o;13233:113::-;13303:4;13335;13330:3;13326:14;13318:22;;13233:113;;;:::o;13382:732::-;13501:3;13530:54;13578:5;13530:54;:::i;:::-;13600:86;13679:6;13674:3;13600:86;:::i;:::-;13593:93;;13710:56;13760:5;13710:56;:::i;:::-;13789:7;13820:1;13805:284;13830:6;13827:1;13824:13;13805:284;;;13906:6;13900:13;13933:63;13992:3;13977:13;13933:63;:::i;:::-;13926:70;;14019:60;14072:6;14019:60;:::i;:::-;14009:70;;13865:224;13852:1;13849;13845:9;13840:14;;13805:284;;;13809:14;14105:3;14098:10;;13506:608;;;13382:732;;;;:::o;14120:373::-;14263:4;14301:2;14290:9;14286:18;14278:26;;14350:9;14344:4;14340:20;14336:1;14325:9;14321:17;14314:47;14378:108;14481:4;14472:6;14378:108;:::i;:::-;14370:116;;14120:373;;;;:::o;14499:474::-;14567:6;14575;14624:2;14612:9;14603:7;14599:23;14595:32;14592:119;;;14630:79;;:::i;:::-;14592:119;14750:1;14775:53;14820:7;14811:6;14800:9;14796:22;14775:53;:::i;:::-;14765:63;;14721:117;14877:2;14903:53;14948:7;14939:6;14928:9;14924:22;14903:53;:::i;:::-;14893:63;;14848:118;14499:474;;;;;:::o;14979:109::-;15060:21;15075:5;15060:21;:::i;:::-;15055:3;15048:34;14979:109;;:::o;15094:210::-;15181:4;15219:2;15208:9;15204:18;15196:26;;15232:65;15294:1;15283:9;15279:17;15270:6;15232:65;:::i;:::-;15094:210;;;;:::o;15310:619::-;15387:6;15395;15403;15452:2;15440:9;15431:7;15427:23;15423:32;15420:119;;;15458:79;;:::i;:::-;15420:119;15578:1;15603:53;15648:7;15639:6;15628:9;15624:22;15603:53;:::i;:::-;15593:63;;15549:117;15705:2;15731:53;15776:7;15767:6;15756:9;15752:22;15731:53;:::i;:::-;15721:63;;15676:118;15833:2;15859:53;15904:7;15895:6;15884:9;15880:22;15859:53;:::i;:::-;15849:63;;15804:118;15310:619;;;;;:::o;15935:329::-;15994:6;16043:2;16031:9;16022:7;16018:23;16014:32;16011:119;;;16049:79;;:::i;:::-;16011:119;16169:1;16194:53;16239:7;16230:6;16219:9;16215:22;16194:53;:::i;:::-;16184:63;;16140:117;15935:329;;;;:::o;16270:118::-;16341:22;16357:5;16341:22;:::i;:::-;16334:5;16331:33;16321:61;;16378:1;16375;16368:12;16321:61;16270:118;:::o;16394:135::-;16438:5;16476:6;16463:20;16454:29;;16492:31;16517:5;16492:31;:::i;:::-;16394:135;;;;:::o;16535:470::-;16601:6;16609;16658:2;16646:9;16637:7;16633:23;16629:32;16626:119;;;16664:79;;:::i;:::-;16626:119;16784:1;16809:53;16854:7;16845:6;16834:9;16830:22;16809:53;:::i;:::-;16799:63;;16755:117;16911:2;16937:51;16980:7;16971:6;16960:9;16956:22;16937:51;:::i;:::-;16927:61;;16882:116;16535:470;;;;;:::o;17011:169::-;17095:11;17129:6;17124:3;17117:19;17169:4;17164:3;17160:14;17145:29;;17011:169;;;;:::o;17186:182::-;17326:34;17322:1;17314:6;17310:14;17303:58;17186:182;:::o;17374:366::-;17516:3;17537:67;17601:2;17596:3;17537:67;:::i;:::-;17530:74;;17613:93;17702:3;17613:93;:::i;:::-;17731:2;17726:3;17722:12;17715:19;;17374:366;;;:::o;17746:419::-;17912:4;17950:2;17939:9;17935:18;17927:26;;17999:9;17993:4;17989:20;17985:1;17974:9;17970:17;17963:47;18027:131;18153:4;18027:131;:::i;:::-;18019:139;;17746:419;;;:::o;18171:175::-;18311:27;18307:1;18299:6;18295:14;18288:51;18171:175;:::o;18352:366::-;18494:3;18515:67;18579:2;18574:3;18515:67;:::i;:::-;18508:74;;18591:93;18680:3;18591:93;:::i;:::-;18709:2;18704:3;18700:12;18693:19;;18352:366;;;:::o;18724:419::-;18890:4;18928:2;18917:9;18913:18;18905:26;;18977:9;18971:4;18967:20;18963:1;18952:9;18948:17;18941:47;19005:131;19131:4;19005:131;:::i;:::-;18997:139;;18724:419;;;:::o;19149:177::-;19289:29;19285:1;19277:6;19273:14;19266:53;19149:177;:::o;19332:366::-;19474:3;19495:67;19559:2;19554:3;19495:67;:::i;:::-;19488:74;;19571:93;19660:3;19571:93;:::i;:::-;19689:2;19684:3;19680:12;19673:19;;19332:366;;;:::o;19704:419::-;19870:4;19908:2;19897:9;19893:18;19885:26;;19957:9;19951:4;19947:20;19943:1;19932:9;19928:17;19921:47;19985:131;20111:4;19985:131;:::i;:::-;19977:139;;19704:419;;;:::o;20129:180::-;20177:77;20174:1;20167:88;20274:4;20271:1;20264:15;20298:4;20295:1;20288:15;20315:180;20363:77;20360:1;20353:88;20460:4;20457:1;20450:15;20484:4;20481:1;20474:15;20501:191;20541:4;20561:20;20579:1;20561:20;:::i;:::-;20556:25;;20595:20;20613:1;20595:20;:::i;:::-;20590:25;;20634:1;20631;20628:8;20625:34;;;20639:18;;:::i;:::-;20625:34;20684:1;20681;20677:9;20669:17;;20501:191;;;;:::o;20698:180::-;20746:77;20743:1;20736:88;20843:4;20840:1;20833:15;20867:4;20864:1;20857:15;20884:233;20923:3;20946:24;20964:5;20946:24;:::i;:::-;20937:33;;20992:66;20985:5;20982:77;20979:103;;;21062:18;;:::i;:::-;20979:103;21109:1;21102:5;21098:13;21091:20;;20884:233;;;:::o;21123:143::-;21180:5;21211:6;21205:13;21196:22;;21227:33;21254:5;21227:33;:::i;:::-;21123:143;;;;:::o;21272:351::-;21342:6;21391:2;21379:9;21370:7;21366:23;21362:32;21359:119;;;21397:79;;:::i;:::-;21359:119;21517:1;21542:64;21598:7;21589:6;21578:9;21574:22;21542:64;:::i;:::-;21532:74;;21488:128;21272:351;;;;:::o;21629:171::-;21769:23;21765:1;21757:6;21753:14;21746:47;21629:171;:::o;21806:366::-;21948:3;21969:67;22033:2;22028:3;21969:67;:::i;:::-;21962:74;;22045:93;22134:3;22045:93;:::i;:::-;22163:2;22158:3;22154:12;22147:19;;21806:366;;;:::o;22178:419::-;22344:4;22382:2;22371:9;22367:18;22359:26;;22431:9;22425:4;22421:20;22417:1;22406:9;22402:17;22395:47;22459:131;22585:4;22459:131;:::i;:::-;22451:139;;22178:419;;;:::o;22603:173::-;22743:25;22739:1;22731:6;22727:14;22720:49;22603:173;:::o;22782:366::-;22924:3;22945:67;23009:2;23004:3;22945:67;:::i;:::-;22938:74;;23021:93;23110:3;23021:93;:::i;:::-;23139:2;23134:3;23130:12;23123:19;;22782:366;;;:::o;23154:419::-;23320:4;23358:2;23347:9;23343:18;23335:26;;23407:9;23401:4;23397:20;23393:1;23382:9;23378:17;23371:47;23435:131;23561:4;23435:131;:::i;:::-;23427:139;;23154:419;;;:::o;23579:175::-;23719:27;23715:1;23707:6;23703:14;23696:51;23579:175;:::o;23760:366::-;23902:3;23923:67;23987:2;23982:3;23923:67;:::i;:::-;23916:74;;23999:93;24088:3;23999:93;:::i;:::-;24117:2;24112:3;24108:12;24101:19;;23760:366;;;:::o;24132:419::-;24298:4;24336:2;24325:9;24321:18;24313:26;;24385:9;24379:4;24375:20;24371:1;24360:9;24356:17;24349:47;24413:131;24539:4;24413:131;:::i;:::-;24405:139;;24132:419;;;:::o;24557:176::-;24697:28;24693:1;24685:6;24681:14;24674:52;24557:176;:::o;24739:366::-;24881:3;24902:67;24966:2;24961:3;24902:67;:::i;:::-;24895:74;;24978:93;25067:3;24978:93;:::i;:::-;25096:2;25091:3;25087:12;25080:19;;24739:366;;;:::o;25111:419::-;25277:4;25315:2;25304:9;25300:18;25292:26;;25364:9;25358:4;25354:20;25350:1;25339:9;25335:17;25328:47;25392:131;25518:4;25392:131;:::i;:::-;25384:139;;25111:419;;;:::o;25536:79::-;25575:7;25604:5;25593:16;;25536:79;;;:::o;25621:157::-;25726:45;25746:24;25764:5;25746:24;:::i;:::-;25726:45;:::i;:::-;25721:3;25714:58;25621:157;;:::o;25784:94::-;25817:8;25865:5;25861:2;25857:14;25836:35;;25784:94;;;:::o;25884:::-;25923:7;25952:20;25966:5;25952:20;:::i;:::-;25941:31;;25884:94;;;:::o;25984:100::-;26023:7;26052:26;26072:5;26052:26;:::i;:::-;26041:37;;25984:100;;;:::o;26090:157::-;26195:45;26215:24;26233:5;26215:24;:::i;:::-;26195:45;:::i;:::-;26190:3;26183:58;26090:157;;:::o;26253:679::-;26449:3;26464:75;26535:3;26526:6;26464:75;:::i;:::-;26564:2;26559:3;26555:12;26548:19;;26577:75;26648:3;26639:6;26577:75;:::i;:::-;26677:2;26672:3;26668:12;26661:19;;26690:75;26761:3;26752:6;26690:75;:::i;:::-;26790:2;26785:3;26781:12;26774:19;;26803:75;26874:3;26865:6;26803:75;:::i;:::-;26903:2;26898:3;26894:12;26887:19;;26923:3;26916:10;;26253:679;;;;;;;:::o;26938:173::-;27078:25;27074:1;27066:6;27062:14;27055:49;26938:173;:::o;27117:366::-;27259:3;27280:67;27344:2;27339:3;27280:67;:::i;:::-;27273:74;;27356:93;27445:3;27356:93;:::i;:::-;27474:2;27469:3;27465:12;27458:19;;27117:366;;;:::o;27489:419::-;27655:4;27693:2;27682:9;27678:18;27670:26;;27742:9;27736:4;27732:20;27728:1;27717:9;27713:17;27706:47;27770:131;27896:4;27770:131;:::i;:::-;27762:139;;27489:419;;;:::o;27914:168::-;28054:20;28050:1;28042:6;28038:14;28031:44;27914:168;:::o;28088:366::-;28230:3;28251:67;28315:2;28310:3;28251:67;:::i;:::-;28244:74;;28327:93;28416:3;28327:93;:::i;:::-;28445:2;28440:3;28436:12;28429:19;;28088:366;;;:::o;28460:419::-;28626:4;28664:2;28653:9;28649:18;28641:26;;28713:9;28707:4;28703:20;28699:1;28688:9;28684:17;28677:47;28741:131;28867:4;28741:131;:::i;:::-;28733:139;;28460:419;;;:::o;28885:178::-;29025:30;29021:1;29013:6;29009:14;29002:54;28885:178;:::o;29069:366::-;29211:3;29232:67;29296:2;29291:3;29232:67;:::i;:::-;29225:74;;29308:93;29397:3;29308:93;:::i;:::-;29426:2;29421:3;29417:12;29410:19;;29069:366;;;:::o;29441:419::-;29607:4;29645:2;29634:9;29630:18;29622:26;;29694:9;29688:4;29684:20;29680:1;29669:9;29665:17;29658:47;29722:131;29848:4;29722:131;:::i;:::-;29714:139;;29441:419;;;:::o;29866:147::-;29967:11;30004:3;29989:18;;29866:147;;;;:::o;30019:114::-;;:::o;30139:398::-;30298:3;30319:83;30400:1;30395:3;30319:83;:::i;:::-;30312:90;;30411:93;30500:3;30411:93;:::i;:::-;30529:1;30524:3;30520:11;30513:18;;30139:398;;;:::o;30543:379::-;30727:3;30749:147;30892:3;30749:147;:::i;:::-;30742:154;;30913:3;30906:10;;30543:379;;;:::o;30928:180::-;31068:32;31064:1;31056:6;31052:14;31045:56;30928:180;:::o;31114:366::-;31256:3;31277:67;31341:2;31336:3;31277:67;:::i;:::-;31270:74;;31353:93;31442:3;31353:93;:::i;:::-;31471:2;31466:3;31462:12;31455:19;;31114:366;;;:::o;31486:419::-;31652:4;31690:2;31679:9;31675:18;31667:26;;31739:9;31733:4;31729:20;31725:1;31714:9;31710:17;31703:47;31767:131;31893:4;31767:131;:::i;:::-;31759:139;;31486:419;;;:::o;31911:442::-;32060:4;32098:2;32087:9;32083:18;32075:26;;32111:71;32179:1;32168:9;32164:17;32155:6;32111:71;:::i;:::-;32192:72;32260:2;32249:9;32245:18;32236:6;32192:72;:::i;:::-;32274;32342:2;32331:9;32327:18;32318:6;32274:72;:::i;:::-;31911:442;;;;;;:::o;32359:137::-;32413:5;32444:6;32438:13;32429:22;;32460:30;32484:5;32460:30;:::i;:::-;32359:137;;;;:::o;32502:345::-;32569:6;32618:2;32606:9;32597:7;32593:23;32589:32;32586:119;;;32624:79;;:::i;:::-;32586:119;32744:1;32769:61;32822:7;32813:6;32802:9;32798:22;32769:61;:::i;:::-;32759:71;;32715:125;32502:345;;;;:::o;32853:332::-;32974:4;33012:2;33001:9;32997:18;32989:26;;33025:71;33093:1;33082:9;33078:17;33069:6;33025:71;:::i;:::-;33106:72;33174:2;33163:9;33159:18;33150:6;33106:72;:::i;:::-;32853:332;;;;;:::o;33191:553::-;33368:4;33406:3;33395:9;33391:19;33383:27;;33420:71;33488:1;33477:9;33473:17;33464:6;33420:71;:::i;:::-;33501:72;33569:2;33558:9;33554:18;33545:6;33501:72;:::i;:::-;33583;33651:2;33640:9;33636:18;33627:6;33583:72;:::i;:::-;33665;33733:2;33722:9;33718:18;33709:6;33665:72;:::i;:::-;33191:553;;;;;;;:::o;33750:231::-;33890:34;33886:1;33878:6;33874:14;33867:58;33959:14;33954:2;33946:6;33942:15;33935:39;33750:231;:::o;33987:366::-;34129:3;34150:67;34214:2;34209:3;34150:67;:::i;:::-;34143:74;;34226:93;34315:3;34226:93;:::i;:::-;34344:2;34339:3;34335:12;34328:19;;33987:366;;;:::o;34359:419::-;34525:4;34563:2;34552:9;34548:18;34540:26;;34612:9;34606:4;34602:20;34598:1;34587:9;34583:17;34576:47;34640:131;34766:4;34640:131;:::i;:::-;34632:139;;34359:419;;;:::o;34784:181::-;34924:33;34920:1;34912:6;34908:14;34901:57;34784:181;:::o;34971:366::-;35113:3;35134:67;35198:2;35193:3;35134:67;:::i;:::-;35127:74;;35210:93;35299:3;35210:93;:::i;:::-;35328:2;35323:3;35319:12;35312:19;;34971:366;;;:::o;35343:419::-;35509:4;35547:2;35536:9;35532:18;35524:26;;35596:9;35590:4;35586:20;35582:1;35571:9;35567:17;35560:47;35624:131;35750:4;35624:131;:::i;:::-;35616:139;;35343:419;;;:::o;35768:173::-;35908:25;35904:1;35896:6;35892:14;35885:49;35768:173;:::o;35947:366::-;36089:3;36110:67;36174:2;36169:3;36110:67;:::i;:::-;36103:74;;36186:93;36275:3;36186:93;:::i;:::-;36304:2;36299:3;36295:12;36288:19;;35947:366;;;:::o;36319:419::-;36485:4;36523:2;36512:9;36508:18;36500:26;;36572:9;36566:4;36562:20;36558:1;36547:9;36543:17;36536:47;36600:131;36726:4;36600:131;:::i;:::-;36592:139;;36319:419;;;:::o;36744:177::-;36884:29;36880:1;36872:6;36868:14;36861:53;36744:177;:::o;36927:366::-;37069:3;37090:67;37154:2;37149:3;37090:67;:::i;:::-;37083:74;;37166:93;37255:3;37166:93;:::i;:::-;37284:2;37279:3;37275:12;37268:19;;36927:366;;;:::o;37299:419::-;37465:4;37503:2;37492:9;37488:18;37480:26;;37552:9;37546:4;37542:20;37538:1;37527:9;37523:17;37516:47;37580:131;37706:4;37580:131;:::i;:::-;37572:139;;37299:419;;;:::o;37724:102::-;37766:8;37813:5;37810:1;37806:13;37785:34;;37724:102;;;:::o;37832:90::-;37882:7;37911:5;37900:16;;37832:90;;;:::o;37928:166::-;37997:5;38022:66;38053:34;38076:10;38053:34;:::i;:::-;38022:66;:::i;:::-;38013:75;;37928:166;;;:::o;38100:90::-;38150:7;38179:5;38168:16;;38100:90;;;:::o;38196:166::-;38265:5;38290:66;38321:34;38344:10;38321:34;:::i;:::-;38290:66;:::i;:::-;38281:75;;38196:166;;;:::o;38368:139::-;38418:7;38458:42;38451:5;38447:54;38436:65;;38368:139;;;:::o;38513:166::-;38582:5;38607:66;38638:34;38661:10;38638:34;:::i;:::-;38607:66;:::i;:::-;38598:75;;38513:166;;;:::o;38685:106::-;38729:8;38778:5;38773:3;38769:15;38748:36;;38685:106;;;:::o;38797:99::-;38845:7;38885:4;38878:5;38874:16;38863:27;;38797:99;;;:::o;38902:165::-;38970:5;38995:66;39024:36;39049:10;39024:36;:::i;:::-;38995:66;:::i;:::-;38986:75;;38902:165;;;:::o;39141:1435::-;39287:4;39282:3;39278:14;39318:1;39398:4;39391:5;39387:16;39381:23;39368:36;;39437:55;39482:9;39437:55;:::i;:::-;39505:63;39562:4;39557:3;39553:14;39539:12;39505:63;:::i;:::-;39329:249;39658:4;39651:5;39647:16;39641:23;39628:36;;39697:55;39742:9;39697:55;:::i;:::-;39765:63;39822:4;39817:3;39813:14;39799:12;39765:63;:::i;:::-;39588:250;39922:4;39915:5;39911:16;39905:23;39892:36;;39961:55;40006:9;39961:55;:::i;:::-;40029:63;40086:4;40081:3;40077:14;40063:12;40029:63;:::i;:::-;39848:254;40184:4;40177:5;40173:16;40167:23;40154:36;;40223:55;40268:9;40223:55;:::i;:::-;40291:63;40348:4;40343:3;40339:14;40325:12;40291:63;:::i;:::-;40112:252;40433:54;40477:9;40433:54;:::i;:::-;40500:59;40553:4;40548:3;40544:14;40530:12;40500:59;:::i;:::-;40374:195;39256:1320;;39141:1435;;:::o;40582:431::-;40752:4;40790:3;40779:9;40775:19;40767:27;;40804:71;40872:1;40861:9;40857:17;40848:6;40804:71;:::i;:::-;40885:121;41002:2;40991:9;40987:18;40978:6;40885:121;:::i;:::-;40582:431;;;;;:::o;41019:224::-;41159:34;41155:1;41147:6;41143:14;41136:58;41228:7;41223:2;41215:6;41211:15;41204:32;41019:224;:::o;41249:366::-;41391:3;41412:67;41476:2;41471:3;41412:67;:::i;:::-;41405:74;;41488:93;41577:3;41488:93;:::i;:::-;41606:2;41601:3;41597:12;41590:19;;41249:366;;;:::o;41621:419::-;41787:4;41825:2;41814:9;41810:18;41802:26;;41874:9;41868:4;41864:20;41860:1;41849:9;41845:17;41838:47;41902:131;42028:4;41902:131;:::i;:::-;41894:139;;41621:419;;;:::o;42046:85::-;42091:7;42120:5;42109:16;;42046:85;;;:::o;42137:60::-;42165:3;42186:5;42179:12;;42137:60;;;:::o;42203:158::-;42261:9;42294:61;42312:42;42321:32;42347:5;42321:32;:::i;:::-;42312:42;:::i;:::-;42294:61;:::i;:::-;42281:74;;42203:158;;;:::o;42367:147::-;42462:45;42501:5;42462:45;:::i;:::-;42457:3;42450:58;42367:147;;:::o;42520:238::-;42621:4;42659:2;42648:9;42644:18;42636:26;;42672:79;42748:1;42737:9;42733:17;42724:6;42672:79;:::i;:::-;42520:238;;;;:::o;42764:224::-;42904:34;42900:1;42892:6;42888:14;42881:58;42973:7;42968:2;42960:6;42956:15;42949:32;42764:224;:::o;42994:366::-;43136:3;43157:67;43221:2;43216:3;43157:67;:::i;:::-;43150:74;;43233:93;43322:3;43233:93;:::i;:::-;43351:2;43346:3;43342:12;43335:19;;42994:366;;;:::o;43366:419::-;43532:4;43570:2;43559:9;43555:18;43547:26;;43619:9;43613:4;43609:20;43605:1;43594:9;43590:17;43583:47;43647:131;43773:4;43647:131;:::i;:::-;43639:139;;43366:419;;;:::o;43791:178::-;43931:30;43927:1;43919:6;43915:14;43908:54;43791:178;:::o;43975:366::-;44117:3;44138:67;44202:2;44197:3;44138:67;:::i;:::-;44131:74;;44214:93;44303:3;44214:93;:::i;:::-;44332:2;44327:3;44323:12;44316:19;;43975:366;;;:::o;44347:419::-;44513:4;44551:2;44540:9;44536:18;44528:26;;44600:9;44594:4;44590:20;44586:1;44575:9;44571:17;44564:47;44628:131;44754:4;44628:131;:::i;:::-;44620:139;;44347:419;;;:::o;44772:225::-;44912:34;44908:1;44900:6;44896:14;44889:58;44981:8;44976:2;44968:6;44964:15;44957:33;44772:225;:::o;45003:366::-;45145:3;45166:67;45230:2;45225:3;45166:67;:::i;:::-;45159:74;;45242:93;45331:3;45242:93;:::i;:::-;45360:2;45355:3;45351:12;45344:19;;45003:366;;;:::o;45375:419::-;45541:4;45579:2;45568:9;45564:18;45556:26;;45628:9;45622:4;45618:20;45614:1;45603:9;45599:17;45592:47;45656:131;45782:4;45656:131;:::i;:::-;45648:139;;45375:419;;;:::o;45800:112::-;45883:22;45899:5;45883:22;:::i;:::-;45878:3;45871:35;45800:112;;:::o;45918:324::-;46035:4;46073:2;46062:9;46058:18;46050:26;;46086:71;46154:1;46143:9;46139:17;46130:6;46086:71;:::i;:::-;46167:68;46231:2;46220:9;46216:18;46207:6;46167:68;:::i;:::-;45918:324;;;;;:::o;46248:79::-;46287:7;46316:5;46305:16;;46248:79;;;:::o;46333:157::-;46438:45;46458:24;46476:5;46458:24;:::i;:::-;46438:45;:::i;:::-;46433:3;46426:58;46333:157;;:::o;46496:397::-;46636:3;46651:75;46722:3;46713:6;46651:75;:::i;:::-;46751:2;46746:3;46742:12;46735:19;;46764:75;46835:3;46826:6;46764:75;:::i;:::-;46864:2;46859:3;46855:12;46848:19;;46884:3;46877:10;;46496:397;;;;;:::o

Swarm Source

ipfs://fa13a3c1b51345bc9dec8c75e27bc82350ec1c51045ed8fcb8c06e55265b4a73

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.