Contract 0x6f9f3fD12ccabC9ba0f0e268Bb420eA56c6a1C2D

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x54fdd53cac37e4a3fdad6da2feb3aecf272b89f683ad3f15f1928992b01ecff7Initialize127410552022-03-29 19:35:5152 days 6 hrs ago0x209484169c126f69db7c83df8d7cd0cb3db22519 IN  0x6f9f3fd12ccabc9ba0f0e268bb420ea56c6a1c2d0 AVAX0.04129335225
0x4f2db5697469ac4102cd60765c8ca1c1d28450b4a74499426db5f07a3f98f7080x60806040127409102022-03-29 19:30:4952 days 6 hrs ago0x209484169c126f69db7c83df8d7cd0cb3db22519 IN  Create: AvacashTrees0 AVAX0.612085725225
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AvacashTrees

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at snowtrace.io on 2022-04-13
*/

// AvacashTrees.sol Flattened
/*
Avacash.Finance: Privacy-focused Investments in Avalanche
Visit https://avacash.finance
Check Audits in https://docs.avacash.finance/

V.1.1


█████╗ ██╗   ██╗ █████╗  ██████╗ █████╗ ███████╗██╗  ██╗
██╔══██╗██║   ██║██╔══██╗██╔════╝██╔══██╗██╔════╝██║  ██║
███████║██║   ██║███████║██║     ███████║███████╗███████║
██╔══██║╚██╗ ██╔╝██╔══██║██║     ██╔══██║╚════██║██╔══██║
██║  ██║ ╚████╔╝ ██║  ██║╚██████╗██║  ██║███████║██║  ██║
╚═╝  ╚═╝  ╚═══╝  ╚═╝  ╚═╝ ╚═════╝╚═╝  ╚═╝╚══════╝╚═╝  ╚═╝

███████╗██╗███╗   ██╗ █████╗ ███╗   ██╗ ██████╗███████╗
██╔════╝██║████╗  ██║██╔══██╗████╗  ██║██╔════╝██╔════╝
█████╗  ██║██╔██╗ ██║███████║██╔██╗ ██║██║     █████╗
██╔══╝  ██║██║╚██╗██║██╔══██║██║╚██╗██║██║     ██╔══╝
██║     ██║██║ ╚████║██║  ██║██║ ╚████║╚██████╗███████╗
╚═╝     ╚═╝╚═╝  ╚═══╝╚═╝  ╚═╝╚═╝  ╚═══╝ ╚═════╝╚══════╝

*/
/*
Original code extracted from:
https://etherscan.io/address/0x200a79068d8141924b511bc78cb55dca89cf5c2e#code
License: MIT
See more in: https://etherscan.io/contract-license-types and
https://github.com/github/choosealicense.com/blob/gh-pages/_licenses/mit.txt
*/
// SPDX-License-Identifier: MIT


// File 4 of 4 : Initializable.sol
//

pragma solidity >=0.4.24 <0.7.0;


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

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

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

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

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

    _;

    if (isTopLevelCall) {
      initializing = false;
    }
  }

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

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

// File 3 of 4 : IBatchTreeUpdateVerifier.sol
//

pragma solidity ^0.6.0;

interface IBatchTreeUpdateVerifier {
  function verifyProof(bytes calldata proof, uint256[1] calldata input) external view returns (bool);
}

// File 2 of 4 : ITornadoTreesV1.sol
//

pragma solidity ^0.6.0;

interface ITornadoTreesV1 {
  function lastProcessedDepositLeaf() external view returns (uint256);

  function lastProcessedWithdrawalLeaf() external view returns (uint256);

  function depositRoot() external view returns (bytes32);

  function withdrawalRoot() external view returns (bytes32);

  function deposits(uint256 i) external view returns (bytes32);

  function withdrawals(uint256 i) external view returns (bytes32);

  function registerDeposit(address instance, bytes32 commitment) external;

  function registerWithdrawal(address instance, bytes32 nullifier) external;
}

// File 1 of 4 : TornadoTrees.sol
// https://tornado.cash
/*
* d888888P                                           dP              a88888b.                   dP
*    88                                              88             d8'   `88                   88
*    88    .d8888b. 88d888b. 88d888b. .d8888b. .d888b88 .d8888b.    88        .d8888b. .d8888b. 88d888b.
*    88    88'  `88 88'  `88 88'  `88 88'  `88 88'  `88 88'  `88    88        88'  `88 Y8ooooo. 88'  `88
*    88    88.  .88 88       88    88 88.  .88 88.  .88 88.  .88 dP Y8.   .88 88.  .88       88 88    88
*    dP    `88888P' dP       dP    dP `88888P8 `88888P8 `88888P' 88  Y88888P' `88888P8 `88888P' dP    dP
* ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
*/

//

pragma solidity ^0.6.0;
pragma experimental ABIEncoderV2;

//import "./interfaces/ITornadoTreesV1.sol";
//import "./interfaces/IBatchTreeUpdateVerifier.sol";
//import "@openzeppelin/upgrades-core/contracts/Initializable.sol";

