ETH Price: $3,321.57 (-1.30%)
 
Transaction Hash
Method
Block
From
To
Withdraw Multi S...176330122023-07-06 6:26:23553 days ago1688624783IN
Omnihorse: Staking
0 ETH0.0087270759.00538429
Withdraw Multi S...173383592023-05-25 19:53:35594 days ago1685044415IN
Omnihorse: Staking
0 ETH0.0023234830.43686511
Transfer173383412023-05-25 19:49:59594 days ago1685044199IN
Omnihorse: Staking
0.013 ETH0.0006601531.43591759
Transfer173383342023-05-25 19:48:35594 days ago1685044115IN
Omnihorse: Staking
0.013 ETH0.0007118633.89855317
Create Multi Sta...172885482023-05-18 19:35:11601 days ago1684438511IN
Omnihorse: Staking
0 ETH0.0053806267.18221815
Withdraw Multi S...172825742023-05-17 23:25:23602 days ago1684365923IN
Omnihorse: Staking
0 ETH0.0055664744.40001154
Withdraw Multi S...172825682023-05-17 23:24:11602 days ago1684365851IN
Omnihorse: Staking
0 ETH0.0050640846.77746809
Withdraw Multi S...171855642023-05-04 6:35:35616 days ago1683182135IN
Omnihorse: Staking
0 ETH0.0037327563.01279283
Withdraw Multi S...168949442023-03-24 4:20:11657 days ago1679631611IN
Omnihorse: Staking
0 ETH0.035432115.88782247
Withdraw Multi S...168949052023-03-24 4:12:23657 days ago1679631143IN
Omnihorse: Staking
0 ETH0.0060401514.2125363
Withdraw Multi S...168948672023-03-24 4:04:47657 days ago1679630687IN
Omnihorse: Staking
0 ETH0.0055276317.01596629
Withdraw Multi S...168883902023-03-23 6:12:35658 days ago1679551955IN
Omnihorse: Staking
0 ETH0.0016568812.82615772
Withdraw Multi S...168880122023-03-23 4:56:23658 days ago1679547383IN
Omnihorse: Staking
0 ETH0.0008414414.21030145
Withdraw Multi S...168880022023-03-23 4:54:23658 days ago1679547263IN
Omnihorse: Staking
0 ETH0.0047915113.99897915
Withdraw Multi S...164053512023-01-14 13:29:59725 days ago1673702999IN
Omnihorse: Staking
0 ETH0.0013869418.17128591
Withdraw Multi S...163957802023-01-13 5:27:11727 days ago1673587631IN
Omnihorse: Staking
0 ETH0.0014321916.72009771
Withdraw Multi S...163584432023-01-08 0:19:23732 days ago1673137163IN
Omnihorse: Staking
0 ETH0.0009088615.34570042
Create Multi Sta...163581862023-01-07 23:27:47732 days ago1673134067IN
Omnihorse: Staking
0 ETH0.0014331116.88207704
Create Multi Sta...163580922023-01-07 23:08:59732 days ago1673132939IN
Omnihorse: Staking
0 ETH0.0012981615.29450664
Create Multi Sta...163465622023-01-06 8:30:35734 days ago1672993835IN
Omnihorse: Staking
0 ETH0.0013457516.80550095
Create Multi Sta...163280412023-01-03 18:26:47736 days ago1672770407IN
Omnihorse: Staking
0 ETH0.001598519.95888302
Create Multi Sta...161380972022-12-08 6:07:11763 days ago1670479631IN
Omnihorse: Staking
0 ETH0.0020180215.19244798
Withdraw Multi S...161206792022-12-05 19:29:47765 days ago1670268587IN
Omnihorse: Staking
0 ETH0.0017813623.33517118
Create Multi Sta...161202502022-12-05 18:03:35765 days ago1670263415IN
Omnihorse: Staking
0 ETH0.0026441518.56606001
Create Multi Sta...160936412022-12-02 0:49:11769 days ago1669942151IN
Omnihorse: Staking
0 ETH0.0011100513.07640183
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

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

Contract Name:
OmniStake

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 2000 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2022-10-21
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;



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

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address owner, address operator)
        external
        view
        returns (bool);
}

