ETH Price: $1,791.37 (+13.12%)

Contract

0xA14D19387C83b56343fC2E7a8707986aF6a74d08

Overview

ETH Balance

0 ETH

ETH Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Create1308133592025-01-18 18:38:1594 days ago1737225495IN
0xA14D1938...aF6a74d08
0 ETH0.0000021189790.0001003
Create1300644632025-01-01 10:35:03111 days ago1735727703IN
0xA14D1938...aF6a74d08
0 ETH0.0000002023220.00010035
Create1291115262024-12-10 9:10:29133 days ago1733821829IN
0xA14D1938...aF6a74d08
0 ETH0.0000003285380.0001008
Create1288516792024-12-04 8:48:55139 days ago1733302135IN
0xA14D1938...aF6a74d08
0 ETH0.0000021434730.00100073
Create1288421492024-12-04 3:31:15140 days ago1733283075IN
0xA14D1938...aF6a74d08
0 ETH0.0000014197680.00100068
Create1284579632024-11-25 6:05:03149 days ago1732514703IN
0xA14D1938...aF6a74d08
0 ETH0.0000029731420.0001003
Create1283818102024-11-23 11:46:37150 days ago1732362397IN
0xA14D1938...aF6a74d08
0 ETH0.0000002334810.00010043
Create1283238352024-11-22 3:34:07152 days ago1732246447IN
0xA14D1938...aF6a74d08
0 ETH0.0000004708150.00010159
Create1283236332024-11-22 3:27:23152 days ago1732246043IN
0xA14D1938...aF6a74d08
0 ETH0.0000004161210.00010171
Create1279271262024-11-12 23:10:29161 days ago1731453029IN
0xA14D1938...aF6a74d08
0 ETH0.0000005144580.00025176
Create1278222292024-11-10 12:53:55163 days ago1731243235IN
0xA14D1938...aF6a74d08
0 ETH0.0000004358030.00010323
Create1266911742024-10-15 8:32:05189 days ago1728981125IN
0xA14D1938...aF6a74d08
0 ETH0.0000007362720.00049058
Create1264817492024-10-10 12:11:15194 days ago1728562275IN
0xA14D1938...aF6a74d08
0 ETH0.0000016496930.00119066
Create1234553602024-08-01 10:51:37264 days ago1722509497IN
0xA14D1938...aF6a74d08
0 ETH0.000000719330.00053045
Create1230398022024-07-22 19:59:41274 days ago1721678381IN
0xA14D1938...aF6a74d08
0 ETH0.0000784540920.06085782
Create1230272872024-07-22 13:02:31274 days ago1721653351IN
0xA14D1938...aF6a74d08
0 ETH0.000079133280.06135601
Create1223443382024-07-06 17:37:33290 days ago1720287453IN
0xA14D1938...aF6a74d08
0 ETH0.0000782405440.0607172
Create1222563822024-07-04 16:45:41292 days ago1720111541IN
0xA14D1938...aF6a74d08
0 ETH0.0000784363910.06085273
Create1221513342024-07-02 6:24:05295 days ago1719901445IN
0xA14D1938...aF6a74d08
0 ETH0.0000018532780.00142818
Create1218423622024-06-25 2:45:01302 days ago1719283501IN
0xA14D1938...aF6a74d08
0 ETH0.000098001060.07605531
Create1218423132024-06-25 2:43:23302 days ago1719283403IN
0xA14D1938...aF6a74d08
0 ETH0.0000992654560.07703898
Create1217953192024-06-24 0:36:55303 days ago1719189415IN
0xA14D1938...aF6a74d08
0 ETH0.0000794308490.06164214
Create1217395272024-06-22 17:37:11304 days ago1719077831IN
0xA14D1938...aF6a74d08
0 ETH0.0000783979450.06083806
Create1216815942024-06-21 9:26:05305 days ago1718961965IN
0xA14D1938...aF6a74d08
0 ETH0.0000798253790.0619312
Create1213420272024-06-13 12:47:11313 days ago1718282831IN
0xA14D1938...aF6a74d08
0 ETH0.0000077828010.00600713
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
1308133592025-01-18 18:38:1594 days ago1737225495
0xA14D1938...aF6a74d08
 Contract Creation0 ETH
1300644632025-01-01 10:35:03111 days ago1735727703
0xA14D1938...aF6a74d08
 Contract Creation0 ETH
1291115262024-12-10 9:10:29133 days ago1733821829
0xA14D1938...aF6a74d08
 Contract Creation0 ETH
1288516792024-12-04 8:48:55139 days ago1733302135
0xA14D1938...aF6a74d08
 Contract Creation0 ETH
1288421492024-12-04 3:31:15140 days ago1733283075
0xA14D1938...aF6a74d08
 Contract Creation0 ETH
1284579632024-11-25 6:05:03149 days ago1732514703
0xA14D1938...aF6a74d08
 Contract Creation0 ETH
1283818102024-11-23 11:46:37150 days ago1732362397
0xA14D1938...aF6a74d08
 Contract Creation0 ETH
1283238352024-11-22 3:34:07152 days ago1732246447
0xA14D1938...aF6a74d08
 Contract Creation0 ETH
1283236332024-11-22 3:27:23152 days ago1732246043
0xA14D1938...aF6a74d08
 Contract Creation0 ETH
1279271262024-11-12 23:10:29161 days ago1731453029
0xA14D1938...aF6a74d08
 Contract Creation0 ETH
1278222292024-11-10 12:53:55163 days ago1731243235
0xA14D1938...aF6a74d08
 Contract Creation0 ETH
1266911742024-10-15 8:32:05189 days ago1728981125
0xA14D1938...aF6a74d08
 Contract Creation0 ETH
1264817492024-10-10 12:11:15194 days ago1728562275
0xA14D1938...aF6a74d08
 Contract Creation0 ETH
1234553602024-08-01 10:51:37264 days ago1722509497
0xA14D1938...aF6a74d08
 Contract Creation0 ETH
1230398022024-07-22 19:59:41274 days ago1721678381
0xA14D1938...aF6a74d08
 Contract Creation0 ETH
1230272872024-07-22 13:02:31274 days ago1721653351
0xA14D1938...aF6a74d08
 Contract Creation0 ETH