/// @dev This contract holds a merkle tree of all tornado cash deposit and withdrawal events
contract AvacashTrees is Initializable {
  address public governance;
  bytes32 public depositRoot;
  bytes32 public previousDepositRoot;
  bytes32 public withdrawalRoot;
  bytes32 public previousWithdrawalRoot;
  address public tornadoProxy;
  IBatchTreeUpdateVerifier public treeUpdateVerifier;
  ITornadoTreesV1 public  tornadoTreesV1;

  uint256 public constant CHUNK_TREE_HEIGHT = 8;
  uint256 public constant CHUNK_SIZE = 2**CHUNK_TREE_HEIGHT;
  uint256 public constant ITEM_SIZE = 32 + 20 + 4;
  uint256 public constant BYTES_SIZE = 32 + 32 + 4 + CHUNK_SIZE * ITEM_SIZE;
  uint256 public constant SNARK_FIELD = 21888242871839275222246405745257275088548364400416034343698204186575808495617;

  mapping(uint256 => bytes32) public deposits;
  uint256 public depositsLength;
  uint256 public lastProcessedDepositLeaf;
  uint256 public  depositsV1Length;

  mapping(uint256 => bytes32) public withdrawals;
  uint256 public withdrawalsLength;
  uint256 public lastProcessedWithdrawalLeaf;
  uint256 public  withdrawalsV1Length;

  event DepositData(address instance, bytes32 indexed hash, uint256 block, uint256 index);
  event WithdrawalData(address instance, bytes32 indexed hash, uint256 block, uint256 index);
  event VerifierUpdated(address newVerifier);
  event ProxyUpdated(address newProxy);

  struct TreeLeaf {
    bytes32 hash;
    address instance;
    uint32 block;
  }

  modifier onlyTornadoProxy {
    require(msg.sender == tornadoProxy, "Not authorized");
    _;
  }

  modifier onlyGovernance() {
    require(msg.sender == governance, "Only governance can perform this action");
    _;
  }

  /* struct SearchParams {
    uint256 depositsFrom;
    uint256 depositsStep;
    uint256 withdrawalsFrom;
    uint256 withdrawalsStep;
  } */

  constructor(
    /* address _governance, */
    ITornadoTreesV1 _tornadoTreesV1
    /* SearchParams memory _searchParams */
  ) public {
    /* governance = _governance; */
    governance = msg.sender;
    tornadoTreesV1 = _tornadoTreesV1;

    /* depositsV1Length = findArrayLength(
      _tornadoTreesV1,
      "deposits(uint256)",
      _searchParams.depositsFrom,
      _searchParams.depositsStep
    ); */
    depositsV1Length = 0;
    /* withdrawalsV1Length = findArrayLength(
      _tornadoTreesV1,
      "withdrawals(uint256)",
      _searchParams.withdrawalsFrom,
      _searchParams.withdrawalsStep
    );
    */
    withdrawalsV1Length=0;
  }

  event NewGovernance(address newGovernance);

  function setNewGovernance(address _newGovernance) external onlyGovernance {
    governance = _newGovernance;
    emit NewGovernance(governance);
  }

  function initialize(address _tornadoProxy, IBatchTreeUpdateVerifier _treeUpdateVerifier) public initializer onlyGovernance {
    tornadoProxy = _tornadoProxy;
    treeUpdateVerifier = _treeUpdateVerifier;

    depositRoot = tornadoTreesV1.depositRoot();
    uint256 lastDepositLeaf = tornadoTreesV1.lastProcessedDepositLeaf();
    require(lastDepositLeaf % CHUNK_SIZE == 0, "Incorrect TornadoTrees state");
    lastProcessedDepositLeaf = lastDepositLeaf;
    depositsLength = depositsV1Length;

    withdrawalRoot = tornadoTreesV1.withdrawalRoot();
    uint256 lastWithdrawalLeaf = tornadoTreesV1.lastProcessedWithdrawalLeaf();
    require(lastWithdrawalLeaf % CHUNK_SIZE == 0, "Incorrect TornadoTrees state");
    lastProcessedWithdrawalLeaf = lastWithdrawalLeaf;
    withdrawalsLength = withdrawalsV1Length;
  }

  /// @dev Queue a new deposit data to be inserted into a merkle tree
  function registerDeposit(address _instance, bytes32 _commitment) public onlyTornadoProxy {
    uint256 _depositsLength = depositsLength;
    deposits[_depositsLength] = keccak256(abi.encode(_instance, _commitment, blockNumber()));
    emit DepositData(_instance, _commitment, blockNumber(), _depositsLength);
    depositsLength = _depositsLength + 1;
  }

  /// @dev Queue a new withdrawal data to be inserted into a merkle tree
  function registerWithdrawal(address _instance, bytes32 _nullifierHash) public onlyTornadoProxy {
    uint256 _withdrawalsLength = withdrawalsLength;
    withdrawals[_withdrawalsLength] = keccak256(abi.encode(_instance, _nullifierHash, blockNumber()));
    emit WithdrawalData(_instance, _nullifierHash, blockNumber(), _withdrawalsLength);
    withdrawalsLength = _withdrawalsLength + 1;
  }

  /// @dev Insert a full batch of queued deposits into a merkle tree
  /// @param _proof A snark proof that elements were inserted correctly
  /// @param _argsHash A hash of snark inputs
  /// @param _argsHash Current merkle tree root
  /// @param _newRoot Updated merkle tree root
  /// @param _pathIndices Merkle path to inserted batch
  /// @param _events A batch of inserted events (leaves)
  function updateDepositTree(
    bytes calldata _proof,
    bytes32 _argsHash,
    bytes32 _currentRoot,
    bytes32 _newRoot,
    uint32 _pathIndices,
    TreeLeaf[CHUNK_SIZE] calldata _events
  ) public {
    uint256 offset = lastProcessedDepositLeaf;
    require(_currentRoot == depositRoot, "Proposed deposit root is invalid");
    require(_pathIndices == offset >> CHUNK_TREE_HEIGHT, "Incorrect deposit insert index");

    bytes memory data = new bytes(BYTES_SIZE);
    assembly {
      mstore(add(data, 0x44), _pathIndices)
      mstore(add(data, 0x40), _newRoot)
      mstore(add(data, 0x20), _currentRoot)
    }
    for (uint256 i = 0; i < CHUNK_SIZE; i++) {
      (bytes32 hash, address instance, uint32 blockNumber) = (_events[i].hash, _events[i].instance, _events[i].block);
      bytes32 leafHash = keccak256(abi.encode(instance, hash, blockNumber));
      bytes32 deposit = offset + i >= depositsV1Length ? deposits[offset + i] : tornadoTreesV1.deposits(offset + i);
      require(leafHash == deposit, "Incorrect deposit");
      assembly {
        let itemOffset := add(data, mul(ITEM_SIZE, i))
        mstore(add(itemOffset, 0x7c), blockNumber)
        mstore(add(itemOffset, 0x78), instance)
        mstore(add(itemOffset, 0x64), hash)
      }
      if (offset + i >= depositsV1Length) {
        delete deposits[offset + i];
      } else {
        emit DepositData(instance, hash, blockNumber, offset + i);
      }
    }

    uint256 argsHash = uint256(sha256(data)) % SNARK_FIELD;
    require(argsHash == uint256(_argsHash), "Invalid args hash");
    require(treeUpdateVerifier.verifyProof(_proof, [argsHash]), "Invalid deposit tree update proof");

    previousDepositRoot = _currentRoot;
    depositRoot = _newRoot;
    lastProcessedDepositLeaf = offset + CHUNK_SIZE;
  }

  /// @dev Insert a full batch of queued withdrawals into a merkle tree
  /// @param _proof A snark proof that elements were inserted correctly
  /// @param _argsHash A hash of snark inputs
  /// @param _argsHash Current merkle tree root
  /// @param _newRoot Updated merkle tree root
  /// @param _pathIndices Merkle path to inserted batch
  /// @param _events A batch of inserted events (leaves)
  function updateWithdrawalTree(
    bytes calldata _proof,
    bytes32 _argsHash,
    bytes32 _currentRoot,
    bytes32 _newRoot,
    uint32 _pathIndices,
    TreeLeaf[CHUNK_SIZE] calldata _events
  ) public {
    uint256 offset = lastProcessedWithdrawalLeaf;
    require(_currentRoot == withdrawalRoot, "Proposed withdrawal root is invalid");
    require(_pathIndices == offset >> CHUNK_TREE_HEIGHT, "Incorrect withdrawal insert index");

    bytes memory data = new bytes(BYTES_SIZE);
    assembly {
      mstore(add(data, 0x44), _pathIndices)
      mstore(add(data, 0x40), _newRoot)
      mstore(add(data, 0x20), _currentRoot)
    }
    for (uint256 i = 0; i < CHUNK_SIZE; i++) {
      (bytes32 hash, address instance, uint32 blockNumber) = (_events[i].hash, _events[i].instance, _events[i].block);
      bytes32 leafHash = keccak256(abi.encode(instance, hash, blockNumber));
      bytes32 withdrawal = offset + i >= withdrawalsV1Length ? withdrawals[offset + i] : tornadoTreesV1.withdrawals(offset + i);
      require(leafHash == withdrawal, "Incorrect withdrawal");
      assembly {
        let itemOffset := add(data, mul(ITEM_SIZE, i))
        mstore(add(itemOffset, 0x7c), blockNumber)
        mstore(add(itemOffset, 0x78), instance)
        mstore(add(itemOffset, 0x64), hash)
      }
      if (offset + i >= withdrawalsV1Length) {
        delete withdrawals[offset + i];
      } else {
        emit WithdrawalData(instance, hash, blockNumber, offset + i);
      }
    }

    uint256 argsHash = uint256(sha256(data)) % SNARK_FIELD;
    require(argsHash == uint256(_argsHash), "Invalid args hash");
    require(treeUpdateVerifier.verifyProof(_proof, [argsHash]), "Invalid withdrawal tree update proof");

    previousWithdrawalRoot = _currentRoot;
    withdrawalRoot = _newRoot;
    lastProcessedWithdrawalLeaf = offset + CHUNK_SIZE;
  }

  function validateRoots(bytes32 _depositRoot, bytes32 _withdrawalRoot) public view {
    require(_depositRoot == depositRoot || _depositRoot == previousDepositRoot, "Incorrect deposit tree root");
    require(_withdrawalRoot == withdrawalRoot || _withdrawalRoot == previousWithdrawalRoot, "Incorrect withdrawal tree root");
  }

  /// @dev There is no array length getter for deposit and withdrawal arrays
  /// in the previous contract, so we have to find them length manually.
  /// Used only during deployment
  /* function findArrayLength(
    ITornadoTreesV1 _tornadoTreesV1,
    string memory _type,
    uint256 _from, // most likely array length after the proposal has passed
    uint256 _step // optimal step size to find first match, approximately equals dispersion
  ) internal view virtual returns (uint256) {
    // Find the segment with correct array length
    bool direction = elementExists(_tornadoTreesV1, _type, _from);
    do {
      _from = direction ? _from + _step : _from - _step;
    } while (direction == elementExists(_tornadoTreesV1, _type, _from));
    uint256 high = direction ? _from : _from + _step;
    uint256 low = direction ? _from - _step : _from;
    uint256 mid = (high + low) / 2;

    // Perform a binary search in this segment
    while (low < mid) {
      if (elementExists(_tornadoTreesV1, _type, mid)) {
        low = mid;
      } else {
        high = mid;
      }
      mid = (low + high) / 2;
    }
    return mid + 1;
  } */

  function elementExists(
    ITornadoTreesV1 _tornadoTreesV1,
    string memory _type,
    uint256 index
  ) public view returns (bool success) {
    // Try to get the element. If it succeeds the array length is higher, it it reverts the length is equal or lower
    (success, ) = address(_tornadoTreesV1).staticcall{ gas: 2500 }(abi.encodeWithSignature(_type, index));
  }

  function setTornadoProxyContract(address _tornadoProxy) external onlyGovernance {
    tornadoProxy = _tornadoProxy;
    emit ProxyUpdated(_tornadoProxy);
  }



  function setVerifierContract(IBatchTreeUpdateVerifier _treeUpdateVerifier) external onlyGovernance {
    treeUpdateVerifier = _treeUpdateVerifier;
    emit VerifierUpdated(address(_treeUpdateVerifier));
  }

  function blockNumber() public view virtual returns (uint256) {
    return block.number;
  }
}

Contract ABI