contract OmniStake {
    // fired when NFT stake created
    event StakeCreated(address staker, address asset, uint256[] tokenIds);

    // fired when NFT stake cancelled
    event StakeWithdrawn(address staker, address asset, uint256[] tokenIds);

    // fired when NFT stake created
    event MultiStakeCreated(
        address staker,
        address[] asset,
        uint256[][] tokenIds
    );

    // fired when NFT stake cancelled
    event MultiStakeWithdrawn(
        address staker,
        address[] asset,
        uint256[][] tokenIds
    );

    /**
     * NFT stakes map
     * key: keccak256(abi.encodePacked(stacker,asset,tokenId))
     * value: true if stake exists
     */
    mapping(bytes32 => bool) private Stake;

    /**
     * @dev calculate stakeMap key

     */
    function getStakeKey(
        address staker,
        address asset,
        uint256 tokenId
    ) public pure returns (bytes32) {
        return keccak256(abi.encodePacked(staker, asset, tokenId));
    }

    /**
     * @dev true if stake exists
     * @param stakeKey keccak256(abi.encodePacked(stacker,asset,tokenId))
     */
    function StakeExists(bytes32 stakeKey) external view returns (bool) {
        return Stake[stakeKey];
    }

    /**
     * @dev create a new NFT stake
     * @param asset NFT address
     * @param tokenIds tokenIds of the NFT
     *
     * Emits a {StakeCreated} event.
     */
    function createStake(address asset, uint256[] calldata tokenIds) public {
        require(tokenIds.length > 0, "Stake: No tokens provided");
        address sender = msg.sender;
        IERC721 ERC721 = IERC721(asset);
        require(
            ERC721.isApprovedForAll(sender, address(this)),
            "Stake: Not approved for all"
        );

        for (uint256 i = 0; i < tokenIds.length; ) {
            uint256 tokenId = tokenIds[i];
            try ERC721.transferFrom(sender, address(this), tokenId) {
                Stake[getStakeKey(sender, asset, tokenId)] = true;
            } catch {
                revert("Stake: Transfer failed");
            }
            unchecked {
                i++;
            }
        }

        emit StakeCreated(sender, asset, tokenIds);
    }

    /**
     * @dev create a new NFT stake
     * @param asset NFT address
     * @param tokenIds tokenIds of the NFT
     *
     * Emits a {MultiStakeCreated} event.
     */
    function createMultiStake(
        address[] calldata asset,
        uint256[][] calldata tokenIds
    ) public {
        require(tokenIds.length > 0, "Stake: No tokens provided");
        require(asset.length == tokenIds.length, "Stake: Invalid input");
        address sender = msg.sender;
        for (uint256 i = 0; i < asset.length; ) {
            IERC721 ERC721 = IERC721(asset[i]);
            uint256[] memory _tokenIds = tokenIds[i];
            require(_tokenIds.length > 0, "Stake: No tokens provided");
            require(
                ERC721.isApprovedForAll(sender, address(this)),
                "Stake: Not approved for all"
            );
            for (uint256 j = 0; j < _tokenIds.length; ) {
                uint256 tokenId = _tokenIds[j];
                try ERC721.transferFrom(sender, address(this), tokenId) {
                    Stake[getStakeKey(sender, asset[i], tokenId)] = true;
                } catch {
                    revert("Stake: Transfer failed");
                }
                unchecked {
                    j++;
                }
            }
            unchecked {
                i++;
            }
        }

        emit MultiStakeCreated(sender, asset, tokenIds);
    }

    /**
     * @dev withdraw NFT stake
     * @param asset NFT address
     * @param tokenIds tokenIds of the NFT
     *
     * Emits a {StakeWithdrawn} event.
     */
    function withdrawStake(address asset, uint256[] calldata tokenIds) public {
        require(tokenIds.length > 0, "Stake: No tokens provided");
        address sender = msg.sender;
        IERC721 ERC721 = IERC721(asset);
        for (uint256 i = 0; i < tokenIds.length; ) {
            uint256 _tokenId = tokenIds[i];
            bytes32 key = getStakeKey(sender, asset, _tokenId);
            require(Stake[key], "Stake: Not staked");

            try ERC721.transferFrom(address(this), sender, _tokenId) {
                delete Stake[key];
            } catch {
                revert("Stake: Transfer failed");
            }
            unchecked {
                i++;
            }
        }
        emit StakeWithdrawn(sender, asset, tokenIds);
    }

    /**
     * @dev withdraw NFT stake
     * @param asset NFT address
     * @param tokenIds tokenIds of the NFT
     *
     * Emits a {MultiStakeWithdrawn} event.
     */
    function withdrawMultiStake(
        address[] calldata asset,
        uint256[][] calldata tokenIds
    ) public {
        require(tokenIds.length > 0, "Stake: No tokens provided");
        require(asset.length == tokenIds.length, "Stake: Invalid input");
        address sender = msg.sender;
        for (uint256 i = 0; i < asset.length; ) {
            IERC721 ERC721 = IERC721(asset[i]);
            uint256[] memory _tokenIds = tokenIds[i];
            require(_tokenIds.length > 0, "Stake: No tokens provided");
            for (uint256 j = 0; j < _tokenIds.length; ) {
                uint256 _tokenId = _tokenIds[j];
                bytes32 key = getStakeKey(sender, asset[i], _tokenId);
                require(Stake[key], "Stake: Not staked");

                try ERC721.transferFrom(address(this), sender, _tokenId) {
                    delete Stake[key];
                } catch {
                    revert("Stake: Transfer failed");
                }
                unchecked {
                    j++;
                }
            }
            unchecked {
                i++;
            }
        }

        emit MultiStakeWithdrawn(sender, asset, tokenIds);
    }

    /**
     * @dev stake withdraw at the same time
     * @param stakeAsset stake NFT address
     * @param stakeTokenIds stake tokenIds of the NFT
     * @param withdrawAsset withdraw NFT address
     * @param withdrawTokenIds withdraw tokenIds of the NFT
     * Emits {StakeWithdrawn} and {StakeCreated} event.
     */
    function createStakeAndWithdraw(
        address stakeAsset,
        uint256[] calldata stakeTokenIds,
        address withdrawAsset,
        uint256[] calldata withdrawTokenIds
    ) public {
        withdrawStake(withdrawAsset, withdrawTokenIds);
        createStake(stakeAsset, stakeTokenIds);
    }

    /**
     * @dev stake withdraw at the same time
     * @param stakeAsset stake NFT address
     * @param stakeTokenIds stake tokenIds of the NFT
     * @param withdrawAsset withdraw NFT address
     * @param withdrawTokenIds withdraw tokenIds of the NFT
     * Emits {MultiStakeWithdrawn} and {MultiStakeCreated} event.
     */
    function createMultiStakeAndWithdraw(
        address[] calldata stakeAsset,
        uint256[][] calldata stakeTokenIds,
        address[] calldata withdrawAsset,
        uint256[][] calldata withdrawTokenIds
    ) public {
        withdrawMultiStake(withdrawAsset, withdrawTokenIds);
        createMultiStake(stakeAsset, stakeTokenIds);
    }
}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"address[]","name":"asset","type":"address[]"},{"indexed":false,"internalType":"uint256[][]","name":"tokenIds","type":"uint256[][]"}],"name":"MultiStakeCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"address[]","name":"asset","type":"address[]"},{"indexed":false,"internalType":"uint256[][]","name":"tokenIds","type":"uint256[][]"}],"name":"MultiStakeWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"address","name":"asset","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"StakeCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"address","name":"asset","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"StakeWithdrawn","type":"event"},{"inputs":[{"internalType":"bytes32","name":"stakeKey","type":"bytes32"}],"name":"StakeExists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"asset","type":"address[]"},{"internalType":"uint256[][]","name":"tokenIds","type":"uint256[][]"}],"name":"createMultiStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"stakeAsset","type":"address[]"},{"internalType":"uint256[][]","name":"stakeTokenIds","type":"uint256[][]"},{"internalType":"address[]","name":"withdrawAsset","type":"address[]"},{"internalType":"uint256[][]","name":"withdrawTokenIds","type":"uint256[][]"}],"name":"createMultiStakeAndWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"createStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"stakeAsset","type":"address"},{"internalType":"uint256[]","name":"stakeTokenIds","type":"uint256[]"},{"internalType":"address","name":"withdrawAsset","type":"address"},{"internalType":"uint256[]","name":"withdrawTokenIds","type":"uint256[]"}],"name":"createStakeAndWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getStakeKey","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"asset","type":"address[]"},{"internalType":"uint256[][]","name":"tokenIds","type":"uint256[][]"}],"name":"withdrawMultiStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"withdrawStake","outputs":[],"stateMutability":"nonpayable","type":"function"}]

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100885760003560e01c80639117d30e1161005b5780639117d30e1461015b578063a81b7cb51461016e578063d55d092314610181578063e39efc6c1461019457600080fd5b806338e7b4551461008d578063430f3842146100a2578063493d2362146100b55780638bfa095a14610128575b600080fd5b6100a061009b366004610f5a565b6101a7565b005b6100a06100b0366004610fee565b6101c5565b6101156100c3366004611041565b6040516bffffffffffffffffffffffff19606085811b8216602084015284901b166034820152604881018290526000906068016040516020818303038152906040528051906020012090509392505050565b6040519081526020015b60405180910390f35b61014b61013636600461107d565b60009081526020819052604090205460ff1690565b604051901515815260200161011f565b6100a0610169366004611096565b6104ac565b6100a061017c36600461115a565b6104ce565b6100a061018f366004610fee565b610870565b6100a06101a236600461115a565b610ab1565b6101b2838383610870565b6101bd8686866101c5565b505050505050565b806102175760405162461bcd60e51b815260206004820152601960248201527f5374616b653a204e6f20746f6b656e732070726f76696465640000000000000060448201526064015b60405180910390fd5b6040517fe985e9c5000000000000000000000000000000000000000000000000000000008152336004820181905230602483015290849073ffffffffffffffffffffffffffffffffffffffff82169063e985e9c590604401602060405180830381865afa15801561028c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b091906111c6565b6102fc5760405162461bcd60e51b815260206004820152601b60248201527f5374616b653a204e6f7420617070726f76656420666f7220616c6c0000000000604482015260640161020e565b60005b8381101561046757600085858381811061031b5761031b6111ef565b6040516323b872dd60e01b815273ffffffffffffffffffffffffffffffffffffffff8881166004830152306024830152602090920293909301356044840181905293508516916323b872dd9150606401600060405180830381600087803b15801561038557600080fd5b505af1925050508015610396575060015b6103e25760405162461bcd60e51b815260206004820152601660248201527f5374616b653a205472616e73666572206661696c656400000000000000000000604482015260640161020e565b600160008061043f878b866040516bffffffffffffffffffffffff19606085811b8216602084015284901b166034820152604881018290526000906068016040516020818303038152906040528051906020012090509392505050565b81526020810191909152604001600020805460ff1916911515919091179055506001016102ff565b507ff070f6fb17b358fded430ccc5fc22c7a2d44bd8e75683de84a7b7f2e6b72b7228286868660405161049d9493929190611269565b60405180910390a15050505050565b6104b8848484846104ce565b6104c488888888610ab1565b5050505050505050565b8061051b5760405162461bcd60e51b815260206004820152601960248201527f5374616b653a204e6f20746f6b656e732070726f766964656400000000000000604482015260640161020e565b82811461056a5760405162461bcd60e51b815260206004820152601460248201527f5374616b653a20496e76616c696420696e707574000000000000000000000000604482015260640161020e565b3360005b8481101561083857600086868381811061058a5761058a6111ef565b905060200201602081019061059f91906112ad565b905060008585848181106105b5576105b56111ef565b90506020028101906105c791906112c8565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050825192935050506106495760405162461bcd60e51b815260206004820152601960248201527f5374616b653a204e6f20746f6b656e732070726f766964656400000000000000604482015260640161020e565b60005b815181101561082d576000828281518110610669576106696111ef565b6020026020010151905060006106f3878c8c8981811061068b5761068b6111ef565b90506020020160208101906106a091906112ad565b846040516bffffffffffffffffffffffff19606085811b8216602084015284901b166034820152604881018290526000906068016040516020818303038152906040528051906020012090509392505050565b60008181526020819052604090205490915060ff166107545760405162461bcd60e51b815260206004820152601160248201527f5374616b653a204e6f74207374616b6564000000000000000000000000000000604482015260640161020e565b6040516323b872dd60e01b815230600482015273ffffffffffffffffffffffffffffffffffffffff8881166024830152604482018490528616906323b872dd90606401600060405180830381600087803b1580156107b157600080fd5b505af19250505080156107c2575060015b61080e5760405162461bcd60e51b815260206004820152601660248201527f5374616b653a205472616e73666572206661696c656400000000000000000000604482015260640161020e565b6000908152602081905260409020805460ff191690555060010161064c565b50505060010161056e565b507fb91254996feab404491fb2088db7b7b1aefd1f59e6d1391f0add834684f60779818686868660405161049d959493929190611312565b806108bd5760405162461bcd60e51b815260206004820152601960248201527f5374616b653a204e6f20746f6b656e732070726f766964656400000000000000604482015260640161020e565b338360005b83811015610a7b5760008585838181106108de576108de6111ef565b90506020020135905060006109418589846040516bffffffffffffffffffffffff19606085811b8216602084015284901b166034820152604881018290526000906068016040516020818303038152906040528051906020012090509392505050565b60008181526020819052604090205490915060ff166109a25760405162461bcd60e51b815260206004820152601160248201527f5374616b653a204e6f74207374616b6564000000000000000000000000000000604482015260640161020e565b6040516323b872dd60e01b815230600482015273ffffffffffffffffffffffffffffffffffffffff8681166024830152604482018490528516906323b872dd90606401600060405180830381600087803b1580156109ff57600080fd5b505af1925050508015610a10575060015b610a5c5760405162461bcd60e51b815260206004820152601660248201527f5374616b653a205472616e73666572206661696c656400000000000000000000604482015260640161020e565b6000908152602081905260409020805460ff19169055506001016108c2565b507f6e7923d30eccb408bdc077cf6fe71b5ddcbd125d5a036bfe7ea272577e7aac838286868660405161049d9493929190611269565b80610afe5760405162461bcd60e51b815260206004820152601960248201527f5374616b653a204e6f20746f6b656e732070726f766964656400000000000000604482015260640161020e565b828114610b4d5760405162461bcd60e51b815260206004820152601460248201527f5374616b653a20496e76616c696420696e707574000000000000000000000000604482015260640161020e565b3360005b84811015610ead576000868683818110610b6d57610b6d6111ef565b9050602002016020810190610b8291906112ad565b90506000858584818110610b9857610b986111ef565b9050602002810190610baa91906112c8565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505082519293505050610c2c5760405162461bcd60e51b815260206004820152601960248201527f5374616b653a204e6f20746f6b656e732070726f766964656400000000000000604482015260640161020e565b6040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015230602483015283169063e985e9c590604401602060405180830381865afa158015610c9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc291906111c6565b610d0e5760405162461bcd60e51b815260206004820152601b60248201527f5374616b653a204e6f7420617070726f76656420666f7220616c6c0000000000604482015260640161020e565b60005b8151811015610ea2576000828281518110610d2e57610d2e6111ef565b60209081029190910101516040516323b872dd60e01b815273ffffffffffffffffffffffffffffffffffffffff888116600483015230602483015260448201839052919250908516906323b872dd90606401600060405180830381600087803b158015610d9a57600080fd5b505af1925050508015610dab575060015b610df75760405162461bcd60e51b815260206004820152601660248201527f5374616b653a205472616e73666572206661696c656400000000000000000000604482015260640161020e565b6001600080610e7a898e8e8b818110610e1257610e126111ef565b9050602002016020810190610e2791906112ad565b866040516bffffffffffffffffffffffff19606085811b8216602084015284901b166034820152604881018290526000906068016040516020818303038152906040528051906020012090509392505050565b81526020810191909152604001600020805460ff191691151591909117905550600101610d11565b505050600101610b51565b507fb96cd7bef32d835312572aba8a672445dc2ea748c715761d63bd7255dd0c88e9818686868660405161049d959493929190611312565b803573ffffffffffffffffffffffffffffffffffffffff81168114610f0957600080fd5b919050565b60008083601f840112610f2057600080fd5b50813567ffffffffffffffff811115610f3857600080fd5b6020830191508360208260051b8501011115610f5357600080fd5b9250929050565b60008060008060008060808789031215610f7357600080fd5b610f7c87610ee5565b9550602087013567ffffffffffffffff80821115610f9957600080fd5b610fa58a838b01610f0e565b9097509550859150610fb960408a01610ee5565b94506060890135915080821115610fcf57600080fd5b50610fdc89828a01610f0e565b979a9699509497509295939492505050565b60008060006040848603121561100357600080fd5b61100c84610ee5565b9250602084013567ffffffffffffffff81111561102857600080fd5b61103486828701610f0e565b9497909650939450505050565b60008060006060848603121561105657600080fd5b61105f84610ee5565b925061106d60208501610ee5565b9150604084013590509250925092565b60006020828403121561108f57600080fd5b5035919050565b6000806000806000806000806080898b0312156110b257600080fd5b883567ffffffffffffffff808211156110ca57600080fd5b6110d68c838d01610f0e565b909a50985060208b01359150808211156110ef57600080fd5b6110fb8c838d01610f0e565b909850965060408b013591508082111561111457600080fd5b6111208c838d01610f0e565b909650945060608b013591508082111561113957600080fd5b506111468b828c01610f0e565b999c989b5096995094979396929594505050565b6000806000806040858703121561117057600080fd5b843567ffffffffffffffff8082111561118857600080fd5b61119488838901610f0e565b909650945060208701359150808211156111ad57600080fd5b506111ba87828801610f0e565b95989497509550505050565b6000602082840312156111d857600080fd5b815180151581146111e857600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561125057600080fd5b8260051b80836020870137939093016020019392505050565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250606060408301526112a360608301848661121e565b9695505050505050565b6000602082840312156112bf57600080fd5b6111e882610ee5565b6000808335601e198436030181126112df57600080fd5b83018035915067ffffffffffffffff8211156112fa57600080fd5b6020019150600581901b3603821315610f5357600080fd5b73ffffffffffffffffffffffffffffffffffffffff868116825260606020808401829052908301869052600091879160808501845b8981101561136c578361135986610ee5565b1682529382019390820190600101611347565b50858103604087015286815281810193506005925086831b810182018860005b8981101561141b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08484030187528135601e198c36030181126113cf57600080fd5b8b01858101903567ffffffffffffffff8111156113eb57600080fd5b80881b36038213156113fc57600080fd5b61140785828461121e565b98870198945050509084019060010161138c565b50909c9b50505050505050505050505056fea2646970667358221220e9255eba3d66d1a60c2a4682ae2999328ec1d57520c3b6add55d854496580d2564736f6c63430008110033