1223443382024-07-06 17:37:33290 days ago1720287453
0xA14D1938...aF6a74d08
 Contract Creation0 ETH
1222563822024-07-04 16:45:41292 days ago1720111541
0xA14D1938...aF6a74d08
 Contract Creation0 ETH
1221513342024-07-02 6:24:05295 days ago1719901445
0xA14D1938...aF6a74d08
 Contract Creation0 ETH
1218423622024-06-25 2:45:01302 days ago1719283501
0xA14D1938...aF6a74d08
 Contract Creation0 ETH
1218423132024-06-25 2:43:23302 days ago1719283403
0xA14D1938...aF6a74d08
 Contract Creation0 ETH
1217953192024-06-24 0:36:55303 days ago1719189415
0xA14D1938...aF6a74d08
 Contract Creation0 ETH
1217395272024-06-22 17:37:11304 days ago1719077831
0xA14D1938...aF6a74d08
 Contract Creation0 ETH
1216815942024-06-21 9:26:05305 days ago1718961965
0xA14D1938...aF6a74d08
 Contract Creation0 ETH
1213420272024-06-13 12:47:11313 days ago1718282831
0xA14D1938...aF6a74d08
 Contract Creation0 ETH
View All Internal Transactions

Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SpaceFactory

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 4 : SpaceFactory.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
import "./Space.sol";

contract SpaceFactory {
    event Create(uint256 spaceId, address indexed spaceAddress, uint256 indexed assetId, address creator, string spaceName);
    uint256 public spaceIndex = 0;
    mapping(uint256 => address) public spaces;
    function create(uint256 assetId, string calldata spaceName) public {
        Space newSpace = new Space(assetId, spaceName, msg.sender);
        spaces[spaceIndex] = address(newSpace);
        emit Create(spaceIndex, address(newSpace), assetId, msg.sender, spaceName);
        spaceIndex++;
    }
}

File 2 of 4 : IBodhi.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

// Interface for the Bodhi contract
interface IBodhi {
    // ERC1155
    function balanceOf(address, uint256) external view returns (uint256);
    function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external;
    function safeBatchTransferFrom(address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data) external;

    // Bodhi - read
    function assets(uint256 assetId) external view returns (uint256 id, string memory arTxId, address creator);
    function assetIndex() external view returns (uint256);
    function totalSupply(uint256) external view returns (uint256);
    function getPrice(uint256 supply, uint256 amount) external pure returns (uint256);
    function getBuyPrice(uint256 assetId, uint256 amount) external view returns (uint256);
    function getBuyPriceAfterFee(uint256 assetId, uint256 amount) external view returns (uint256);
    function getSellPrice(uint256 assetId, uint256 amount) external view returns (uint256);
    function getSellPriceAfterFee(uint256 assetId, uint256 amount) external view returns (uint256);
    
    // Bodhi - write
    function create(string calldata arTxId) external;
    function remove(uint256 assetId) external;
    function buy(uint256 assetId, uint256 amount) external payable;
    function sell(uint256 assetId, uint256 amount) external;
}

File 3 of 4 : Space.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
import {ERC1155TokenReceiver} from "solmate/src/tokens/ERC1155.sol";
import "../interface/IBodhi.sol";

contract Space is ERC1155TokenReceiver {
    event Create(uint256 indexed parentId, uint256 indexed assetId, address indexed sender);
    event Remove(uint256 indexed assetId);

    IBodhi public constant bodhi = IBodhi(0x2AD82A4E39Bac43A54DdfE6f94980AAf0D1409eF);
    uint256 public immutable spaceAssetId;
    address public immutable owner;
    string public name;
    
    constructor(uint256 _assetId, string memory _name, address _owner) {
        (,, address creator) = bodhi.assets(_assetId);
        require(_owner == creator, "Only creator can create its Space");  // also revert if asset not exist or creator is zero
        spaceAssetId = _assetId;
        name = _name;
        owner = _owner;
    }
    
    mapping(uint256 => uint256) public assetToParent;
    mapping(uint256 => address) public assetToCreator;

    // create('...', 0) for new post
    // create('...', parentId) for reply to a post
    function create(string calldata arTxId, uint256 parentId) external {
        require(parentId == 0 || assetToParent[parentId] != 0, "Parent not exists");
        uint256 assetId = bodhi.assetIndex();
        uint256 _parentId = parentId != 0 ? parentId : assetId;
        assetToParent[assetId] = _parentId;
        assetToCreator[assetId] = msg.sender;
        emit Create(_parentId, assetId, msg.sender);
        bodhi.create(arTxId);
        bodhi.safeTransferFrom(address(this), msg.sender, assetId, 1 ether, "");
    }

    function removeFromSpace(uint256[] calldata assetIds) external {
        require(msg.sender == owner, "Only owner can remove");
        for(uint256 i = 0; i < assetIds.length; i++) {
            delete assetToParent[assetIds[i]];
            emit Remove(assetIds[i]);
        }
    }

    function removeFromBodhi(uint256 assetId) external {
        require(assetToCreator[assetId] == msg.sender, "Only creator can remove");
        bodhi.remove(assetId);
    }
    
    function buyback(uint256 amount, uint256 maxPrice) external {
        require(msg.sender == owner, "Only owner can buyback");
        uint256 price = bodhi.getBuyPriceAfterFee(spaceAssetId, amount);
        require(price <= maxPrice, "Price too high");  // prevent potential MEV in the future
        bodhi.buy{value: price}(spaceAssetId, amount);
    }
    
    receive () external payable {}
}