[{"inputs":[{"internalType":"contract ITornadoTreesV1","name":"_tornadoTreesV1","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"instance","type":"address"},{"indexed":true,"internalType":"bytes32","name":"hash","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"block","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"}],"name":"DepositData","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newGovernance","type":"address"}],"name":"NewGovernance","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newProxy","type":"address"}],"name":"ProxyUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newVerifier","type":"address"}],"name":"VerifierUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"instance","type":"address"},{"indexed":true,"internalType":"bytes32","name":"hash","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"block","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"}],"name":"WithdrawalData","type":"event"},{"inputs":[],"name":"BYTES_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CHUNK_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CHUNK_TREE_HEIGHT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ITEM_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SNARK_FIELD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"depositRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"deposits","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"depositsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"depositsV1Length","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ITornadoTreesV1","name":"_tornadoTreesV1","type":"address"},{"internalType":"string","name":"_type","type":"string"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"elementExists","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tornadoProxy","type":"address"},{"internalType":"contract IBatchTreeUpdateVerifier","name":"_treeUpdateVerifier","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastProcessedDepositLeaf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastProcessedWithdrawalLeaf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"previousDepositRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"previousWithdrawalRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_instance","type":"address"},{"internalType":"bytes32","name":"_commitment","type":"bytes32"}],"name":"registerDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_instance","type":"address"},{"internalType":"bytes32","name":"_nullifierHash","type":"bytes32"}],"name":"registerWithdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newGovernance","type":"address"}],"name":"setNewGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tornadoProxy","type":"address"}],"name":"setTornadoProxyContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IBatchTreeUpdateVerifier","name":"_treeUpdateVerifier","type":"address"}],"name":"setVerifierContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tornadoProxy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tornadoTreesV1","outputs":[{"internalType":"contract ITornadoTreesV1","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treeUpdateVerifier","outputs":[{"internalType":"contract IBatchTreeUpdateVerifier","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_proof","type":"bytes"},{"internalType":"bytes32","name":"_argsHash","type":"bytes32"},{"internalType":"bytes32","name":"_currentRoot","type":"bytes32"},{"internalType":"bytes32","name":"_newRoot","type":"bytes32"},{"internalType":"uint32","name":"_pathIndices","type":"uint32"},{"components":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"address","name":"instance","type":"address"},{"internalType":"uint32","name":"block","type":"uint32"}],"internalType":"struct AvacashTrees.TreeLeaf[256]","name":"_events","type":"tuple[256]"}],"name":"updateDepositTree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_proof","type":"bytes"},{"internalType":"bytes32","name":"_argsHash","type":"bytes32"},{"internalType":"bytes32","name":"_currentRoot","type":"bytes32"},{"internalType":"bytes32","name":"_newRoot","type":"bytes32"},{"internalType":"uint32","name":"_pathIndices","type":"uint32"},{"components":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"address","name":"instance","type":"address"},{"internalType":"uint32","name":"block","type":"uint32"}],"internalType":"struct AvacashTrees.TreeLeaf[256]","name":"_events","type":"tuple[256]"}],"name":"updateWithdrawalTree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_depositRoot","type":"bytes32"},{"internalType":"bytes32","name":"_withdrawalRoot","type":"bytes32"}],"name":"validateRoots","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawalRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"withdrawals","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawalsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawalsV1Length","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b50604051620030f8380380620030f88339818101604052810190620000379190620000e7565b33603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080603a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000603e8190555060006042819055505062000175565b600081519050620000e1816200015b565b92915050565b600060208284031215620000fa57600080fd5b60006200010a84828501620000d0565b91505092915050565b600062000120826200013b565b9050919050565b6000620001348262000113565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b620001668162000127565b81146200017257600080fd5b50565b612f7380620001856000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80638955fe8a1161010f578063c11b9681116100a2578063e7d460bb11610071578063e7d460bb14610563578063e91e13a91461057f578063f154240a1461059d578063fe8137e2146105bb576101f0565b8063c11b9681146104f1578063c34c78821461050d578063c6758d6b1461052b578063ca3628dc14610547576101f0565b8063adc13d3c116100de578063adc13d3c14610467578063b02c43d014610485578063b3a4184b146104b5578063b4a6359e146104d3576101f0565b80638955fe8a146103f35780639e2fc73b14610411578063a25da83c1461042d578063a2b28fe614610449576101f0565b80634929afc9116101875780635cc07076116101565780635cc0707614610357578063710daf4d14610387578063715d3a43146103a55780638895b8ef146103d5576101f0565b80634929afc9146102e15780634a20de58146102fd57806357e871e71461031b5780635aa6e67514610339576101f0565b8063218df2e3116101c3578063218df2e31461026b5780632fb7749d1461028957806344c8db39146102a7578063485cc955146102c5576101f0565b806301ae1920146101f557806302709f67146102115780631c100fa61461022f578063206eb63c1461024d575b600080fd5b61020f600480360381019061020a9190611ff5565b6105d9565b005b61021961070b565b6040516102269190612c7a565b60405180910390f35b610237610711565b6040516102449190612905565b60405180910390f35b610255610737565b6040516102629190612a7f565b60405180910390f35b61027361075d565b6040516102809190612c7a565b60405180910390f35b610291610781565b60405161029e9190612c7a565b60405180910390f35b6102af610787565b6040516102bc9190612c7a565b60405180910390f35b6102df60048036038101906102da9190612031565b61078d565b005b6102fb60048036038101906102f691906120fb565b610cdf565b005b61030561121c565b6040516103129190612a64565b60405180910390f35b610323611242565b6040516103309190612c7a565b60405180910390f35b61034161124a565b60405161034e9190612905565b60405180910390f35b610371600480360381019061036c9190612233565b611270565b60405161037e9190612a17565b60405180910390f35b61038f611288565b60405161039c9190612c7a565b60405180910390f35b6103bf60048036038101906103ba91906121cc565b61128d565b6040516103cc91906129fc565b60405180910390f35b6103dd611388565b6040516103ea9190612c7a565b60405180910390f35b6103fb61138d565b6040516104089190612a17565b60405180910390f35b61042b60048036038101906104269190611fcc565b611393565b005b610447600480360381019061044291906121a3565b61149e565b005b6104516115a9565b60405161045e9190612c7a565b60405180910390f35b61046f6115af565b60405161047c9190612c7a565b60405180910390f35b61049f600480360381019061049a9190612233565b6115bd565b6040516104ac9190612a17565b60405180910390f35b6104bd6115d5565b6040516104ca9190612a17565b60405180910390f35b6104db6115db565b6040516104e89190612c7a565b60405180910390f35b61050b600480360381019061050691906120bf565b6115e1565b005b610515611685565b6040516105229190612a17565b60405180910390f35b61054560048036038101906105409190611ff5565b61168b565b005b610561600480360381019061055c91906120fb565b6117bd565b005b61057d60048036038101906105789190611fcc565b611cfa565b005b610587611e27565b6040516105949190612c7a565b60405180910390f35b6105a5611e2f565b6040516105b29190612c7a565b60405180910390f35b6105c3611e35565b6040516105d09190612a17565b60405180910390f35b603860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610669576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066090612c5a565b60405180910390fd5b60006040549050828261067a611242565b60405160200161068c93929190612920565b60405160208183030381529060405280519060200120603f600083815260200190815260200160002081905550817f5d3e96213d4520bdc95a25d628a39768f1a90a2b939894355479596910d179df846106e4611242565b846040516106f49392919061298e565b60405180910390a260018101604081905550505050565b60405481565b603860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b603a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181565b60425481565b603e5481565b600060019054906101000a900460ff16806107ac57506107ab611e3b565b5b806107c2575060008054906101000a900460ff16155b610801576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f890612b9a565b60405180910390fd5b60008060019054906101000a900460ff161590508015610851576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d890612b3a565b60405180910390fd5b82603860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081603960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550603a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638955fe8a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109cb57600080fd5b505afa1580156109df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a039190612096565b6034819055506000603a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4a6359e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a7357600080fd5b505afa158015610a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aab919061225c565b90506000600860020a8281610abc57fe5b0614610afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af490612c3a565b60405180910390fd5b80603d81905550603e54603c81905550603a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c34c78826040518163ffffffff1660e01b815260040160206040518083038186803b158015610b7557600080fd5b505afa158015610b89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bad9190612096565b6036819055506000603a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a2b28fe66040518163ffffffff1660e01b815260040160206040518083038186803b158015610c1d57600080fd5b505afa158015610c31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c55919061225c565b90506000600860020a8281610c6657fe5b0614610ca7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9e90612c3a565b60405180910390fd5b8060418190555060425460408190555050508015610cda5760008060016101000a81548160ff0219169083151502179055505b505050565b6000603d5490506034548514610d2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2190612bfa565b60405180910390fd5b600881901c8363ffffffff1614610d76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6d90612c1a565b60405180910390fd5b60606038600860020a0260440167ffffffffffffffff81118015610d9957600080fd5b506040519080825280601f01601f191660200182016040528015610dcc5781602001600182028036833780820191505090505b50905083604482015284604082015285602082015260005b600860020a81101561103357600080600086846101008110610e0257fe5b606002016000013587856101008110610e1757fe5b606002016020016020810190610e2d9190611fcc565b88866101008110610e3a57fe5b606002016040016020810190610e509190612285565b9250925092506000828483604051602001610e6d93929190612957565b6040516020818303038152906040528051906020012090506000603e548689011015610f4557603a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b02c43d0878a016040518263ffffffff1660e01b8152600401610ef09190612c7a565b60206040518083038186803b158015610f0857600080fd5b505afa158015610f1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f409190612096565b610f5c565b603b6000878a018152602001908152602001600020545b9050808214610fa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9790612b1a565b60405180910390fd5b85603802870183607c82015284607882015285606482015250603e5486890110610fe257603b6000878a01815260200190815260200160002060009055611021565b847fc711bd1d2cdd9c8978324cc83ce34c17f6ada898f8273efeb9585c1312d4ef678585898c01604051611018939291906129c5565b60405180910390a25b50505050508080600101915050610de4565b5060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160028360405161106791906128d7565b602060405180830381855afa158015611084573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906110a79190612096565b60001c816110b157fe5b0690508760001c81146110f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f090612a9a565b60405180910390fd5b603960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d8f8a5c8b8b6040518060200160405280868152506040518463ffffffff1660e01b815260040161116693929190612a32565b60206040518083038186803b15801561117e57600080fd5b505afa158015611192573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b6919061206d565b6111f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ec90612aba565b60405180910390fd5b8660358190555085603481905550600860020a8301603d8190555050505050505050505050565b603960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600043905090565b603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b603f6020528060005260406000206000915090505481565b603881565b60008373ffffffffffffffffffffffffffffffffffffffff166109c484846040516024016112bb9190612c7a565b604051602081830303815290604052906040516112d891906128ee565b60405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161133a91906128d7565b6000604051808303818686fa925050503d8060008114611376576040519150601f19603f3d011682016040523d82523d6000602084013e61137b565b606091505b5050809150509392505050565b600881565b60345481565b603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141a90612b3a565b60405180910390fd5b80603860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507ffc80377ca9c49cc11ae6982f390a42db976d5530af7c43889264b13fbbd7c57e816040516114939190612905565b60405180910390a150565b603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461152e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152590612b3a565b60405180910390fd5b80603960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd24015cc99cc1700cafca3042840a1d8ac1e3964fd2e0e37ea29c654056ee3278160405161159e9190612905565b60405180910390a150565b60415481565b6038600860020a0260440181565b603b6020528060005260406000206000915090505481565b60375481565b603d5481565b6034548214806115f2575060355482145b611631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162890612b7a565b60405180910390fd5b603654811480611642575060375481145b611681576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167890612b5a565b60405180910390fd5b5050565b60365481565b603860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461171b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171290612c5a565b60405180910390fd5b6000603c549050828261172c611242565b60405160200161173e93929190612920565b60405160208183030381529060405280519060200120603b600083815260200190815260200160002081905550817fc711bd1d2cdd9c8978324cc83ce34c17f6ada898f8273efeb9585c1312d4ef6784611796611242565b846040516117a69392919061298e565b60405180910390a260018101603c81905550505050565b600060415490506036548514611808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ff90612bba565b60405180910390fd5b600881901c8363ffffffff1614611854576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184b90612ada565b60405180910390fd5b60606038600860020a0260440167ffffffffffffffff8111801561187757600080fd5b506040519080825280601f01601f1916602001820160405280156118aa5781602001600182028036833780820191505090505b50905083604482015284604082015285602082015260005b600860020a811015611b11576000806000868461010081106118e057fe5b6060020160000135878561010081106118f557fe5b60600201602001602081019061190b9190611fcc565b8886610100811061191857fe5b60600201604001602081019061192e9190612285565b925092509250600082848360405160200161194b93929190612957565b60405160208183030381529060405280519060200120905060006042548689011015611a2357603a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635cc07076878a016040518263ffffffff1660e01b81526004016119ce9190612c7a565b60206040518083038186803b1580156119e657600080fd5b505afa1580156119fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1e9190612096565b611a3a565b603f6000878a018152602001908152602001600020545b9050808214611a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7590612bda565b60405180910390fd5b85603802870183607c8201528460788201528560648201525060425486890110611ac057603f6000878a01815260200190815260200160002060009055611aff565b847f5d3e96213d4520bdc95a25d628a39768f1a90a2b939894355479596910d179df8585898c01604051611af6939291906129c5565b60405180910390a25b505050505080806001019150506118c2565b5060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600283604051611b4591906128d7565b602060405180830381855afa158015611b62573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190611b859190612096565b60001c81611b8f57fe5b0690508760001c8114611bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bce90612a9a565b60405180910390fd5b603960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d8f8a5c8b8b6040518060200160405280868152506040518463ffffffff1660e01b8152600401611c4493929190612a32565b60206040518083038186803b158015611c5c57600080fd5b505afa158015611c70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c94919061206d565b611cd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cca90612afa565b60405180910390fd5b8660378190555085603681905550600860020a830160418190555050505050505050505050565b603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8190612b3a565b60405180910390fd5b80603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4f386975ea1c2f7cf1845b08bee00626fbb624ecad16254d63d9bb9ba86526de603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051611e1c9190612905565b60405180910390a150565b600860020a81565b603c5481565b60355481565b6000803090506000813b9050600081149250505090565b600081359050611e6181612e9c565b92915050565b60008190508260606101000282011115611e8057600080fd5b92915050565b600081519050611e9581612eb3565b92915050565b600081359050611eaa81612eca565b92915050565b600081519050611ebf81612eca565b92915050565b60008083601f840112611ed757600080fd5b8235905067ffffffffffffffff811115611ef057600080fd5b602083019150836001820283011115611f0857600080fd5b9250929050565b600081359050611f1e81612ee1565b92915050565b600081359050611f3381612ef8565b92915050565b600082601f830112611f4a57600080fd5b8135611f5d611f5882612cc2565b612c95565b91508082526020830160208301858383011115611f7957600080fd5b611f84838284612e49565b50505092915050565b600081359050611f9c81612f0f565b92915050565b600081519050611fb181612f0f565b92915050565b600081359050611fc681612f26565b92915050565b600060208284031215611fde57600080fd5b6000611fec84828501611e52565b91505092915050565b6000806040838503121561200857600080fd5b600061201685828601611e52565b925050602061202785828601611e9b565b9150509250929050565b6000806040838503121561204457600080fd5b600061205285828601611e52565b925050602061206385828601611f0f565b9150509250929050565b60006020828403121561207f57600080fd5b600061208d84828501611e86565b91505092915050565b6000602082840312156120a857600080fd5b60006120b684828501611eb0565b91505092915050565b600080604083850312156120d257600080fd5b60006120e085828601611e9b565b92505060206120f185828601611e9b565b9150509250929050565b60008060008060008060006160a0888a03121561211757600080fd5b600088013567ffffffffffffffff81111561213157600080fd5b61213d8a828b01611ec5565b975097505060206121508a828b01611e9b565b95505060406121618a828b01611e9b565b94505060606121728a828b01611e9b565b93505060806121838a828b01611fb7565b92505060a06121948a828b01611e67565b91505092959891949750929550565b6000602082840312156121b557600080fd5b60006121c384828501611f0f565b91505092915050565b6000806000606084860312156121e157600080fd5b60006121ef86828701611f24565b935050602084013567ffffffffffffffff81111561220c57600080fd5b61221886828701611f39565b925050604061222986828701611f8d565b9150509250925092565b60006020828403121561224557600080fd5b600061225384828501611f8d565b91505092915050565b60006020828403121561226e57600080fd5b600061227c84828501611fa2565b91505092915050565b60006020828403121561229757600080fd5b60006122a584828501611fb7565b91505092915050565b60006122ba838361289b565b60208301905092915050565b6122cf81612d69565b82525050565b6122de81612cf8565b6122e88184612d26565b92506122f382612cee565b8060005b8381101561232457815161230b87826122ae565b965061231683612d19565b9250506001810190506122f7565b505050505050565b61233581612d7b565b82525050565b61234481612d87565b82525050565b60006123568385612d31565b9350612363838584612e49565b61236c83612e8b565b840190509392505050565b600061238282612d03565b61238c8185612d42565b935061239c818560208601612e58565b80840191505092915050565b6123b181612def565b82525050565b6123c081612e13565b82525050565b60006123d182612d0e565b6123db8185612d5e565b93506123eb818560208601612e58565b80840191505092915050565b6000612404601183612d4d565b91507f496e76616c6964206172677320686173680000000000000000000000000000006000830152602082019050919050565b6000612444602183612d4d565b91507f496e76616c6964206465706f7369742074726565207570646174652070726f6f60008301527f66000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006124aa602183612d4d565b91507f496e636f7272656374207769746864726177616c20696e7365727420696e646560008301527f78000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612510602483612d4d565b91507f496e76616c6964207769746864726177616c207472656520757064617465207060008301527f726f6f66000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612576601183612d4d565b91507f496e636f7272656374206465706f7369740000000000000000000000000000006000830152602082019050919050565b60006125b6602783612d4d565b91507f4f6e6c7920676f7665726e616e63652063616e20706572666f726d207468697360008301527f20616374696f6e000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061261c601e83612d4d565b91507f496e636f7272656374207769746864726177616c207472656520726f6f7400006000830152602082019050919050565b600061265c601b83612d4d565b91507f496e636f7272656374206465706f736974207472656520726f6f7400000000006000830152602082019050919050565b600061269c602e83612d4d565b91507f436f6e747261637420696e7374616e63652068617320616c726561647920626560008301527f656e20696e697469616c697a65640000000000000000000000000000000000006020830152604082019050919050565b6000612702602383612d4d565b91507f50726f706f736564207769746864726177616c20726f6f7420697320696e766160008301527f6c696400000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612768601483612d4d565b91507f496e636f7272656374207769746864726177616c0000000000000000000000006000830152602082019050919050565b60006127a8602083612d4d565b91507f50726f706f736564206465706f73697420726f6f7420697320696e76616c69646000830152602082019050919050565b60006127e8601e83612d4d565b91507f496e636f7272656374206465706f73697420696e7365727420696e64657800006000830152602082019050919050565b6000612828601c83612d4d565b91507f496e636f727265637420546f726e61646f5472656573207374617465000000006000830152602082019050919050565b6000612868600e83612d4d565b91507f4e6f7420617574686f72697a65640000000000000000000000000000000000006000830152602082019050919050565b6128a481612dd5565b82525050565b6128b381612dd5565b82525050565b6128c281612e37565b82525050565b6128d181612ddf565b82525050565b60006128e38284612377565b915081905092915050565b60006128fa82846123c6565b915081905092915050565b600060208201905061291a60008301846122c6565b92915050565b600060608201905061293560008301866122c6565b612942602083018561233b565b61294f60408301846128aa565b949350505050565b600060608201905061296c60008301866122c6565b612979602083018561233b565b61298660408301846128c8565b949350505050565b60006060820190506129a360008301866122c6565b6129b060208301856128aa565b6129bd60408301846128aa565b949350505050565b60006060820190506129da60008301866122c6565b6129e760208301856128b9565b6129f460408301846128aa565b949350505050565b6000602082019050612a11600083018461232c565b92915050565b6000602082019050612a2c600083018461233b565b92915050565b60006040820190508181036000830152612a4d81858761234a565b9050612a5c60208301846122d5565b949350505050565b6000602082019050612a7960008301846123a8565b92915050565b6000602082019050612a9460008301846123b7565b92915050565b60006020820190508181036000830152612ab3816123f7565b9050919050565b60006020820190508181036000830152612ad381612437565b9050919050565b60006020820190508181036000830152612af38161249d565b9050919050565b60006020820190508181036000830152612b1381612503565b9050919050565b60006020820190508181036000830152612b3381612569565b9050919050565b60006020820190508181036000830152612b53816125a9565b9050919050565b60006020820190508181036000830152612b738161260f565b9050919050565b60006020820190508181036000830152612b938161264f565b9050919050565b60006020820190508181036000830152612bb38161268f565b9050919050565b60006020820190508181036000830152612bd3816126f5565b9050919050565b60006020820190508181036000830152612bf38161275b565b9050919050565b60006020820190508181036000830152612c138161279b565b9050919050565b60006020820190508181036000830152612c33816127db565b9050919050565b60006020820190508181036000830152612c538161281b565b9050919050565b60006020820190508181036000830152612c738161285b565b9050919050565b6000602082019050612c8f60008301846128aa565b92915050565b6000604051905081810181811067ffffffffffffffff82111715612cb857600080fd5b8060405250919050565b600067ffffffffffffffff821115612cd957600080fd5b601f19601f8301169050602081019050919050565b6000819050919050565b600060019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000612d7482612db5565b9050919050565b60008115159050919050565b6000819050919050565b6000612d9c82612d69565b9050919050565b6000612dae82612d69565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b6000612dfa82612e01565b9050919050565b6000612e0c82612db5565b9050919050565b6000612e1e82612e25565b9050919050565b6000612e3082612db5565b9050919050565b6000612e4282612ddf565b9050919050565b82818337600083830152505050565b60005b83811015612e76578082015181840152602081019050612e5b565b83811115612e85576000848401525b50505050565b6000601f19601f8301169050919050565b612ea581612d69565b8114612eb057600080fd5b50565b612ebc81612d7b565b8114612ec757600080fd5b50565b612ed381612d87565b8114612ede57600080fd5b50565b612eea81612d91565b8114612ef557600080fd5b50565b612f0181612da3565b8114612f0c57600080fd5b50565b612f1881612dd5565b8114612f2357600080fd5b50565b612f2f81612ddf565b8114612f3a57600080fd5b5056fea2646970667358221220834fbbe9634dacf9cb86e26acb789d76499021de3cb5fe20495596d9adb74e8364736f6c634300060c0033000000000000000000000000d5e4af6c401a750590502a8ad1278b3d2b55e6e7

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

