ETH Price: $1,644.19 (+1.25%)
 

Overview

ETH Balance

5.225 ETH

Eth Value

$8,590.88 (@ $1,644.19/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Ask222544972025-04-12 17:53:112 days ago1744480391IN
Etheria: Exchange XL v1.2
0 ETH0.000017770.5
Set Ask221537222025-03-29 16:22:3516 days ago1743265355IN
Etheria: Exchange XL v1.2
0 ETH0.00001350.38
Set Ask221535822025-03-29 15:54:2316 days ago1743263663IN
Etheria: Exchange XL v1.2
0 ETH0.00001350.38
Set Ask221356192025-03-27 3:39:4719 days ago1743046787IN
Etheria: Exchange XL v1.2
0 ETH0.0000170.47849724
Set Ask221356102025-03-27 3:37:5919 days ago1743046679IN
Etheria: Exchange XL v1.2
0 ETH0.000017770.5
Withdraw219153482025-02-24 9:40:4749 days ago1740390047IN
Etheria: Exchange XL v1.2
0 ETH0.000023240.76014408
Cancel Bid219153402025-02-24 9:39:1149 days ago1740389951IN
Etheria: Exchange XL v1.2
0 ETH0.000041480.77023567
Make Bid215793852025-01-08 11:13:5996 days ago1736334839IN
Etheria: Exchange XL v1.2
1.6 ETH0.000382974.61695757
Collect Fees215402062025-01-02 23:54:47102 days ago1735862087IN
Etheria: Exchange XL v1.2
0 ETH0.000197076.44996399
Withdraw214013012024-12-14 14:18:11121 days ago1734185891IN
Etheria: Exchange XL v1.2
0 ETH0.000282449.23449835
Accept Bid214012932024-12-14 14:16:35121 days ago1734185795IN
Etheria: Exchange XL v1.2
0 ETH0.001015379.05451754
Withdraw213813442024-12-11 19:27:11124 days ago1733945231IN
Etheria: Exchange XL v1.2
0 ETH0.0009944332.51273121
Make Bid213808442024-12-11 17:46:23124 days ago1733939183IN
Etheria: Exchange XL v1.2
3.5 ETH0.0017887921.56191821
Set Ask213802112024-12-11 15:38:35124 days ago1733931515IN
Etheria: Exchange XL v1.2
0 ETH0.0017711733.64175754
Accept Bid213802032024-12-11 15:36:59124 days ago1733931419IN
Etheria: Exchange XL v1.2
0 ETH0.0043703837.67054974
Set Ask213281202024-12-04 9:04:23131 days ago1733303063IN
Etheria: Exchange XL v1.2
0 ETH0.0006369317.91144905
Withdraw213216352024-12-03 11:19:11132 days ago1733224751IN
Etheria: Exchange XL v1.2
0 ETH0.000572118.7046662
Make Bid213216132024-12-03 11:14:47132 days ago1733224487IN
Etheria: Exchange XL v1.2
2.2 ETH0.0018596722.41944823
Cancel Bid213216072024-12-03 11:13:35132 days ago1733224415IN
Etheria: Exchange XL v1.2
0 ETH0.0011423221.21116081
Make Bid213029372024-11-30 20:39:59135 days ago1732999199IN
Etheria: Exchange XL v1.2
1.85 ETH0.0012261514.78200197
Withdraw211641992024-11-11 11:39:11154 days ago1731325151IN
Etheria: Exchange XL v1.2
0 ETH0.0005173516.91477924
Accept Bid211641942024-11-11 11:38:11154 days ago1731325091IN
Etheria: Exchange XL v1.2
0 ETH0.0022658717.25937583
Withdraw211416012024-11-08 8:03:11157 days ago1731052991IN
Etheria: Exchange XL v1.2
0 ETH0.000268948.79293968
Cancel Bid211415962024-11-08 8:02:11157 days ago1731052931IN
Etheria: Exchange XL v1.2
0 ETH0.000491019.1173408
Make Bid210844002024-10-31 8:24:11165 days ago1730363051IN
Etheria: Exchange XL v1.2
4 ETH0.000642497.74449448
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer219153482025-02-24 9:40:4749 days ago1740390047
Etheria: Exchange XL v1.2
1.6 ETH
Transfer215402062025-01-02 23:54:47102 days ago1735862087
Etheria: Exchange XL v1.2
0.18375 ETH
Transfer214013012024-12-14 14:18:11121 days ago1734185891
Etheria: Exchange XL v1.2
3.4125 ETH
Transfer213813442024-12-11 19:27:11124 days ago1733945231
Etheria: Exchange XL v1.2
2.145 ETH
Transfer213216352024-12-03 11:19:11132 days ago1733224751
Etheria: Exchange XL v1.2
1.85 ETH
Transfer211641992024-11-11 11:39:11154 days ago1731325151
Etheria: Exchange XL v1.2
1.60875 ETH
Transfer211416012024-11-08 8:03:11157 days ago1731052991
Etheria: Exchange XL v1.2
4 ETH
Transfer202844282024-07-11 16:21:47277 days ago1720714907
Etheria: Exchange XL v1.2
1.7 ETH
Transfer201167132024-06-18 5:58:11300 days ago1718690291
Etheria: Exchange XL v1.2
0.17625 ETH
Transfer200447382024-06-08 4:30:59311 days ago1717821059
Etheria: Exchange XL v1.2
2 ETH
Transfer198598872024-05-13 8:25:11336 days ago1715588711
Etheria: Exchange XL v1.2
1.4625 ETH
Transfer193633042024-03-04 17:30:59406 days ago1709573459
Etheria: Exchange XL v1.2
1.70625 ETH
Transfer193085562024-02-26 1:45:59414 days ago1708911959
Etheria: Exchange XL v1.2
1.4625 ETH
Transfer191158082024-01-30 0:40:23441 days ago1706575223
Etheria: Exchange XL v1.2
2.2425 ETH
Transfer189962852024-01-13 6:48:47457 days ago1705128527
Etheria: Exchange XL v1.2
2.81 ETH
Transfer188791112023-12-27 19:36:23474 days ago1703705783
Etheria: Exchange XL v1.2
0.1275 ETH
Transfer185340522023-11-09 11:20:47522 days ago1699528847
Etheria: Exchange XL v1.2
2.1 ETH
Transfer185322662023-11-09 5:20:35523 days ago1699507235
Etheria: Exchange XL v1.2
1.7 ETH
Transfer185128122023-11-06 12:02:23525 days ago1699272143
Etheria: Exchange XL v1.2
2.0475 ETH
Transfer185039262023-11-05 6:08:35526 days ago1699164515
Etheria: Exchange XL v1.2
2.9 ETH
Transfer184147092023-10-23 18:18:59539 days ago1698085139
Etheria: Exchange XL v1.2
2.925 ETH
Transfer184136782023-10-23 14:51:47539 days ago1698072707
Etheria: Exchange XL v1.2
2.5 ETH
Transfer180000192023-08-26 16:25:23597 days ago1693067123
Etheria: Exchange XL v1.2
0.055 ETH
Transfer178381102023-08-04 0:41:59620 days ago1691109719
Etheria: Exchange XL v1.2
2.145 ETH
Transfer170643822023-04-17 5:17:47729 days ago1681708667
Etheria: Exchange XL v1.2
2 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EtheriaExchangeXL

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2021-08-07
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0 <0.9.0;

interface Etheria {
  function getOwner(uint8 col, uint8 row) external view returns(address);
  function setOwner(uint8 col, uint8 row, address newOwner) external;
}

interface MapElevationRetriever {
  function getElevation(uint8 col, uint8 row) external view returns (uint8);
}

contract EtheriaExchangeXL {

  address public owner;
  address public pendingOwner;

  string public name = "EtheriaExchangeXL";

  Etheria public constant etheria = Etheria(address(0xB21f8684f23Dbb1008508B4DE91a0aaEDEbdB7E4));
  MapElevationRetriever public constant mapElevationRetriever = MapElevationRetriever(address(0x68549D7Dbb7A956f955Ec1263F55494f05972A6b));

  uint128 public minBid = uint128(1 ether); // setting this to 10 finney throws compilation error for some reason
  uint256 public feeRate = uint256(100);  // in basis points (100 is 1%)
  uint256 public collectedFees;

  struct Bid {
    uint128 amount;
    uint8 minCol;        // shortened all of these for readability
    uint8 maxCol;
    uint8 minRow;
    uint8 maxRow;
    uint8 minEle;
    uint8 maxEle;
    uint8 minWat;
    uint8 maxWat;
    uint64 biddersIndex; // renamed from bidderIndex because it's the Index of the bidders array
  }

  address[] public bidders;

  mapping (address => Bid) public bidOf;                                          // renamed these three to be ultra-descriptive
  mapping (address => uint256) public pendingWithdrawalOf;
  mapping (uint16 => uint128) public askFor;

  event OwnershipTransferInitiated(address indexed owner, address indexed pendingOwner);    // renamed some of these to conform to past tense verbs
  event OwnershipTransferAccepted(address indexed oldOwner, address indexed newOwner);
  event BidCreated(address indexed bidder, uint128 indexed amount, uint8 minCol, uint8 maxCol, uint8 minRow, uint8 maxRow, uint8 minEle, uint8 maxEle, uint8 minWat, uint8 maxWat);
  event BidAccepted(address indexed seller, address indexed bidder, uint16 indexed index, uint128 amount, uint8 minCol, uint8 maxCol, uint8 minRow, uint8 maxRow, uint8 minEle, uint8 maxEle, uint8 minWat, uint8 maxWat);
  event BidCancelled(address indexed bidder, uint128 indexed amount, uint8 minCol, uint8 maxCol, uint8 minRow, uint8 maxRow, uint8 minEle, uint8 maxEle, uint8 minWat, uint8 maxWat);
  event AskCreated(address indexed owner, uint256 indexed price, uint16 indexed index);
  event AskRemoved(address indexed owner, uint256 indexed price, uint16 indexed index);
  event WithdrawalProcessed(address indexed account, address indexed destination, uint256 indexed amount);
  
  constructor() {
    owner = msg.sender;
  }

  modifier onlyOwner() {
    require(msg.sender == owner, "EEXL: Not owner");
    _;
  }

  function transferOwnership(address newOwner) external onlyOwner {
    pendingOwner = newOwner;
    emit OwnershipTransferInitiated(msg.sender, newOwner);
  }

  function acceptOwnership() external {
    require(msg.sender == pendingOwner, "EEXL: Not pending owner");
    emit OwnershipTransferAccepted(owner, msg.sender);
    owner = msg.sender;
    pendingOwner = address(0);
  }

  function _safeTransferETH(address recipient, uint256 amount) internal {
    // Secure transfer of ETH that is much less likely to be broken by future gas-schedule EIPs
    (bool success, ) = recipient.call{ value: amount }(""); // syntax: (bool success, bytes memory data) = _addr.call{value: msg.value, gas: 5000}(encoded function and data)
    require(success, "EEXL: ETH transfer failed");
  }

  function collectFees() external onlyOwner {
    uint256 amount = collectedFees;
    collectedFees = uint256(0);
    _safeTransferETH(msg.sender, amount);
  }

  function setFeeRate(uint256 newFeeRate) external onlyOwner {
    // Set the feeRate to newFeeRate, then validate it
    require((feeRate = newFeeRate) <= uint256(500), "EEXL: Invalid feeRate"); // feeRate will revert if req fails
  }

  function setMinBid(uint128 newMinBid) external onlyOwner {
    minBid = newMinBid;                                                     // doubly beneficial because I could effectively kill new bids with a huge minBid 
  }                                                                         // in the event of an exchange upgrade or unforseen problem

  function _getIndex(uint8 col, uint8 row) internal pure returns (uint16) {
    require(_isValidColOrRow(col) && _isValidColOrRow(row), "EEXL: Invalid col and/or row");
    return (uint16(col) * uint16(33)) + uint16(row);
  }
  
  function _isValidColOrRow(uint8 value) internal pure returns (bool) {
    return (value >= uint8(0)) && (value <= uint8(32));                    // while nobody should be checking, eg, getAsk when row/col=0/32, we do want to respond non-erroneously
  }

  function _isValidElevation(uint8 value) internal pure returns (bool) {
    return (value >= uint8(125)) && (value <= uint8(216));
  }

  function _isWater(uint8 col, uint8 row) internal view returns (bool) {
    return mapElevationRetriever.getElevation(col, row) < uint8(125);   
  }

  function _boolToUint8(bool value) internal pure returns (uint8) {
    return value ? uint8(1) : uint8(0);
  }

  function _getSurroundingWaterCount(uint8 col, uint8 row) internal view returns (uint8 waterTiles) {  
    require((col >= uint8(1)) && (col <= uint8(31)), "EEXL: Water counting requres col 1-31");
    require((row >= uint8(1)) && (row <= uint8(31)), "EEXL: Water counting requres col 1-31");
    if (row % uint8(2) == uint8(1)) {
      waterTiles += _boolToUint8(_isWater(col + uint8(1), row + uint8(1)));  // northeast_hex
      waterTiles += _boolToUint8(_isWater(col + uint8(1), row - uint8(1)));  // southeast_hex
    } else {
      waterTiles += _boolToUint8(_isWater(col - uint8(1), row - uint8(1)));  // southwest_hex
      waterTiles += _boolToUint8(_isWater(col - uint8(1), row + uint8(1)));  // northwest_hex
    }

    waterTiles += _boolToUint8(_isWater(col, row - uint8(1)));               // southwest_hex or southeast_hex
    waterTiles += _boolToUint8(_isWater(col, row + uint8(1)));               // northwest_hex or northeast_hex
    waterTiles += _boolToUint8(_isWater(col + uint8(1), row));               // east_hex
    waterTiles += _boolToUint8(_isWater(col - uint8(1), row));               // west_hex
  }

  function getBidders() public view returns (address[] memory) {
    return bidders;
  }

  function getAsk(uint8 col, uint8 row) public view returns (uint128) {
    return askFor[_getIndex(col, row)];
  }

  // we provide only the land tileIndices to minimize gas usage // should we have this function at all?
//   function getAsks(uint16[] calldata tileIndices) external view returns (uint128[] memory asks) {
//         uint256 length = tileIndices.length;
//         asks = new uint128[](length);
//         for (uint256 i; i < length; ++i) {
//             asks[i] = askAt(tileIndices[i]);
//         }
//   }

  function setAsk(uint8 col, uint8 row, uint128 price) external {
    require(price > 0, "EEXL: removeAsk instead");
    require(etheria.getOwner(col, row) == msg.sender, "EEXL: Not tile owner");
    uint16 thisIndex = _getIndex(col, row);
    emit AskCreated(msg.sender, askFor[thisIndex] = price, thisIndex);
  }
  
  function removeAsk(uint8 col, uint8 row) external {
    require(etheria.getOwner(col, row) == msg.sender, "EEXL: Not tile owner");
    uint16 thisIndex = _getIndex(col, row);
    uint128 price = askFor[thisIndex];
    askFor[thisIndex] = 0;
    emit AskRemoved(msg.sender, price, thisIndex); // price before it was zeroed
  }

  function makeBid(uint8 minCol, uint8 maxCol, uint8 minRow, uint8 maxRow, uint8 minEle, uint8 maxEle, uint8 minWat, uint8 maxWat) external payable {
    require(msg.sender == tx.origin, "EEXL: not EOA");  // (EOA = Externally owned account) // Etheria doesn't allow tile ownership by contracts, this check prevents black-holing
    
    require(msg.value <= type(uint128).max, "EEXL: value too high");
    require(msg.value >= minBid, "EEXL: req bid amt >= minBid");              
    require(msg.value >= 0, "EEXL: req bid amt >= 0");
    
    require(bidOf[msg.sender].amount == uint128(0), "EEXL: bid exists, cancel first");

    require(_isValidColOrRow(minCol), "EEXL: minCol OOB");
    require(_isValidColOrRow(maxCol), "EEXL: maxCol OOB");
    require(minCol <= maxCol, "EEXL: req minCol <= maxCol");

    require(_isValidColOrRow(minRow), "EEXL: minRow OOB");
    require(_isValidColOrRow(maxRow), "EEXL: maxRow OOB");
    require(minRow <= maxRow, "EEXL: req minRow <= maxRow");

    require(_isValidElevation(minEle), "EEXL: minEle OOB");   // these ele checks prevent water bidding, regardless of row/col
    require(_isValidElevation(maxEle), "EEXL: maxEle OOB");
    require(minEle <= maxEle, "EEXL: req minEle <= maxEle");

    require(minWat <= uint8(6), "EEXL: minWat OOB");
    require(maxWat <= uint8(6), "EEXL: maxWat OOB");
    require(minWat <= maxWat, "EEXL: req minWat <= maxWat");

    uint256 biddersArrayLength = bidders.length;                           
    require(biddersArrayLength < type(uint64).max, "EEXL: too many bids"); 

    bidOf[msg.sender] = Bid({
      amount: uint128(msg.value),
      minCol: minCol,
      maxCol: maxCol,
      minRow: minRow,
      maxRow: maxRow,
      minEle: minEle,
      maxEle: maxEle,
      minWat: minWat,
      maxWat: maxWat,
      biddersIndex: uint64(biddersArrayLength)
    });

    bidders.push(msg.sender);

    emit BidCreated(msg.sender, uint128(msg.value), minCol, maxCol, minRow, maxRow, minEle, maxEle, minWat, maxWat);
  }

  function _deleteBid(address bidder, uint64 biddersIndex) internal { // used by cancelBid and acceptBid
    address lastBidder = bidders[bidders.length - uint256(1)];

    // If bidder not last bidder, overwrite with last bidder 
    if (bidder != lastBidder) {
      bidders[biddersIndex] = lastBidder;            // Overwrite the bidder at the index with the last bidder
      bidOf[lastBidder].biddersIndex = biddersIndex;  // Update the bidder index of the bid of the previously last bidder
    }

    delete bidOf[bidder];
    bidders.pop();
  }

  function cancelBid() external {
    // Cancels the bid, getting the bid's amount, which is then added account's pending withdrawal
    Bid storage bid = bidOf[msg.sender];
    uint128 amount = bid.amount;

    require(amount != uint128(0), "EEXL: No existing bid");

    emit BidCancelled(msg.sender, amount, bid.minCol, bid.maxCol, bid.minRow, bid.maxRow, bid.minEle, bid.maxEle, bid.minWat, bid.maxWat);

    _deleteBid(msg.sender, bid.biddersIndex);
    pendingWithdrawalOf[msg.sender] += uint256(amount);
  }

  function acceptBid(uint8 col, uint8 row, address bidder, uint256 minAmount) external {
    require(etheria.getOwner(col, row) == msg.sender, "EEXL: Not owner"); // etheria.setOwner will fail below if not owner, making this check unnecessary, but I want this here anyway
    
    Bid storage bid = bidOf[bidder];
    uint128 amount = bid.amount;

    require(
      (amount >= minAmount) &&
      (col >= bid.minCol) &&
      (col <= bid.maxCol) &&
      (row >= bid.minRow) &&
      (row <= bid.maxRow) &&
      (mapElevationRetriever.getElevation(col, row) >= bid.minEle) &&
      (mapElevationRetriever.getElevation(col, row) <= bid.maxEle) &&
      (_getSurroundingWaterCount(col, row) >= bid.minWat) &&
      (_getSurroundingWaterCount(col, row) <= bid.maxWat),
      "EEXL: tile doesn't meet bid reqs"
    );

    emit BidAccepted(msg.sender, bidder, _getIndex(col, row), amount, bid.minCol, bid.maxCol, bid.minRow, bid.maxRow, bid.minEle, bid.maxEle, bid.minWat, bid.maxWat);
                                                                                                                                                        
    _deleteBid(bidder, bid.biddersIndex);

    etheria.setOwner(col, row, bidder);
    require(etheria.getOwner(col, row) == bidder, "EEXL: failed setting tile owner"); // ok for require after event emission. Events are technically state changes and atomic as well.

    uint256 fee = (uint256(amount) * feeRate) / uint256(10_000);
    collectedFees += fee;

    pendingWithdrawalOf[msg.sender] += (uint256(amount) - fee);

    delete askFor[_getIndex(col, row)]; // don't emit AskRemoved here. It's not really a removal
  }

  function _withdraw(address account, address payable destination) internal {
    uint256 amount = pendingWithdrawalOf[account];
    require(amount > uint256(0), "EEXL: nothing pending");

    pendingWithdrawalOf[account] = uint256(0);
    _safeTransferETH(destination, amount);

    emit WithdrawalProcessed(account, destination, amount);
  }

  function withdraw(address payable destination) external {
    _withdraw(msg.sender, destination);
  }

  function withdraw() external {
    _withdraw(msg.sender, payable(msg.sender));
  }

}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"uint256","name":"price","type":"uint256"},{"indexed":true,"internalType":"uint16","name":"index","type":"uint16"}],"name":"AskCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"uint256","name":"price","type":"uint256"},{"indexed":true,"internalType":"uint16","name":"index","type":"uint16"}],"name":"AskRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"seller","type":"address"},{"indexed":true,"internalType":"address","name":"bidder","type":"address"},{"indexed":true,"internalType":"uint16","name":"index","type":"uint16"},{"indexed":false,"internalType":"uint128","name":"amount","type":"uint128"},{"indexed":false,"internalType":"uint8","name":"minCol","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"maxCol","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"minRow","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"maxRow","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"minEle","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"maxEle","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"minWat","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"maxWat","type":"uint8"}],"name":"BidAccepted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"bidder","type":"address"},{"indexed":true,"internalType":"uint128","name":"amount","type":"uint128"},{"indexed":false,"internalType":"uint8","name":"minCol","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"maxCol","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"minRow","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"maxRow","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"minEle","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"maxEle","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"minWat","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"maxWat","type":"uint8"}],"name":"BidCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"bidder","type":"address"},{"indexed":true,"internalType":"uint128","name":"amount","type":"uint128"},{"indexed":false,"internalType":"uint8","name":"minCol","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"maxCol","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"minRow","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"maxRow","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"minEle","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"maxEle","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"minWat","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"maxWat","type":"uint8"}],"name":"BidCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferAccepted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"pendingOwner","type":"address"}],"name":"OwnershipTransferInitiated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"destination","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WithdrawalProcessed","type":"event"},{"inputs":[{"internalType":"uint8","name":"col","type":"uint8"},{"internalType":"uint8","name":"row","type":"uint8"},{"internalType":"address","name":"bidder","type":"address"},{"internalType":"uint256","name":"minAmount","type":"uint256"}],"name":"acceptBid","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"}],"name":"askFor","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bidOf","outputs":[{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"uint8","name":"minCol","type":"uint8"},{"internalType":"uint8","name":"maxCol","type":"uint8"},{"internalType":"uint8","name":"minRow","type":"uint8"},{"internalType":"uint8","name":"maxRow","type":"uint8"},{"internalType":"uint8","name":"minEle","type":"uint8"},{"internalType":"uint8","name":"maxEle","type":"uint8"},{"internalType":"uint8","name":"minWat","type":"uint8"},{"internalType":"uint8","name":"maxWat","type":"uint8"},{"internalType":"uint64","name":"biddersIndex","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"bidders","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cancelBid","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"collectFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"collectedFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"etheria","outputs":[{"internalType":"contract Etheria","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"col","type":"uint8"},{"internalType":"uint8","name":"row","type":"uint8"}],"name":"getAsk","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBidders","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"minCol","type":"uint8"},{"internalType":"uint8","name":"maxCol","type":"uint8"},{"internalType":"uint8","name":"minRow","type":"uint8"},{"internalType":"uint8","name":"maxRow","type":"uint8"},{"internalType":"uint8","name":"minEle","type":"uint8"},{"internalType":"uint8","name":"maxEle","type":"uint8"},{"internalType":"uint8","name":"minWat","type":"uint8"},{"internalType":"uint8","name":"maxWat","type":"uint8"}],"name":"makeBid","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mapElevationRetriever","outputs":[{"internalType":"contract MapElevationRetriever","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minBid","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pendingWithdrawalOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"col","type":"uint8"},{"internalType":"uint8","name":"row","type":"uint8"}],"name":"removeAsk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"col","type":"uint8"},{"internalType":"uint8","name":"row","type":"uint8"},{"internalType":"uint128","name":"price","type":"uint128"}],"name":"setAsk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFeeRate","type":"uint256"}],"name":"setFeeRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"newMinBid","type":"uint128"}],"name":"setMinBid","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"destination","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c06040526011608081905270115d1a195c9a58515e18da185b99d95613607a1b60a09081526200003491600291906200007a565b50600380546001600160801b031916670de0b6b3a764000017905560646004553480156200006157600080fd5b50600080546001600160a01b031916331790556200015d565b828054620000889062000120565b90600052602060002090601f016020900481019282620000ac5760008555620000f7565b82601f10620000c757805160ff1916838001178555620000f7565b82800160010185558215620000f7579182015b82811115620000f7578251825591602001919060010190620000da565b506200010592915062000109565b5090565b5b808211156200010557600081556001016200010a565b600181811c908216806200013557607f821691505b602082108114156200015757634e487b7160e01b600052602260045260246000fd5b50919050565b613405806200016d6000396000f3fe6080604052600436106101a15760003560e01c80638dc30b70116100e1578063c87965721161008a578063e30c397811610064578063e30c397814610652578063e392dccf1461067f578063f2fde38b14610692578063f6f0499c146106b257600080fd5b8063c8796572146105fb578063cb6632ef14610610578063cff29dfd1461063257600080fd5b80639435c887116100bb5780639435c887146105a8578063978bbdb9146105bd578063ae42672a146105d357600080fd5b80638dc30b70146103bc5780638fdc2c37146105725780639003adfe1461059257600080fd5b80633e109a191161014e57806351cff8d91161012857806351cff8d91461033a57806379ba50971461035a57806383bc11c01461036f5780638da5cb5b1461038f57600080fd5b80633e109a19146102d157806345596e2e146102fa5780634b6e29391461031a57600080fd5b806324d1f3d91161017f57806324d1f3d9146102595780632e520c5f1461029a5780633ccfd60b146102bc57600080fd5b806306fdde03146101a6578063194ad7bb146101d15780631d60ce8a1461020c575b600080fd5b3480156101b257600080fd5b506101bb6106f1565b6040516101c891906130e1565b60405180910390f35b3480156101dd57600080fd5b506101fe6101ec366004612e5e565b60086020526000908152604090205481565b6040519081526020016101c8565b34801561021857600080fd5b5061023473b21f8684f23dbb1008508b4de91a0aaedebdb7e481565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101c8565b34801561026557600080fd5b50610279610274366004612f0d565b61077f565b6040516fffffffffffffffffffffffffffffffff90911681526020016101c8565b3480156102a657600080fd5b506102ba6102b5366004612f0d565b6107bd565b005b3480156102c857600080fd5b506102ba610975565b3480156102dd57600080fd5b50600354610279906fffffffffffffffffffffffffffffffff1681565b34801561030657600080fd5b506102ba610315366004612ed7565b610981565b34801561032657600080fd5b506102ba610335366004612f97565b610a76565b34801561034657600080fd5b506102ba610355366004612e5e565b610ca6565b34801561036657600080fd5b506102ba610cb0565b34801561037b57600080fd5b506102ba61038a366004612e98565b610dae565b34801561039b57600080fd5b506000546102349073ffffffffffffffffffffffffffffffffffffffff1681565b3480156103c857600080fd5b506104fb6103d7366004612e5e565b6007602052600090815260409020546fffffffffffffffffffffffffffffffff81169060ff70010000000000000000000000000000000082048116917101000000000000000000000000000000000081048216917201000000000000000000000000000000000000820481169173010000000000000000000000000000000000000081048216917401000000000000000000000000000000000000000082048116917501000000000000000000000000000000000000000000810482169176010000000000000000000000000000000000000000000082048116917701000000000000000000000000000000000000000000000081049091169067ffffffffffffffff7801000000000000000000000000000000000000000000000000909104168a565b604080516fffffffffffffffffffffffffffffffff909b168b5260ff998a1660208c0152978916978a01979097529487166060890152928616608088015290851660a0870152841660c0860152831660e08501529190911661010083015267ffffffffffffffff16610120820152610140016101c8565b34801561057e57600080fd5b506102ba61058d366004612f46565b610e72565b34801561059e57600080fd5b506101fe60055481565b3480156105b457600080fd5b506102ba61174d565b3480156105c957600080fd5b506101fe60045481565b3480156105df57600080fd5b506102347368549d7dbb7a956f955ec1263f55494f05972a6b81565b34801561060757600080fd5b506102ba611981565b34801561061c57600080fd5b50610625611a15565b6040516101c89190613087565b34801561063e57600080fd5b5061023461064d366004612ed7565b611a84565b34801561065e57600080fd5b506001546102349073ffffffffffffffffffffffffffffffffffffffff1681565b6102ba61068d366004612fde565b611abb565b34801561069e57600080fd5b506102ba6106ad366004612e5e565b61259f565b3480156106be57600080fd5b506102796106cd366004612eb3565b6009602052600090815260409020546fffffffffffffffffffffffffffffffff1681565b600280546106fe9061326c565b80601f016020809104026020016040519081016040528092919081815260200182805461072a9061326c565b80156107775780601f1061074c57610100808354040283529160200191610777565b820191906000526020600020905b81548152906001019060200180831161075a57829003601f168201915b505050505081565b60006009600061078f8585612691565b61ffff1681526020810191909152604001600020546fffffffffffffffffffffffffffffffff169392505050565b6040517fe039e4a100000000000000000000000000000000000000000000000000000000815260ff808416600483015282166024820152339073b21f8684f23dbb1008508b4de91a0aaedebdb7e49063e039e4a19060440160206040518083038186803b15801561082d57600080fd5b505afa158015610841573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108659190612e7b565b73ffffffffffffffffffffffffffffffffffffffff16146108e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4545584c3a204e6f742074696c65206f776e657200000000000000000000000060448201526064015b60405180910390fd5b60006108f38383612691565b61ffff811660008181526009602052604080822080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000811690915590519394506fffffffffffffffffffffffffffffffff1692839133917f7754c70271d678ec24312362f4981a427a62682e90d1d3b7830348e9b82dc5959190a450505050565b61097f3333612737565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4545584c3a204e6f74206f776e6572000000000000000000000000000000000060448201526064016108de565b6101f48160048190551115610a73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4545584c3a20496e76616c69642066656552617465000000000000000000000060448201526064016108de565b50565b6000816fffffffffffffffffffffffffffffffff1611610af2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4545584c3a2072656d6f766541736b20696e737465616400000000000000000060448201526064016108de565b6040517fe039e4a100000000000000000000000000000000000000000000000000000000815260ff808516600483015283166024820152339073b21f8684f23dbb1008508b4de91a0aaedebdb7e49063e039e4a19060440160206040518083038186803b158015610b6257600080fd5b505afa158015610b76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9a9190612e7b565b73ffffffffffffffffffffffffffffffffffffffff1614610c17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4545584c3a204e6f742074696c65206f776e657200000000000000000000000060448201526064016108de565b6000610c238484612691565b61ffff811660008181526009602052604080822080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff88169081179091559051939450919233917f83b463210107054586f9f46f7414ff28d4a8a58a3870cfc43fa841600ddf0d2f91a450505050565b610a733382612737565b60015473ffffffffffffffffffffffffffffffffffffffff163314610d31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4545584c3a204e6f742070656e64696e67206f776e657200000000000000000060448201526064016108de565b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917f69398fb338bc46e7da38943cd2da3021d7a38be07d6385dae286d2ec93d3b48591a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600180549091169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4545584c3a204e6f74206f776e6572000000000000000000000000000000000060448201526064016108de565b600380547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b6040517fe039e4a100000000000000000000000000000000000000000000000000000000815260ff808616600483015284166024820152339073b21f8684f23dbb1008508b4de91a0aaedebdb7e49063e039e4a19060440160206040518083038186803b158015610ee257600080fd5b505afa158015610ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1a9190612e7b565b73ffffffffffffffffffffffffffffffffffffffff1614610f97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4545584c3a204e6f74206f776e6572000000000000000000000000000000000060448201526064016108de565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260076020526040902080546fffffffffffffffffffffffffffffffff16828110801590610ffc5750815460ff700100000000000000000000000000000000909104811690871610155b80156110255750815460ff71010000000000000000000000000000000000909104811690871611155b801561104f5750815460ff7201000000000000000000000000000000000000909104811690861610155b801561107a5750815460ff730100000000000000000000000000000000000000909104811690861611155b801561114d575081546040517f4166c1fd00000000000000000000000000000000000000000000000000000000815260ff8881166004830152878116602483015274010000000000000000000000000000000000000000909204909116907368549d7dbb7a956f955ec1263f55494f05972a6b90634166c1fd9060440160206040518083038186803b15801561110f57600080fd5b505afa158015611123573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111479190612ef0565b60ff1610155b8015611221575081546040517f4166c1fd00000000000000000000000000000000000000000000000000000000815260ff888116600483015287811660248301527501000000000000000000000000000000000000000000909204909116907368549d7dbb7a956f955ec1263f55494f05972a6b90634166c1fd9060440160206040518083038186803b1580156111e357600080fd5b505afa1580156111f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121b9190612ef0565b60ff1611155b801561125757508154760100000000000000000000000000000000000000000000900460ff166112518787612854565b60ff1610155b801561128e5750815477010000000000000000000000000000000000000000000000900460ff166112888787612854565b60ff1611155b6112f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4545584c3a2074696c6520646f65736e2774206d65657420626964207265717360448201526064016108de565b6112fe8686612691565b8254604080516fffffffffffffffffffffffffffffffff85168152700100000000000000000000000000000000830460ff90811660208301527101000000000000000000000000000000000084048116828401527201000000000000000000000000000000000000840481166060830152730100000000000000000000000000000000000000840481166080830152740100000000000000000000000000000000000000008404811660a083015275010000000000000000000000000000000000000000008404811660c08301527601000000000000000000000000000000000000000000008404811660e0830152770100000000000000000000000000000000000000000000009093049092166101008301525161ffff929092169173ffffffffffffffffffffffffffffffffffffffff87169133917f8d29a764eb42b778e5490f608b833f4550b26a4e49c044a079eb30aeff4d58f2918190036101200190a481546114939085907801000000000000000000000000000000000000000000000000900467ffffffffffffffff16612ac8565b6040517f7d5fec5a00000000000000000000000000000000000000000000000000000000815260ff80881660048301528616602482015273ffffffffffffffffffffffffffffffffffffffff8516604482015273b21f8684f23dbb1008508b4de91a0aaedebdb7e490637d5fec5a90606401600060405180830381600087803b15801561151f57600080fd5b505af1158015611533573d6000803e3d6000fd5b50506040517fe039e4a100000000000000000000000000000000000000000000000000000000815260ff808a1660048301528816602482015273ffffffffffffffffffffffffffffffffffffffff8716925073b21f8684f23dbb1008508b4de91a0aaedebdb7e4915063e039e4a19060440160206040518083038186803b1580156115bd57600080fd5b505afa1580156115d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f59190612e7b565b73ffffffffffffffffffffffffffffffffffffffff1614611672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4545584c3a206661696c65642073657474696e672074696c65206f776e65720060448201526064016108de565b6000612710600454836fffffffffffffffffffffffffffffffff1661169791906131f5565b6116a191906131b7565b905080600560008282546116b5919061317a565b909155506116d79050816fffffffffffffffffffffffffffffffff8416613232565b33600090815260086020526040812080549091906116f690849061317a565b9091555060099050600061170a8989612691565b61ffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016905550505050505050565b33600090815260076020526040902080546fffffffffffffffffffffffffffffffff16806117d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4545584c3a204e6f206578697374696e6720626964000000000000000000000060448201526064016108de565b815460408051700100000000000000000000000000000000830460ff908116825271010000000000000000000000000000000000840481166020830152720100000000000000000000000000000000000084048116828401527301000000000000000000000000000000000000008404811660608301527401000000000000000000000000000000000000000084048116608083015275010000000000000000000000000000000000000000008404811660a08301527601000000000000000000000000000000000000000000008404811660c08301527701000000000000000000000000000000000000000000000090930490921660e0830152516fffffffffffffffffffffffffffffffff83169133917f944a025a98deacc6d65fa8bab0b08fd67ccab0c7c1c37a1d7a460ceb928f003d918190036101000190a381546119479033907801000000000000000000000000000000000000000000000000900467ffffffffffffffff16612ac8565b33600090815260086020526040812080546fffffffffffffffffffffffffffffffff8416929061197890849061317a565b90915550505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611a02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4545584c3a204e6f74206f776e6572000000000000000000000000000000000060448201526064016108de565b600580546000909155610a733382612c6d565b60606006805480602002602001604051908101604052809291908181526020018280548015611a7a57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611a4f575b5050505050905090565b60068181548110611a9457600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b333214611b24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4545584c3a206e6f7420454f410000000000000000000000000000000000000060448201526064016108de565b6fffffffffffffffffffffffffffffffff341115611b9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4545584c3a2076616c756520746f6f206869676800000000000000000000000060448201526064016108de565b6003546fffffffffffffffffffffffffffffffff16341015611c1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4545584c3a207265712062696420616d74203e3d206d696e426964000000000060448201526064016108de565b336000908152600760205260409020546fffffffffffffffffffffffffffffffff1615611ca5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4545584c3a20626964206578697374732c2063616e63656c206669727374000060448201526064016108de565b611cae88612d3c565b611d14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4545584c3a206d696e436f6c204f4f420000000000000000000000000000000060448201526064016108de565b611d1d87612d3c565b611d83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4545584c3a206d6178436f6c204f4f420000000000000000000000000000000060448201526064016108de565b8660ff168860ff161115611df3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4545584c3a20726571206d696e436f6c203c3d206d6178436f6c00000000000060448201526064016108de565b611dfc86612d3c565b611e62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4545584c3a206d696e526f77204f4f420000000000000000000000000000000060448201526064016108de565b611e6b85612d3c565b611ed1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4545584c3a206d6178526f77204f4f420000000000000000000000000000000060448201526064016108de565b8460ff168660ff161115611f41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4545584c3a20726571206d696e526f77203c3d206d6178526f7700000000000060448201526064016108de565b611f4a84612d4d565b611fb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4545584c3a206d696e456c65204f4f420000000000000000000000000000000060448201526064016108de565b611fb983612d4d565b61201f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4545584c3a206d6178456c65204f4f420000000000000000000000000000000060448201526064016108de565b8260ff168460ff16111561208f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4545584c3a20726571206d696e456c65203c3d206d6178456c6500000000000060448201526064016108de565b600660ff831611156120fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4545584c3a206d696e576174204f4f420000000000000000000000000000000060448201526064016108de565b600660ff8216111561216b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4545584c3a206d6178576174204f4f420000000000000000000000000000000060448201526064016108de565b8060ff168260ff1611156121db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4545584c3a20726571206d696e576174203c3d206d617857617400000000000060448201526064016108de565b60065467ffffffffffffffff811061224f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4545584c3a20746f6f206d616e7920626964730000000000000000000000000060448201526064016108de565b604051806101400160405280346fffffffffffffffffffffffffffffffff1681526020018a60ff1681526020018960ff1681526020018860ff1681526020018760ff1681526020018660ff1681526020018560ff1681526020018460ff1681526020018360ff1681526020018267ffffffffffffffff16815250600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a81548160ff021916908360ff16021790555060408201518160000160116101000a81548160ff021916908360ff16021790555060608201518160000160126101000a81548160ff021916908360ff16021790555060808201518160000160136101000a81548160ff021916908360ff16021790555060a08201518160000160146101000a81548160ff021916908360ff16021790555060c08201518160000160156101000a81548160ff021916908360ff16021790555060e08201518160000160166101000a81548160ff021916908360ff1602179055506101008201518160000160176101000a81548160ff021916908360ff1602179055506101208201518160000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506006339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550346fffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ffdd112ffa368681c99ed9f845ed96123a44a1752ad73d4df220fee9ea848870b8b8b8b8b8b8b8b8b60405161258c98979695949392919060ff98891681529688166020880152948716604087015292861660608601529085166080850152841660a0840152831660c083015290911660e08201526101000190565b60405180910390a3505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314612620576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4545584c3a204e6f74206f776e6572000000000000000000000000000000000060448201526064016108de565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811790915560405133907fb150023a879fd806e3599b6ca8ee3b60f0e360ab3846d128d67ebce1a391639a90600090a350565b600061269c83612d3c565b80156126ac57506126ac82612d3c565b612712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4545584c3a20496e76616c696420636f6c20616e642f6f7220726f770000000060448201526064016108de565b8160ff1660218460ff1661272691906131cb565b6127309190613154565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260086020526040902054806127c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4545584c3a206e6f7468696e672070656e64696e67000000000000000000000060448201526064016108de565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600860205260408120556127f48282612c6d565b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fcd1fce47d5ad89dd70b04c75bd6bdb8114d4d4ff7b4393f9fb5937e733ba958260405160405180910390a4505050565b6000600160ff84161080159061286e5750601f60ff841611155b6128fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4545584c3a20576174657220636f756e74696e67207265717572657320636f6c60448201527f20312d333100000000000000000000000000000000000000000000000000000060648201526084016108de565b600160ff8316108015906129125750601f60ff831611155b61299e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4545584c3a20576174657220636f756e74696e67207265717572657320636f6c60448201527f20312d333100000000000000000000000000000000000000000000000000000060648201526084016108de565b60016129ab6002846132c0565b60ff161415612a13576129da6129d56129c5600186613192565b6129d0600186613192565b612d6c565b612e23565b6129e49082613192565b9050612a026129d56129f7600186613192565b6129d0600186613249565b612a0c9082613192565b9050612a4e565b612a246129d56129f7600186613249565b612a2e9082613192565b9050612a416129d56129c5600186613249565b612a4b9082613192565b90505b612a606129d5846129d0600186613249565b612a6a9082613192565b9050612a7e6129d5846129d0600186613192565b612a889082613192565b9050612aa16129d5612a9b600186613192565b84612d6c565b612aab9082613192565b9050612abe6129d5612a9b600186613249565b6127309082613192565b6006805460009190612adc90600190613232565b81548110612aec57612aec61336f565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff908116915083168114612bd9578060068367ffffffffffffffff1681548110612b3857612b3861336f565b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9485161790559183168152600790915260409020805477ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff8516021790555b73ffffffffffffffffffffffffffffffffffffffff83166000908152600760205260408120556006805480612c1057612c10613340565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055505050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114612cc7576040519150601f19603f3d011682016040523d82523d6000602084013e612ccc565b606091505b5050905080612d37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4545584c3a20455448207472616e73666572206661696c65640000000000000060448201526064016108de565b505050565b6000602060ff831611155b92915050565b6000607d60ff831610801590612d47575060d860ff8316111592915050565b6040517f4166c1fd00000000000000000000000000000000000000000000000000000000815260ff808416600483015282166024820152600090607d907368549d7dbb7a956f955ec1263f55494f05972a6b90634166c1fd9060440160206040518083038186803b158015612de057600080fd5b505afa158015612df4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e189190612ef0565b60ff16109392505050565b600081612e31576000612d47565b600192915050565b80356fffffffffffffffffffffffffffffffff81168114612e5957600080fd5b919050565b600060208284031215612e7057600080fd5b81356127308161339e565b600060208284031215612e8d57600080fd5b81516127308161339e565b600060208284031215612eaa57600080fd5b61273082612e39565b600060208284031215612ec557600080fd5b813561ffff8116811461273057600080fd5b600060208284031215612ee957600080fd5b5035919050565b600060208284031215612f0257600080fd5b8151612730816133c0565b60008060408385031215612f2057600080fd5b8235612f2b816133c0565b91506020830135612f3b816133c0565b809150509250929050565b60008060008060808587031215612f5c57600080fd5b8435612f67816133c0565b93506020850135612f77816133c0565b92506040850135612f878161339e565b9396929550929360600135925050565b600080600060608486031215612fac57600080fd5b8335612fb7816133c0565b92506020840135612fc7816133c0565b9150612fd560408501612e39565b90509250925092565b600080600080600080600080610100898b031215612ffb57600080fd5b8835613006816133c0565b97506020890135613016816133c0565b96506040890135613026816133c0565b95506060890135613036816133c0565b94506080890135613046816133c0565b935060a0890135613056816133c0565b925060c0890135613066816133c0565b915060e0890135613076816133c0565b809150509295985092959890939650565b6020808252825182820181905260009190848201906040850190845b818110156130d557835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016130a3565b50909695505050505050565b600060208083528351808285015260005b8181101561310e578581018301518582016040015282016130f2565b81811115613120576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600061ffff808316818516808303821115613171576131716132e2565b01949350505050565b6000821982111561318d5761318d6132e2565b500190565b600060ff821660ff84168060ff038211156131af576131af6132e2565b019392505050565b6000826131c6576131c6613311565b500490565b600061ffff808316818516818304811182151516156131ec576131ec6132e2565b02949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561322d5761322d6132e2565b500290565b600082821015613244576132446132e2565b500390565b600060ff821660ff841680821015613263576132636132e2565b90039392505050565b600181811c9082168061328057607f821691505b602082108114156132ba577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600060ff8316806132d3576132d3613311565b8060ff84160691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610a7357600080fd5b60ff81168114610a7357600080fdfea2646970667358221220c03027760cca19df7d927d694ba74ebef1f3afd5ba086713c2df48fcc9d14e1764736f6c63430008060033

