ETH Price: $3,340.84 (+0.36%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Spend192875702024-02-23 3:18:59313 days ago1708658339IN
0x3cc6Db8C...5fdA1Be35
0 ETH0.0053836139.10293914
Spend192803852024-02-22 3:08:11314 days ago1708571291IN
0x3cc6Db8C...5fdA1Be35
0 ETH0.0053496638.85294304
Spend192728482024-02-21 1:42:11315 days ago1708479731IN
0x3cc6Db8C...5fdA1Be35
0 ETH0.0053136938.59169186
Spend192659142024-02-20 2:23:23316 days ago1708395803IN
0x3cc6Db8C...5fdA1Be35
0 ETH0.0037450127.2083651
Spend192584952024-02-19 1:21:35317 days ago1708305695IN
0x3cc6Db8C...5fdA1Be35
0 ETH0.0035988526.14192982
Spend192448242024-02-17 3:10:11319 days ago1708139411IN
0x3cc6Db8C...5fdA1Be35
0 ETH0.0026802119.46389719
Spend192373662024-02-16 2:03:11320 days ago1708048991IN
0x3cc6Db8C...5fdA1Be35
0 ETH0.0036254226.33491976
Spend192313522024-02-15 5:49:47320 days ago1707976187IN
0x3cc6Db8C...5fdA1Be35
0 ETH0.0029374221.33921014
Spend192232782024-02-14 2:37:11322 days ago1707878231IN
0x3cc6Db8C...5fdA1Be35
0 ETH0.0034543225.08771219
Spend192162732024-02-13 3:00:35323 days ago1707793235IN
0x3cc6Db8C...5fdA1Be35
0 ETH0.0036416526.45280004
Spend192093162024-02-12 3:38:23324 days ago1707709103IN
0x3cc6Db8C...5fdA1Be35
0 ETH0.0031740923.05652368
Spend191950932024-02-10 3:39:59326 days ago1707536399IN
0x3cc6Db8C...5fdA1Be35
0 ETH0.0051881637.68001281
Spend191733442024-02-07 2:27:11329 days ago1707272831IN
0x3cc6Db8C...5fdA1Be35
0 ETH0.0044032931.97975689
Spend191665132024-02-06 3:26:35330 days ago1707189995IN
0x3cc6Db8C...5fdA1Be35
0 ETH0.0033862124.59306273
Spend191312222024-02-01 4:29:59334 days ago1706761799IN
0x3cc6Db8C...5fdA1Be35
0 ETH0.0028384320.61465285
Spend190814152024-01-25 5:01:59341 days ago1706158919IN
0x3cc6Db8C...5fdA1Be35
0 ETH0.0018026113.09409433
Spend190173952024-01-16 5:35:35350 days ago1705383335IN
0x3cc6Db8C...5fdA1Be35
0 ETH0.0038674428.08807161
Spend189815312024-01-11 5:12:35355 days ago1704949955IN
0x3cc6Db8C...5fdA1Be35
0 ETH0.0041436830.09427066
Spend189331262024-01-04 9:38:47362 days ago1704361127IN
0x3cc6Db8C...5fdA1Be35
0 ETH0.0034180124.82828902
Spend188830262023-12-28 8:49:47369 days ago1703753387IN
0x3cc6Db8C...5fdA1Be35
0 ETH0.0048593835.29834494
Spend188257482023-12-20 7:51:23377 days ago1703058683IN
0x3cc6Db8C...5fdA1Be35
0 ETH0.0092758359.92062717

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

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

Contract Name:
OwnbitMultiSig

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2023-06-24
*/

pragma solidity >=0.8.0 <0.9.0;

// This is the ETH/ERC20/NFT multisig contract for Ownbit.
//
// For 2-of-3 multisig, to authorize a spend, two signtures must be provided by 2 of the 3 owners.
// To generate the message to be signed, provide the destination address and
// spend amount (in wei) to the generateMessageToSign method.
// The signatures must be provided as the (v, r, s) hex-encoded coordinates.
// The S coordinate must be 0x00 or 0x01 corresponding to 0x1b and 0x1c, respectively.
//
// WARNING: The generated message is only valid until the next spend is executed.
//          after that, a new message will need to be calculated.
//
//
// Accident Protection MultiSig, rules:
//
// Participants must keep themselves active by submitting transactions. 
// Not submitting any transaction within 3,000,000 ETH blocks (roughly 416 days) will be treated as wallet lost (i.e. accident happened), 
// other participants can still spend the assets as along as: valid signing count >= Min(mininual required count, active owners).
//
// INFO: This contract is ERC20/ERC721/ERC1155 compatible.
// This contract can both receive ETH, ERC20 and NFT (ERC721/ERC1155) tokens.
// Last update time: 2023-06-04.
// [email protected]

contract OwnbitMultiSig {
    
  uint constant public MAX_OWNER_COUNT = 9;
  uint constant public MAX_INACTIVE_TIME = 416 days; 

  // The N addresses which control the funds in this contract. The
  // owners of M of these addresses will need to both sign a message
  // allowing the funds in this contract to be spent.
  mapping(address => uint256) private ownerActiveTimeMap; //uint256 is the active timestamp(in secs) of this owner
  address[] private owners;
  uint private required;

  // The contract nonce is not accessible to the contract so we
  // implement a nonce-like variable for replay protection.
  uint256 private spendNonce = 0;
  
  // An event sent when funds are received.
  event Funded(address from, uint value);
  
  // An event sent when an spendAny is executed.
  event Spent(address to, uint value);

  modifier validRequirement(uint ownerCount, uint _required) {
    require (ownerCount <= MAX_OWNER_COUNT
            && _required <= ownerCount
            && _required >= 1);
    _;
  }
  
  /// @dev Contract constructor sets initial owners and required number of confirmations.
  /// @param _owners List of initial owners.
  /// @param _required Number of required confirmations.
  constructor(address[] memory _owners, uint _required) validRequirement(_owners.length, _required) {
    for (uint i = 0; i < _owners.length; i++) {
        //onwer should be distinct, and non-zero
        if (ownerActiveTimeMap[_owners[i]] > 0 || _owners[i] == address(0x0)) {
            revert();
        }
        ownerActiveTimeMap[_owners[i]] = block.timestamp;
    }
    owners = _owners;
    required = _required;
  }

  // The fallback function for this contract.
  fallback() external payable {
    if (msg.value > 0) {
        emit Funded(msg.sender, msg.value);
    }
  }
  
  // @dev Returns list of owners.
  // @return List of owner addresses.
  function getOwners() public view returns (address[] memory) {
    return owners;
  }
    
  function getSpendNonce() public view returns (uint256) {
    return spendNonce;
  }
    
  function getRequired() public view returns (uint) {
    return required;
  }
  
  //return the active timestamp of this owner
  function getOwnerActiveTime(address addr) public view returns (uint256) {
    return ownerActiveTimeMap[addr];
  }

  // Generates the message to sign given the output destination address and amount.
  // includes this contract's address and a nonce for replay protection.
  // One option to independently verify: https://leventozturk.com/engineering/sha3/ and select keccak
  function generateMessageToSign(address destination, uint256 value, bytes memory data) private view returns (bytes32) {
    //the sequence must match generateMultiSigV3 in JS
    bytes32 message = keccak256(abi.encodePacked(address(this), destination, value, data, spendNonce));
    return message;
  }
  
  function _messageToRecover(address destination, uint256 value, bytes memory data) private view returns (bytes32) {
    bytes32 hashedUnsignedMessage = generateMessageToSign(destination, value, data);
    bytes memory prefix = "\x19Ethereum Signed Message:\n32";
    return keccak256(abi.encodePacked(prefix, hashedUnsignedMessage));
  }
  
  //destination can be a normal address or a contract address, such as ERC20 contract address.
  //value is the wei transferred to the destination.
  //data for transfer ether: 0x
  //data for transfer erc20 example: 0xa9059cbb000000000000000000000000ac6342a7efb995d63cc91db49f6023e95873d25000000000000000000000000000000000000000000000000000000000000003e8
  //data for transfer erc721 example: 0x42842e0e00000000000000000000000097b65ad59c8c96f2dd786751e6279a1a6d34a4810000000000000000000000006cb33e7179860d24635c66850f1f6a5d4f8eee6d0000000000000000000000000000000000000000000000000000000000042134
  //data can contain any data to be executed. 
  function spend(address destination, uint256 value, uint8[] memory vs, bytes32[] memory rs, bytes32[] memory ss, bytes calldata data) external {
    require(destination != address(this), "Not allow sending to yourself");
    require(_validSignature(destination, value, vs, rs, ss, data), "invalid signatures");
    spendNonce = spendNonce + 1;
    //transfer tokens from this contract to the destination address
    (bool sent,) = destination.call{value: value}(data);
    if (sent) {
        emit Spent(destination, value);
    }
  }
  
  //send a tx from the owner address to active the owner
  //Allow the owner to transfer some ETH, although this is not necessary.
  function active() external payable {
    require(ownerActiveTimeMap[msg.sender] > 0, "Not an owner");
    ownerActiveTimeMap[msg.sender] = block.timestamp;
  }
  
  function getRequiredWithoutInactive() public view returns (uint) {
    uint activeOwner = 0;  
    for (uint i = 0; i < owners.length; i++) {
        //if the owner is active
        if (ownerActiveTimeMap[owners[i]] + MAX_INACTIVE_TIME >= block.timestamp) {
            activeOwner++;
        }
    }
    //active owners still equal or greater then required
    if (activeOwner >= required) {
        return required;
    }
    //active less than required, all active must sign
    if (activeOwner >= 1) {
        return activeOwner;
    }
    //at least one sign.
    return 1;
  }

  // Confirm that the signature triplets (v1, r1, s1) (v2, r2, s2) ...
  // authorize a spend of this contract's funds to the given destination address.
  function _validSignature(address destination, uint256 value, uint8[] memory vs, bytes32[] memory rs, bytes32[] memory ss, bytes memory data) private returns (bool) {
    require(vs.length == rs.length);
    require(rs.length == ss.length);
    require(vs.length <= owners.length);
    require(vs.length >= getRequiredWithoutInactive());
    bytes32 message = _messageToRecover(destination, value, data);
    address[] memory addrs = new address[](vs.length);
    for (uint i = 0; i < vs.length; i++) {
        //recover the address associated with the public key from elliptic curve signature or return zero on error 
        addrs[i] = ecrecover(message, vs[i]+27, rs[i], ss[i]);
    }
    require(_distinctOwners(addrs));
    _updateActiveTime(addrs); //update addrs' active timestamp
    
    //check again, this is important to prevent inactive owners from stealing the money.
    require(vs.length >= getRequiredWithoutInactive(), "Active owners updated after the call, please call active() before calling spend.");
    
    return true;
  }
  
  // Confirm the addresses as distinct owners of this contract.
  function _distinctOwners(address[] memory addrs) private view returns (bool) {
    if (addrs.length > owners.length) {
        return false;
    }
    for (uint i = 0; i < addrs.length; i++) {
        //> 0 means one of the owner
        if (ownerActiveTimeMap[addrs[i]] == 0) {
            return false;
        }
        //address should be distinct
        for (uint j = 0; j < i; j++) {
            if (addrs[i] == addrs[j]) {
                return false;
            }
        }
    }
    return true;
  }
  
  //update the active block number for those owners
  function _updateActiveTime(address[] memory addrs) private {
    for (uint i = 0; i < addrs.length; i++) {
        //only update active timestamp for owners
        if (ownerActiveTimeMap[addrs[i]] > 0) {
            ownerActiveTimeMap[addrs[i]] = block.timestamp;
        }
    }
  }

  //support ERC721 safeTransferFrom
  function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes calldata _data) external returns(bytes4) {
      return bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"));
  }

  function onERC1155Received(address _operator, address _from, uint256 _id, uint256 _value, bytes calldata _data) external returns(bytes4) {
      return bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"));
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address[]","name":"_owners","type":"address[]"},{"internalType":"uint256","name":"_required","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Funded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Spent","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"MAX_INACTIVE_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_OWNER_COUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"active","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getOwnerActiveTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwners","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRequired","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRequiredWithoutInactive","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSpendNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint8[]","name":"vs","type":"uint8[]"},{"internalType":"bytes32[]","name":"rs","type":"bytes32[]"},{"internalType":"bytes32[]","name":"ss","type":"bytes32[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"spend","outputs":[],"stateMutability":"nonpayable","type":"function"}]

Deployed Bytecode

0x6080604052600436106100a05760003560e01c8063a0e67e2b11610064578063a0e67e2b146101be578063b6b297b9146101e9578063c6a2a9f114610214578063d74f8edd1461023f578063f23a6e611461026a578063f3acb258146102a7576100a1565b806302fb0c5e146100e65780631398a5f6146100f0578063150b7a021461011b5780637c99df4a146101585780637d7e25b214610181576100a1565b5b60003411156100e4577f5af8184bef8e4b45eb9f6ed7734d04da38ced226495548f46e0c8ff8d7d9a52433346040516100db929190610d1c565b60405180910390a15b005b6100ee6102d2565b005b3480156100fc57600080fd5b50610105610398565b6040516101129190610d45565b60405180910390f35b34801561012757600080fd5b50610142600480360381019061013d9190610e31565b6103a2565b60405161014f9190610ef4565b60405180910390f35b34801561016457600080fd5b5061017f600480360381019061017a9190611190565b6103d0565b005b34801561018d57600080fd5b506101a860048036038101906101a39190611293565b61059e565b6040516101b59190610d45565b60405180910390f35b3480156101ca57600080fd5b506101d36105e6565b6040516101e0919061137e565b60405180910390f35b3480156101f557600080fd5b506101fe610674565b60405161020b9190610d45565b60405180910390f35b34801561022057600080fd5b5061022961067c565b6040516102369190610d45565b60405180910390f35b34801561024b57600080fd5b50610254610686565b6040516102619190610d45565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c91906113a0565b61068b565b60405161029e9190610ef4565b60405180910390f35b3480156102b357600080fd5b506102bc6106ba565b6040516102c99190610d45565b60405180910390f35b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610353576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034a90611497565b60405180910390fd5b426000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b6000600254905090565b60007f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f905095945050505050565b3073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff160361043e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043590611503565b60405180910390fd5b610490878787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506107b4565b6104cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c69061156f565b60405180910390fd5b60016003546104de91906115be565b60038190555060008773ffffffffffffffffffffffffffffffffffffffff1687848460405161050e929190611631565b60006040518083038185875af1925050503d806000811461054b576040519150601f19603f3d011682016040523d82523d6000602084013e610550565b606091505b505090508015610594577fd3eec71143c45f28685b24760ea218d476917aa0ac0392a55e5304cef40bd2b6888860405161058b929190610d1c565b60405180910390a15b5050505050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600180548060200260200160405190810160405280929190818152602001828054801561066a57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610620575b5050505050905090565b630224700081565b6000600354905090565b600981565b60007ff23a6e612e1ff4830e658fe43f4e3cb4a5f8170bd5d9e69fb5d7a7fa9e4fdf9790509695505050505050565b6000806000905060005b60018054905081101561078557426302247000600080600185815481106106ee576106ed61164a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461075e91906115be565b1061077257818061076e90611679565b9250505b808061077d90611679565b9150506106c4565b50600254811061079a576002549150506107b1565b600181106107ab57809150506107b1565b60019150505b90565b600083518551146107c457600080fd5b82518451146107d257600080fd5b600180549050855111156107e557600080fd5b6107ed6106ba565b855110156107fa57600080fd5b60006108078888856109e3565b90506000865167ffffffffffffffff81111561082657610825610f20565b5b6040519080825280602002602001820160405280156108545781602001602082028036833780820191505090505b50905060005b875181101561096c57600183601b8a848151811061087b5761087a61164a565b5b602002602001015161088d91906116c1565b8984815181106108a05761089f61164a565b5b60200260200101518985815181106108bb576108ba61164a565b5b6020026020010151604051600081526020016040526040516108e09493929190611714565b6020604051602081039080840390855afa158015610902573d6000803e3d6000fd5b5050506020604051035182828151811061091f5761091e61164a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808061096490611679565b91505061085a565b5061097681610a61565b61097f57600080fd5b61098881610b9f565b6109906106ba565b875110156109d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ca906117f1565b60405180910390fd5b6001925050509695505050505050565b6000806109f1858585610c81565b905060006040518060400160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a33320000000081525090508082604051602001610a40929190611898565b60405160208183030381529060405280519060200120925050509392505050565b600060018054905082511115610a7a5760009050610b9a565b60005b8251811015610b94576000806000858481518110610a9e57610a9d61164a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403610af0576000915050610b9a565b60005b81811015610b8057838181518110610b0e57610b0d61164a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16848381518110610b3f57610b3e61164a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603610b6d57600092505050610b9a565b8080610b7890611679565b915050610af3565b508080610b8c90611679565b915050610a7d565b50600190505b919050565b60005b8151811015610c7d576000806000848481518110610bc357610bc261164a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610c6a5742600080848481518110610c2357610c2261164a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8080610c7590611679565b915050610ba2565b5050565b60008030858585600354604051602001610c9f959493929190611929565b604051602081830303815290604052805190602001209050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ced82610cc2565b9050919050565b610cfd81610ce2565b82525050565b6000819050919050565b610d1681610d03565b82525050565b6000604082019050610d316000830185610cf4565b610d3e6020830184610d0d565b9392505050565b6000602082019050610d5a6000830184610d0d565b92915050565b6000604051905090565b600080fd5b600080fd5b610d7d81610ce2565b8114610d8857600080fd5b50565b600081359050610d9a81610d74565b92915050565b610da981610d03565b8114610db457600080fd5b50565b600081359050610dc681610da0565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112610df157610df0610dcc565b5b8235905067ffffffffffffffff811115610e0e57610e0d610dd1565b5b602083019150836001820283011115610e2a57610e29610dd6565b5b9250929050565b600080600080600060808688031215610e4d57610e4c610d6a565b5b6000610e5b88828901610d8b565b9550506020610e6c88828901610d8b565b9450506040610e7d88828901610db7565b935050606086013567ffffffffffffffff811115610e9e57610e9d610d6f565b5b610eaa88828901610ddb565b92509250509295509295909350565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610eee81610eb9565b82525050565b6000602082019050610f096000830184610ee5565b92915050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610f5882610f0f565b810181811067ffffffffffffffff82111715610f7757610f76610f20565b5b80604052505050565b6000610f8a610d60565b9050610f968282610f4f565b919050565b600067ffffffffffffffff821115610fb657610fb5610f20565b5b602082029050602081019050919050565b600060ff82169050919050565b610fdd81610fc7565b8114610fe857600080fd5b50565b600081359050610ffa81610fd4565b92915050565b600061101361100e84610f9b565b610f80565b9050808382526020820190506020840283018581111561103657611035610dd6565b5b835b8181101561105f578061104b8882610feb565b845260208401935050602081019050611038565b5050509392505050565b600082601f83011261107e5761107d610dcc565b5b813561108e848260208601611000565b91505092915050565b600067ffffffffffffffff8211156110b2576110b1610f20565b5b602082029050602081019050919050565b6000819050919050565b6110d6816110c3565b81146110e157600080fd5b50565b6000813590506110f3816110cd565b92915050565b600061110c61110784611097565b610f80565b9050808382526020820190506020840283018581111561112f5761112e610dd6565b5b835b81811015611158578061114488826110e4565b845260208401935050602081019050611131565b5050509392505050565b600082601f83011261117757611176610dcc565b5b81356111878482602086016110f9565b91505092915050565b600080600080600080600060c0888a0312156111af576111ae610d6a565b5b60006111bd8a828b01610d8b565b97505060206111ce8a828b01610db7565b965050604088013567ffffffffffffffff8111156111ef576111ee610d6f565b5b6111fb8a828b01611069565b955050606088013567ffffffffffffffff81111561121c5761121b610d6f565b5b6112288a828b01611162565b945050608088013567ffffffffffffffff81111561124957611248610d6f565b5b6112558a828b01611162565b93505060a088013567ffffffffffffffff81111561127657611275610d6f565b5b6112828a828b01610ddb565b925092505092959891949750929550565b6000602082840312156112a9576112a8610d6a565b5b60006112b784828501610d8b565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6112f581610ce2565b82525050565b600061130783836112ec565b60208301905092915050565b6000602082019050919050565b600061132b826112c0565b61133581856112cb565b9350611340836112dc565b8060005b8381101561137157815161135888826112fb565b975061136383611313565b925050600181019050611344565b5085935050505092915050565b600060208201905081810360008301526113988184611320565b905092915050565b60008060008060008060a087890312156113bd576113bc610d6a565b5b60006113cb89828a01610d8b565b96505060206113dc89828a01610d8b565b95505060406113ed89828a01610db7565b94505060606113fe89828a01610db7565b935050608087013567ffffffffffffffff81111561141f5761141e610d6f565b5b61142b89828a01610ddb565b92509250509295509295509295565b600082825260208201905092915050565b7f4e6f7420616e206f776e65720000000000000000000000000000000000000000600082015250565b6000611481600c8361143a565b915061148c8261144b565b602082019050919050565b600060208201905081810360008301526114b081611474565b9050919050565b7f4e6f7420616c6c6f772073656e64696e6720746f20796f757273656c66000000600082015250565b60006114ed601d8361143a565b91506114f8826114b7565b602082019050919050565b6000602082019050818103600083015261151c816114e0565b9050919050565b7f696e76616c6964207369676e6174757265730000000000000000000000000000600082015250565b600061155960128361143a565b915061156482611523565b602082019050919050565b600060208201905081810360008301526115888161154c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006115c982610d03565b91506115d483610d03565b92508282019050808211156115ec576115eb61158f565b5b92915050565b600081905092915050565b82818337600083830152505050565b600061161883856115f2565b93506116258385846115fd565b82840190509392505050565b600061163e82848661160c565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061168482610d03565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036116b6576116b561158f565b5b600182019050919050565b60006116cc82610fc7565b91506116d783610fc7565b9250828201905060ff8111156116f0576116ef61158f565b5b92915050565b6116ff816110c3565b82525050565b61170e81610fc7565b82525050565b600060808201905061172960008301876116f6565b6117366020830186611705565b61174360408301856116f6565b61175060608301846116f6565b95945050505050565b7f416374697665206f776e6572732075706461746564206166746572207468652060008201527f63616c6c2c20706c656173652063616c6c206163746976652829206265666f7260208201527f652063616c6c696e67207370656e642e00000000000000000000000000000000604082015250565b60006117db60508361143a565b91506117e682611759565b606082019050919050565b6000602082019050818103600083015261180a816117ce565b9050919050565b600081519050919050565b60005b8381101561183a57808201518184015260208101905061181f565b60008484015250505050565b600061185182611811565b61185b81856115f2565b935061186b81856020860161181c565b80840191505092915050565b6000819050919050565b61189261188d826110c3565b611877565b82525050565b60006118a48285611846565b91506118b08284611881565b6020820191508190509392505050565b60008160601b9050919050565b60006118d8826118c0565b9050919050565b60006118ea826118cd565b9050919050565b6119026118fd82610ce2565b6118df565b82525050565b6000819050919050565b61192361191e82610d03565b611908565b82525050565b600061193582886118f1565b60148201915061194582876118f1565b6014820191506119558286611912565b6020820191506119658285611846565b91506119718284611912565b602082019150819050969550505050505056fea2646970667358221220b7c21cbe7e6d41bdb7321d5469afdb5b32c40fd02772b2b5fbb5c2aebd34e83c64736f6c63430008130033

Deployed Bytecode Sourcemap

1261:8080:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3044:1;3032:9;:13;3028:72;;;3063:29;3070:10;3082:9;3063:29;;;;;;;:::i;:::-;;;;;;;;3028:72;1261:8080;5889:162;;;:::i;:::-;;3378:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8881:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5206:542;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3511:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3187:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1341:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3283:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1296:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9102:236;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6059:601;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5889:162;5972:1;5939:18;:30;5958:10;5939:30;;;;;;;;;;;;;;;;:34;5931:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;6030:15;5997:18;:30;6016:10;5997:30;;;;;;;;;;;;;;;:48;;;;5889:162::o;3378:78::-;3422:4;3442:8;;3435:15;;3378:78;:::o;8881:215::-;8998:6;9029:60;9015:75;;8881:215;;;;;;;:::o;5206:542::-;5386:4;5363:28;;:11;:28;;;5355:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5440:53;5456:11;5469:5;5476:2;5480;5484;5488:4;;5440:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;:53::i;:::-;5432:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;5549:1;5536:10;;:14;;;;:::i;:::-;5523:10;:27;;;;5627:9;5641:11;:16;;5665:5;5672:4;;5641:36;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5626:51;;;5688:4;5684:59;;;5710:25;5716:11;5729:5;5710:25;;;;;;;:::i;:::-;;;;;;;;5684:59;5348:400;5206:542;;;;;;;:::o;3511:116::-;3574:7;3597:18;:24;3616:4;3597:24;;;;;;;;;;;;;;;;3590:31;;3511:116;;;:::o;3187:86::-;3229:16;3261:6;3254:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3187:86;:::o;1341:49::-;1382:8;1341:49;:::o;3283:85::-;3329:7;3352:10;;3345:17;;3283:85;:::o;1296:40::-;1335:1;1296:40;:::o;9102:236::-;9231:6;9262:69;9248:84;;9102:236;;;;;;;;:::o;6059:601::-;6118:4;6131:16;6150:1;6131:20;;6165:6;6160:207;6181:6;:13;;;;6177:1;:17;6160:207;;;6303:15;1382:8;6250:18;:29;6269:6;6276:1;6269:9;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6250:29;;;;;;;;;;;;;;;;:49;;;;:::i;:::-;:68;6246:114;;6335:13;;;;;:::i;:::-;;;;6246:114;6196:3;;;;;:::i;:::-;;;;6160:207;;;;6450:8;;6435:11;:23;6431:63;;6478:8;;6471:15;;;;;6431:63;6574:1;6559:11;:16;6555:59;;6595:11;6588:18;;;;;6555:59;6653:1;6646:8;;;6059:601;;:::o;6821:1064::-;6979:4;7013:2;:9;7000:2;:9;:22;6992:31;;;;;;7051:2;:9;7038:2;:9;:22;7030:31;;;;;;7089:6;:13;;;;7076:2;:9;:26;;7068:35;;;;;;7131:28;:26;:28::i;:::-;7118:2;:9;:41;;7110:50;;;;;;7167:15;7185:43;7203:11;7216:5;7223:4;7185:17;:43::i;:::-;7167:61;;7235:22;7274:2;:9;7260:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7235:49;;7296:6;7291:226;7312:2;:9;7308:1;:13;7291:226;;;7467:42;7477:7;7492:2;7486;7489:1;7486:5;;;;;;;;:::i;:::-;;;;;;;;:8;;;;:::i;:::-;7496:2;7499:1;7496:5;;;;;;;;:::i;:::-;;;;;;;;7503:2;7506:1;7503:5;;;;;;;;:::i;:::-;;;;;;;;7467:42;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7456:5;7462:1;7456:8;;;;;;;;:::i;:::-;;;;;;;:53;;;;;;;;;;;7323:3;;;;;:::i;:::-;;;;7291:226;;;;7531:22;7547:5;7531:15;:22::i;:::-;7523:31;;;;;;7561:24;7579:5;7561:17;:24::i;:::-;7742:28;:26;:28::i;:::-;7729:2;:9;:41;;7721:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;7875:4;7868:11;;;;6821:1064;;;;;;;;:::o;4208:340::-;4312:7;4328:29;4360:47;4382:11;4395:5;4402:4;4360:21;:47::i;:::-;4328:79;;4414:19;:56;;;;;;;;;;;;;;;;;;;4511:6;4519:21;4494:47;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4484:58;;;;;;4477:65;;;;4208:340;;;;;:::o;7958:528::-;8029:4;8061:6;:13;;;;8046:5;:12;:28;8042:65;;;8094:5;8087:12;;;;8042:65;8118:6;8113:350;8134:5;:12;8130:1;:16;8113:350;;;8238:1;8206:18;:28;8225:5;8231:1;8225:8;;;;;;;;:::i;:::-;;;;;;;;8206:28;;;;;;;;;;;;;;;;:33;8202:78;;8263:5;8256:12;;;;;8202:78;8333:6;8328:128;8349:1;8345;:5;8328:128;;;8388:5;8394:1;8388:8;;;;;;;;:::i;:::-;;;;;;;;8376:20;;:5;8382:1;8376:8;;;;;;;;:::i;:::-;;;;;;;;:20;;;8372:73;;8424:5;8417:12;;;;;;8372:73;8352:3;;;;;:::i;:::-;;;;8328:128;;;;8148:3;;;;;:::i;:::-;;;;8113:350;;;;8476:4;8469:11;;7958:528;;;;:::o;8547:291::-;8618:6;8613:220;8634:5;:12;8630:1;:16;8613:220;;;8750:1;8719:18;:28;8738:5;8744:1;8738:8;;;;;;;;:::i;:::-;;;;;;;;8719:28;;;;;;;;;;;;;;;;:32;8715:111;;;8799:15;8768:18;:28;8787:5;8793:1;8787:8;;;;;;;;:::i;:::-;;;;;;;;8768:28;;;;;;;;;;;;;;;:46;;;;8715:111;8648:3;;;;;:::i;:::-;;;;8613:220;;;;8547:291;:::o;3895:305::-;4003:7;4075:15;4128:4;4135:11;4148:5;4155:4;4161:10;;4103:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4093:80;;;;;;4075:98;;4187:7;4180:14;;;3895:305;;;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:77::-;402:7;431:5;420:16;;365:77;;;:::o;448:118::-;535:24;553:5;535:24;:::i;:::-;530:3;523:37;448:118;;:::o;572:332::-;693:4;731:2;720:9;716:18;708:26;;744:71;812:1;801:9;797:17;788:6;744:71;:::i;:::-;825:72;893:2;882:9;878:18;869:6;825:72;:::i;:::-;572:332;;;;;:::o;910:222::-;1003:4;1041:2;1030:9;1026:18;1018:26;;1054:71;1122:1;1111:9;1107:17;1098:6;1054:71;:::i;:::-;910:222;;;;:::o;1138:75::-;1171:6;1204:2;1198:9;1188:19;;1138:75;:::o;1219:117::-;1328:1;1325;1318:12;1342:117;1451:1;1448;1441:12;1465:122;1538:24;1556:5;1538:24;:::i;:::-;1531:5;1528:35;1518:63;;1577:1;1574;1567:12;1518:63;1465:122;:::o;1593:139::-;1639:5;1677:6;1664:20;1655:29;;1693:33;1720:5;1693:33;:::i;:::-;1593:139;;;;:::o;1738:122::-;1811:24;1829:5;1811:24;:::i;:::-;1804:5;1801:35;1791:63;;1850:1;1847;1840:12;1791:63;1738:122;:::o;1866:139::-;1912:5;1950:6;1937:20;1928:29;;1966:33;1993:5;1966:33;:::i;:::-;1866:139;;;;:::o;2011:117::-;2120:1;2117;2110:12;2134:117;2243:1;2240;2233:12;2257:117;2366:1;2363;2356:12;2393:552;2450:8;2460:6;2510:3;2503:4;2495:6;2491:17;2487:27;2477:122;;2518:79;;:::i;:::-;2477:122;2631:6;2618:20;2608:30;;2661:18;2653:6;2650:30;2647:117;;;2683:79;;:::i;:::-;2647:117;2797:4;2789:6;2785:17;2773:29;;2851:3;2843:4;2835:6;2831:17;2821:8;2817:32;2814:41;2811:128;;;2858:79;;:::i;:::-;2811:128;2393:552;;;;;:::o;2951:963::-;3048:6;3056;3064;3072;3080;3129:3;3117:9;3108:7;3104:23;3100:33;3097:120;;;3136:79;;:::i;:::-;3097:120;3256:1;3281:53;3326:7;3317:6;3306:9;3302:22;3281:53;:::i;:::-;3271:63;;3227:117;3383:2;3409:53;3454:7;3445:6;3434:9;3430:22;3409:53;:::i;:::-;3399:63;;3354:118;3511:2;3537:53;3582:7;3573:6;3562:9;3558:22;3537:53;:::i;:::-;3527:63;;3482:118;3667:2;3656:9;3652:18;3639:32;3698:18;3690:6;3687:30;3684:117;;;3720:79;;:::i;:::-;3684:117;3833:64;3889:7;3880:6;3869:9;3865:22;3833:64;:::i;:::-;3815:82;;;;3610:297;2951:963;;;;;;;;:::o;3920:149::-;3956:7;3996:66;3989:5;3985:78;3974:89;;3920:149;;;:::o;4075:115::-;4160:23;4177:5;4160:23;:::i;:::-;4155:3;4148:36;4075:115;;:::o;4196:218::-;4287:4;4325:2;4314:9;4310:18;4302:26;;4338:69;4404:1;4393:9;4389:17;4380:6;4338:69;:::i;:::-;4196:218;;;;:::o;4420:102::-;4461:6;4512:2;4508:7;4503:2;4496:5;4492:14;4488:28;4478:38;;4420:102;;;:::o;4528:180::-;4576:77;4573:1;4566:88;4673:4;4670:1;4663:15;4697:4;4694:1;4687:15;4714:281;4797:27;4819:4;4797:27;:::i;:::-;4789:6;4785:40;4927:6;4915:10;4912:22;4891:18;4879:10;4876:34;4873:62;4870:88;;;4938:18;;:::i;:::-;4870:88;4978:10;4974:2;4967:22;4757:238;4714:281;;:::o;5001:129::-;5035:6;5062:20;;:::i;:::-;5052:30;;5091:33;5119:4;5111:6;5091:33;:::i;:::-;5001:129;;;:::o;5136:309::-;5211:4;5301:18;5293:6;5290:30;5287:56;;;5323:18;;:::i;:::-;5287:56;5373:4;5365:6;5361:17;5353:25;;5433:4;5427;5423:15;5415:23;;5136:309;;;:::o;5451:86::-;5486:7;5526:4;5519:5;5515:16;5504:27;;5451:86;;;:::o;5543:118::-;5614:22;5630:5;5614:22;:::i;:::-;5607:5;5604:33;5594:61;;5651:1;5648;5641:12;5594:61;5543:118;:::o;5667:135::-;5711:5;5749:6;5736:20;5727:29;;5765:31;5790:5;5765:31;:::i;:::-;5667:135;;;;:::o;5823:704::-;5917:5;5942:79;5958:62;6013:6;5958:62;:::i;:::-;5942:79;:::i;:::-;5933:88;;6041:5;6070:6;6063:5;6056:21;6104:4;6097:5;6093:16;6086:23;;6157:4;6149:6;6145:17;6137:6;6133:30;6186:3;6178:6;6175:15;6172:122;;;6205:79;;:::i;:::-;6172:122;6320:6;6303:218;6337:6;6332:3;6329:15;6303:218;;;6412:3;6441:35;6472:3;6460:10;6441:35;:::i;:::-;6436:3;6429:48;6506:4;6501:3;6497:14;6490:21;;6379:142;6363:4;6358:3;6354:14;6347:21;;6303:218;;;6307:21;5923:604;;5823:704;;;;;:::o;6548:366::-;6617:5;6666:3;6659:4;6651:6;6647:17;6643:27;6633:122;;6674:79;;:::i;:::-;6633:122;6791:6;6778:20;6816:92;6904:3;6896:6;6889:4;6881:6;6877:17;6816:92;:::i;:::-;6807:101;;6623:291;6548:366;;;;:::o;6920:311::-;6997:4;7087:18;7079:6;7076:30;7073:56;;;7109:18;;:::i;:::-;7073:56;7159:4;7151:6;7147:17;7139:25;;7219:4;7213;7209:15;7201:23;;6920:311;;;:::o;7237:77::-;7274:7;7303:5;7292:16;;7237:77;;;:::o;7320:122::-;7393:24;7411:5;7393:24;:::i;:::-;7386:5;7383:35;7373:63;;7432:1;7429;7422:12;7373:63;7320:122;:::o;7448:139::-;7494:5;7532:6;7519:20;7510:29;;7548:33;7575:5;7548:33;:::i;:::-;7448:139;;;;:::o;7610:710::-;7706:5;7731:81;7747:64;7804:6;7747:64;:::i;:::-;7731:81;:::i;:::-;7722:90;;7832:5;7861:6;7854:5;7847:21;7895:4;7888:5;7884:16;7877:23;;7948:4;7940:6;7936:17;7928:6;7924:30;7977:3;7969:6;7966:15;7963:122;;;7996:79;;:::i;:::-;7963:122;8111:6;8094:220;8128:6;8123:3;8120:15;8094:220;;;8203:3;8232:37;8265:3;8253:10;8232:37;:::i;:::-;8227:3;8220:50;8299:4;8294:3;8290:14;8283:21;;8170:144;8154:4;8149:3;8145:14;8138:21;;8094:220;;;8098:21;7712:608;;7610:710;;;;;:::o;8343:370::-;8414:5;8463:3;8456:4;8448:6;8444:17;8440:27;8430:122;;8471:79;;:::i;:::-;8430:122;8588:6;8575:20;8613:94;8703:3;8695:6;8688:4;8680:6;8676:17;8613:94;:::i;:::-;8604:103;;8420:293;8343:370;;;;:::o;8719:1881::-;8907:6;8915;8923;8931;8939;8947;8955;9004:3;8992:9;8983:7;8979:23;8975:33;8972:120;;;9011:79;;:::i;:::-;8972:120;9131:1;9156:53;9201:7;9192:6;9181:9;9177:22;9156:53;:::i;:::-;9146:63;;9102:117;9258:2;9284:53;9329:7;9320:6;9309:9;9305:22;9284:53;:::i;:::-;9274:63;;9229:118;9414:2;9403:9;9399:18;9386:32;9445:18;9437:6;9434:30;9431:117;;;9467:79;;:::i;:::-;9431:117;9572:76;9640:7;9631:6;9620:9;9616:22;9572:76;:::i;:::-;9562:86;;9357:301;9725:2;9714:9;9710:18;9697:32;9756:18;9748:6;9745:30;9742:117;;;9778:79;;:::i;:::-;9742:117;9883:78;9953:7;9944:6;9933:9;9929:22;9883:78;:::i;:::-;9873:88;;9668:303;10038:3;10027:9;10023:19;10010:33;10070:18;10062:6;10059:30;10056:117;;;10092:79;;:::i;:::-;10056:117;10197:78;10267:7;10258:6;10247:9;10243:22;10197:78;:::i;:::-;10187:88;;9981:304;10352:3;10341:9;10337:19;10324:33;10384:18;10376:6;10373:30;10370:117;;;10406:79;;:::i;:::-;10370:117;10519:64;10575:7;10566:6;10555:9;10551:22;10519:64;:::i;:::-;10501:82;;;;10295:298;8719:1881;;;;;;;;;;:::o;10606:329::-;10665:6;10714:2;10702:9;10693:7;10689:23;10685:32;10682:119;;;10720:79;;:::i;:::-;10682:119;10840:1;10865:53;10910:7;10901:6;10890:9;10886:22;10865:53;:::i;:::-;10855:63;;10811:117;10606:329;;;;:::o;10941:114::-;11008:6;11042:5;11036:12;11026:22;;10941:114;;;:::o;11061:184::-;11160:11;11194:6;11189:3;11182:19;11234:4;11229:3;11225:14;11210:29;;11061:184;;;;:::o;11251:132::-;11318:4;11341:3;11333:11;;11371:4;11366:3;11362:14;11354:22;;11251:132;;;:::o;11389:108::-;11466:24;11484:5;11466:24;:::i;:::-;11461:3;11454:37;11389:108;;:::o;11503:179::-;11572:10;11593:46;11635:3;11627:6;11593:46;:::i;:::-;11671:4;11666:3;11662:14;11648:28;;11503:179;;;;:::o;11688:113::-;11758:4;11790;11785:3;11781:14;11773:22;;11688:113;;;:::o;11837:732::-;11956:3;11985:54;12033:5;11985:54;:::i;:::-;12055:86;12134:6;12129:3;12055:86;:::i;:::-;12048:93;;12165:56;12215:5;12165:56;:::i;:::-;12244:7;12275:1;12260:284;12285:6;12282:1;12279:13;12260:284;;;12361:6;12355:13;12388:63;12447:3;12432:13;12388:63;:::i;:::-;12381:70;;12474:60;12527:6;12474:60;:::i;:::-;12464:70;;12320:224;12307:1;12304;12300:9;12295:14;;12260:284;;;12264:14;12560:3;12553:10;;11961:608;;;11837:732;;;;:::o;12575:373::-;12718:4;12756:2;12745:9;12741:18;12733:26;;12805:9;12799:4;12795:20;12791:1;12780:9;12776:17;12769:47;12833:108;12936:4;12927:6;12833:108;:::i;:::-;12825:116;;12575:373;;;;:::o;12954:1109::-;13060:6;13068;13076;13084;13092;13100;13149:3;13137:9;13128:7;13124:23;13120:33;13117:120;;;13156:79;;:::i;:::-;13117:120;13276:1;13301:53;13346:7;13337:6;13326:9;13322:22;13301:53;:::i;:::-;13291:63;;13247:117;13403:2;13429:53;13474:7;13465:6;13454:9;13450:22;13429:53;:::i;:::-;13419:63;;13374:118;13531:2;13557:53;13602:7;13593:6;13582:9;13578:22;13557:53;:::i;:::-;13547:63;;13502:118;13659:2;13685:53;13730:7;13721:6;13710:9;13706:22;13685:53;:::i;:::-;13675:63;;13630:118;13815:3;13804:9;13800:19;13787:33;13847:18;13839:6;13836:30;13833:117;;;13869:79;;:::i;:::-;13833:117;13982:64;14038:7;14029:6;14018:9;14014:22;13982:64;:::i;:::-;13964:82;;;;13758:298;12954:1109;;;;;;;;:::o;14069:169::-;14153:11;14187:6;14182:3;14175:19;14227:4;14222:3;14218:14;14203:29;;14069:169;;;;:::o;14244:162::-;14384:14;14380:1;14372:6;14368:14;14361:38;14244:162;:::o;14412:366::-;14554:3;14575:67;14639:2;14634:3;14575:67;:::i;:::-;14568:74;;14651:93;14740:3;14651:93;:::i;:::-;14769:2;14764:3;14760:12;14753:19;;14412:366;;;:::o;14784:419::-;14950:4;14988:2;14977:9;14973:18;14965:26;;15037:9;15031:4;15027:20;15023:1;15012:9;15008:17;15001:47;15065:131;15191:4;15065:131;:::i;:::-;15057:139;;14784:419;;;:::o;15209:179::-;15349:31;15345:1;15337:6;15333:14;15326:55;15209:179;:::o;15394:366::-;15536:3;15557:67;15621:2;15616:3;15557:67;:::i;:::-;15550:74;;15633:93;15722:3;15633:93;:::i;:::-;15751:2;15746:3;15742:12;15735:19;;15394:366;;;:::o;15766:419::-;15932:4;15970:2;15959:9;15955:18;15947:26;;16019:9;16013:4;16009:20;16005:1;15994:9;15990:17;15983:47;16047:131;16173:4;16047:131;:::i;:::-;16039:139;;15766:419;;;:::o;16191:168::-;16331:20;16327:1;16319:6;16315:14;16308:44;16191:168;:::o;16365:366::-;16507:3;16528:67;16592:2;16587:3;16528:67;:::i;:::-;16521:74;;16604:93;16693:3;16604:93;:::i;:::-;16722:2;16717:3;16713:12;16706:19;;16365:366;;;:::o;16737:419::-;16903:4;16941:2;16930:9;16926:18;16918:26;;16990:9;16984:4;16980:20;16976:1;16965:9;16961:17;16954:47;17018:131;17144:4;17018:131;:::i;:::-;17010:139;;16737:419;;;:::o;17162:180::-;17210:77;17207:1;17200:88;17307:4;17304:1;17297:15;17331:4;17328:1;17321:15;17348:191;17388:3;17407:20;17425:1;17407:20;:::i;:::-;17402:25;;17441:20;17459:1;17441:20;:::i;:::-;17436:25;;17484:1;17481;17477:9;17470:16;;17505:3;17502:1;17499:10;17496:36;;;17512:18;;:::i;:::-;17496:36;17348:191;;;;:::o;17545:147::-;17646:11;17683:3;17668:18;;17545:147;;;;:::o;17698:146::-;17795:6;17790:3;17785;17772:30;17836:1;17827:6;17822:3;17818:16;17811:27;17698:146;;;:::o;17872:327::-;17986:3;18007:88;18088:6;18083:3;18007:88;:::i;:::-;18000:95;;18105:56;18154:6;18149:3;18142:5;18105:56;:::i;:::-;18186:6;18181:3;18177:16;18170:23;;17872:327;;;;;:::o;18205:291::-;18345:3;18367:103;18466:3;18457:6;18449;18367:103;:::i;:::-;18360:110;;18487:3;18480:10;;18205:291;;;;;:::o;18502:180::-;18550:77;18547:1;18540:88;18647:4;18644:1;18637:15;18671:4;18668:1;18661:15;18688:233;18727:3;18750:24;18768:5;18750:24;:::i;:::-;18741:33;;18796:66;18789:5;18786:77;18783:103;;18866:18;;:::i;:::-;18783:103;18913:1;18906:5;18902:13;18895:20;;18688:233;;;:::o;18927:188::-;18965:3;18984:18;19000:1;18984:18;:::i;:::-;18979:23;;19016:18;19032:1;19016:18;:::i;:::-;19011:23;;19057:1;19054;19050:9;19043:16;;19080:4;19075:3;19072:13;19069:39;;;19088:18;;:::i;:::-;19069:39;18927:188;;;;:::o;19121:118::-;19208:24;19226:5;19208:24;:::i;:::-;19203:3;19196:37;19121:118;;:::o;19245:112::-;19328:22;19344:5;19328:22;:::i;:::-;19323:3;19316:35;19245:112;;:::o;19363:545::-;19536:4;19574:3;19563:9;19559:19;19551:27;;19588:71;19656:1;19645:9;19641:17;19632:6;19588:71;:::i;:::-;19669:68;19733:2;19722:9;19718:18;19709:6;19669:68;:::i;:::-;19747:72;19815:2;19804:9;19800:18;19791:6;19747:72;:::i;:::-;19829;19897:2;19886:9;19882:18;19873:6;19829:72;:::i;:::-;19363:545;;;;;;;:::o;19914:304::-;20054:34;20050:1;20042:6;20038:14;20031:58;20123:34;20118:2;20110:6;20106:15;20099:59;20192:18;20187:2;20179:6;20175:15;20168:43;19914:304;:::o;20224:366::-;20366:3;20387:67;20451:2;20446:3;20387:67;:::i;:::-;20380:74;;20463:93;20552:3;20463:93;:::i;:::-;20581:2;20576:3;20572:12;20565:19;;20224:366;;;:::o;20596:419::-;20762:4;20800:2;20789:9;20785:18;20777:26;;20849:9;20843:4;20839:20;20835:1;20824:9;20820:17;20813:47;20877:131;21003:4;20877:131;:::i;:::-;20869:139;;20596:419;;;:::o;21021:98::-;21072:6;21106:5;21100:12;21090:22;;21021:98;;;:::o;21125:246::-;21206:1;21216:113;21230:6;21227:1;21224:13;21216:113;;;21315:1;21310:3;21306:11;21300:18;21296:1;21291:3;21287:11;21280:39;21252:2;21249:1;21245:10;21240:15;;21216:113;;;21363:1;21354:6;21349:3;21345:16;21338:27;21187:184;21125:246;;;:::o;21377:386::-;21481:3;21509:38;21541:5;21509:38;:::i;:::-;21563:88;21644:6;21639:3;21563:88;:::i;:::-;21556:95;;21660:65;21718:6;21713:3;21706:4;21699:5;21695:16;21660:65;:::i;:::-;21750:6;21745:3;21741:16;21734:23;;21485:278;21377:386;;;;:::o;21769:79::-;21808:7;21837:5;21826:16;;21769:79;;;:::o;21854:157::-;21959:45;21979:24;21997:5;21979:24;:::i;:::-;21959:45;:::i;:::-;21954:3;21947:58;21854:157;;:::o;22017:412::-;22175:3;22197:93;22286:3;22277:6;22197:93;:::i;:::-;22190:100;;22300:75;22371:3;22362:6;22300:75;:::i;:::-;22400:2;22395:3;22391:12;22384:19;;22420:3;22413:10;;22017:412;;;;;:::o;22435:94::-;22468:8;22516:5;22512:2;22508:14;22487:35;;22435:94;;;:::o;22535:::-;22574:7;22603:20;22617:5;22603:20;:::i;:::-;22592:31;;22535:94;;;:::o;22635:100::-;22674:7;22703:26;22723:5;22703:26;:::i;:::-;22692:37;;22635:100;;;:::o;22741:157::-;22846:45;22866:24;22884:5;22866:24;:::i;:::-;22846:45;:::i;:::-;22841:3;22834:58;22741:157;;:::o;22904:79::-;22943:7;22972:5;22961:16;;22904:79;;;:::o;22989:157::-;23094:45;23114:24;23132:5;23114:24;:::i;:::-;23094:45;:::i;:::-;23089:3;23082:58;22989:157;;:::o;23152:835::-;23394:3;23409:75;23480:3;23471:6;23409:75;:::i;:::-;23509:2;23504:3;23500:12;23493:19;;23522:75;23593:3;23584:6;23522:75;:::i;:::-;23622:2;23617:3;23613:12;23606:19;;23635:75;23706:3;23697:6;23635:75;:::i;:::-;23735:2;23730:3;23726:12;23719:19;;23755:93;23844:3;23835:6;23755:93;:::i;:::-;23748:100;;23858:75;23929:3;23920:6;23858:75;:::i;:::-;23958:2;23953:3;23949:12;23942:19;;23978:3;23971:10;;23152:835;;;;;;;;:::o

Swarm Source

ipfs://b7c21cbe7e6d41bdb7321d5469afdb5b32c40fd02772b2b5fbb5c2aebd34e83c

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  ]

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.