000000000000000000000000d5e4af6c401a750590502a8ad1278b3d2b55e6e7

-----Decoded View---------------
Arg [0] : _tornadoTreesV1 (address): 0xd5e4af6c401a750590502a8ad1278b3d2b55e6e7

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000d5e4af6c401a750590502a8ad1278b3d2b55e6e7


Deployed ByteCode Sourcemap

6476:11360:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10520:395;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7408:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6696:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6783:38;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7070:115;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7492:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7318:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9176:828;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11323:1833;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6728:50;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17740:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6520:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7357:46;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6940:47;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16970:379;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6828:45;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6550:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17355:160;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17525:209;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7445:42;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6992:73;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7192:43;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6654:37;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7274:39;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15460:329;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6620:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10081:359;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13567:1887;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9019:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6878:57;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7240:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6581:34;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10520:395;7955:12;;;;;;;;;;;7941:26;;:10;:26;;;7933:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;10622:26:::1;10651:17;;10622:46;;10730:9;10741:14;10757:13;:11;:13::i;:::-;10719:52;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10709:63;;;;;;10675:11;:31;10687:18;10675:31;;;;;;;;;;;:97;;;;10810:14;10784:76;10799:9;10826:13;:11;:13::i;:::-;10841:18;10784:76;;;;;;;;:::i;:::-;;;;;;;;10908:1;10887:18;:22;10867:17;:42;;;;7993:1;10520:395:::0;;:::o;7408:32::-;;;;:::o;6696:27::-;;;;;;;;;;;;;:::o;6783:38::-;;;;;;;;;;;;;:::o;7070:115::-;7108:77;7070:115;:::o;7492:35::-;;;;:::o;7318:32::-;;;;:::o;9176:828::-;3417:12;;;;;;;;;;;:31;;;;3433:15;:13;:15::i;:::-;3417:31;:47;;;;3453:11;;;;;;;;;;3452:12;3417:47;3409:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;3524:19;3547:12;;;;;;;;;;;3546:13;3524:35;;3570:14;3566:83;;;3610:4;3595:12;;:19;;;;;;;;;;;;;;;;;;3637:4;3623:11;;:18;;;;;;;;;;;;;;;;;;3566:83;8061:10:::1;;;;;;;;;;;8047:24;;:10;:24;;;8039:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;9321:13:::2;9306:12;;:28;;;;;;;;;;;;;;;;;;9362:19;9341:18;;:40;;;;;;;;;;;;;;;;;;9404:14;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9390:11;:42;;;;9439:23;9465:14;;;;;;;;;;;:39;;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9439:67;;9553:1;6872;6915;:20;9521:15;:28;;;;;;:33;9513:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9621:15;9594:24;:42;;;;9660:16;;9643:14;:33;;;;9702:14;;;;;;;;;;;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9685:14;:48;;;;9740:26;9769:14;;;;;;;;;;;:42;;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9740:73;;9863:1;6872;6915;:20;9828:18;:31;;;;;;:36;9820:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;9934:18;9904:27;:48;;;;9979:19;;9959:17;:39;;;;8122:1;;3671:14:::0;3667:57;;;3711:5;3696:12;;:20;;;;;;;;;;;;;;;;;;3667:57;9176:828;;;:::o;11323:1833::-;11541:14;11558:24;;11541:41;;11613:11;;11597:12;:27;11589:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;6872:1;11692:6;:27;;11676:12;:43;;;11668:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;11763:17;6976:11;6872:1;6915;:20;7043:22;7029:11;:36;11783:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11763:41;;11853:12;11846:4;11840;11836:15;11829:37;11898:8;11891:4;11885;11881:15;11874:33;11939:12;11932:4;11926;11922:15;11915:37;11970:9;11965:828;6872:1;6915;:20;11985:1;:14;11965:828;;;12016:12;12030:16;12048:18;12071:7;12079:1;12071:10;;;;;;;;;;:15;;;12088:7;12096:1;12088:10;;;;;;;;;;:19;;;;;;;;;;:::i;:::-;12109:7;12117:1;12109:10;;;;;;;;;;:16;;;;;;;;;;:::i;:::-;12015:111;;;;;;12135:16;12175:8;12185:4;12191:11;12164:39;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;12154:50;;;;;;12135:69;;12213:15;12245:16;;12240:1;12231:6;:10;:30;;:91;;12287:14;;;;;;;;;;;:23;;;12320:1;12311:6;:10;12287:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12231:91;;;12264:8;:20;12282:1;12273:6;:10;12264:20;;;;;;;;;;;;12231:91;12213:109;;12351:7;12339:8;:19;12331:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;12452:1;12441:9;12437:17;12431:4;12427:28;12495:11;12488:4;12476:10;12472:21;12465:42;12547:8;12540:4;12528:10;12524:21;12517:39;12596:4;12589;12577:10;12573:21;12566:35;12398:212;12636:16;;12631:1;12622:6;:10;:30;12618:168;;12672:8;:20;12690:1;12681:6;:10;12672:20;;;;;;;;;;;12665:27;;;12618:168;;;12746:4;12724:52;12736:8;12752:11;12774:1;12765:6;:10;12724:52;;;;;;;;:::i;:::-;;;;;;;;12618:168;11965:828;;;;;12001:3;;;;;;;11965:828;;;;12801:16;7108:77;12828:12;12835:4;12828:12;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12820:21;;:35;;;;;;12801:54;;12890:9;12882:18;;12870:8;:30;12862:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12937:18;;;;;;;;;;;:30;;;12968:6;;12937:50;;;;;;;;12977:8;12937:50;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12929:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;13056:12;13034:19;:34;;;;13089:8;13075:11;:22;;;;6872:1;6915;:20;13131:6;:19;13104:24;:46;;;;11323:1833;;;;;;;;;;:::o;6728:50::-;;;;;;;;;;;;;:::o;17740:93::-;17792:7;17815:12;17808:19;;17740:93;:::o;6520:25::-;;;;;;;;;;;;;:::o;7357:46::-;;;;;;;;;;;;;;;;;:::o;6940:47::-;6976:11;6940:47;:::o;16970:379::-;17103:12;17264:15;17256:35;;17298:4;17329:5;17336;17305:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;17256:87;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17242:101;;;;;16970:379;;;;;:::o;6828:45::-;6872:1;6828:45;:::o;6550:26::-;;;;:::o;17355:160::-;8061:10;;;;;;;;;;;8047:24;;:10;:24;;;8039:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;17457:13:::1;17442:12;;:28;;;;;;;;;;;;;;;;;;17482:27;17495:13;17482:27;;;;;;:::i;:::-;;;;;;;;17355:160:::0;:::o;17525:209::-;8061:10;;;;;;;;;;;8047:24;;:10;:24;;;8039:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;17652:19:::1;17631:18;;:40;;;;;;;;;;;;;;;;;;17683:45;17707:19;17683:45;;;;;;:::i;:::-;;;;;;;;17525:209:::0;:::o;7445:42::-;;;;:::o;6992:73::-;6976:11;6872:1;6915;:20;7043:22;7029:11;:36;6992:73;:::o;7192:43::-;;;;;;;;;;;;;;;;;:::o;6654:37::-;;;;:::o;7274:39::-;;;;:::o;15460:329::-;15573:11;;15557:12;:27;:66;;;;15604:19;;15588:12;:35;15557:66;15549:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;15689:14;;15670:15;:33;:78;;;;15726:22;;15707:15;:41;15670:78;15662:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;15460:329;;:::o;6620:29::-;;;;:::o;10081:359::-;7955:12;;;;;;;;;;;7941:26;;:10;:26;;;7933:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;10177:23:::1;10203:14;;10177:40;;10273:9;10284:11;10297:13;:11;:13::i;:::-;10262:49;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10252:60;;;;;;10224:8;:25;10233:15;10224:25;;;;;;;;;;;:88;;;;10347:11;10324:67;10336:9;10360:13;:11;:13::i;:::-;10375:15;10324:67;;;;;;;;:::i;:::-;;;;;;;;10433:1;10415:15;:19;10398:14;:36;;;;7993:1;10081:359:::0;;:::o;13567:1887::-;13788:14;13805:27;;13788:44;;13863:14;;13847:12;:30;13839:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;6872:1;13948:6;:27;;13932:12;:43;;;13924:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;14022:17;6976:11;6872:1;6915;:20;7043:22;7029:11;:36;14042:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14022:41;;14112:12;14105:4;14099;14095:15;14088:37;14157:8;14150:4;14144;14140:15;14133:33;14198:12;14191:4;14185;14181:15;14174:37;14229:9;14224:855;6872:1;6915;:20;14244:1;:14;14224:855;;;14275:12;14289:16;14307:18;14330:7;14338:1;14330:10;;;;;;;;;;:15;;;14347:7;14355:1;14347:10;;;;;;;;;;:19;;;;;;;;;;:::i;:::-;14368:7;14376:1;14368:10;;;;;;;;;;:16;;;;;;;;;;:::i;:::-;14274:111;;;;;;14394:16;14434:8;14444:4;14450:11;14423:39;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;14413:50;;;;;;14394:69;;14472:18;14507:19;;14502:1;14493:6;:10;:33;;:100;;14555:14;;;;;;;;;;;:26;;;14591:1;14582:6;:10;14555:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14493:100;;;14529:11;:23;14550:1;14541:6;:10;14529:23;;;;;;;;;;;;14493:100;14472:121;;14622:10;14610:8;:22;14602:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;14729:1;14718:9;14714:17;14708:4;14704:28;14772:11;14765:4;14753:10;14749:21;14742:42;14824:8;14817:4;14805:10;14801:21;14794:39;14873:4;14866;14854:10;14850:21;14843:35;14675:212;14913:19;;14908:1;14899:6;:10;:33;14895:177;;14952:11;:23;14973:1;14964:6;:10;14952:23;;;;;;;;;;;14945:30;;;14895:177;;;15032:4;15007:55;15022:8;15038:11;15060:1;15051:6;:10;15007:55;;;;;;;;:::i;:::-;;;;;;;;14895:177;14224:855;;;;;14260:3;;;;;;;14224:855;;;;15087:16;7108:77;15114:12;15121:4;15114:12;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15106:21;;:35;;;;;;15087:54;;15176:9;15168:18;;15156:8;:30;15148:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;15223:18;;;;;;;;;;;:30;;;15254:6;;15223:50;;;;;;;;15263:8;15223:50;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15215:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;15348:12;15323:22;:37;;;;15384:8;15367:14;:25;;;;6872:1;6915;:20;15429:6;:19;15399:27;:49;;;;13567:1887;;;;;;;;;;:::o;9019:151::-;8061:10;;;;;;;;;;;8047:24;;:10;:24;;;8039:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;9113:14:::1;9100:10;;:27;;;;;;;;;;;;;;;;;;9139:25;9153:10;;;;;;;;;;;9139:25;;;;;;:::i;:::-;;;;;;;;9019:151:::0;:::o;6878:57::-;6872:1;6915;:20;6878:57;:::o;7240:29::-;;;;:::o;6581:34::-;;;;:::o;3818:508::-;3865:4;4212:12;4235:4;4212:28;;4247:10;4293:4;4281:17;4275:23;;4319:1;4313:2;:7;4306:14;;;;3818:508;:::o;5:130:-1:-;;85:6;72:20;63:29;;97:33;124:5;97:33;:::i;:::-;57:78;;;;:::o;184:207::-;;312:6;300:18;;364:3;356:4;348:6;344:17;334:8;330:32;327:41;324:2;;;381:1;378;371:12;324:2;293:98;;;;:::o;399:128::-;;480:6;474:13;465:22;;492:30;516:5;492:30;:::i;:::-;459:68;;;;:::o;534:130::-;;614:6;601:20;592:29;;626:33;653:5;626:33;:::i;:::-;586:78;;;;:::o;671:134::-;;755:6;749:13;740:22;;767:33;794:5;767:33;:::i;:::-;734:71;;;;:::o;826:336::-;;;940:3;933:4;925:6;921:17;917:27;907:2;;958:1;955;948:12;907:2;991:6;978:20;968:30;;1018:18;1010:6;1007:30;1004:2;;;1050:1;1047;1040:12;1004:2;1084:4;1076:6;1072:17;1060:29;;1135:3;1127:4;1119:6;1115:17;1105:8;1101:32;1098:41;1095:2;;;1152:1;1149;1142:12;1095:2;900:262;;;;;:::o;1170:192::-;;1281:6;1268:20;1259:29;;1293:64;1351:5;1293:64;:::i;:::-;1253:109;;;;:::o;1369:176::-;;1472:6;1459:20;1450:29;;1484:56;1534:5;1484:56;:::i;:::-;1444:101;;;;:::o;1553:442::-;;1655:3;1648:4;1640:6;1636:17;1632:27;1622:2;;1673:1;1670;1663:12;1622:2;1710:6;1697:20;1732:65;1747:49;1789:6;1747:49;:::i;:::-;1732:65;:::i;:::-;1723:74;;1817:6;1810:5;1803:21;1853:4;1845:6;1841:17;1886:4;1879:5;1875:16;1921:3;1912:6;1907:3;1903:16;1900:25;1897:2;;;1938:1;1935;1928:12;1897:2;1948:41;1982:6;1977:3;1972;1948:41;:::i;:::-;1615:380;;;;;;;:::o;2003:130::-;;2083:6;2070:20;2061:29;;2095:33;2122:5;2095:33;:::i;:::-;2055:78;;;;:::o;2140:134::-;;2224:6;2218:13;2209:22;;2236:33;2263:5;2236:33;:::i;:::-;2203:71;;;;:::o;2281:128::-;;2360:6;2347:20;2338:29;;2372:32;2398:5;2372:32;:::i;:::-;2332:77;;;;:::o;2416:241::-;;2520:2;2508:9;2499:7;2495:23;2491:32;2488:2;;;2536:1;2533;2526:12;2488:2;2571:1;2588:53;2633:7;2624:6;2613:9;2609:22;2588:53;:::i;:::-;2578:63;;2550:97;2482:175;;;;:::o;2664:366::-;;;2785:2;2773:9;2764:7;2760:23;2756:32;2753:2;;;2801:1;2798;2791:12;2753:2;2836:1;2853:53;2898:7;2889:6;2878:9;2874:22;2853:53;:::i;:::-;2843:63;;2815:97;2943:2;2961:53;3006:7;2997:6;2986:9;2982:22;2961:53;:::i;:::-;2951:63;;2922:98;2747:283;;;;;:::o;3037:428::-;;;3189:2;3177:9;3168:7;3164:23;3160:32;3157:2;;;3205:1;3202;3195:12;3157:2;3240:1;3257:53;3302:7;3293:6;3282:9;3278:22;3257:53;:::i;:::-;3247:63;;3219:97;3347:2;3365:84;3441:7;3432:6;3421:9;3417:22;3365:84;:::i;:::-;3355:94;;3326:129;3151:314;;;;;:::o;3472:257::-;;3584:2;3572:9;3563:7;3559:23;3555:32;3552:2;;;3600:1;3597;3590:12;3552:2;3635:1;3652:61;3705:7;3696:6;3685:9;3681:22;3652:61;:::i;:::-;3642:71;;3614:105;3546:183;;;;:::o;3736:263::-;;3851:2;3839:9;3830:7;3826:23;3822:32;3819:2;;;3867:1;3864;3857:12;3819:2;3902:1;3919:64;3975:7;3966:6;3955:9;3951:22;3919:64;:::i;:::-;3909:74;;3881:108;3813:186;;;;:::o;4006:366::-;;;4127:2;4115:9;4106:7;4102:23;4098:32;4095:2;;;4143:1;4140;4133:12;4095:2;4178:1;4195:53;4240:7;4231:6;4220:9;4216:22;4195:53;:::i;:::-;4185:63;;4157:97;4285:2;4303:53;4348:7;4339:6;4328:9;4324:22;4303:53;:::i;:::-;4293:63;;4264:98;4089:283;;;;;:::o;4379:1101::-;;;;;;;;4640:5;4628:9;4619:7;4615:23;4611:35;4608:2;;;4659:1;4656;4649:12;4608:2;4722:1;4711:9;4707:17;4694:31;4745:18;4737:6;4734:30;4731:2;;;4777:1;4774;4767:12;4731:2;4805:64;4861:7;4852:6;4841:9;4837:22;4805:64;:::i;:::-;4787:82;;;;4673:202;4906:2;4924:53;4969:7;4960:6;4949:9;4945:22;4924:53;:::i;:::-;4914:63;;4885:98;5014:2;5032:53;5077:7;5068:6;5057:9;5053:22;5032:53;:::i;:::-;5022:63;;4993:98;5122:2;5140:53;5185:7;5176:6;5165:9;5161:22;5140:53;:::i;:::-;5130:63;;5101:98;5230:3;5249:52;5293:7;5284:6;5273:9;5269:22;5249:52;:::i;:::-;5239:62;;5209:98;5338:3;5357:107;5456:7;5447:6;5436:9;5432:22;5357:107;:::i;:::-;5347:117;;5317:153;4602:878;;;;;;;;;;:::o;5487:303::-;;5622:2;5610:9;5601:7;5597:23;5593:32;5590:2;;;5638:1;5635;5628:12;5590:2;5673:1;5690:84;5766:7;5757:6;5746:9;5742:22;5690:84;:::i;:::-;5680:94;;5652:128;5584:206;;;;:::o;5797:643::-;;;;5968:2;5956:9;5947:7;5943:23;5939:32;5936:2;;;5984:1;5981;5974:12;5936:2;6019:1;6036:76;6104:7;6095:6;6084:9;6080:22;6036:76;:::i;:::-;6026:86;;5998:120;6177:2;6166:9;6162:18;6149:32;6201:18;6193:6;6190:30;6187:2;;;6233:1;6230;6223:12;6187:2;6253:63;6308:7;6299:6;6288:9;6284:22;6253:63;:::i;:::-;6243:73;;6128:194;6353:2;6371:53;6416:7;6407:6;6396:9;6392:22;6371:53;:::i;:::-;6361:63;;6332:98;5930:510;;;;;:::o;6447:241::-;;6551:2;6539:9;6530:7;6526:23;6522:32;6519:2;;;6567:1;6564;6557:12;6519:2;6602:1;6619:53;6664:7;6655:6;6644:9;6640:22;6619:53;:::i;:::-;6609:63;;6581:97;6513:175;;;;:::o;6695:263::-;;6810:2;6798:9;6789:7;6785:23;6781:32;6778:2;;;6826:1;6823;6816:12;6778:2;6861:1;6878:64;6934:7;6925:6;6914:9;6910:22;6878:64;:::i;:::-;6868:74;;6840:108;6772:186;;;;:::o;6965:239::-;;7068:2;7056:9;7047:7;7043:23;7039:32;7036:2;;;7084:1;7081;7074:12;7036:2;7119:1;7136:52;7180:7;7171:6;7160:9;7156:22;7136:52;:::i;:::-;7126:62;;7098:96;7030:174;;;;:::o;7212:173::-;;7299:46;7341:3;7333:6;7299:46;:::i;:::-;7374:4;7369:3;7365:14;7351:28;;7292:93;;;;:::o;7393:113::-;7476:24;7494:5;7476:24;:::i;:::-;7471:3;7464:37;7458:48;;:::o;7546:660::-;7679:52;7725:5;7679:52;:::i;:::-;7744:84;7821:6;7816:3;7744:84;:::i;:::-;7737:91;;7849:54;7897:5;7849:54;:::i;:::-;7923:7;7951:1;7936:258;7961:6;7958:1;7955:13;7936:258;;;8028:6;8022:13;8049:63;8108:3;8093:13;8049:63;:::i;:::-;8042:70;;8129:58;8180:6;8129:58;:::i;:::-;8119:68;;7993:201;7983:1;7980;7976:9;7971:14;;7936:258;;;7940:14;7658:548;;;;;:::o;8214:104::-;8291:21;8306:5;8291:21;:::i;:::-;8286:3;8279:34;8273:45;;:::o;8325:113::-;8408:24;8426:5;8408:24;:::i;:::-;8403:3;8396:37;8390:48;;:::o;8468:297::-;;8582:70;8645:6;8640:3;8582:70;:::i;:::-;8575:77;;8664:43;8700:6;8695:3;8688:5;8664:43;:::i;:::-;8729:29;8751:6;8729:29;:::i;:::-;8724:3;8720:39;8713:46;;8568:197;;;;;:::o;8773:356::-;;8901:38;8933:5;8901:38;:::i;:::-;8951:88;9032:6;9027:3;8951:88;:::i;:::-;8944:95;;9044:52;9089:6;9084:3;9077:4;9070:5;9066:16;9044:52;:::i;:::-;9117:6;9112:3;9108:16;9101:23;;8881:248;;;;;:::o;9136:188::-;9250:68;9312:5;9250:68;:::i;:::-;9245:3;9238:81;9232:92;;:::o;9331:172::-;9437:60;9491:5;9437:60;:::i;:::-;9432:3;9425:73;9419:84;;:::o;9510:360::-;;9640:39;9673:5;9640:39;:::i;:::-;9691:89;9773:6;9768:3;9691:89;:::i;:::-;9684:96;;9785:52;9830:6;9825:3;9818:4;9811:5;9807:16;9785:52;:::i;:::-;9858:6;9853:3;9849:16;9842:23;;9620:250;;;;;:::o;9878:317::-;;10038:67;10102:2;10097:3;10038:67;:::i;:::-;10031:74;;10138:19;10134:1;10129:3;10125:11;10118:40;10186:2;10181:3;10177:12;10170:19;;10024:171;;;:::o;10204:370::-;;10364:67;10428:2;10423:3;10364:67;:::i;:::-;10357:74;;10464:34;10460:1;10455:3;10451:11;10444:55;10533:3;10528:2;10523:3;10519:12;10512:25;10565:2;10560:3;10556:12;10549:19;;10350:224;;;:::o;10583:370::-;;10743:67;10807:2;10802:3;10743:67;:::i;:::-;10736:74;;10843:34;10839:1;10834:3;10830:11;10823:55;10912:3;10907:2;10902:3;10898:12;10891:25;10944:2;10939:3;10935:12;10928:19;;10729:224;;;:::o;10962:373::-;;11122:67;11186:2;11181:3;11122:67;:::i;:::-;11115:74;;11222:34;11218:1;11213:3;11209:11;11202:55;11291:6;11286:2;11281:3;11277:12;11270:28;11326:2;11321:3;11317:12;11310:19;;11108:227;;;:::o;11344:317::-;;11504:67;11568:2;11563:3;11504:67;:::i;:::-;11497:74;;11604:19;11600:1;11595:3;11591:11;11584:40;11652:2;11647:3;11643:12;11636:19;;11490:171;;;:::o;11670:376::-;;11830:67;11894:2;11889:3;11830:67;:::i;:::-;11823:74;;11930:34;11926:1;11921:3;11917:11;11910:55;11999:9;11994:2;11989:3;11985:12;11978:31;12037:2;12032:3;12028:12;12021:19;;11816:230;;;:::o;12055:330::-;;12215:67;12279:2;12274:3;12215:67;:::i;:::-;12208:74;;12315:32;12311:1;12306:3;12302:11;12295:53;12376:2;12371:3;12367:12;12360:19;;12201:184;;;:::o;12394:327::-;;12554:67;12618:2;12613:3;12554:67;:::i;:::-;12547:74;;12654:29;12650:1;12645:3;12641:11;12634:50;12712:2;12707:3;12703:12;12696:19;;12540:181;;;:::o;12730:383::-;;12890:67;12954:2;12949:3;12890:67;:::i;:::-;12883:74;;12990:34;12986:1;12981:3;12977:11;12970:55;13059:16;13054:2;13049:3;13045:12;13038:38;13104:2;13099:3;13095:12;13088:19;;12876:237;;;:::o;13122:372::-;;13282:67;13346:2;13341:3;13282:67;:::i;:::-;13275:74;;13382:34;13378:1;13373:3;13369:11;13362:55;13451:5;13446:2;13441:3;13437:12;13430:27;13485:2;13480:3;13476:12;13469:19;;13268:226;;;:::o;13503:320::-;;13663:67;13727:2;13722:3;13663:67;:::i;:::-;13656:74;;13763:22;13759:1;13754:3;13750:11;13743:43;13814:2;13809:3;13805:12;13798:19;;13649:174;;;:::o;13832:332::-;;13992:67;14056:2;14051:3;13992:67;:::i;:::-;13985:74;;14092:34;14088:1;14083:3;14079:11;14072:55;14155:2;14150:3;14146:12;14139:19;;13978:186;;;:::o;14173:330::-;;14333:67;14397:2;14392:3;14333:67;:::i;:::-;14326:74;;14433:32;14429:1;14424:3;14420:11;14413:53;14494:2;14489:3;14485:12;14478:19;;14319:184;;;:::o;14512:328::-;;14672:67;14736:2;14731:3;14672:67;:::i;:::-;14665:74;;14772:30;14768:1;14763:3;14759:11;14752:51;14831:2;14826:3;14822:12;14815:19;;14658:182;;;:::o;14849:314::-;;15009:67;15073:2;15068:3;15009:67;:::i;:::-;15002:74;;15109:16;15105:1;15100:3;15096:11;15089:37;15154:2;15149:3;15145:12;15138:19;;14995:168;;;:::o;15171:103::-;15244:24;15262:5;15244:24;:::i;:::-;15239:3;15232:37;15226:48;;:::o;15281:113::-;15364:24;15382:5;15364:24;:::i;:::-;15359:3;15352:37;15346:48;;:::o;15401:124::-;15483:36;15513:5;15483:36;:::i;:::-;15478:3;15471:49;15465:60;;:::o;15532:110::-;15613:23;15630:5;15613:23;:::i;:::-;15608:3;15601:36;15595:47;;:::o;15649:271::-;;15802:93;15891:3;15882:6;15802:93;:::i;:::-;15795:100;;15912:3;15905:10;;15783:137;;;;:::o;15927:275::-;;16082:95;16173:3;16164:6;16082:95;:::i;:::-;16075:102;;16194:3;16187:10;;16063:139;;;;:::o;16209:222::-;;16336:2;16325:9;16321:18;16313:26;;16350:71;16418:1;16407:9;16403:17;16394:6;16350:71;:::i;:::-;16307:124;;;;:::o;16438:444::-;;16621:2;16610:9;16606:18;16598:26;;16635:71;16703:1;16692:9;16688:17;16679:6;16635:71;:::i;:::-;16717:72;16785:2;16774:9;16770:18;16761:6;16717:72;:::i;:::-;16800;16868:2;16857:9;16853:18;16844:6;16800:72;:::i;:::-;16592:290;;;;;;:::o;16889:440::-;;17070:2;17059:9;17055:18;17047:26;;17084:71;17152:1;17141:9;17137:17;17128:6;17084:71;:::i;:::-;17166:72;17234:2;17223:9;17219:18;17210:6;17166:72;:::i;:::-;17249:70;17315:2;17304:9;17300:18;17291:6;17249:70;:::i;:::-;17041:288;;;;;;:::o;17336:444::-;;17519:2;17508:9;17504:18;17496:26;;17533:71;17601:1;17590:9;17586:17;17577:6;17533:71;:::i;:::-;17615:72;17683:2;17672:9;17668:18;17659:6;17615:72;:::i;:::-;17698;17766:2;17755:9;17751:18;17742:6;17698:72;:::i;:::-;17490:290;;;;;;:::o;17787:442::-;;17969:2;17958:9;17954:18;17946:26;;17983:71;18051:1;18040:9;18036:17;18027:6;17983:71;:::i;:::-;18065;18132:2;18121:9;18117:18;18108:6;18065:71;:::i;:::-;18147:72;18215:2;18204:9;18200:18;18191:6;18147:72;:::i;:::-;17940:289;;;;;;:::o;18236:210::-;;18357:2;18346:9;18342:18;18334:26;;18371:65;18433:1;18422:9;18418:17;18409:6;18371:65;:::i;:::-;18328:118;;;;:::o;18453:222::-;;18580:2;18569:9;18565:18;18557:26;;18594:71;18662:1;18651:9;18647:17;18638:6;18594:71;:::i;:::-;18551:124;;;;:::o;18682:529::-;;18911:2;18900:9;18896:18;18888:26;;18961:9;18955:4;18951:20;18947:1;18936:9;18932:17;18925:47;18986:86;19067:4;19058:6;19050;18986:86;:::i;:::-;18978:94;;19083:118;19197:2;19186:9;19182:18;19173:6;19083:118;:::i;:::-;18882:329;;;;;;:::o;19218:284::-;;19376:2;19365:9;19361:18;19353:26;;19390:102;19489:1;19478:9;19474:17;19465:6;19390:102;:::i;:::-;19347:155;;;;:::o;19509:268::-;;19659:2;19648:9;19644:18;19636:26;;19673:94;19764:1;19753:9;19749:17;19740:6;19673:94;:::i;:::-;19630:147;;;;:::o;19784:416::-;;19984:2;19973:9;19969:18;19961:26;;20034:9;20028:4;20024:20;20020:1;20009:9;20005:17;19998:47;20059:131;20185:4;20059:131;:::i;:::-;20051:139;;19955:245;;;:::o;20207:416::-;;20407:2;20396:9;20392:18;20384:26;;20457:9;20451:4;20447:20;20443:1;20432:9;20428:17;20421:47;20482:131;20608:4;20482:131;:::i;:::-;20474:139;;20378:245;;;:::o;20630:416::-;;20830:2;20819:9;20815:18;20807:26;;20880:9;20874:4;20870:20;20866:1;20855:9;20851:17;20844:47;20905:131;21031:4;20905:131;:::i;:::-;20897:139;;20801:245;;;:::o;21053:416::-;;21253:2;21242:9;21238:18;21230:26;;21303:9;21297:4;21293:20;21289:1;21278:9;21274:17;21267:47;21328:131;21454:4;21328:131;:::i;:::-;21320:139;;21224:245;;;:::o;21476:416::-;;21676:2;21665:9;21661:18;21653:26;;21726:9;21720:4;21716:20;21712:1;21701:9;21697:17;21690:47;21751:131;21877:4;21751:131;:::i;:::-;21743:139;;21647:245;;;:::o;21899:416::-;;22099:2;22088:9;22084:18;22076:26;;22149:9;22143:4;22139:20;22135:1;22124:9;22120:17;22113:47;22174:131;22300:4;22174:131;:::i;:::-;22166:139;;22070:245;;;:::o;22322:416::-;;22522:2;22511:9;22507:18;22499:26;;22572:9;22566:4;22562:20;22558:1;22547:9;22543:17;22536:47;22597:131;22723:4;22597:131;:::i;:::-;22589:139;;22493:245;;;:::o;22745:416::-;;22945:2;22934:9;22930:18;22922:26;;22995:9;22989:4;22985:20;22981:1;22970:9;22966:17;22959:47;23020:131;23146:4;23020:131;:::i;:::-;23012:139;;22916:245;;;:::o;23168:416::-;;23368:2;23357:9;23353:18;23345:26;;23418:9;23412:4;23408:20;23404:1;23393:9;23389:17;23382:47;23443:131;23569:4;23443:131;:::i;:::-;23435:139;;23339:245;;;:::o;23591:416::-;;23791:2;23780:9;23776:18;23768:26;;23841:9;23835:4;23831:20;23827:1;23816:9;23812:17;23805:47;23866:131;23992:4;23866:131;:::i;:::-;23858:139;;23762:245;;;:::o;24014:416::-;;24214:2;24203:9;24199:18;24191:26;;24264:9;24258:4;24254:20;24250:1;24239:9;24235:17;24228:47;24289:131;24415:4;24289:131;:::i;:::-;24281:139;;24185:245;;;:::o;24437:416::-;;24637:2;24626:9;24622:18;24614:26;;24687:9;24681:4;24677:20;24673:1;24662:9;24658:17;24651:47;24712:131;24838:4;24712:131;:::i;:::-;24704:139;;24608:245;;;:::o;24860:416::-;;25060:2;25049:9;25045:18;25037:26;;25110:9;25104:4;25100:20;25096:1;25085:9;25081:17;25074:47;25135:131;25261:4;25135:131;:::i;:::-;25127:139;;25031:245;;;:::o;25283:416::-;;25483:2;25472:9;25468:18;25460:26;;25533:9;25527:4;25523:20;25519:1;25508:9;25504:17;25497:47;25558:131;25684:4;25558:131;:::i;:::-;25550:139;;25454:245;;;:::o;25706:416::-;;25906:2;25895:9;25891:18;25883:26;;25956:9;25950:4;25946:20;25942:1;25931:9;25927:17;25920:47;25981:131;26107:4;25981:131;:::i;:::-;25973:139;;25877:245;;;:::o;26129:222::-;;26256:2;26245:9;26241:18;26233:26;;26270:71;26338:1;26327:9;26323:17;26314:6;26270:71;:::i;:::-;26227:124;;;;:::o;26358:256::-;;26420:2;26414:9;26404:19;;26458:4;26450:6;26446:17;26557:6;26545:10;26542:22;26521:18;26509:10;26506:34;26503:62;26500:2;;;26578:1;26575;26568:12;26500:2;26598:10;26594:2;26587:22;26398:216;;;;:::o;26621:322::-;;26765:18;26757:6;26754:30;26751:2;;;26797:1;26794;26787:12;26751:2;26864:4;26860:9;26853:4;26845:6;26841:17;26837:33;26829:41;;26928:4;26922;26918:15;26910:23;;26688:255;;;:::o;26950:97::-;;27034:3;27026:11;;27020:27;;;:::o;27054:108::-;;27148:4;27138:14;;27126:36;;;:::o;27169:121::-;;27262:5;27256:12;27246:22;;27227:63;;;:::o;27297:122::-;;27391:5;27385:12;27375:22;;27356:63;;;:::o;27426:106::-;;27522:4;27517:3;27513:14;27505:22;;27499:33;;;:::o;27540:140::-;;27671:3;27656:18;;27649:31;;;;:::o;27689:162::-;;27803:6;27798:3;27791:19;27840:4;27835:3;27831:14;27816:29;;27784:67;;;;:::o;27860:144::-;;27995:3;27980:18;;27973:31;;;;:::o;28013:163::-;;28128:6;28123:3;28116:19;28165:4;28160:3;28156:14;28141:29;;28109:67;;;;:::o;28185:145::-;;28321:3;28306:18;;28299:31;;;;:::o;28338:91::-;;28400:24;28418:5;28400:24;:::i;:::-;28389:35;;28383:46;;;:::o;28436:85::-;;28509:5;28502:13;28495:21;28484:32;;28478:43;;;:::o;28528:72::-;;28590:5;28579:16;;28573:27;;;:::o;28607:122::-;;28700:24;28718:5;28700:24;:::i;:::-;28689:35;;28683:46;;;:::o;28736:114::-;;28821:24;28839:5;28821:24;:::i;:::-;28810:35;;28804:46;;;:::o;28857:121::-;;28930:42;28923:5;28919:54;28908:65;;28902:76;;;:::o;28985:72::-;;29047:5;29036:16;;29030:27;;;:::o;29064:88::-;;29136:10;29129:5;29125:22;29114:33;;29108:44;;;:::o;29159:183::-;;29269:68;29331:5;29269:68;:::i;:::-;29256:81;;29250:92;;;:::o;29349:139::-;;29459:24;29477:5;29459:24;:::i;:::-;29446:37;;29440:48;;;:::o;29495:167::-;;29597:60;29651:5;29597:60;:::i;:::-;29584:73;;29578:84;;;:::o;29669:131::-;;29771:24;29789:5;29771:24;:::i;:::-;29758:37;;29752:48;;;:::o;29807:106::-;;29885:23;29902:5;29885:23;:::i;:::-;29872:36;;29866:47;;;:::o;29921:145::-;30002:6;29997:3;29992;29979:30;30058:1;30049:6;30044:3;30040:16;30033:27;29972:94;;;:::o;30075:268::-;30140:1;30147:101;30161:6;30158:1;30155:13;30147:101;;;30237:1;30232:3;30228:11;30222:18;30218:1;30213:3;30209:11;30202:39;30183:2;30180:1;30176:10;30171:15;;30147:101;;;30263:6;30260:1;30257:13;30254:2;;;30328:1;30319:6;30314:3;30310:16;30303:27;30254:2;30124:219;;;;:::o;30351:97::-;;30439:2;30435:7;30430:2;30423:5;30419:14;30415:28;30405:38;;30399:49;;;:::o;30456:117::-;30525:24;30543:5;30525:24;:::i;:::-;30518:5;30515:35;30505:2;;30564:1;30561;30554:12;30505:2;30499:74;:::o;30580:111::-;30646:21;30661:5;30646:21;:::i;:::-;30639:5;30636:32;30626:2;;30682:1;30679;30672:12;30626:2;30620:71;:::o;30698:117::-;30767:24;30785:5;30767:24;:::i;:::-;30760:5;30757:35;30747:2;;30806:1;30803;30796:12;30747:2;30741:74;:::o;30822:179::-;30922:55;30971:5;30922:55;:::i;:::-;30915:5;30912:66;30902:2;;30992:1;30989;30982:12;30902:2;30896:105;:::o;31008:163::-;31100:47;31141:5;31100:47;:::i;:::-;31093:5;31090:58;31080:2;;31162:1;31159;31152:12;31080:2;31074:97;:::o;31178:117::-;31247:24;31265:5;31247:24;:::i;:::-;31240:5;31237:35;31227:2;;31286:1;31283;31276:12;31227:2;31221:74;:::o;31302:115::-;31370:23;31387:5;31370:23;:::i;:::-;31363:5;31360:34;31350:2;;31408:1;31405;31398:12;31350:2;31344:73;:::o

Swarm Source

ipfs://834fbbe9634dacf9cb86e26acb789d76499021de3cb5fe20495596d9adb74e83
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.