Deployed Bytecode Sourcemap

998:7448:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7434:310;;;;;;:::i;:::-;;:::i;:::-;;2461:818;;;;;;:::i;:::-;;:::i;1822:210::-;;;;;;:::i;:::-;1983:40;;-1:-1:-1;;8624:2:1;8620:15;;;8616:24;;1983:40:0;;;8604:37:1;8675:15;;;8671:24;8657:12;;;8650:46;8712:12;;;8705:28;;;1946:7:0;;8749:12:1;;1983:40:0;;;;;;;;;;;;1973:51;;;;;;1966:58;;1822:210;;;;;;;;;2509:25:1;;;2497:2;2482:18;1822:210:0;;;;;;;;2167:109;;;;;;:::i;:::-;2229:4;2253:15;;;;;;;;;;;;;;2167:109;;;;2895:14:1;;2888:22;2870:41;;2858:2;2843:18;2167:109:0;2730:187:1;8092:351:0;;;;;;:::i;:::-;;:::i;5879:1217::-;;;;;;:::i;:::-;;:::i;4915:776::-;;;;;;:::i;:::-;;:::i;3469:1263::-;;;;;;:::i;:::-;;:::i;7434:310::-;7641:46;7655:13;7670:16;;7641:13;:46::i;:::-;7698:38;7710:10;7722:13;;7698:11;:38::i;:::-;7434:310;;;;;;:::o;2461:818::-;2552:19;2544:57;;;;-1:-1:-1;;;2544:57:0;;5392:2:1;2544:57:0;;;5374:21:1;5431:2;5411:18;;;5404:30;5470:27;5450:18;;;5443:55;5515:18;;2544:57:0;;;;;;;;;2714:46;;;;;2629:10;2714:46;;;5779:34:1;;;2754:4:0;5829:18:1;;;5822:43;2629:10:0;2675:5;;2714:23;;;;;;5691:18:1;;2714:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2692:123;;;;-1:-1:-1;;;2692:123:0;;6360:2:1;2692:123:0;;;6342:21:1;6399:2;6379:18;;;6372:30;6438:29;6418:18;;;6411:57;6485:18;;2692:123:0;6158:351:1;2692:123:0;2833:9;2828:389;2848:19;;;2828:389;;;2886:15;2904:8;;2913:1;2904:11;;;;;;;:::i;:::-;2934:51;;-1:-1:-1;;;2934:51:0;;:19;6984:15:1;;;2934:51:0;;;6966:34:1;2970:4:0;7016:18:1;;;7009:43;2904:11:0;;;;;;;;;7068:18:1;;;7061:34;;;2904:11:0;-1:-1:-1;2934:19:0;;;;;-1:-1:-1;6878:18:1;;2934:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2930:214;;3096:32;;-1:-1:-1;;;3096:32:0;;7308:2:1;3096:32:0;;;7290:21:1;7347:2;7327:18;;;7320:30;7386:24;7366:18;;;7359:52;7428:18;;3096:32:0;7106:346:1;2930:214:0;3050:4;3005:5;:42;3011:35;3023:6;3031:5;3038:7;1983:40;;-1:-1:-1;;8624:2:1;8620:15;;;8616:24;;1983:40:0;;;8604:37:1;8675:15;;;8671:24;8657:12;;;8650:46;8712:12;;;8705:28;;;1946:7:0;;8749:12:1;;1983:40:0;;;;;;;;;;;;1973:51;;;;;;1966:58;;1822:210;;;;;;3011:35;3005:42;;;;;;;;;;;-1:-1:-1;3005:42:0;:49;;-1:-1:-1;;3005:49:0;;;;;;;;;;-1:-1:-1;;3187:3:0;2828:389;;;;3234:37;3247:6;3255:5;3262:8;;3234:37;;;;;;;;;:::i;:::-;;;;;;;;2533:746;;2461:818;;;:::o;8092:351::-;8330:51;8349:13;;8364:16;;8330:18;:51::i;:::-;8392:43;8409:10;;8421:13;;8392:16;:43::i;:::-;8092:351;;;;;;;;:::o;5879:1217::-;6015:19;6007:57;;;;-1:-1:-1;;;6007:57:0;;5392:2:1;6007:57:0;;;5374:21:1;5431:2;5411:18;;;5404:30;5470:27;5450:18;;;5443:55;5515:18;;6007:57:0;5190:349:1;6007:57:0;6083:31;;;6075:64;;;;-1:-1:-1;;;6075:64:0;;8974:2:1;6075:64:0;;;8956:21:1;9013:2;8993:18;;;8986:30;9052:22;9032:18;;;9025:50;9092:18;;6075:64:0;8772:344:1;6075:64:0;6167:10;6150:14;6188:839;6208:16;;;6188:839;;;6243:14;6268:5;;6274:1;6268:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;6243:34;;6292:26;6321:8;;6330:1;6321:11;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;6292:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6355:16:0;;6292:40;;-1:-1:-1;;;6347:58:0;;;;-1:-1:-1;;;6347:58:0;;5392:2:1;6347:58:0;;;5374:21:1;5431:2;5411:18;;;5404:30;5470:27;5450:18;;;5443:55;5515:18;;6347:58:0;5190:349:1;6347:58:0;6425:9;6420:534;6444:9;:16;6440:1;:20;6420:534;;;6483:16;6502:9;6512:1;6502:12;;;;;;;;:::i;:::-;;;;;;;6483:31;;6533:11;6547:39;6559:6;6567:5;;6573:1;6567:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;6577;1983:40;;-1:-1:-1;;8624:2:1;8620:15;;;8616:24;;1983:40:0;;;8604:37:1;8675:15;;;8671:24;8657:12;;;8650:46;8712:12;;;8705:28;;;1946:7:0;;8749:12:1;;1983:40:0;;;;;;;;;;;;1973:51;;;;;;1966:58;;1822:210;;;;;;6547:39;6613:5;:10;;;;;;;;;;;6533:53;;-1:-1:-1;6613:10:0;;6605:40;;;;-1:-1:-1;;;6605:40:0;;10123:2:1;6605:40:0;;;10105:21:1;10162:2;10142:18;;;10135:30;10201:19;10181:18;;;10174:47;10238:18;;6605:40:0;9921:341:1;6605:40:0;6670:52;;-1:-1:-1;;;6670:52:0;;6698:4;6670:52;;;6966:34:1;6670:19:0;7036:15:1;;;7016:18;;;7009:43;7068:18;;;7061:34;;;6670:19:0;;;;;6878:18:1;;6670:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6666:199;;6813:32;;-1:-1:-1;;;6813:32:0;;7308:2:1;6813:32:0;;;7290:21:1;7347:2;7327:18;;;7320:30;7386:24;7366:18;;;7359:52;7428:18;;6813:32:0;7106:346:1;6666:199:0;6753:5;:10;;;;;;;;;;6746:17;;-1:-1:-1;;6746:17:0;;;-1:-1:-1;;6916:3:0;6420:534;;;-1:-1:-1;;;6997:3:0;;6188:839;;;;7044:44;7064:6;7072:5;;7079:8;;7044:44;;;;;;;;;;:::i;4915:776::-;5008:19;5000:57;;;;-1:-1:-1;;;5000:57:0;;5392:2:1;5000:57:0;;;5374:21:1;5431:2;5411:18;;;5404:30;5470:27;5450:18;;;5443:55;5515:18;;5000:57:0;5190:349:1;5000:57:0;5085:10;5131:5;5068:14;5148:481;5168:19;;;5148:481;;;5206:16;5225:8;;5234:1;5225:11;;;;;;;:::i;:::-;;;;;;;5206:30;;5251:11;5265:36;5277:6;5285:5;5292:8;1983:40;;-1:-1:-1;;8624:2:1;8620:15;;;8616:24;;1983:40:0;;;8604:37:1;8675:15;;;8671:24;8657:12;;;8650:46;8712:12;;;8705:28;;;1946:7:0;;8749:12:1;;1983:40:0;;;;;;;;;;;;1973:51;;;;;;1966:58;;1822:210;;;;;;5265:36;5324:5;:10;;;;;;;;;;;5251:50;;-1:-1:-1;5324:10:0;;5316:40;;;;-1:-1:-1;;;5316:40:0;;10123:2:1;5316:40:0;;;10105:21:1;10162:2;10142:18;;;10135:30;10201:19;10181:18;;;10174:47;10238:18;;5316:40:0;9921:341:1;5316:40:0;5377:52;;-1:-1:-1;;;5377:52:0;;5405:4;5377:52;;;6966:34:1;5377:19:0;7036:15:1;;;7016:18;;;7009:43;7068:18;;;7061:34;;;5377:19:0;;;;;6878:18:1;;5377:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5373:183;;5508:32;;-1:-1:-1;;;5508:32:0;;7308:2:1;5508:32:0;;;7290:21:1;7347:2;7327:18;;;7320:30;7386:24;7366:18;;;7359:52;7428:18;;5508:32:0;7106:346:1;5373:183:0;5456:5;:10;;;;;;;;;;5449:17;;-1:-1:-1;;5449:17:0;;;-1:-1:-1;;5599:3:0;5148:481;;;;5644:39;5659:6;5667:5;5674:8;;5644:39;;;;;;;;;:::i;3469:1263::-;3603:19;3595:57;;;;-1:-1:-1;;;3595:57:0;;5392:2:1;3595:57:0;;;5374:21:1;5431:2;5411:18;;;5404:30;5470:27;5450:18;;;5443:55;5515:18;;3595:57:0;5190:349:1;3595:57:0;3671:31;;;3663:64;;;;-1:-1:-1;;;3663:64:0;;8974:2:1;3663:64:0;;;8956:21:1;9013:2;8993:18;;;8986:30;9052:22;9032:18;;;9025:50;9092:18;;3663:64:0;8772:344:1;3663:64:0;3755:10;3738:14;3776:889;3796:16;;;3776:889;;;3831:14;3856:5;;3862:1;3856:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;3831:34;;3880:26;3909:8;;3918:1;3909:11;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;3880:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3943:16:0;;3880:40;;-1:-1:-1;;;3935:58:0;;;;-1:-1:-1;;;3935:58:0;;5392:2:1;3935:58:0;;;5374:21:1;5431:2;5411:18;;;5404:30;5470:27;5450:18;;;5443:55;5515:18;;3935:58:0;5190:349:1;3935:58:0;4034:46;;;;;:23;5797:15:1;;;4034:46:0;;;5779:34:1;4074:4:0;5829:18:1;;;5822:43;4034:23:0;;;;;5691:18:1;;4034:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4008:135;;;;-1:-1:-1;;;4008:135:0;;6360:2:1;4008:135:0;;;6342:21:1;6399:2;6379:18;;;6372:30;6438:29;6418:18;;;6411:57;6485:18;;4008:135:0;6158:351:1;4008:135:0;4163:9;4158:434;4182:9;:16;4178:1;:20;4158:434;;;4221:15;4239:9;4249:1;4239:12;;;;;;;;:::i;:::-;;;;;;;;;;;4274:51;;-1:-1:-1;;;4274:51:0;;:19;6984:15:1;;;4274:51:0;;;6966:34:1;4310:4:0;7016:18:1;;;7009:43;7068:18;;;7061:34;;;4239:12:0;;-1:-1:-1;4274:19:0;;;;;;6878:18:1;;4274:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4270:233;;4451:32;;-1:-1:-1;;;4451:32:0;;7308:2:1;4451:32:0;;;7290:21:1;7347:2;7327:18;;;7320:30;7386:24;7366:18;;;7359:52;7428:18;;4451:32:0;7106:346:1;4270:233:0;4397:4;4349:5;:45;4355:38;4367:6;4375:5;;4381:1;4375:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;4385:7;1983:40;;-1:-1:-1;;8624:2:1;8620:15;;;8616:24;;1983:40:0;;;8604:37:1;8675:15;;;8671:24;8657:12;;;8650:46;8712:12;;;8705:28;;;1946:7:0;;8749:12:1;;1983:40:0;;;;;;;;;;;;1973:51;;;;;;1966:58;;1822:210;;;;;;4355:38;4349:45;;;;;;;;;;;-1:-1:-1;4349:45:0;:52;;-1:-1:-1;;4349:52:0;;;;;;;;;;-1:-1:-1;;4554:3:0;4158:434;;;-1:-1:-1;;;4635:3:0;;3776:889;;;;4682:42;4700:6;4708:5;;4715:8;;4682:42;;;;;;;;;;:::i;14:196:1:-;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:367::-;278:8;288:6;342:3;335:4;327:6;323:17;319:27;309:55;;360:1;357;350:12;309:55;-1:-1:-1;383:20:1;;426:18;415:30;;412:50;;;458:1;455;448:12;412:50;495:4;487:6;483:17;471:29;;555:3;548:4;538:6;535:1;531:14;523:6;519:27;515:38;512:47;509:67;;;572:1;569;562:12;509:67;215:367;;;;;:::o;587:922::-;727:6;735;743;751;759;767;820:3;808:9;799:7;795:23;791:33;788:53;;;837:1;834;827:12;788:53;860:29;879:9;860:29;:::i;:::-;850:39;;940:2;929:9;925:18;912:32;963:18;1004:2;996:6;993:14;990:34;;;1020:1;1017;1010:12;990:34;1059:70;1121:7;1112:6;1101:9;1097:22;1059:70;:::i;:::-;1148:8;;-1:-1:-1;1033:96:1;-1:-1:-1;1033:96:1;;-1:-1:-1;1202:38:1;1236:2;1221:18;;1202:38;:::i;:::-;1192:48;;1293:2;1282:9;1278:18;1265:32;1249:48;;1322:2;1312:8;1309:16;1306:36;;;1338:1;1335;1328:12;1306:36;;1377:72;1441:7;1430:8;1419:9;1415:24;1377:72;:::i;:::-;587:922;;;;-1:-1:-1;587:922:1;;-1:-1:-1;587:922:1;;1468:8;;587:922;-1:-1:-1;;;587:922:1:o;1514:511::-;1609:6;1617;1625;1678:2;1666:9;1657:7;1653:23;1649:32;1646:52;;;1694:1;1691;1684:12;1646:52;1717:29;1736:9;1717:29;:::i;:::-;1707:39;;1797:2;1786:9;1782:18;1769:32;1824:18;1816:6;1813:30;1810:50;;;1856:1;1853;1846:12;1810:50;1895:70;1957:7;1948:6;1937:9;1933:22;1895:70;:::i;:::-;1514:511;;1984:8;;-1:-1:-1;1869:96:1;;-1:-1:-1;;;;1514:511:1:o;2030:328::-;2107:6;2115;2123;2176:2;2164:9;2155:7;2151:23;2147:32;2144:52;;;2192:1;2189;2182:12;2144:52;2215:29;2234:9;2215:29;:::i;:::-;2205:39;;2263:38;2297:2;2286:9;2282:18;2263:38;:::i;:::-;2253:48;;2348:2;2337:9;2333:18;2320:32;2310:42;;2030:328;;;;;:::o;2545:180::-;2604:6;2657:2;2645:9;2636:7;2632:23;2628:32;2625:52;;;2673:1;2670;2663:12;2625:52;-1:-1:-1;2696:23:1;;2545:180;-1:-1:-1;2545:180:1:o;2922:1458::-;3170:6;3178;3186;3194;3202;3210;3218;3226;3279:3;3267:9;3258:7;3254:23;3250:33;3247:53;;;3296:1;3293;3286:12;3247:53;3336:9;3323:23;3365:18;3406:2;3398:6;3395:14;3392:34;;;3422:1;3419;3412:12;3392:34;3461:70;3523:7;3514:6;3503:9;3499:22;3461:70;:::i;:::-;3550:8;;-1:-1:-1;3435:96:1;-1:-1:-1;3638:2:1;3623:18;;3610:32;;-1:-1:-1;3654:16:1;;;3651:36;;;3683:1;3680;3673:12;3651:36;3722:72;3786:7;3775:8;3764:9;3760:24;3722:72;:::i;:::-;3813:8;;-1:-1:-1;3696:98:1;-1:-1:-1;3901:2:1;3886:18;;3873:32;;-1:-1:-1;3917:16:1;;;3914:36;;;3946:1;3943;3936:12;3914:36;3985:72;4049:7;4038:8;4027:9;4023:24;3985:72;:::i;:::-;4076:8;;-1:-1:-1;3959:98:1;-1:-1:-1;4164:2:1;4149:18;;4136:32;;-1:-1:-1;4180:16:1;;;4177:36;;;4209:1;4206;4199:12;4177:36;;4248:72;4312:7;4301:8;4290:9;4286:24;4248:72;:::i;:::-;2922:1458;;;;-1:-1:-1;2922:1458:1;;-1:-1:-1;2922:1458:1;;;;;;4339:8;-1:-1:-1;;;2922:1458:1:o;4385:800::-;4534:6;4542;4550;4558;4611:2;4599:9;4590:7;4586:23;4582:32;4579:52;;;4627:1;4624;4617:12;4579:52;4667:9;4654:23;4696:18;4737:2;4729:6;4726:14;4723:34;;;4753:1;4750;4743:12;4723:34;4792:70;4854:7;4845:6;4834:9;4830:22;4792:70;:::i;:::-;4881:8;;-1:-1:-1;4766:96:1;-1:-1:-1;4969:2:1;4954:18;;4941:32;;-1:-1:-1;4985:16:1;;;4982:36;;;5014:1;5011;5004:12;4982:36;;5053:72;5117:7;5106:8;5095:9;5091:24;5053:72;:::i;:::-;4385:800;;;;-1:-1:-1;5144:8:1;-1:-1:-1;;;;4385:800:1:o;5876:277::-;5943:6;5996:2;5984:9;5975:7;5971:23;5967:32;5964:52;;;6012:1;6009;6002:12;5964:52;6044:9;6038:16;6097:5;6090:13;6083:21;6076:5;6073:32;6063:60;;6119:1;6116;6109:12;6063:60;6142:5;5876:277;-1:-1:-1;;;5876:277:1:o;6514:184::-;6566:77;6563:1;6556:88;6663:4;6660:1;6653:15;6687:4;6684:1;6677:15;7457:358;7557:6;7552:3;7545:19;7527:3;7587:66;7579:6;7576:78;7573:98;;;7667:1;7664;7657:12;7573:98;7703:6;7700:1;7696:14;7755:8;7748:5;7741:4;7736:3;7732:14;7719:45;7784:18;;;;7804:4;7780:29;;7457:358;-1:-1:-1;;;7457:358:1:o;7820:509::-;8028:4;8057:42;8138:2;8130:6;8126:15;8115:9;8108:34;8190:2;8182:6;8178:15;8173:2;8162:9;8158:18;8151:43;;8230:2;8225;8214:9;8210:18;8203:30;8250:73;8319:2;8308:9;8304:18;8296:6;8288;8250:73;:::i;:::-;8242:81;7820:509;-1:-1:-1;;;;;;7820:509:1:o;9121:186::-;9180:6;9233:2;9221:9;9212:7;9208:23;9204:32;9201:52;;;9249:1;9246;9239:12;9201:52;9272:29;9291:9;9272:29;:::i;9312:604::-;9405:4;9411:6;9471:11;9458:25;-1:-1:-1;;9550:8:1;9534:14;9530:29;9526:102;9506:18;9502:127;9492:155;;9643:1;9640;9633:12;9492:155;9670:33;;9722:20;;;-1:-1:-1;9765:18:1;9754:30;;9751:50;;;9797:1;9794;9787:12;9751:50;9830:4;9818:17;;-1:-1:-1;9881:1:1;9877:14;;;9861;9857:35;9847:46;;9844:66;;;9906:1;9903;9896:12;10267:2045;10657:42;10726:15;;;10708:34;;10635:2;10761;10779:18;;;10772:30;;;10620:18;;;10837:22;;;10587:4;;10917:6;;10890:3;10875:19;;10587:4;10951:191;10965:6;10962:1;10959:13;10951:191;;;11058:2;11030:26;11049:6;11030:26;:::i;:::-;11026:35;11014:48;;11117:15;;;;11082:12;;;;10987:1;10980:9;10951:191;;;-1:-1:-1;11178:19:1;;;11173:2;11158:18;;11151:47;11232:19;;;11269:12;;;;-1:-1:-1;11300:1:1;;-1:-1:-1;11337:15:1;;;11328:25;;11324:34;;11383:6;11409:1;11419:864;11435:6;11430:3;11427:15;11419:864;;;11524:66;11518:3;11510:6;11506:16;11502:89;11495:5;11488:104;11644:8;11631:22;-1:-1:-1;;11724:6:1;11708:14;11704:27;11700:100;11680:18;11676:125;11666:153;;11815:1;11812;11805:12;11666:153;11845:31;;11950:14;;;;11903:19;11991:18;11980:30;;11977:50;;;12023:1;12020;12013:12;11977:50;12084:6;12080:2;12076:15;12060:14;12056:36;12047:7;12043:50;12040:70;;;12106:1;12103;12096:12;12040:70;12133:62;12188:6;12180;12171:7;12133:62;:::i;:::-;12259:14;;;;12123:72;-1:-1:-1;;;12220:17:1;;;;11461:1;11452:11;11419:864;;;-1:-1:-1;12300:6:1;;10267:2045;-1:-1:-1;;;;;;;;;;;;10267:2045:1:o

Swarm Source

ipfs://e9255eba3d66d1a60c2a4682ae2999328ec1d57520c3b6add55d854496580d25

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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