Deployed Bytecode

0x6080604052600436106101a15760003560e01c80638dc30b70116100e1578063c87965721161008a578063e30c397811610064578063e30c397814610652578063e392dccf1461067f578063f2fde38b14610692578063f6f0499c146106b257600080fd5b8063c8796572146105fb578063cb6632ef14610610578063cff29dfd1461063257600080fd5b80639435c887116100bb5780639435c887146105a8578063978bbdb9146105bd578063ae42672a146105d357600080fd5b80638dc30b70146103bc5780638fdc2c37146105725780639003adfe1461059257600080fd5b80633e109a191161014e57806351cff8d91161012857806351cff8d91461033a57806379ba50971461035a57806383bc11c01461036f5780638da5cb5b1461038f57600080fd5b80633e109a19146102d157806345596e2e146102fa5780634b6e29391461031a57600080fd5b806324d1f3d91161017f57806324d1f3d9146102595780632e520c5f1461029a5780633ccfd60b146102bc57600080fd5b806306fdde03146101a6578063194ad7bb146101d15780631d60ce8a1461020c575b600080fd5b3480156101b257600080fd5b506101bb6106f1565b6040516101c891906130e1565b60405180910390f35b3480156101dd57600080fd5b506101fe6101ec366004612e5e565b60086020526000908152604090205481565b6040519081526020016101c8565b34801561021857600080fd5b5061023473b21f8684f23dbb1008508b4de91a0aaedebdb7e481565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101c8565b34801561026557600080fd5b50610279610274366004612f0d565b61077f565b6040516fffffffffffffffffffffffffffffffff90911681526020016101c8565b3480156102a657600080fd5b506102ba6102b5366004612f0d565b6107bd565b005b3480156102c857600080fd5b506102ba610975565b3480156102dd57600080fd5b50600354610279906fffffffffffffffffffffffffffffffff1681565b34801561030657600080fd5b506102ba610315366004612ed7565b610981565b34801561032657600080fd5b506102ba610335366004612f97565b610a76565b34801561034657600080fd5b506102ba610355366004612e5e565b610ca6565b34801561036657600080fd5b506102ba610cb0565b34801561037b57600080fd5b506102ba61038a366004612e98565b610dae565b34801561039b57600080fd5b506000546102349073ffffffffffffffffffffffffffffffffffffffff1681565b3480156103c857600080fd5b506104fb6103d7366004612e5e565b6007602052600090815260409020546fffffffffffffffffffffffffffffffff81169060ff70010000000000000000000000000000000082048116917101000000000000000000000000000000000081048216917201000000000000000000000000000000000000820481169173010000000000000000000000000000000000000081048216917401000000000000000000000000000000000000000082048116917501000000000000000000000000000000000000000000810482169176010000000000000000000000000000000000000000000082048116917701000000000000000000000000000000000000000000000081049091169067ffffffffffffffff7801000000000000000000000000000000000000000000000000909104168a565b604080516fffffffffffffffffffffffffffffffff909b168b5260ff998a1660208c0152978916978a01979097529487166060890152928616608088015290851660a0870152841660c0860152831660e08501529190911661010083015267ffffffffffffffff16610120820152610140016101c8565b34801561057e57600080fd5b506102ba61058d366004612f46565b610e72565b34801561059e57600080fd5b506101fe60055481565b3480156105b457600080fd5b506102ba61174d565b3480156105c957600080fd5b506101fe60045481565b3480156105df57600080fd5b506102347368549d7dbb7a956f955ec1263f55494f05972a6b81565b34801561060757600080fd5b506102ba611981565b34801561061c57600080fd5b50610625611a15565b6040516101c89190613087565b34801561063e57600080fd5b5061023461064d366004612ed7565b611a84565b34801561065e57600080fd5b506001546102349073ffffffffffffffffffffffffffffffffffffffff1681565b6102ba61068d366004612fde565b611abb565b34801561069e57600080fd5b506102ba6106ad366004612e5e565b61259f565b3480156106be57600080fd5b506102796106cd366004612eb3565b6009602052600090815260409020546fffffffffffffffffffffffffffffffff1681565b600280546106fe9061326c565b80601f016020809104026020016040519081016040528092919081815260200182805461072a9061326c565b80156107775780601f1061074c57610100808354040283529160200191610777565b820191906000526020600020905b81548152906001019060200180831161075a57829003601f168201915b505050505081565b60006009600061078f8585612691565b61ffff1681526020810191909152604001600020546fffffffffffffffffffffffffffffffff169392505050565b6040517fe039e4a100000000000000000000000000000000000000000000000000000000815260ff808416600483015282166024820152339073b21f8684f23dbb1008508b4de91a0aaedebdb7e49063e039e4a19060440160206040518083038186803b15801561082d57600080fd5b505afa158015610841573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108659190612e7b565b73ffffffffffffffffffffffffffffffffffffffff16146108e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4545584c3a204e6f742074696c65206f776e657200000000000000000000000060448201526064015b60405180910390fd5b60006108f38383612691565b61ffff811660008181526009602052604080822080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000811690915590519394506fffffffffffffffffffffffffffffffff1692839133917f7754c70271d678ec24312362f4981a427a62682e90d1d3b7830348e9b82dc5959190a450505050565b61097f3333612737565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4545584c3a204e6f74206f776e6572000000000000000000000000000000000060448201526064016108de565b6101f48160048190551115610a73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4545584c3a20496e76616c69642066656552617465000000000000000000000060448201526064016108de565b50565b6000816fffffffffffffffffffffffffffffffff1611610af2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4545584c3a2072656d6f766541736b20696e737465616400000000000000000060448201526064016108de565b6040517fe039e4a100000000000000000000000000000000000000000000000000000000815260ff808516600483015283166024820152339073b21f8684f23dbb1008508b4de91a0aaedebdb7e49063e039e4a19060440160206040518083038186803b158015610b6257600080fd5b505afa158015610b76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9a9190612e7b565b73ffffffffffffffffffffffffffffffffffffffff1614610c17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4545584c3a204e6f742074696c65206f776e657200000000000000000000000060448201526064016108de565b6000610c238484612691565b61ffff811660008181526009602052604080822080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff88169081179091559051939450919233917f83b463210107054586f9f46f7414ff28d4a8a58a3870cfc43fa841600ddf0d2f91a450505050565b610a733382612737565b60015473ffffffffffffffffffffffffffffffffffffffff163314610d31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4545584c3a204e6f742070656e64696e67206f776e657200000000000000000060448201526064016108de565b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917f69398fb338bc46e7da38943cd2da3021d7a38be07d6385dae286d2ec93d3b48591a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600180549091169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4545584c3a204e6f74206f776e6572000000000000000000000000000000000060448201526064016108de565b600380547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b6040517fe039e4a100000000000000000000000000000000000000000000000000000000815260ff808616600483015284166024820152339073b21f8684f23dbb1008508b4de91a0aaedebdb7e49063e039e4a19060440160206040518083038186803b158015610ee257600080fd5b505afa158015610ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1a9190612e7b565b73ffffffffffffffffffffffffffffffffffffffff1614610f97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4545584c3a204e6f74206f776e6572000000000000000000000000000000000060448201526064016108de565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260076020526040902080546fffffffffffffffffffffffffffffffff16828110801590610ffc5750815460ff700100000000000000000000000000000000909104811690871610155b80156110255750815460ff71010000000000000000000000000000000000909104811690871611155b801561104f5750815460ff7201000000000000000000000000000000000000909104811690861610155b801561107a5750815460ff730100000000000000000000000000000000000000909104811690861611155b801561114d575081546040517f4166c1fd00000000000000000000000000000000000000000000000000000000815260ff8881166004830152878116602483015274010000000000000000000000000000000000000000909204909116907368549d7dbb7a956f955ec1263f55494f05972a6b90634166c1fd9060440160206040518083038186803b15801561110f57600080fd5b505afa158015611123573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111479190612ef0565b60ff1610155b8015611221575081546040517f4166c1fd00000000000000000000000000000000000000000000000000000000815260ff888116600483015287811660248301527501000000000000000000000000000000000000000000909204909116907368549d7dbb7a956f955ec1263f55494f05972a6b90634166c1fd9060440160206040518083038186803b1580156111e357600080fd5b505afa1580156111f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121b9190612ef0565b60ff1611155b801561125757508154760100000000000000000000000000000000000000000000900460ff166112518787612854565b60ff1610155b801561128e5750815477010000000000000000000000000000000000000000000000900460ff166112888787612854565b60ff1611155b6112f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4545584c3a2074696c6520646f65736e2774206d65657420626964207265717360448201526064016108de565b6112fe8686612691565b8254604080516fffffffffffffffffffffffffffffffff85168152700100000000000000000000000000000000830460ff90811660208301527101000000000000000000000000000000000084048116828401527201000000000000000000000000000000000000840481166060830152730100000000000000000000000000000000000000840481166080830152740100000000000000000000000000000000000000008404811660a083015275010000000000000000000000000000000000000000008404811660c08301527601000000000000000000000000000000000000000000008404811660e0830152770100000000000000000000000000000000000000000000009093049092166101008301525161ffff929092169173ffffffffffffffffffffffffffffffffffffffff87169133917f8d29a764eb42b778e5490f608b833f4550b26a4e49c044a079eb30aeff4d58f2918190036101200190a481546114939085907801000000000000000000000000000000000000000000000000900467ffffffffffffffff16612ac8565b6040517f7d5fec5a00000000000000000000000000000000000000000000000000000000815260ff80881660048301528616602482015273ffffffffffffffffffffffffffffffffffffffff8516604482015273b21f8684f23dbb1008508b4de91a0aaedebdb7e490637d5fec5a90606401600060405180830381600087803b15801561151f57600080fd5b505af1158015611533573d6000803e3d6000fd5b50506040517fe039e4a100000000000000000000000000000000000000000000000000000000815260ff808a1660048301528816602482015273ffffffffffffffffffffffffffffffffffffffff8716925073b21f8684f23dbb1008508b4de91a0aaedebdb7e4915063e039e4a19060440160206040518083038186803b1580156115bd57600080fd5b505afa1580156115d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f59190612e7b565b73ffffffffffffffffffffffffffffffffffffffff1614611672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4545584c3a206661696c65642073657474696e672074696c65206f776e65720060448201526064016108de565b6000612710600454836fffffffffffffffffffffffffffffffff1661169791906131f5565b6116a191906131b7565b905080600560008282546116b5919061317a565b909155506116d79050816fffffffffffffffffffffffffffffffff8416613232565b33600090815260086020526040812080549091906116f690849061317a565b9091555060099050600061170a8989612691565b61ffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016905550505050505050565b33600090815260076020526040902080546fffffffffffffffffffffffffffffffff16806117d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4545584c3a204e6f206578697374696e6720626964000000000000000000000060448201526064016108de565b815460408051700100000000000000000000000000000000830460ff908116825271010000000000000000000000000000000000840481166020830152720100000000000000000000000000000000000084048116828401527301000000000000000000000000000000000000008404811660608301527401000000000000000000000000000000000000000084048116608083015275010000000000000000000000000000000000000000008404811660a08301527601000000000000000000000000000000000000000000008404811660c08301527701000000000000000000000000000000000000000000000090930490921660e0830152516fffffffffffffffffffffffffffffffff83169133917f944a025a98deacc6d65fa8bab0b08fd67ccab0c7c1c37a1d7a460ceb928f003d918190036101000190a381546119479033907801000000000000000000000000000000000000000000000000900467ffffffffffffffff16612ac8565b33600090815260086020526040812080546fffffffffffffffffffffffffffffffff8416929061197890849061317a565b90915550505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611a02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4545584c3a204e6f74206f776e6572000000000000000000000000000000000060448201526064016108de565b600580546000909155610a733382612c6d565b60606006805480602002602001604051908101604052809291908181526020018280548015611a7a57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611a4f575b5050505050905090565b60068181548110611a9457600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b333214611b24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4545584c3a206e6f7420454f410000000000000000000000000000000000000060448201526064016108de565b6fffffffffffffffffffffffffffffffff341115611b9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4545584c3a2076616c756520746f6f206869676800000000000000000000000060448201526064016108de565b6003546fffffffffffffffffffffffffffffffff16341015611c1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4545584c3a207265712062696420616d74203e3d206d696e426964000000000060448201526064016108de565b336000908152600760205260409020546fffffffffffffffffffffffffffffffff1615611ca5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4545584c3a20626964206578697374732c2063616e63656c206669727374000060448201526064016108de565b611cae88612d3c565b611d14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4545584c3a206d696e436f6c204f4f420000000000000000000000000000000060448201526064016108de565b611d1d87612d3c565b611d83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4545584c3a206d6178436f6c204f4f420000000000000000000000000000000060448201526064016108de565b8660ff168860ff161115611df3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4545584c3a20726571206d696e436f6c203c3d206d6178436f6c00000000000060448201526064016108de565b611dfc86612d3c565b611e62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4545584c3a206d696e526f77204f4f420000000000000000000000000000000060448201526064016108de565b611e6b85612d3c565b611ed1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4545584c3a206d6178526f77204f4f420000000000000000000000000000000060448201526064016108de565b8460ff168660ff161115611f41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4545584c3a20726571206d696e526f77203c3d206d6178526f7700000000000060448201526064016108de565b611f4a84612d4d565b611fb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4545584c3a206d696e456c65204f4f420000000000000000000000000000000060448201526064016108de565b611fb983612d4d565b61201f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4545584c3a206d6178456c65204f4f420000000000000000000000000000000060448201526064016108de565b8260ff168460ff16111561208f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4545584c3a20726571206d696e456c65203c3d206d6178456c6500000000000060448201526064016108de565b600660ff831611156120fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4545584c3a206d696e576174204f4f420000000000000000000000000000000060448201526064016108de565b600660ff8216111561216b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4545584c3a206d6178576174204f4f420000000000000000000000000000000060448201526064016108de565b8060ff168260ff1611156121db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4545584c3a20726571206d696e576174203c3d206d617857617400000000000060448201526064016108de565b60065467ffffffffffffffff811061224f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4545584c3a20746f6f206d616e7920626964730000000000000000000000000060448201526064016108de565b604051806101400160405280346fffffffffffffffffffffffffffffffff1681526020018a60ff1681526020018960ff1681526020018860ff1681526020018760ff1681526020018660ff1681526020018560ff1681526020018460ff1681526020018360ff1681526020018267ffffffffffffffff16815250600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a81548160ff021916908360ff16021790555060408201518160000160116101000a81548160ff021916908360ff16021790555060608201518160000160126101000a81548160ff021916908360ff16021790555060808201518160000160136101000a81548160ff021916908360ff16021790555060a08201518160000160146101000a81548160ff021916908360ff16021790555060c08201518160000160156101000a81548160ff021916908360ff16021790555060e08201518160000160166101000a81548160ff021916908360ff1602179055506101008201518160000160176101000a81548160ff021916908360ff1602179055506101208201518160000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506006339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550346fffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ffdd112ffa368681c99ed9f845ed96123a44a1752ad73d4df220fee9ea848870b8b8b8b8b8b8b8b8b60405161258c98979695949392919060ff98891681529688166020880152948716604087015292861660608601529085166080850152841660a0840152831660c083015290911660e08201526101000190565b60405180910390a3505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314612620576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4545584c3a204e6f74206f776e6572000000000000000000000000000000000060448201526064016108de565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811790915560405133907fb150023a879fd806e3599b6ca8ee3b60f0e360ab3846d128d67ebce1a391639a90600090a350565b600061269c83612d3c565b80156126ac57506126ac82612d3c565b612712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4545584c3a20496e76616c696420636f6c20616e642f6f7220726f770000000060448201526064016108de565b8160ff1660218460ff1661272691906131cb565b6127309190613154565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260086020526040902054806127c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4545584c3a206e6f7468696e672070656e64696e67000000000000000000000060448201526064016108de565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600860205260408120556127f48282612c6d565b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fcd1fce47d5ad89dd70b04c75bd6bdb8114d4d4ff7b4393f9fb5937e733ba958260405160405180910390a4505050565b6000600160ff84161080159061286e5750601f60ff841611155b6128fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4545584c3a20576174657220636f756e74696e67207265717572657320636f6c60448201527f20312d333100000000000000000000000000000000000000000000000000000060648201526084016108de565b600160ff8316108015906129125750601f60ff831611155b61299e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4545584c3a20576174657220636f756e74696e67207265717572657320636f6c60448201527f20312d333100000000000000000000000000000000000000000000000000000060648201526084016108de565b60016129ab6002846132c0565b60ff161415612a13576129da6129d56129c5600186613192565b6129d0600186613192565b612d6c565b612e23565b6129e49082613192565b9050612a026129d56129f7600186613192565b6129d0600186613249565b612a0c9082613192565b9050612a4e565b612a246129d56129f7600186613249565b612a2e9082613192565b9050612a416129d56129c5600186613249565b612a4b9082613192565b90505b612a606129d5846129d0600186613249565b612a6a9082613192565b9050612a7e6129d5846129d0600186613192565b612a889082613192565b9050612aa16129d5612a9b600186613192565b84612d6c565b612aab9082613192565b9050612abe6129d5612a9b600186613249565b6127309082613192565b6006805460009190612adc90600190613232565b81548110612aec57612aec61336f565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff908116915083168114612bd9578060068367ffffffffffffffff1681548110612b3857612b3861336f565b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9485161790559183168152600790915260409020805477ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff8516021790555b73ffffffffffffffffffffffffffffffffffffffff83166000908152600760205260408120556006805480612c1057612c10613340565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055505050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114612cc7576040519150601f19603f3d011682016040523d82523d6000602084013e612ccc565b606091505b5050905080612d37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4545584c3a20455448207472616e73666572206661696c65640000000000000060448201526064016108de565b505050565b6000602060ff831611155b92915050565b6000607d60ff831610801590612d47575060d860ff8316111592915050565b6040517f4166c1fd00000000000000000000000000000000000000000000000000000000815260ff808416600483015282166024820152600090607d907368549d7dbb7a956f955ec1263f55494f05972a6b90634166c1fd9060440160206040518083038186803b158015612de057600080fd5b505afa158015612df4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e189190612ef0565b60ff16109392505050565b600081612e31576000612d47565b600192915050565b80356fffffffffffffffffffffffffffffffff81168114612e5957600080fd5b919050565b600060208284031215612e7057600080fd5b81356127308161339e565b600060208284031215612e8d57600080fd5b81516127308161339e565b600060208284031215612eaa57600080fd5b61273082612e39565b600060208284031215612ec557600080fd5b813561ffff8116811461273057600080fd5b600060208284031215612ee957600080fd5b5035919050565b600060208284031215612f0257600080fd5b8151612730816133c0565b60008060408385031215612f2057600080fd5b8235612f2b816133c0565b91506020830135612f3b816133c0565b809150509250929050565b60008060008060808587031215612f5c57600080fd5b8435612f67816133c0565b93506020850135612f77816133c0565b92506040850135612f878161339e565b9396929550929360600135925050565b600080600060608486031215612fac57600080fd5b8335612fb7816133c0565b92506020840135612fc7816133c0565b9150612fd560408501612e39565b90509250925092565b600080600080600080600080610100898b031215612ffb57600080fd5b8835613006816133c0565b97506020890135613016816133c0565b96506040890135613026816133c0565b95506060890135613036816133c0565b94506080890135613046816133c0565b935060a0890135613056816133c0565b925060c0890135613066816133c0565b915060e0890135613076816133c0565b809150509295985092959890939650565b6020808252825182820181905260009190848201906040850190845b818110156130d557835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016130a3565b50909695505050505050565b600060208083528351808285015260005b8181101561310e578581018301518582016040015282016130f2565b81811115613120576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600061ffff808316818516808303821115613171576131716132e2565b01949350505050565b6000821982111561318d5761318d6132e2565b500190565b600060ff821660ff84168060ff038211156131af576131af6132e2565b019392505050565b6000826131c6576131c6613311565b500490565b600061ffff808316818516818304811182151516156131ec576131ec6132e2565b02949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561322d5761322d6132e2565b500290565b600082821015613244576132446132e2565b500390565b600060ff821660ff841680821015613263576132636132e2565b90039392505050565b600181811c9082168061328057607f821691505b602082108114156132ba577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600060ff8316806132d3576132d3613311565b8060ff84160691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610a7357600080fd5b60ff81168114610a7357600080fdfea2646970667358221220c03027760cca19df7d927d694ba74ebef1f3afd5ba086713c2df48fcc9d14e1764736f6c63430008060033