File 4 of 4 : ERC1155.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Minimalist and gas efficient standard ERC1155 implementation.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC1155.sol)
abstract contract ERC1155 {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event TransferSingle(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256 id,
        uint256 amount
    );

    event TransferBatch(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256[] ids,
        uint256[] amounts
    );

    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    event URI(string value, uint256 indexed id);

    /*//////////////////////////////////////////////////////////////
                             ERC1155 STORAGE
    //////////////////////////////////////////////////////////////*/

    mapping(address => mapping(uint256 => uint256)) public balanceOf;

    mapping(address => mapping(address => bool)) public isApprovedForAll;

    /*//////////////////////////////////////////////////////////////
                             METADATA LOGIC
    //////////////////////////////////////////////////////////////*/

    function uri(uint256 id) public view virtual returns (string memory);

    /*//////////////////////////////////////////////////////////////
                              ERC1155 LOGIC
    //////////////////////////////////////////////////////////////*/

    function setApprovalForAll(address operator, bool approved) public virtual {
        isApprovedForAll[msg.sender][operator] = approved;

        emit ApprovalForAll(msg.sender, operator, approved);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes calldata data
    ) public virtual {
        require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED");

        balanceOf[from][id] -= amount;
        balanceOf[to][id] += amount;

        emit TransferSingle(msg.sender, from, to, id, amount);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155Received(msg.sender, from, id, amount, data) ==
                    ERC1155TokenReceiver.onERC1155Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) public virtual {
        require(ids.length == amounts.length, "LENGTH_MISMATCH");

        require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED");

        // Storing these outside the loop saves ~15 gas per iteration.
        uint256 id;
        uint256 amount;

        for (uint256 i = 0; i < ids.length; ) {
            id = ids[i];
            amount = amounts[i];

            balanceOf[from][id] -= amount;
            balanceOf[to][id] += amount;

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                ++i;
            }
        }

        emit TransferBatch(msg.sender, from, to, ids, amounts);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, from, ids, amounts, data) ==
                    ERC1155TokenReceiver.onERC1155BatchReceived.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function balanceOfBatch(address[] calldata owners, uint256[] calldata ids)
        public
        view
        virtual
        returns (uint256[] memory balances)
    {
        require(owners.length == ids.length, "LENGTH_MISMATCH");

        balances = new uint256[](owners.length);

        // Unchecked because the only math done is incrementing
        // the array index counter which cannot possibly overflow.
        unchecked {
            for (uint256 i = 0; i < owners.length; ++i) {
                balances[i] = balanceOf[owners[i]][ids[i]];
            }
        }
    }

    /*//////////////////////////////////////////////////////////////
                              ERC165 LOGIC
    //////////////////////////////////////////////////////////////*/

    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
        return
            interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165
            interfaceId == 0xd9b67a26 || // ERC165 Interface ID for ERC1155
            interfaceId == 0x0e89341c; // ERC165 Interface ID for ERC1155MetadataURI
    }

    /*//////////////////////////////////////////////////////////////
                        INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        balanceOf[to][id] += amount;

        emit TransferSingle(msg.sender, address(0), to, id, amount);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155Received(msg.sender, address(0), id, amount, data) ==
                    ERC1155TokenReceiver.onERC1155Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function _batchMint(
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {
        uint256 idsLength = ids.length; // Saves MLOADs.

        require(idsLength == amounts.length, "LENGTH_MISMATCH");

        for (uint256 i = 0; i < idsLength; ) {
            balanceOf[to][ids[i]] += amounts[i];

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                ++i;
            }
        }

        emit TransferBatch(msg.sender, address(0), to, ids, amounts);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, address(0), ids, amounts, data) ==
                    ERC1155TokenReceiver.onERC1155BatchReceived.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function _batchBurn(
        address from,
        uint256[] memory ids,
        uint256[] memory amounts
    ) internal virtual {
        uint256 idsLength = ids.length; // Saves MLOADs.

        require(idsLength == amounts.length, "LENGTH_MISMATCH");

        for (uint256 i = 0; i < idsLength; ) {
            balanceOf[from][ids[i]] -= amounts[i];

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                ++i;
            }
        }

        emit TransferBatch(msg.sender, from, address(0), ids, amounts);
    }

    function _burn(
        address from,
        uint256 id,
        uint256 amount
    ) internal virtual {
        balanceOf[from][id] -= amount;

        emit TransferSingle(msg.sender, from, address(0), id, amount);
    }
}

/// @notice A generic interface for a contract which properly accepts ERC1155 tokens.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC1155.sol)
abstract contract ERC1155TokenReceiver {
    function onERC1155Received(
        address,
        address,
        uint256,
        uint256,
        bytes calldata
    ) external virtual returns (bytes4) {
        return ERC1155TokenReceiver.onERC1155Received.selector;
    }

    function onERC1155BatchReceived(
        address,
        address,
        uint256[] calldata,
        uint256[] calldata,
        bytes calldata
    ) external virtual returns (bytes4) {
        return ERC1155TokenReceiver.onERC1155BatchReceived.selector;
    }
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"spaceId","type":"uint256"},{"indexed":true,"internalType":"address","name":"spaceAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"assetId","type":"uint256"},{"indexed":false,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"string","name":"spaceName","type":"string"}],"name":"Create","type":"event"},{"inputs":[{"internalType":"uint256","name":"assetId","type":"uint256"},{"internalType":"string","name":"spaceName","type":"string"}],"name":"create","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"spaceIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"spaces","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60806040526000805534801561001457600080fd5b506124c3806100246000396000f3fe60806040523480156200001157600080fd5b5060043610620000465760003560e01c80630118fa49146200004b5780634eb68762146200006b5780637586353b146200008d575b600080fd5b620000696004803603810190620000639190620002cb565b620000c3565b005b62000075620001d1565b60405162000084919062000346565b60405180910390f35b620000ab6004803603810190620000a5919062000363565b620001d7565b604051620000ba9190620003da565b60405180910390f35b600083838333604051620000d7906200020a565b620000e694939291906200045b565b604051809103906000f08015801562000103573d6000803e3d6000fd5b50905080600160008054815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838173ffffffffffffffffffffffffffffffffffffffff167f7301c17e7eed2f35b0b4384269e319c245be1e379fbfe6f0872f8cff3f5f21d8600054338787604051620001aa9493929190620004a1565b60405180910390a3600080815480929190620001c69062000516565b919050555050505050565b60005481565b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611f2a806200056483390190565b600080fd5b600080fd5b6000819050919050565b620002378162000222565b81146200024357600080fd5b50565b60008135905062000257816200022c565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126200028557620002846200025d565b5b8235905067ffffffffffffffff811115620002a557620002a462000262565b5b602083019150836001820283011115620002c457620002c362000267565b5b9250929050565b600080600060408486031215620002e757620002e662000218565b5b6000620002f78682870162000246565b935050602084013567ffffffffffffffff8111156200031b576200031a6200021d565b5b62000329868287016200026c565b92509250509250925092565b620003408162000222565b82525050565b60006020820190506200035d600083018462000335565b92915050565b6000602082840312156200037c576200037b62000218565b5b60006200038c8482850162000246565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620003c28262000395565b9050919050565b620003d481620003b5565b82525050565b6000602082019050620003f16000830184620003c9565b92915050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6000620004368385620003f7565b93506200044583858462000408565b620004508362000417565b840190509392505050565b600060608201905062000472600083018762000335565b81810360208301526200048781858762000428565b9050620004986040830184620003c9565b95945050505050565b6000606082019050620004b8600083018762000335565b620004c76020830186620003c9565b8181036040830152620004dc81848662000428565b905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620005238262000222565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620005585762000557620004e7565b5b60018201905091905056fe60c06040523480156200001157600080fd5b5060405162001f2a38038062001f2a8339818101604052810190620000379190620003d1565b6000732ad82a4e39bac43a54ddfe6f94980aaf0d1409ef73ffffffffffffffffffffffffffffffffffffffff1663cf35bdd0856040518263ffffffff1660e01b81526004016200008891906200045d565b600060405180830381865afa158015620000a6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190620000d19190620003d1565b925050508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161462000146576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200013d9062000501565b60405180910390fd5b836080818152505082600090816200015f919062000764565b508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050505050506200084b565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b620001c781620001b2565b8114620001d357600080fd5b50565b600081519050620001e781620001bc565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200024282620001f7565b810181811067ffffffffffffffff8211171562000264576200026362000208565b5b80604052505050565b6000620002796200019e565b905062000287828262000237565b919050565b600067ffffffffffffffff821115620002aa57620002a962000208565b5b620002b582620001f7565b9050602081019050919050565b60005b83811015620002e2578082015181840152602081019050620002c5565b60008484015250505050565b600062000305620002ff846200028c565b6200026d565b905082815260208101848484011115620003245762000323620001f2565b5b62000331848285620002c2565b509392505050565b600082601f830112620003515762000350620001ed565b5b815162000363848260208601620002ee565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000399826200036c565b9050919050565b620003ab816200038c565b8114620003b757600080fd5b50565b600081519050620003cb81620003a0565b92915050565b600080600060608486031215620003ed57620003ec620001a8565b5b6000620003fd86828701620001d6565b935050602084015167ffffffffffffffff811115620004215762000420620001ad565b5b6200042f8682870162000339565b92505060406200044286828701620003ba565b9150509250925092565b6200045781620001b2565b82525050565b60006020820190506200047460008301846200044c565b92915050565b600082825260208201905092915050565b7f4f6e6c792063726561746f722063616e2063726561746520697473205370616360008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b6000620004e96021836200047a565b9150620004f6826200048b565b604082019050919050565b600060208201905081810360008301526200051c81620004da565b9050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200057657607f821691505b6020821081036200058c576200058b6200052e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005f67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005b7565b620006028683620005b7565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620006456200063f6200063984620001b2565b6200061a565b620001b2565b9050919050565b6000819050919050565b620006618362000624565b6200067962000670826200064c565b848454620005c4565b825550505050565b600090565b6200069062000681565b6200069d81848462000656565b505050565b5b81811015620006c557620006b960008262000686565b600181019050620006a3565b5050565b601f8211156200071457620006de8162000592565b620006e984620005a7565b81016020851015620006f9578190505b620007116200070885620005a7565b830182620006a2565b50505b505050565b600082821c905092915050565b6000620007396000198460080262000719565b1980831691505092915050565b600062000754838362000726565b9150826002028217905092915050565b6200076f8262000523565b67ffffffffffffffff8111156200078b576200078a62000208565b5b6200079782546200055d565b620007a4828285620006c9565b600060209050601f831160018114620007dc5760008415620007c7578287015190505b620007d3858262000746565b86555062000843565b601f198416620007ec8662000592565b60005b828110156200081657848901518255600182019150602085019450602081019050620007ef565b8683101562000836578489015162000832601f89168262000726565b8355505b6001600288020188555050505b505050505050565b60805160a05161169d6200088d600039600081816103c7015281816108e60152610a1001526000818161038b01528181610487015261057d015261169d6000f3fe6080604052600436106100ab5760003560e01c80638cd06722116100645780638cd06722146101d95780638da5cb5b14610202578063bc197c811461022d578063e80624661461026a578063ed2b6dc714610293578063f23a6e61146102be576100b2565b806306fdde03146100b75780631c9930a0146100e257806335a029351461010d578063460ddf8d1461014a57806346f81a87146101735780636c961cdb1461019c576100b2565b366100b257005b600080fd5b3480156100c357600080fd5b506100cc6102fb565b6040516100d99190610c2b565b60405180910390f35b3480156100ee57600080fd5b506100f7610389565b6040516101049190610c66565b60405180910390f35b34801561011957600080fd5b50610134600480360381019061012f9190610cb7565b6103ad565b6040516101419190610c66565b60405180910390f35b34801561015657600080fd5b50610171600480360381019061016c9190610ce4565b6103c5565b005b34801561017f57600080fd5b5061019a60048036038101906101959190610d89565b6105f1565b005b3480156101a857600080fd5b506101c360048036038101906101be9190610cb7565b6108b1565b6040516101d09190610e2a565b60405180910390f35b3480156101e557600080fd5b5061020060048036038101906101fb9190610e9b565b6108e4565b005b34801561020e57600080fd5b50610217610a0e565b6040516102249190610e2a565b60405180910390f35b34801561023957600080fd5b50610254600480360381019061024f9190610f6a565b610a32565b6040516102619190611081565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190610cb7565b610a4a565b005b34801561029f57600080fd5b506102a8610b6d565b6040516102b591906110fb565b60405180910390f35b3480156102ca57600080fd5b506102e560048036038101906102e09190611116565b610b85565b6040516102f29190611081565b60405180910390f35b60008054610308906111df565b80601f0160208091040260200160405190810160405280929190818152602001828054610334906111df565b80156103815780601f1061035657610100808354040283529160200191610381565b820191906000526020600020905b81548152906001019060200180831161036457829003601f168201915b505050505081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60016020528060005260406000206000915090505481565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044a9061125c565b60405180910390fd5b6000732ad82a4e39bac43a54ddfe6f94980aaf0d1409ef73ffffffffffffffffffffffffffffffffffffffff1663063a741f7f0000000000000000000000000000000000000000000000000000000000000000856040518363ffffffff1660e01b81526004016104c492919061127c565b602060405180830381865afa1580156104e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050591906112ba565b90508181111561054a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054190611333565b60405180910390fd5b732ad82a4e39bac43a54ddfe6f94980aaf0d1409ef73ffffffffffffffffffffffffffffffffffffffff1663d6febde8827f0000000000000000000000000000000000000000000000000000000000000000866040518463ffffffff1660e01b81526004016105ba92919061127c565b6000604051808303818588803b1580156105d357600080fd5b505af11580156105e7573d6000803e3d6000fd5b5050505050505050565b600081148061061457506000600160008381526020019081526020016000205414155b610653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064a9061139f565b60405180910390fd5b6000732ad82a4e39bac43a54ddfe6f94980aaf0d1409ef73ffffffffffffffffffffffffffffffffffffffff1663e07b098a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d891906112ba565b905060008083036106e957816106eb565b825b9050806001600084815260200190815260200160002081905550336002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff1682827f445b8581f76aa0de52d44cd380e09371c172bb5b457f347937befae5053fc7d460405160405180910390a4732ad82a4e39bac43a54ddfe6f94980aaf0d1409ef73ffffffffffffffffffffffffffffffffffffffff1663b6a46b3b86866040518363ffffffff1660e01b81526004016107eb9291906113fb565b600060405180830381600087803b15801561080557600080fd5b505af1158015610819573d6000803e3d6000fd5b50505050732ad82a4e39bac43a54ddfe6f94980aaf0d1409ef73ffffffffffffffffffffffffffffffffffffffff1663f242432a303385670de0b6b3a76400006040518563ffffffff1660e01b81526004016108789493929190611491565b600060405180830381600087803b15801561089257600080fd5b505af11580156108a6573d6000803e3d6000fd5b505050505050505050565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096990611535565b60405180910390fd5b60005b82829050811015610a09576001600084848481811061099757610996611555565b5b905060200201358152602001908152602001600020600090558282828181106109c3576109c2611555565b5b905060200201357f476e4aa4bb19dbdea8700b4db99d81ad2fefcf51924ba5d493b7be6393f8220160405160405180910390a28080610a01906115b3565b915050610975565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600063bc197c8160e01b905098975050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae290611647565b60405180910390fd5b732ad82a4e39bac43a54ddfe6f94980aaf0d1409ef73ffffffffffffffffffffffffffffffffffffffff16634cc82215826040518263ffffffff1660e01b8152600401610b389190610c66565b600060405180830381600087803b158015610b5257600080fd5b505af1158015610b66573d6000803e3d6000fd5b5050505050565b732ad82a4e39bac43a54ddfe6f94980aaf0d1409ef81565b600063f23a6e6160e01b90509695505050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610bd5578082015181840152602081019050610bba565b60008484015250505050565b6000601f19601f8301169050919050565b6000610bfd82610b9b565b610c078185610ba6565b9350610c17818560208601610bb7565b610c2081610be1565b840191505092915050565b60006020820190508181036000830152610c458184610bf2565b905092915050565b6000819050919050565b610c6081610c4d565b82525050565b6000602082019050610c7b6000830184610c57565b92915050565b600080fd5b600080fd5b610c9481610c4d565b8114610c9f57600080fd5b50565b600081359050610cb181610c8b565b92915050565b600060208284031215610ccd57610ccc610c81565b5b6000610cdb84828501610ca2565b91505092915050565b60008060408385031215610cfb57610cfa610c81565b5b6000610d0985828601610ca2565b9250506020610d1a85828601610ca2565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112610d4957610d48610d24565b5b8235905067ffffffffffffffff811115610d6657610d65610d29565b5b602083019150836001820283011115610d8257610d81610d2e565b5b9250929050565b600080600060408486031215610da257610da1610c81565b5b600084013567ffffffffffffffff811115610dc057610dbf610c86565b5b610dcc86828701610d33565b93509350506020610ddf86828701610ca2565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610e1482610de9565b9050919050565b610e2481610e09565b82525050565b6000602082019050610e3f6000830184610e1b565b92915050565b60008083601f840112610e5b57610e5a610d24565b5b8235905067ffffffffffffffff811115610e7857610e77610d29565b5b602083019150836020820283011115610e9457610e93610d2e565b5b9250929050565b60008060208385031215610eb257610eb1610c81565b5b600083013567ffffffffffffffff811115610ed057610ecf610c86565b5b610edc85828601610e45565b92509250509250929050565b610ef181610e09565b8114610efc57600080fd5b50565b600081359050610f0e81610ee8565b92915050565b60008083601f840112610f2a57610f29610d24565b5b8235905067ffffffffffffffff811115610f4757610f46610d29565b5b602083019150836001820283011115610f6357610f62610d2e565b5b9250929050565b60008060008060008060008060a0898b031215610f8a57610f89610c81565b5b6000610f988b828c01610eff565b9850506020610fa98b828c01610eff565b975050604089013567ffffffffffffffff811115610fca57610fc9610c86565b5b610fd68b828c01610e45565b9650965050606089013567ffffffffffffffff811115610ff957610ff8610c86565b5b6110058b828c01610e45565b9450945050608089013567ffffffffffffffff81111561102857611027610c86565b5b6110348b828c01610f14565b92509250509295985092959890939650565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61107b81611046565b82525050565b60006020820190506110966000830184611072565b92915050565b6000819050919050565b60006110c16110bc6110b784610de9565b61109c565b610de9565b9050919050565b60006110d3826110a6565b9050919050565b60006110e5826110c8565b9050919050565b6110f5816110da565b82525050565b600060208201905061111060008301846110ec565b92915050565b60008060008060008060a0878903121561113357611132610c81565b5b600061114189828a01610eff565b965050602061115289828a01610eff565b955050604061116389828a01610ca2565b945050606061117489828a01610ca2565b935050608087013567ffffffffffffffff81111561119557611194610c86565b5b6111a189828a01610f14565b92509250509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806111f757607f821691505b60208210810361120a576112096111b0565b5b50919050565b7f4f6e6c79206f776e65722063616e206275796261636b00000000000000000000600082015250565b6000611246601683610ba6565b915061125182611210565b602082019050919050565b6000602082019050818103600083015261127581611239565b9050919050565b60006040820190506112916000830185610c57565b61129e6020830184610c57565b9392505050565b6000815190506112b481610c8b565b92915050565b6000602082840312156112d0576112cf610c81565b5b60006112de848285016112a5565b91505092915050565b7f507269636520746f6f2068696768000000000000000000000000000000000000600082015250565b600061131d600e83610ba6565b9150611328826112e7565b602082019050919050565b6000602082019050818103600083015261134c81611310565b9050919050565b7f506172656e74206e6f7420657869737473000000000000000000000000000000600082015250565b6000611389601183610ba6565b915061139482611353565b602082019050919050565b600060208201905081810360008301526113b88161137c565b9050919050565b82818337600083830152505050565b60006113da8385610ba6565b93506113e78385846113bf565b6113f083610be1565b840190509392505050565b600060208201905081810360008301526114168184866113ce565b90509392505050565b6000819050919050565b600061144461143f61143a8461141f565b61109c565b610c4d565b9050919050565b61145481611429565b82525050565b600082825260208201905092915050565b50565b600061147b60008361145a565b91506114868261146b565b600082019050919050565b600060a0820190506114a66000830187610e1b565b6114b36020830186610e1b565b6114c06040830185610c57565b6114cd606083018461144b565b81810360808301526114de8161146e565b905095945050505050565b7f4f6e6c79206f776e65722063616e2072656d6f76650000000000000000000000600082015250565b600061151f601583610ba6565b915061152a826114e9565b602082019050919050565b6000602082019050818103600083015261154e81611512565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006115be82610c4d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036115f0576115ef611584565b5b600182019050919050565b7f4f6e6c792063726561746f722063616e2072656d6f7665000000000000000000600082015250565b6000611631601783610ba6565b915061163c826115fb565b602082019050919050565b6000602082019050818103600083015261166081611624565b905091905056fea2646970667358221220a09a910fcfcdec1dd3ef0a0515df3605c82f10367c68899de9083d622e0d3ef664736f6c63430008120033a2646970667358221220da9f90e268bf107360bf94ac536361601f1bf82e9a6463c7452468789aea334864736f6c63430008120033

Deployed Bytecode

0x60806040523480156200001157600080fd5b5060043610620000465760003560e01c80630118fa49146200004b5780634eb68762146200006b5780637586353b146200008d575b600080fd5b620000696004803603810190620000639190620002cb565b620000c3565b005b62000075620001d1565b60405162000084919062000346565b60405180910390f35b620000ab6004803603810190620000a5919062000363565b620001d7565b604051620000ba9190620003da565b60405180910390f35b600083838333604051620000d7906200020a565b620000e694939291906200045b565b604051809103906000f08015801562000103573d6000803e3d6000fd5b50905080600160008054815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838173ffffffffffffffffffffffffffffffffffffffff167f7301c17e7eed2f35b0b4384269e319c245be1e379fbfe6f0872f8cff3f5f21d8600054338787604051620001aa9493929190620004a1565b60405180910390a3600080815480929190620001c69062000516565b919050555050505050565b60005481565b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611f2a806200056483390190565b600080fd5b600080fd5b6000819050919050565b620002378162000222565b81146200024357600080fd5b50565b60008135905062000257816200022c565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126200028557620002846200025d565b5b8235905067ffffffffffffffff811115620002a557620002a462000262565b5b602083019150836001820283011115620002c457620002c362000267565b5b9250929050565b600080600060408486031215620002e757620002e662000218565b5b6000620002f78682870162000246565b935050602084013567ffffffffffffffff8111156200031b576200031a6200021d565b5b62000329868287016200026c565b92509250509250925092565b620003408162000222565b82525050565b60006020820190506200035d600083018462000335565b92915050565b6000602082840312156200037c576200037b62000218565b5b60006200038c8482850162000246565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620003c28262000395565b9050919050565b620003d481620003b5565b82525050565b6000602082019050620003f16000830184620003c9565b92915050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6000620004368385620003f7565b93506200044583858462000408565b620004508362000417565b840190509392505050565b600060608201905062000472600083018762000335565b81810360208301526200048781858762000428565b9050620004986040830184620003c9565b95945050505050565b6000606082019050620004b8600083018762000335565b620004c76020830186620003c9565b8181036040830152620004dc81848662000428565b905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620005238262000222565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620005585762000557620004e7565b5b60018201905091905056fe60c06040523480156200001157600080fd5b5060405162001f2a38038062001f2a8339818101604052810190620000379190620003d1565b6000732ad82a4e39bac43a54ddfe6f94980aaf0d1409ef73ffffffffffffffffffffffffffffffffffffffff1663cf35bdd0856040518263ffffffff1660e01b81526004016200008891906200045d565b600060405180830381865afa158015620000a6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190620000d19190620003d1565b925050508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161462000146576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200013d9062000501565b60405180910390fd5b836080818152505082600090816200015f919062000764565b508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050505050506200084b565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b620001c781620001b2565b8114620001d357600080fd5b50565b600081519050620001e781620001bc565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200024282620001f7565b810181811067ffffffffffffffff8211171562000264576200026362000208565b5b80604052505050565b6000620002796200019e565b905062000287828262000237565b919050565b600067ffffffffffffffff821115620002aa57620002a962000208565b5b620002b582620001f7565b9050602081019050919050565b60005b83811015620002e2578082015181840152602081019050620002c5565b60008484015250505050565b600062000305620002ff846200028c565b6200026d565b905082815260208101848484011115620003245762000323620001f2565b5b62000331848285620002c2565b509392505050565b600082601f830112620003515762000350620001ed565b5b815162000363848260208601620002ee565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000399826200036c565b9050919050565b620003ab816200038c565b8114620003b757600080fd5b50565b600081519050620003cb81620003a0565b92915050565b600080600060608486031215620003ed57620003ec620001a8565b5b6000620003fd86828701620001d6565b935050602084015167ffffffffffffffff811115620004215762000420620001ad565b5b6200042f8682870162000339565b92505060406200044286828701620003ba565b9150509250925092565b6200045781620001b2565b82525050565b60006020820190506200047460008301846200044c565b92915050565b600082825260208201905092915050565b7f4f6e6c792063726561746f722063616e2063726561746520697473205370616360008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b6000620004e96021836200047a565b9150620004f6826200048b565b604082019050919050565b600060208201905081810360008301526200051c81620004da565b9050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200057657607f821691505b6020821081036200058c576200058b6200052e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005f67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005b7565b620006028683620005b7565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620006456200063f6200063984620001b2565b6200061a565b620001b2565b9050919050565b6000819050919050565b620006618362000624565b6200067962000670826200064c565b848454620005c4565b825550505050565b600090565b6200069062000681565b6200069d81848462000656565b505050565b5b81811015620006c557620006b960008262000686565b600181019050620006a3565b5050565b601f8211156200071457620006de8162000592565b620006e984620005a7565b81016020851015620006f9578190505b620007116200070885620005a7565b830182620006a2565b50505b505050565b600082821c905092915050565b6000620007396000198460080262000719565b1980831691505092915050565b600062000754838362000726565b9150826002028217905092915050565b6200076f8262000523565b67ffffffffffffffff8111156200078b576200078a62000208565b5b6200079782546200055d565b620007a4828285620006c9565b600060209050601f831160018114620007dc5760008415620007c7578287015190505b620007d3858262000746565b86555062000843565b601f198416620007ec8662000592565b60005b828110156200081657848901518255600182019150602085019450602081019050620007ef565b8683101562000836578489015162000832601f89168262000726565b8355505b6001600288020188555050505b505050505050565b60805160a05161169d6200088d600039600081816103c7015281816108e60152610a1001526000818161038b01528181610487015261057d015261169d6000f3fe6080604052600436106100ab5760003560e01c80638cd06722116100645780638cd06722146101d95780638da5cb5b14610202578063bc197c811461022d578063e80624661461026a578063ed2b6dc714610293578063f23a6e61146102be576100b2565b806306fdde03146100b75780631c9930a0146100e257806335a029351461010d578063460ddf8d1461014a57806346f81a87146101735780636c961cdb1461019c576100b2565b366100b257005b600080fd5b3480156100c357600080fd5b506100cc6102fb565b6040516100d99190610c2b565b60405180910390f35b3480156100ee57600080fd5b506100f7610389565b6040516101049190610c66565b60405180910390f35b34801561011957600080fd5b50610134600480360381019061012f9190610cb7565b6103ad565b6040516101419190610c66565b60405180910390f35b34801561015657600080fd5b50610171600480360381019061016c9190610ce4565b6103c5565b005b34801561017f57600080fd5b5061019a60048036038101906101959190610d89565b6105f1565b005b3480156101a857600080fd5b506101c360048036038101906101be9190610cb7565b6108b1565b6040516101d09190610e2a565b60405180910390f35b3480156101e557600080fd5b5061020060048036038101906101fb9190610e9b565b6108e4565b005b34801561020e57600080fd5b50610217610a0e565b6040516102249190610e2a565b60405180910390f35b34801561023957600080fd5b50610254600480360381019061024f9190610f6a565b610a32565b6040516102619190611081565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190610cb7565b610a4a565b005b34801561029f57600080fd5b506102a8610b6d565b6040516102b591906110fb565b60405180910390f35b3480156102ca57600080fd5b506102e560048036038101906102e09190611116565b610b85565b6040516102f29190611081565b60405180910390f35b60008054610308906111df565b80601f0160208091040260200160405190810160405280929190818152602001828054610334906111df565b80156103815780601f1061035657610100808354040283529160200191610381565b820191906000526020600020905b81548152906001019060200180831161036457829003601f168201915b505050505081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60016020528060005260406000206000915090505481565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044a9061125c565b60405180910390fd5b6000732ad82a4e39bac43a54ddfe6f94980aaf0d1409ef73ffffffffffffffffffffffffffffffffffffffff1663063a741f7f0000000000000000000000000000000000000000000000000000000000000000856040518363ffffffff1660e01b81526004016104c492919061127c565b602060405180830381865afa1580156104e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050591906112ba565b90508181111561054a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054190611333565b60405180910390fd5b732ad82a4e39bac43a54ddfe6f94980aaf0d1409ef73ffffffffffffffffffffffffffffffffffffffff1663d6febde8827f0000000000000000000000000000000000000000000000000000000000000000866040518463ffffffff1660e01b81526004016105ba92919061127c565b6000604051808303818588803b1580156105d357600080fd5b505af11580156105e7573d6000803e3d6000fd5b5050505050505050565b600081148061061457506000600160008381526020019081526020016000205414155b610653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064a9061139f565b60405180910390fd5b6000732ad82a4e39bac43a54ddfe6f94980aaf0d1409ef73ffffffffffffffffffffffffffffffffffffffff1663e07b098a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d891906112ba565b905060008083036106e957816106eb565b825b9050806001600084815260200190815260200160002081905550336002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff1682827f445b8581f76aa0de52d44cd380e09371c172bb5b457f347937befae5053fc7d460405160405180910390a4732ad82a4e39bac43a54ddfe6f94980aaf0d1409ef73ffffffffffffffffffffffffffffffffffffffff1663b6a46b3b86866040518363ffffffff1660e01b81526004016107eb9291906113fb565b600060405180830381600087803b15801561080557600080fd5b505af1158015610819573d6000803e3d6000fd5b50505050732ad82a4e39bac43a54ddfe6f94980aaf0d1409ef73ffffffffffffffffffffffffffffffffffffffff1663f242432a303385670de0b6b3a76400006040518563ffffffff1660e01b81526004016108789493929190611491565b600060405180830381600087803b15801561089257600080fd5b505af11580156108a6573d6000803e3d6000fd5b505050505050505050565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096990611535565b60405180910390fd5b60005b82829050811015610a09576001600084848481811061099757610996611555565b5b905060200201358152602001908152602001600020600090558282828181106109c3576109c2611555565b5b905060200201357f476e4aa4bb19dbdea8700b4db99d81ad2fefcf51924ba5d493b7be6393f8220160405160405180910390a28080610a01906115b3565b915050610975565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600063bc197c8160e01b905098975050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae290611647565b60405180910390fd5b732ad82a4e39bac43a54ddfe6f94980aaf0d1409ef73ffffffffffffffffffffffffffffffffffffffff16634cc82215826040518263ffffffff1660e01b8152600401610b389190610c66565b600060405180830381600087803b158015610b5257600080fd5b505af1158015610b66573d6000803e3d6000fd5b5050505050565b732ad82a4e39bac43a54ddfe6f94980aaf0d1409ef81565b600063f23a6e6160e01b90509695505050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610bd5578082015181840152602081019050610bba565b60008484015250505050565b6000601f19601f8301169050919050565b6000610bfd82610b9b565b610c078185610ba6565b9350610c17818560208601610bb7565b610c2081610be1565b840191505092915050565b60006020820190508181036000830152610c458184610bf2565b905092915050565b6000819050919050565b610c6081610c4d565b82525050565b6000602082019050610c7b6000830184610c57565b92915050565b600080fd5b600080fd5b610c9481610c4d565b8114610c9f57600080fd5b50565b600081359050610cb181610c8b565b92915050565b600060208284031215610ccd57610ccc610c81565b5b6000610cdb84828501610ca2565b91505092915050565b60008060408385031215610cfb57610cfa610c81565b5b6000610d0985828601610ca2565b9250506020610d1a85828601610ca2565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112610d4957610d48610d24565b5b8235905067ffffffffffffffff811115610d6657610d65610d29565b5b602083019150836001820283011115610d8257610d81610d2e565b5b9250929050565b600080600060408486031215610da257610da1610c81565b5b600084013567ffffffffffffffff811115610dc057610dbf610c86565b5b610dcc86828701610d33565b93509350506020610ddf86828701610ca2565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610e1482610de9565b9050919050565b610e2481610e09565b82525050565b6000602082019050610e3f6000830184610e1b565b92915050565b60008083601f840112610e5b57610e5a610d24565b5b8235905067ffffffffffffffff811115610e7857610e77610d29565b5b602083019150836020820283011115610e9457610e93610d2e565b5b9250929050565b60008060208385031215610eb257610eb1610c81565b5b600083013567ffffffffffffffff811115610ed057610ecf610c86565b5b610edc85828601610e45565b92509250509250929050565b610ef181610e09565b8114610efc57600080fd5b50565b600081359050610f0e81610ee8565b92915050565b60008083601f840112610f2a57610f29610d24565b5b8235905067ffffffffffffffff811115610f4757610f46610d29565b5b602083019150836001820283011115610f6357610f62610d2e565b5b9250929050565b60008060008060008060008060a0898b031215610f8a57610f89610c81565b5b6000610f988b828c01610eff565b9850506020610fa98b828c01610eff565b975050604089013567ffffffffffffffff811115610fca57610fc9610c86565b5b610fd68b828c01610e45565b9650965050606089013567ffffffffffffffff811115610ff957610ff8610c86565b5b6110058b828c01610e45565b9450945050608089013567ffffffffffffffff81111561102857611027610c86565b5b6110348b828c01610f14565b92509250509295985092959890939650565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61107b81611046565b82525050565b60006020820190506110966000830184611072565b92915050565b6000819050919050565b60006110c16110bc6110b784610de9565b61109c565b610de9565b9050919050565b60006110d3826110a6565b9050919050565b60006110e5826110c8565b9050919050565b6110f5816110da565b82525050565b600060208201905061111060008301846110ec565b92915050565b60008060008060008060a0878903121561113357611132610c81565b5b600061114189828a01610eff565b965050602061115289828a01610eff565b955050604061116389828a01610ca2565b945050606061117489828a01610ca2565b935050608087013567ffffffffffffffff81111561119557611194610c86565b5b6111a189828a01610f14565b92509250509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806111f757607f821691505b60208210810361120a576112096111b0565b5b50919050565b7f4f6e6c79206f776e65722063616e206275796261636b00000000000000000000600082015250565b6000611246601683610ba6565b915061125182611210565b602082019050919050565b6000602082019050818103600083015261127581611239565b9050919050565b60006040820190506112916000830185610c57565b61129e6020830184610c57565b9392505050565b6000815190506112b481610c8b565b92915050565b6000602082840312156112d0576112cf610c81565b5b60006112de848285016112a5565b91505092915050565b7f507269636520746f6f2068696768000000000000000000000000000000000000600082015250565b600061131d600e83610ba6565b9150611328826112e7565b602082019050919050565b6000602082019050818103600083015261134c81611310565b9050919050565b7f506172656e74206e6f7420657869737473000000000000000000000000000000600082015250565b6000611389601183610ba6565b915061139482611353565b602082019050919050565b600060208201905081810360008301526113b88161137c565b9050919050565b82818337600083830152505050565b60006113da8385610ba6565b93506113e78385846113bf565b6113f083610be1565b840190509392505050565b600060208201905081810360008301526114168184866113ce565b90509392505050565b6000819050919050565b600061144461143f61143a8461141f565b61109c565b610c4d565b9050919050565b61145481611429565b82525050565b600082825260208201905092915050565b50565b600061147b60008361145a565b91506114868261146b565b600082019050919050565b600060a0820190506114a66000830187610e1b565b6114b36020830186610e1b565b6114c06040830185610c57565b6114cd606083018461144b565b81810360808301526114de8161146e565b905095945050505050565b7f4f6e6c79206f776e65722063616e2072656d6f76650000000000000000000000600082015250565b600061151f601583610ba6565b915061152a826114e9565b602082019050919050565b6000602082019050818103600083015261154e81611512565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006115be82610c4d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036115f0576115ef611584565b5b600182019050919050565b7f4f6e6c792063726561746f722063616e2072656d6f7665000000000000000000600082015250565b6000611631601783610ba6565b915061163c826115fb565b602082019050919050565b6000602082019050818103600083015261166081611624565b905091905056fea2646970667358221220a09a910fcfcdec1dd3ef0a0515df3605c82f10367c68899de9083d622e0d3ef664736f6c63430008120033a2646970667358221220da9f90e268bf107360bf94ac536361601f1bf82e9a6463c7452468789aea334864736f6c63430008120033

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
[ 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.