Deployed Bytecode Sourcemap

358:12799:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;451:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1468:55;;;;;;;;;;-1:-1:-1;1468:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;19577:25:1;;;19565:2;19550:18;1468:55:0;19532:76:1;498:94:0;;;;;;;;;;;;548:42;498:94;;;;;4917:42:1;4905:55;;;4887:74;;4875:2;4860:18;498:94:0;4842:125:1;6556:115:0;;;;;;;;;;-1:-1:-1;6556:115:0;;;;;:::i;:::-;;:::i;:::-;;;17569:34:1;17557:47;;;17539:66;;17527:2;17512:18;6556:115:0;17494:117:1;7420:331:0;;;;;;;;;;-1:-1:-1;7420:331:0;;;;;:::i;:::-;;:::i;:::-;;13068:84;;;;;;;;;;;;;:::i;740:40::-;;;;;;;;;;-1:-1:-1;740:40:0;;;;;;;;3802:236;;;;;;;;;;-1:-1:-1;3802:236:0;;;;;:::i;:::-;;:::i;7095:317::-;;;;;;;;;;-1:-1:-1;7095:317:0;;;;;:::i;:::-;;:::i;12959:103::-;;;;;;;;;;-1:-1:-1;12959:103:0;;;;;:::i;:::-;;:::i;2999:224::-;;;;;;;;;;;;;:::i;4044:223::-;;;;;;;;;;-1:-1:-1;4044:223:0;;;;;:::i;:::-;;:::i;392:20::-;;;;;;;;;;-1:-1:-1;392:20:0;;;;;;;;1338:37;;;;;;;;;;-1:-1:-1;1338:37:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18871:34:1;18859:47;;;18841:66;;18926:4;18966:15;;;18961:2;18946:18;;18939:43;19018:15;;;18998:18;;;18991:43;;;;19070:15;;;19065:2;19050:18;;19043:43;19123:15;;;19117:3;19102:19;;19095:44;19176:15;;;19170:3;19155:19;;19148:44;19229:15;;19223:3;19208:19;;19201:44;19282:15;;19276:3;19261:19;;19254:44;19335:15;;;;19329:3;19314:19;;19307:44;19400:18;19388:31;19382:3;19367:19;;19360:60;18828:3;18813:19;1338:37:0;18795:631:1;10907:1691:0;;;;;;;;;;-1:-1:-1;10907:1691:0;;;;;:::i;:::-;;:::i;929:28::-;;;;;;;;;;;;;;;;10378:523;;;;;;;;;;;;;:::i;855:37::-;;;;;;;;;;;;;;;;597:136;;;;;;;;;;;;689:42;597:136;;3635:161;;;;;;;;;;;;;:::i;6462:88::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;1307:24::-;;;;;;;;;;-1:-1:-1;1307:24:0;;;;;:::i;:::-;;:::i;417:27::-;;;;;;;;;;-1:-1:-1;417:27:0;;;;;;;;7757:2049;;;;;;:::i;:::-;;:::i;2833:160::-;;;;;;;;;;-1:-1:-1;2833:160:0;;;;;:::i;:::-;;:::i;1528:41::-;;;;;;;;;;-1:-1:-1;1528:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;451:40;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6556:115::-;6615:7;6638:6;:27;6645:19;6655:3;6660;6645:9;:19::i;:::-;6638:27;;;;;;;;;;;;;-1:-1:-1;6638:27:0;;;;;6556:115;-1:-1:-1;;;6556:115:0:o;7420:331::-;7485:26;;;;;19809:4:1;19797:17;;;7485:26:0;;;19779:36:1;19851:17;;19831:18;;;19824:45;7515:10:0;;548:42;;7485:16;;19752:18:1;;7485:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;;7477:73;;;;;;;15151:2:1;7477:73:0;;;15133:21:1;15190:2;15170:18;;;15163:30;15229:22;15209:18;;;15202:50;15269:18;;7477:73:0;;;;;;;;;7557:16;7576:19;7586:3;7591;7576:9;:19::i;:::-;7618:17;;;7602:13;7618:17;;;:6;:17;;;;;;;;7642:21;;;;;;7675:40;;7557:38;;-1:-1:-1;7618:17:0;;;;;7686:10;;7675:40;;7602:13;7675:40;7470:281;;7420:331;;:::o;13068:84::-;13104:42;13114:10;13134;13104:9;:42::i;:::-;13068:84::o;3802:236::-;2788:5;;;;2774:10;:19;2766:47;;;;;;;15500:2:1;2766:47:0;;;15482:21:1;15539:2;15519:18;;;15512:30;15578:17;15558:18;;;15551:45;15613:18;;2766:47:0;15472:165:1;2766:47:0;3966:3:::1;3943:10;3933:7;:20;;;3932:38;;3924:72;;;::::0;::::1;::::0;;8069:2:1;3924:72:0::1;::::0;::::1;8051:21:1::0;8108:2;8088:18;;;8081:30;8147:23;8127:18;;;8120:51;8188:18;;3924:72:0::1;8041:171:1::0;3924:72:0::1;3802:236:::0;:::o;7095:317::-;7180:1;7172:5;:9;;;7164:45;;;;;;;14454:2:1;7164:45:0;;;14436:21:1;14493:2;14473:18;;;14466:30;14532:25;14512:18;;;14505:53;14575:18;;7164:45:0;14426:173:1;7164:45:0;7224:26;;;;;19809:4:1;19797:17;;;7224:26:0;;;19779:36:1;19851:17;;19831:18;;;19824:45;7254:10:0;;548:42;;7224:16;;19752:18:1;;7224:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;;7216:73;;;;;;;15151:2:1;7216:73:0;;;15133:21:1;15190:2;15170:18;;;15163:30;15229:22;15209:18;;;15202:50;15269:18;;7216:73:0;15123:170:1;7216:73:0;7296:16;7315:19;7325:3;7330;7315:9;:19::i;:::-;7346:60;;;7369:17;;;;:6;:17;;;;;;:25;;;;;;;;;;;;;7346:60;;;;-1:-1:-1;7346:60:0;;7357:10;;7346:60;;;7157:255;7095:317;;;:::o;12959:103::-;13022:34;13032:10;13044:11;13022:9;:34::i;2999:224::-;3064:12;;;;3050:10;:26;3042:62;;;;;;;9483:2:1;3042:62:0;;;9465:21:1;9522:2;9502:18;;;9495:30;9561:25;9541:18;;;9534:53;9604:18;;3042:62:0;9455:173:1;3042:62:0;3142:5;;;3116:44;;3149:10;;3116:44;3142:5;;;;3116:44;;;3167:5;:18;;;;;;3175:10;3167:18;;;;;3192:25;;;;;;;2999:224::o;4044:223::-;2788:5;;;;2774:10;:19;2766:47;;;;;;;15500:2:1;2766:47:0;;;15482:21:1;15539:2;15519:18;;;15512:30;15578:17;15558:18;;;15551:45;15613:18;;2766:47:0;15472:165:1;2766:47:0;4108:6:::1;:18:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;4044:223::o;10907:1691::-;11007:26;;;;;19809:4:1;19797:17;;;11007:26:0;;;19779:36:1;19851:17;;19831:18;;;19824:45;11037:10:0;;548:42;;11007:16;;19752:18:1;;11007:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;;10999:68;;;;;;;15500:2:1;10999:68:0;;;15482:21:1;15539:2;15519:18;;;15512:30;15578:17;15558:18;;;15551:45;15613:18;;10999:68:0;15472:165:1;10999:68:0;11207:13;;;11189:15;11207:13;;;:5;:13;;;;;11244:10;;;;11280:19;;;;;;11279:51;;-1:-1:-1;11319:10:0;;;;;;;;;11312:17;;;;;11279:51;:81;;;;-1:-1:-1;11349:10:0;;;;;;;;;11342:17;;;;;11279:81;:111;;;;-1:-1:-1;11379:10:0;;;;;;;;;11372:17;;;;;11279:111;:141;;;;-1:-1:-1;11409:10:0;;;;;;;;;11402:17;;;;;11279:141;:212;;;;-1:-1:-1;11480:10:0;;11432:44;;;;;11480:10;19797:17:1;;;11432:44:0;;;19779:36:1;19851:17;;;19831:18;;;19824:45;11480:10:0;;;;;;;;689:42;;11432:34;;19752:18:1;;11432:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:58;;;;11279:212;:283;;;;-1:-1:-1;11551:10:0;;11503:44;;;;;11551:10;19797:17:1;;;11503:44:0;;;19779:36:1;19851:17;;;19831:18;;;19824:45;11551:10:0;;;;;;;;689:42;;11503:34;;19752:18:1;;11503:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:58;;;;11279:283;:345;;;;-1:-1:-1;11613:10:0;;;;;;;11574:35;11600:3;11605;11574:25;:35::i;:::-;:49;;;;11279:345;:407;;;;-1:-1:-1;11675:10:0;;;;;;;11636:35;11662:3;11667;11636:25;:35::i;:::-;:49;;;;11279:407;11263:473;;;;;;;11999:2:1;11263:473:0;;;11981:21:1;;;12018:18;;;12011:30;12077:34;12057:18;;;12050:62;12129:18;;11263:473:0;11971:182:1;11263:473:0;11782:19;11792:3;11797;11782:9;:19::i;:::-;11811:10;;11750:156;;;17985:34:1;17973:47;;17955:66;;11811:10:0;;;;;;;18075:2:1;18060:18;;18053:43;11823:10:0;;;;;18112:18:1;;;18105:43;11835:10:0;;;;;18179:2:1;18164:18;;18157:43;11847:10:0;;;;;18231:3:1;18216:19;;18209:44;11859:10:0;;;;;18284:3:1;18269:19;;18262:44;11871:10:0;;;;;18337:3:1;18322:19;;18315:44;11883:10:0;;;;;18390:3:1;18375:19;;18368:44;11895:10:0;;;;;;;18443:3:1;18428:19;;18421:44;11750:156:0;;;;;;;;;;;11762:10;;11750:156;;;;;17942:3:1;11750:156:0;;;12086:16;;12067:36;;12078:6;;12086:16;;;;;12067:10;:36::i;:::-;12112:34;;;;;20104:4:1;20092:17;;;12112:34:0;;;20074:36:1;20146:17;;20126:18;;;20119:45;20212:42;20200:55;;20180:18;;;20173:83;548:42:0;;12112:16;;20047:18:1;;12112:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12161:26:0;;;;;19809:4:1;19797:17;;;12161:26:0;;;19779:36:1;19851:17;;19831:18;;;19824:45;12161:36:0;;;;-1:-1:-1;548:42:0;;-1:-1:-1;12161:16:0;;19752:18:1;;12161:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36;;;12153:80;;;;;;;9123:2:1;12153:80:0;;;9105:21:1;9162:2;9142:18;;;9135:30;9201:33;9181:18;;;9174:61;9252:18;;12153:80:0;9095:181:1;12153:80:0;12339:11;12391:6;12372:7;;12362:6;12354:15;;:25;;;;:::i;:::-;12353:45;;;;:::i;:::-;12339:59;;12422:3;12405:13;;:20;;;;;;;:::i;:::-;;;;-1:-1:-1;12470:21:0;;-1:-1:-1;12488:3:0;12470:15;;;:21;:::i;:::-;12454:10;12434:31;;;;:19;:31;;;;;:58;;:31;;;:58;;;;;:::i;:::-;;;;-1:-1:-1;12508:6:0;;-1:-1:-1;12508:27:0;12515:19;12525:3;12530;12515:9;:19::i;:::-;12508:27;;;;;;;;;;;;;-1:-1:-1;12508:27:0;12501:34;;;;;;-1:-1:-1;;;;;;;10907:1691:0:o;10378:523::-;10539:10;10515:15;10533:17;;;:5;:17;;;;;10574:10;;;;10601:20;10593:54;;;;;;;17245:2:1;10593:54:0;;;17227:21:1;17284:2;17264:18;;;17257:30;17323:23;17303:18;;;17296:51;17364:18;;10593:54:0;17217:171:1;10593:54:0;10694:10;;10661:128;;;10694:10;;;;;;;20601:34:1;;10706:10:0;;;;;20666:2:1;20651:18;;20644:43;10718:10:0;;;;;20703:18:1;;;20696:43;10730:10:0;;;;;20770:2:1;20755:18;;20748:43;10742:10:0;;;;;20822:3:1;20807:19;;20800:44;10754:10:0;;;;;20875:3:1;20860:19;;20853:44;10766:10:0;;;;;20928:3:1;20913:19;;20906:44;10778:10:0;;;;;;;20981:3:1;20966:19;;20959:44;10661:128:0;;;;;10674:10;;10661:128;;;;;20565:3:1;10661:128:0;;;10821:16;;10798:40;;10809:10;;10821:16;;;;;10798:10;:40::i;:::-;10865:10;10845:31;;;;:19;:31;;;;;:50;;10880:15;;;;10845:31;:50;;10880:15;;10845:50;:::i;:::-;;;;-1:-1:-1;;;;10378:523:0:o;3635:161::-;2788:5;;;;2774:10;:19;2766:47;;;;;;;15500:2:1;2766:47:0;;;15482:21:1;15539:2;15519:18;;;15512:30;15578:17;15558:18;;;15551:45;15613:18;;2766:47:0;15472:165:1;2766:47:0;3701:13:::1;::::0;;3684:14:::1;3721:26:::0;;;3754:36:::1;3771:10;3701:13:::0;3754:16:::1;:36::i;6462:88::-:0;6505:16;6537:7;6530:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6462:88;:::o;1307:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1307:24:0;:::o;7757:2049::-;7918:10;7932:9;7918:23;7910:49;;;;;;;16903:2:1;7910:49:0;;;16885:21:1;16942:2;16922:18;;;16915:30;16981:15;16961:18;;;16954:43;17014:18;;7910:49:0;16875:163:1;7910:49:0;8117:17;8104:9;:30;;8096:63;;;;;;;16199:2:1;8096:63:0;;;16181:21:1;16238:2;16218:18;;;16211:30;16277:22;16257:18;;;16250:50;16317:18;;8096:63:0;16171:170:1;8096:63:0;8187:6;;;;8174:9;:19;;8166:59;;;;;;;9835:2:1;8166:59:0;;;9817:21:1;9874:2;9854:18;;;9847:30;9913:29;9893:18;;;9886:57;9960:18;;8166:59:0;9807:177:1;8166:59:0;8322:10;8352:1;8316:17;;;:5;:17;;;;;:24;:38;:24;:38;8308:81;;;;;;;8419:2:1;8308:81:0;;;8401:21:1;8458:2;8438:18;;;8431:30;8497:32;8477:18;;;8470:60;8547:18;;8308:81:0;8391:180:1;8308:81:0;8406:24;8423:6;8406:16;:24::i;:::-;8398:53;;;;;;;13409:2:1;8398:53:0;;;13391:21:1;13448:2;13428:18;;;13421:30;13487:18;13467;;;13460:46;13523:18;;8398:53:0;13381:166:1;8398:53:0;8466:24;8483:6;8466:16;:24::i;:::-;8458:53;;;;;;;10546:2:1;8458:53:0;;;10528:21:1;10585:2;10565:18;;;10558:30;10624:18;10604;;;10597:46;10660:18;;8458:53:0;10518:166:1;8458:53:0;8536:6;8526:16;;:6;:16;;;;8518:55;;;;;;;16548:2:1;8518:55:0;;;16530:21:1;16587:2;16567:18;;;16560:30;16626:28;16606:18;;;16599:56;16672:18;;8518:55:0;16520:176:1;8518:55:0;8590:24;8607:6;8590:16;:24::i;:::-;8582:53;;;;;;;13754:2:1;8582:53:0;;;13736:21:1;13793:2;13773:18;;;13766:30;13832:18;13812;;;13805:46;13868:18;;8582:53:0;13726:166:1;8582:53:0;8650:24;8667:6;8650:16;:24::i;:::-;8642:53;;;;;;;14806:2:1;8642:53:0;;;14788:21:1;14845:2;14825:18;;;14818:30;14884:18;14864;;;14857:46;14920:18;;8642:53:0;14778:166:1;8642:53:0;8720:6;8710:16;;:6;:16;;;;8702:55;;;;;;;15844:2:1;8702:55:0;;;15826:21:1;15883:2;15863:18;;;15856:30;15922:28;15902:18;;;15895:56;15968:18;;8702:55:0;15816:176:1;8702:55:0;8774:25;8792:6;8774:17;:25::i;:::-;8766:54;;;;;;;7025:2:1;8766:54:0;;;7007:21:1;7064:2;7044:18;;;7037:30;7103:18;7083;;;7076:46;7139:18;;8766:54:0;6997:166:1;8766:54:0;8902:25;8920:6;8902:17;:25::i;:::-;8894:54;;;;;;;11654:2:1;8894:54:0;;;11636:21:1;11693:2;11673:18;;;11666:30;11732:18;11712;;;11705:46;11768:18;;8894:54:0;11626:166:1;8894:54:0;8973:6;8963:16;;:6;:16;;;;8955:55;;;;;;;10191:2:1;8955:55:0;;;10173:21:1;10230:2;10210:18;;;10203:30;10269:28;10249:18;;;10242:56;10315:18;;8955:55:0;10163:176:1;8955:55:0;9043:1;9027:18;;;;;9019:47;;;;;;;7370:2:1;9019:47:0;;;7352:21:1;7409:2;7389:18;;;7382:30;7448:18;7428;;;7421:46;7484:18;;9019:47:0;7342:166:1;9019:47:0;9097:1;9081:18;;;;;9073:47;;;;;;;8778:2:1;9073:47:0;;;8760:21:1;8817:2;8797:18;;;8790:30;8856:18;8836;;;8829:46;8892:18;;9073:47:0;8750:166:1;9073:47:0;9145:6;9135:16;;:6;:16;;;;9127:55;;;;;;;14099:2:1;9127:55:0;;;14081:21:1;14138:2;14118:18;;;14111:30;14177:28;14157:18;;;14150:56;14223:18;;9127:55:0;14071:176:1;9127:55:0;9220:7;:14;9297:16;9276:37;;9268:69;;;;;;;12710:2:1;9268:69:0;;;12692:21:1;12749:2;12729:18;;;12722:30;12788:21;12768:18;;;12761:49;12827:18;;9268:69:0;12682:169:1;9268:69:0;9367:280;;;;;;;;9396:9;9367:280;;;;;;9423:6;9367:280;;;;;;9446:6;9367:280;;;;;;9469:6;9367:280;;;;;;9492:6;9367:280;;;;;;9515:6;9367:280;;;;;;9538:6;9367:280;;;;;;9561:6;9367:280;;;;;;9584:6;9367:280;;;;;;9620:18;9367:280;;;;;9347:5;:17;9353:10;9347:17;;;;;;;;;;;;;;;:300;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9656:7;9669:10;9656:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9725:9;9694:106;;9705:10;9694:106;;;9737:6;9745;9753;9761;9769;9777;9785;9793;9694:106;;;;;;;;;;;;20588:4:1;20619:15;;;20601:34;;20671:15;;;20666:2;20651:18;;20644:43;20723:15;;;20718:2;20703:18;;20696:43;20775:15;;;20770:2;20755:18;;20748:43;20828:15;;;20822:3;20807:19;;20800:44;20881:15;;20875:3;20860:19;;20853:44;20934:15;;20928:3;20913:19;;20906:44;20987:15;;;20981:3;20966:19;;20959:44;20565:3;20550:19;;20532:477;9694:106:0;;;;;;;;7903:1903;7757:2049;;;;;;;;:::o;2833:160::-;2788:5;;;;2774:10;:19;2766:47;;;;;;;15500:2:1;2766:47:0;;;15482:21:1;15539:2;15519:18;;;15512:30;15578:17;15558:18;;;15551:45;15613:18;;2766:47:0;15472:165:1;2766:47:0;2904:12:::1;:23:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;2939:48:::1;::::0;2966:10:::1;::::0;2939:48:::1;::::0;-1:-1:-1;;2939:48:0::1;2833:160:::0;:::o;4405:226::-;4469:6;4492:21;4509:3;4492:16;:21::i;:::-;:46;;;;;4517:21;4534:3;4517:16;:21::i;:::-;4484:87;;;;;;;10891:2:1;4484:87:0;;;10873:21:1;10930:2;10910:18;;;10903:30;10969;10949:18;;;10942:58;11017:18;;4484:87:0;10863:178:1;4484:87:0;4621:3;4614:11;;4607:2;4593:3;4586:11;;:24;;;;:::i;:::-;4585:40;;;;:::i;:::-;4578:47;4405:226;-1:-1:-1;;;4405:226:0:o;12604:349::-;12702:28;;;12685:14;12702:28;;;:19;:28;;;;;;12745:19;12737:53;;;;;;;12360:2:1;12737:53:0;;;12342:21:1;12399:2;12379:18;;;12372:30;12438:23;12418:18;;;12411:51;12479:18;;12737:53:0;12332:171:1;12737:53:0;12799:28;;;12838:1;12799:28;;;:19;:28;;;;;:41;12847:37;12864:11;12877:6;12847:16;:37::i;:::-;12940:6;12927:11;12898:49;;12918:7;12898:49;;;;;;;;;;;;12678:275;12604:349;;:::o;5312:1144::-;5392:16;5441:1;5428:15;;;;;;;5427:39;;-1:-1:-1;5462:2:0;5449:16;;;;;5427:39;5419:89;;;;;;;11248:2:1;5419:89:0;;;11230:21:1;11287:2;11267:18;;;11260:30;11326:34;11306:18;;;11299:62;11397:7;11377:18;;;11370:35;11422:19;;5419:89:0;11220:227:1;5419:89:0;5537:1;5524:15;;;;;;;5523:39;;-1:-1:-1;5558:2:0;5545:16;;;;;5523:39;5515:89;;;;;;;11248:2:1;5515:89:0;;;11230:21:1;11287:2;11267:18;;;11260:30;11326:34;11306:18;;;11299:62;11397:7;11377:18;;;11370:35;11422:19;;5515:89:0;11220:227:1;5515:89:0;5639:1;5615:14;5627:1;5615:3;:14;:::i;:::-;:26;;;5611:434;;;5666:54;5679:40;5688:14;5700:1;5688:3;:14;:::i;:::-;5704;5716:1;5704:3;:14;:::i;:::-;5679:8;:40::i;:::-;5666:12;:54::i;:::-;5652:68;;;;:::i;:::-;;-1:-1:-1;5761:54:0;5774:40;5783:14;5795:1;5783:3;:14;:::i;:::-;5799;5811:1;5799:3;:14;:::i;5761:54::-;5747:68;;;;:::i;:::-;;;5611:434;;;5870:54;5883:40;5892:14;5904:1;5892:3;:14;:::i;5870:54::-;5856:68;;;;:::i;:::-;;-1:-1:-1;5965:54:0;5978:40;5987:14;5999:1;5987:3;:14;:::i;5965:54::-;5951:68;;;;:::i;:::-;;;5611:434;6067:43;6080:29;6089:3;6094:14;6106:1;6094:3;:14;:::i;6067:43::-;6053:57;;;;:::i;:::-;;-1:-1:-1;6179:43:0;6192:29;6201:3;6206:14;6218:1;6206:3;:14;:::i;6179:43::-;6165:57;;;;:::i;:::-;;-1:-1:-1;6291:43:0;6304:29;6313:14;6325:1;6313:3;:14;:::i;:::-;6329:3;6304:8;:29::i;6291:43::-;6277:57;;;;:::i;:::-;;-1:-1:-1;6381:43:0;6394:29;6403:14;6415:1;6403:3;:14;:::i;6381:43::-;6367:57;;;;:::i;9812:560::-;9941:7;9949:14;;9920:18;;9941:7;9949:27;;9974:1;;9949:27;:::i;:::-;9941:36;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;10053:20:0;;;;10049:269;;10108:10;10084:7;10092:12;10084:21;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:34;;;;;;;;;;;10196:17;;;;;:5;:17;;;;;;:45;;;;;;;;;;;;10049:269;10333:13;;;;;;;:5;:13;;;;;10326:20;10353:7;:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9812:560:0:o;3229:400::-;3404:12;3422:9;:14;;3445:6;3422:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3403:54;;;3586:7;3578:45;;;;;;;7715:2:1;3578:45:0;;;7697:21:1;7754:2;7734:18;;;7727:30;7793:27;7773:18;;;7766:55;7838:18;;3578:45:0;7687:175:1;3578:45:0;3299:330;3229:400;;:::o;4639:254::-;4701:4;4760:2;4745:18;;;;;4721:43;4714:50;4639:254;-1:-1:-1;;4639:254:0:o;4899:135::-;4962:4;4998:3;4983:19;;;;;;;4982:46;;-1:-1:-1;5023:3:0;5008:19;;;;;4975:53;4899:135;-1:-1:-1;;4899:135:0:o;5040:149::-;5123:44;;;;;19809:4:1;19797:17;;;5123:44:0;;;19779:36:1;19851:17;;19831:18;;;19824:45;5103:4:0;;5176:3;;689:42;;5123:34;;19752:18:1;;5123:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:57;;;;5040:149;-1:-1:-1;;;5040:149:0:o;5195:111::-;5252:5;5273;:27;;5298:1;5273:27;;;5287:1;5266:34;5195:111;-1:-1:-1;;5195:111:0:o;14:188:1:-;82:20;;142:34;131:46;;121:57;;111:2;;192:1;189;182:12;111:2;63:139;;;:::o;207:247::-;266:6;319:2;307:9;298:7;294:23;290:32;287:2;;;335:1;332;325:12;287:2;374:9;361:23;393:31;418:5;393:31;:::i;459:251::-;529:6;582:2;570:9;561:7;557:23;553:32;550:2;;;598:1;595;588:12;550:2;630:9;624:16;649:31;674:5;649:31;:::i;975:186::-;1034:6;1087:2;1075:9;1066:7;1062:23;1058:32;1055:2;;;1103:1;1100;1093:12;1055:2;1126:29;1145:9;1126:29;:::i;1166:272::-;1224:6;1277:2;1265:9;1256:7;1252:23;1248:32;1245:2;;;1293:1;1290;1283:12;1245:2;1332:9;1319:23;1382:6;1375:5;1371:18;1364:5;1361:29;1351:2;;1404:1;1401;1394:12;1443:180;1502:6;1555:2;1543:9;1534:7;1530:23;1526:32;1523:2;;;1571:1;1568;1561:12;1523:2;-1:-1:-1;1594:23:1;;1513:110;-1:-1:-1;1513:110:1:o;1628:247::-;1696:6;1749:2;1737:9;1728:7;1724:23;1720:32;1717:2;;;1765:1;1762;1755:12;1717:2;1797:9;1791:16;1816:29;1839:5;1816:29;:::i;1880:380::-;1944:6;1952;2005:2;1993:9;1984:7;1980:23;1976:32;1973:2;;;2021:1;2018;2011:12;1973:2;2060:9;2047:23;2079:29;2102:5;2079:29;:::i;:::-;2127:5;-1:-1:-1;2184:2:1;2169:18;;2156:32;2197:31;2156:32;2197:31;:::i;:::-;2247:7;2237:17;;;1963:297;;;;;:::o;2265:590::-;2347:6;2355;2363;2371;2424:3;2412:9;2403:7;2399:23;2395:33;2392:2;;;2441:1;2438;2431:12;2392:2;2480:9;2467:23;2499:29;2522:5;2499:29;:::i;:::-;2547:5;-1:-1:-1;2604:2:1;2589:18;;2576:32;2617:31;2576:32;2617:31;:::i;:::-;2667:7;-1:-1:-1;2726:2:1;2711:18;;2698:32;2739:33;2698:32;2739:33;:::i;:::-;2382:473;;;;-1:-1:-1;2791:7:1;;2845:2;2830:18;2817:32;;-1:-1:-1;;2382:473:1:o;2860:454::-;2933:6;2941;2949;3002:2;2990:9;2981:7;2977:23;2973:32;2970:2;;;3018:1;3015;3008:12;2970:2;3057:9;3044:23;3076:29;3099:5;3076:29;:::i;:::-;3124:5;-1:-1:-1;3181:2:1;3166:18;;3153:32;3194:31;3153:32;3194:31;:::i;:::-;3244:7;-1:-1:-1;3270:38:1;3304:2;3289:18;;3270:38;:::i;:::-;3260:48;;2960:354;;;;;:::o;3319:1207::-;3425:6;3433;3441;3449;3457;3465;3473;3481;3534:3;3522:9;3513:7;3509:23;3505:33;3502:2;;;3551:1;3548;3541:12;3502:2;3590:9;3577:23;3609:29;3632:5;3609:29;:::i;:::-;3657:5;-1:-1:-1;3714:2:1;3699:18;;3686:32;3727:31;3686:32;3727:31;:::i;:::-;3777:7;-1:-1:-1;3836:2:1;3821:18;;3808:32;3849:31;3808:32;3849:31;:::i;:::-;3899:7;-1:-1:-1;3958:2:1;3943:18;;3930:32;3971:31;3930:32;3971:31;:::i;:::-;4021:7;-1:-1:-1;4080:3:1;4065:19;;4052:33;4094:31;4052:33;4094:31;:::i;:::-;4144:7;-1:-1:-1;4203:3:1;4188:19;;4175:33;4217:31;4175:33;4217:31;:::i;:::-;4267:7;-1:-1:-1;4326:3:1;4311:19;;4298:33;4340:31;4298:33;4340:31;:::i;:::-;4390:7;-1:-1:-1;4449:3:1;4434:19;;4421:33;4463:31;4421:33;4463:31;:::i;:::-;4513:7;4503:17;;;3492:1034;;;;;;;;;;;:::o;4972:681::-;5143:2;5195:21;;;5265:13;;5168:18;;;5287:22;;;5114:4;;5143:2;5366:15;;;;5340:2;5325:18;;;5114:4;5409:218;5423:6;5420:1;5417:13;5409:218;;;5488:13;;5503:42;5484:62;5472:75;;5602:15;;;;5567:12;;;;5445:1;5438:9;5409:218;;;-1:-1:-1;5644:3:1;;5123:530;-1:-1:-1;;;;;;5123:530:1:o;6162:656::-;6274:4;6303:2;6332;6321:9;6314:21;6364:6;6358:13;6407:6;6402:2;6391:9;6387:18;6380:34;6432:1;6442:140;6456:6;6453:1;6450:13;6442:140;;;6551:14;;;6547:23;;6541:30;6517:17;;;6536:2;6513:26;6506:66;6471:10;;6442:140;;;6600:6;6597:1;6594:13;6591:2;;;6670:1;6665:2;6656:6;6645:9;6641:22;6637:31;6630:42;6591:2;-1:-1:-1;6734:2:1;6722:15;6739:66;6718:88;6703:104;;;;6809:2;6699:113;;6283:535;-1:-1:-1;;;6283:535:1:o;21014:224::-;21053:3;21081:6;21114:2;21111:1;21107:10;21144:2;21141:1;21137:10;21175:3;21171:2;21167:12;21162:3;21159:21;21156:2;;;21183:18;;:::i;:::-;21219:13;;21061:177;-1:-1:-1;;;;21061:177:1:o;21243:128::-;21283:3;21314:1;21310:6;21307:1;21304:13;21301:2;;;21320:18;;:::i;:::-;-1:-1:-1;21356:9:1;;21291:80::o;21376:204::-;21414:3;21450:4;21447:1;21443:12;21482:4;21479:1;21475:12;21517:3;21511:4;21507:14;21502:3;21499:23;21496:2;;;21525:18;;:::i;:::-;21561:13;;21422:158;-1:-1:-1;;;21422:158:1:o;21585:120::-;21625:1;21651;21641:2;;21656:18;;:::i;:::-;-1:-1:-1;21690:9:1;;21631:74::o;21710:258::-;21749:7;21781:6;21814:2;21811:1;21807:10;21844:2;21841:1;21837:10;21900:3;21896:2;21892:12;21887:3;21884:21;21877:3;21870:11;21863:19;21859:47;21856:2;;;21909:18;;:::i;:::-;21949:13;;21761:207;-1:-1:-1;;;;21761:207:1:o;21973:228::-;22013:7;22139:1;22071:66;22067:74;22064:1;22061:81;22056:1;22049:9;22042:17;22038:105;22035:2;;;22146:18;;:::i;:::-;-1:-1:-1;22186:9:1;;22025:176::o;22206:125::-;22246:4;22274:1;22271;22268:8;22265:2;;;22279:18;;:::i;:::-;-1:-1:-1;22316:9:1;;22255:76::o;22336:195::-;22374:4;22411;22408:1;22404:12;22443:4;22440:1;22436:12;22468:3;22463;22460:12;22457:2;;;22475:18;;:::i;:::-;22512:13;;;22383:148;-1:-1:-1;;;22383:148:1:o;22536:437::-;22615:1;22611:12;;;;22658;;;22679:2;;22733:4;22725:6;22721:17;22711:27;;22679:2;22786;22778:6;22775:14;22755:18;22752:38;22749:2;;;22823:77;22820:1;22813:88;22924:4;22921:1;22914:15;22952:4;22949:1;22942:15;22749:2;;22591:382;;;:::o;22978:157::-;23008:1;23042:4;23039:1;23035:12;23066:3;23056:2;;23073:18;;:::i;:::-;23125:3;23118:4;23115:1;23111:12;23107:22;23102:27;;;23014:121;;;;:::o;23140:184::-;23192:77;23189:1;23182:88;23289:4;23286:1;23279:15;23313:4;23310:1;23303:15;23329:184;23381:77;23378:1;23371:88;23478:4;23475:1;23468:15;23502:4;23499:1;23492:15;23518:184;23570:77;23567:1;23560:88;23667:4;23664:1;23657:15;23691:4;23688:1;23681:15;23707:184;23759:77;23756:1;23749:88;23856:4;23853:1;23846:15;23880:4;23877:1;23870:15;23896:154;23982:42;23975:5;23971:54;23964:5;23961:65;23951:2;;24040:1;24037;24030:12;24055:114;24139:4;24132:5;24128:16;24121:5;24118:27;24108:2;;24159:1;24156;24149:12

Swarm Source

ipfs://c03027760cca19df7d927d694ba74ebef1f3afd5ba086713c2df48fcc9d14e17

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.