Contract 0x392bbcceda72b0d6a03009dcc90395dd961a6c5a 2

Txn Hash Method
Block
From
To
Value [Txn Fee]
0xe3a559099abf7aa44457264ea04b597c4f974e7f8076fac095ea2f50f5b11187Claim Bonus104150802023-09-28 5:23:181 day 5 hrs ago0x566a1ff1dc54cad033184d25e744c44fa9960e1e IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO0.401264093982 4,655.305922416
0xda7e8ba620c1fdf453ffa747cc824fbdc42364752f662188feba57815e290b95Unstake103663022023-09-25 1:00:004 days 10 hrs agoCronos ID Name redhead.cro IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO0.903801644135 4,657.522953307
0xb02c96886529c9291989e533177149ef294cc7aa596f2507a8f29a02f27ec1a0Stake103627872023-09-24 19:29:484 days 15 hrs agoCronos ID Name redhead.cro IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO1.467831357527 4,657.68243372
0xb696a2adc198b5a14b0300c6bdb1ff4572ae27cf3a4034e2f203885e848a933cUnstake103591302023-09-24 13:46:234 days 21 hrs ago0x2c9b17c98fab09b412f7edab37624f346b7de35e IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO0.872913439376 4,657.848636264
0xe38887f15b58de713bc8ab67e75f77653a4c420996439b15c0a828785c8fe0e6Unstake103568352023-09-24 10:10:535 days 1 hr agoCronos ID Name xtrabrandon.cro IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO5.3728307457250
0x57314f754053feeb1b68c6257e1ebec2c283425d34acb45245b7c7b38c2a04c7Unstake103193482023-09-21 23:29:337 days 11 hrs agoCronos ID Name shortshaft.cro IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO35.5433249485040
0xd9f01f1ba41f5cbead7408da763ea316df0c383a566603ccf6defe9377f504a6Claim Bonus103193442023-09-21 23:29:107 days 11 hrs agoCronos ID Name shortshaft.cro IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO0.4015104701910
0xd1d30ce0fc32f5ef5281abe033566adf1fef532b67615c396262009a5b50e9f9Unstake102890052023-09-20 0:00:349 days 11 hrs ago0xe08cbfb18947fa2cae632c2346e9d812f77148e0 IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO1.28429022321 4,661.044517473
0x1bcfee1049825c651047f7eeb2c1bda9b03af530c8a936a46da258cb5ae5080dUnstake102874382023-09-19 21:33:329 days 13 hrs ago0x9d1171e59e0bddcd75d82b054684448ed74332e7 IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO4.888042311683 4,661.115884831
0xa24789daf898d5d08dd159c64ed970e2b8120d654582e88f77c8a6c7e5f24a1cClaim Bonus102874292023-09-19 21:32:419 days 13 hrs ago0x9d1171e59e0bddcd75d82b054684448ed74332e7 IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO0.401764918832 4,661.116292507
0x9f4ea22ea038f879a626a22ec9ca75109b3d3306aadba5a942799fc4a4bca256Claim Bonus101389922023-09-10 5:11:3519 days 6 hrs agoCronos ID Name fit-in-crypto.cro IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO0.4022165656640
0xe8d6dfb371b4d7c68decdba85874680eda79feddde77e8d1aa4f5fd21a8697b4Unstake101314572023-09-09 17:24:0919 days 17 hrs ago0xd5f24e7fe95cded1b545385b9ee09837d43e9f17 IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO13.1850813919850
0x28675c37e380338e8686069e77c55d43f47647e9510a1a4876a733ccbb947fc8Stake101091352023-09-08 6:28:5121 days 4 hrs agoCronos ID Name getfritzed.cro IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO1.3683559323690
0xd53355f6e236d776dea699c65a94ea2ce33c80a2a090e6652c773a4899701a12Unstake100747012023-09-06 0:36:0023 days 10 hrs ago0x88aaef6fc0b604a97a79b35c38d0e749c1531522 IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO0.8750569207610
0x1d5b51afc0113517a9dd5e05aea1a075d4898e8303f0d1085c3d02c7cf51ec7dClaim Bonus100745952023-09-06 0:26:0423 days 10 hrs ago0x88aaef6fc0b604a97a79b35c38d0e749c1531522 IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO0.4024695448340
0x7cd7df4e8ddd5e52534e3c1aeb9f1bfad6bd636baedc06ab479c0a477e345bbbUnstake100685712023-09-05 15:01:1923 days 20 hrs agoCronos ID Name thecryptojesus.cro IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO17.3163891004120
0x9f6a432ac328542c47ec3d6b075c7a7c15c265287187ed5826a8554dcd205f6fClaim Bonus100545582023-09-04 17:04:0324 days 18 hrs agoCronos ID Name placeyourbetswith.cro IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO0.4025483598570
0xd21f300aaa468aca08e0cd26cffa86a2304bc0cb3e7d35376d6a7c403609223bClaim Bonus100534002023-09-04 15:15:1224 days 19 hrs ago0x79d3752ce78e7224cbad0128bd1c3c5853876494 IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO0.402552894230
0xc4f9f678f4a2b5aa4cf2d60dd2fad90d5e8484891e98edfe0eab3fe1e4eaeb79Unstake100533972023-09-04 15:14:5524 days 19 hrs ago0x79d3752ce78e7224cbad0128bd1c3c5853876494 IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO5.8887379113660
0x4a47d67c2529d9c3ed45657abf36c60cb617c5cefa2b214c8fb53fd0ff36d125Stake100254422023-09-02 19:30:3826 days 15 hrs agoCronos ID Name ngchung.cro IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO2.1007274846450
0xf6232d5732c9c6fc544856996bc63cbe90afc727f2b9d2807ec31bd29e8a7dffUnstake100221512023-09-02 14:21:4426 days 20 hrs agoCronos ID Name badlikeme.cro IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO0.875787014178 4,673.18197388
0xe2fecdedd862a808c2dfbde35d56f50fc9f9e6c2a995e108e72a062495b650f5Claim Bonus100221492023-09-02 14:21:3326 days 20 hrs agoCronos ID Name badlikeme.cro IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO0.402804928169 4,673.182065892
0x8b653334678902f4c06e454e90a0d6e1c31efc1632f99ec112a120d83a4f8be3Stake100133222023-09-02 0:33:2527 days 10 hrs ago0xd6fec0735960631bdadf887fd31e5c402d3db28e IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO1.472842685397 4,673.584242651
0x44ca42122c3f6f67804f7706b790c77eb9e57919bac439316a4cd8d1b016edc3Claim Bonus99907092023-08-31 13:06:3828 days 22 hrs agoCronos ID Name ngchung.cro IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO0.4027986446170
0x6c323599f9d6eba293cb5df508e7c5eb93acb8906350e2f061b2f2030950c76eUnstake99907082023-08-31 13:06:3228 days 22 hrs agoCronos ID Name ngchung.cro IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO2.1378165966750
[ Download CSV Export 
Parent Txn Hash Block From To Value
Index Block
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DBF_NFT_Staking

Compiler Version
v0.8.1+commit.df193b15

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2022-08-18
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;


library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    function toString(uint256 value) internal pure returns (string memory) {
        
        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}


abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}


abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {
        _transferOwnership(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


library Address {

    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

interface IERC721Receiver {

    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}

contract ERC721Holder is IERC721Receiver {
 
    function onERC721Received(
        address,
        address,
        uint256,
        bytes memory
    ) public virtual override returns (bytes4) {
        return this.onERC721Received.selector;
    }
}


interface IERC165 {

    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

interface IERC721 is IERC165 {
  
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

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

    function balanceOf(address owner) external view returns (uint256 balance);

    function ownerOf(uint256 tokenId) external view returns (address owner);

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    function approve(address to, uint256 tokenId) external;

    function getApproved(uint256 tokenId) external view returns (address operator);

    function setApprovalForAll(address operator, bool _approved) external;

    function isApprovedForAll(address owner, address operator) external view returns (bool);

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}


interface IERC721Metadata is IERC721 {
    /**
     * @dev Returns the token collection name.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the token collection symbol.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
     */
    function tokenURI(uint256 tokenId) external view returns (string memory);
}

contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

    // Mapping from token ID to owner address
    mapping(uint256 => address) private _owners;

    // Mapping owner address to token count
    mapping(address => uint256) private _balances;

    // Mapping from token ID to approved address
    mapping(uint256 => address) private _tokenApprovals;

    // Mapping from owner to operator approvals
    mapping(address => mapping(address => bool)) private _operatorApprovals;

    /**
     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            super.supportsInterface(interfaceId);
    }

    /**
     * @dev See {IERC721-balanceOf}.
     */
    function balanceOf(address owner) public view virtual override returns (uint256) {
        require(owner != address(0), "ERC721: balance query for the zero address");
        return _balances[owner];
    }

    /**
     * @dev See {IERC721-ownerOf}.
     */
    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _owners[tokenId];
        require(owner != address(0), "ERC721: owner query for nonexistent token");
        return owner;
    }

    /**
     * @dev See {IERC721Metadata-name}.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev See {IERC721Metadata-symbol}.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev See {IERC721Metadata-tokenURI}.
     */
    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");

        string memory baseURI = _baseURI();
        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : "";
    }

    /**
     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each
     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty
     * by default, can be overriden in child contracts.
     */
    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }

    /**
     * @dev See {IERC721-approve}.
     */
    function approve(address to, uint256 tokenId) public virtual override {
        address owner = ERC721.ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");

        require(
            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "ERC721: approve caller is not owner nor approved for all"
        );

        _approve(to, tokenId);
    }

    /**
     * @dev See {IERC721-getApproved}.
     */
    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        require(_exists(tokenId), "ERC721: approved query for nonexistent token");

        return _tokenApprovals[tokenId];
    }

    /**
     * @dev See {IERC721-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved) public virtual override {
        _setApprovalForAll(_msgSender(), operator, approved);
    }

    /**
     * @dev See {IERC721-isApprovedForAll}.
     */
    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[owner][operator];
    }

    /**
     * @dev See {IERC721-transferFrom}.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        //solhint-disable-next-line max-line-length
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");

        _transfer(from, to, tokenId);
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        safeTransferFrom(from, to, tokenId, "");
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
        _safeTransfer(from, to, tokenId, _data);
    }

    function _safeTransfer(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
    }

    /**
     * @dev Returns whether `tokenId` exists.
     *
     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.
     *
     * Tokens start existing when they are minted (`_mint`),
     * and stop existing when they are burned (`_burn`).
     */
    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _owners[tokenId] != address(0);
    }

    /**
     * @dev Returns whether `spender` is allowed to manage `tokenId`.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
        require(_exists(tokenId), "ERC721: operator query for nonexistent token");
        address owner = ERC721.ownerOf(tokenId);
        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
    }

    /**
     * @dev Safely mints `tokenId` and transfers it to `to`.
     *
     * Requirements:
     *
     * - `tokenId` must not exist.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function _safeMint(address to, uint256 tokenId) internal virtual {
        _safeMint(to, tokenId, "");
    }

    /**
     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is
     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.
     */
    function _safeMint(
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _mint(to, tokenId);
        require(
            _checkOnERC721Received(address(0), to, tokenId, _data),
            "ERC721: transfer to non ERC721Receiver implementer"
        );
    }

    /**
     * @dev Mints `tokenId` and transfers it to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible
     *
     * Requirements:
     *
     * - `tokenId` must not exist.
     * - `to` cannot be the zero address.
     *
     * Emits a {Transfer} event.
     */
    function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "ERC721: mint to the zero address");
        require(!_exists(tokenId), "ERC721: token already minted");

        _beforeTokenTransfer(address(0), to, tokenId);

        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(address(0), to, tokenId);

        _afterTokenTransfer(address(0), to, tokenId);
    }

    /**
     * @dev Destroys `tokenId`.
     * The approval is cleared when the token is burned.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     *
     * Emits a {Transfer} event.
     */
    function _burn(uint256 tokenId) internal virtual {
        address owner = ERC721.ownerOf(tokenId);

        _beforeTokenTransfer(owner, address(0), tokenId);

        // Clear approvals
        _approve(address(0), tokenId);

        _balances[owner] -= 1;
        delete _owners[tokenId];

        emit Transfer(owner, address(0), tokenId);

        _afterTokenTransfer(owner, address(0), tokenId);
    }

    /**
     * @dev Transfers `tokenId` from `from` to `to`.
     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     *
     * Emits a {Transfer} event.
     */
    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {
        require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner");
        require(to != address(0), "ERC721: transfer to the zero address");

        _beforeTokenTransfer(from, to, tokenId);

        // Clear approvals from the previous owner
        _approve(address(0), tokenId);

        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(from, to, tokenId);

        _afterTokenTransfer(from, to, tokenId);
    }

    /**
     * @dev Approve `to` to operate on `tokenId`
     *
     * Emits a {Approval} event.
     */
    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
    }

    /**
     * @dev Approve `operator` to operate on all of `owner` tokens
     *
     * Emits a {ApprovalForAll} event.
     */
    function _setApprovalForAll(
        address owner,
        address operator,
        bool approved
    ) internal virtual {
        require(owner != operator, "ERC721: approve to caller");
        _operatorApprovals[owner][operator] = approved;
        emit ApprovalForAll(owner, operator, approved);
    }

    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver.onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721: transfer to non ERC721Receiver implementer");
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {}

  
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {}
}

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract DBF_NFT_Staking is Ownable, ERC721Holder {

    IERC20 internal R_Token;
    ERC721 internal NFT;

    bool public paused = true;
    
    uint256 public rvalue = 15740740740741;
    uint256 public totalStaked = 0;
    uint256 public uAdr = 0;
    uint256 public pending = 0;

    struct DataBase {
        address _user;
        uint256 _TokenId;
        uint256 _IsStaked;
        uint256 _StakedTime;
        uint256 _lastClaimed;
    }
    struct ClaimDataBase {
        uint256 _bonusToClaim;
    }

    mapping (address => DataBase[]) public userRecord;
    mapping (address => ClaimDataBase) public claimRecord;
    mapping (uint256 => address) public accountIndex;
    mapping (address => uint256) public accountIDs;
    mapping (uint256 => uint256) public stakedIndex;

    constructor(address _nftAdr, address _token) {
        R_Token = IERC20(_token);
        NFT = ERC721(_nftAdr);
    }

	function setRval(uint256 _rval) public onlyOwner {
		rvalue = _rval;
	}

    function distribute() public onlyOwner {
        uint256 monthlyRewards = ((rvalue * 10000) * 2678400);
        uint256 scBal = ((R_Token.balanceOf(address(this))) - pending);
        uint256 leftToDist = 0;
        if (scBal > monthlyRewards) { leftToDist = (scBal - monthlyRewards); }
        if (leftToDist > 0)
        {  
            uint256 perNFT = (leftToDist / 2) / totalStaked;
            for(uint i = 0; i < uAdr; i++)
            {
                if (stakedIndex[i] > 0)
                {
                    claimRecord[accountIndex[i]]._bonusToClaim += (perNFT * stakedIndex[i]);
                    pending += (perNFT * stakedIndex[i]);
                }
            }
            burn(leftToDist / 2);
        }
    }

    function backupDist() public onlyOwner {
        uint256 monthlyRewards = (rvalue * 10000) * 2678400;
        uint256 scBal = ((R_Token.balanceOf(address(this))) - pending);
        uint256 leftToDist = 0;
        if (scBal > monthlyRewards) { leftToDist = (scBal - monthlyRewards); }
        if (leftToDist > 0)
        {  
            leftToDist = (leftToDist / 2);
            R_Token.transfer(msg.sender,leftToDist);
            burn(leftToDist);
        }
    }

    function checkBonus() public view returns (uint256) {
        if (claimRecord[msg.sender]._bonusToClaim > 0)
        {
            return claimRecord[msg.sender]._bonusToClaim;
        }
        else
        {
            return 0;
        }
    }

    function claimBonus() public {
        uint256 bonus = claimRecord[msg.sender]._bonusToClaim;
        require(bonus > 0, "You have no bonus left to claim!");
        require(R_Token.balanceOf(address(this)) >= bonus, "Oops, nothing left in the reward pool");
        claimRecord[msg.sender]._bonusToClaim = 0;
        pending -= bonus;
        R_Token.transfer(msg.sender,bonus);
    }

    function viewAccounts(uint256 from, uint256 to) public view returns (address[] memory) {
        address[] memory theAccounts = new address[](to - from);
        uint x = 0;
        for (uint i = from-1; i < to; i++) {
            if (stakedIndex[i] > 0)
            {
                theAccounts[x] = accountIndex[i];
                x++;
            }
        }
        return theAccounts;
    }

    function stake(uint256[] calldata _tokenIds) public {
        for(uint i =0; i < _tokenIds.length; i++)
        {
            stakeSingle(_tokenIds[i]);
        }
    }

    function stakeSingle(uint _tokenId) public {
        require(!paused,"Staking is Currently Paused!!");
        address account = msg.sender;
        NFT.safeTransferFrom(account, address(this) , _tokenId,"");
        uint userRegistery = getlength(account);
        bool swipper;
        if(userRegistery > 0) {
            DataBase[] storage update = userRecord[account];
            uint i = 0;
            while(i < userRegistery) {
                if(userRecord[account][i]._TokenId == _tokenId) {
                    update[i]._IsStaked = 1;
                    update[i]._StakedTime = block.timestamp;
                    update[i]._lastClaimed = block.timestamp;
                    swipper = true;
                    break;
                }
                i++;
            }
        }
        if(!swipper) {
            userRecord[account].push(
                DataBase({
                    _user: account,
                    _TokenId: _tokenId,
                    _IsStaked: 1,
                    _StakedTime: block.timestamp,
                    _lastClaimed: block.timestamp
                })
            );
        }

        totalStaked += 1;
        if (accountIDs[account] == 0)
        {
            accountIndex[uAdr] = account;
            stakedIndex[uAdr] += 1;
            accountIDs[account] = uAdr;
            uAdr += 1;
        }
        else
        {            
            stakedIndex[accountIDs[account]] += 1;
        }
    }    

    function claimReward() public {
        require(!paused,"Staking is Currently Paused!!");
        address account = msg.sender;
        uint256 totalSecondsCount;
        uint userRegistery = getlength(account);
        if(userRegistery > 0) {
            DataBase[] storage update = userRecord[account];
            uint i = 0;
            while(i < userRegistery) {
                uint256 second = 0;
                if(update[i]._IsStaked == 1) {
                    second = block.timestamp - update[i]._lastClaimed;
                    totalSecondsCount += second;
                    update[i]._lastClaimed =  block.timestamp;
                }
                i++;
            }
        }
        else{
            revert("Error: No Record Found!!");
        }

        uint256 subtotalReward = rvalue * totalSecondsCount;
        if(subtotalReward > 0) {
            R_Token.transfer(account,subtotalReward);
        }
        else {
            revert("Please Wait till the reward Get Generated!!");
        }

    }

    function unstake(uint256[] calldata _tokenIds) public {
        for(uint i =0; i < _tokenIds.length; i++)
        {
            unstakeSingle(_tokenIds[i]);
        }
    }

    function unstakeSingle(uint _tokenId) public {
        require(!paused,"Staking is Currently Paused!!");
        address account = msg.sender;
        uint userRegistery = getlength(account);
        uint[] memory checkIds = getStakeNftId(account);
        uint i;
        bool found;
        uint totalNftReward;
        while(i < userRegistery) {
            if(checkIds[i] == _tokenId) {
                found = true;
                break;
            }
            i++;
        }

        if(found) {

            if(userRegistery > 0) {
                DataBase[] storage update = userRecord[account];
                uint j = 0;
                while(j < userRegistery) {
                    uint256 second = 0;
                    if(update[j]._TokenId == _tokenId) {
                        second = block.timestamp - update[j]._lastClaimed;
                        totalNftReward += second;
                        update[j]._lastClaimed =  block.timestamp;
                        update[j]._IsStaked = 0;
                        break;
                    }
                    j++;
                }
            }
            
            totalStaked -= 1;
            stakedIndex[accountIDs[account]] -= 1;

            uint256 totalRewardonNft = rvalue * totalNftReward;
            R_Token.transfer(account,totalRewardonNft);
            NFT.transferFrom(address(this),account, _tokenId);
        }
        else{
            revert("Error: No Record Found!!");
        }
        
    }
    
    function checkReward(address _adr) public view returns (uint256) {
        address account = _adr;
        uint256 totalSecondsCount;
        uint userRegistery = getlength(account);
        if(userRegistery > 0) {
            DataBase[] storage update = userRecord[account];
            uint i = 0;
            while(i < userRegistery) {
                uint256 second = 0;
                if(update[i]._IsStaked == 1) {
                    second = block.timestamp - update[i]._lastClaimed;
                    totalSecondsCount += second;
                }
                i++;
            }
        }

        uint256 subtotalReward = rvalue * totalSecondsCount;
        if(subtotalReward > 0) {
            return subtotalReward;
        }
        else {
            return 0;
        }

    }

    function getStakeNftId(address _adr) public view returns (uint256[] memory) {
        address account = _adr;
        uint userRegistery = getlength(account);
        uint256[] memory ownedTokenIds = new uint256[](userRegistery);

        if(userRegistery > 0) {
            DataBase[] storage rec = userRecord[account];
            uint i = 0;
            while(i < userRegistery) {
                if(rec[i]._IsStaked == 1) {
                    ownedTokenIds[i] = rec[i]._TokenId;
                }
                i++;
            }
        }
        else {
            revert("Error: No Record Found!!");
        }

        return ownedTokenIds;   

    }
    
    function getlength(address _adr) internal view returns (uint) {
        return userRecord[_adr].length;
    }

    function rescueTokens(address _adr) public onlyOwner {
        IERC20(_adr).transfer(msg.sender,IERC20(_adr).balanceOf(address(this)));
    }

    function rescueNft(uint _id,address recipient) public onlyOwner {
        NFT.transferFrom(address(this),recipient, _id);
    }

    function setPaused(bool _status) public onlyOwner {
        paused = _status;
    }
    function burn(uint256 amount) public onlyOwner {        
        address deadAdd = 0x000000000000000000000000000000000000dEaD;        
        R_Token.transfer(deadAdd,amount);
    }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_nftAdr","type":"address"},{"internalType":"address","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"accountIDs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"accountIndex","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"backupDist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkBonus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"}],"name":"checkReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimBonus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"claimRecord","outputs":[{"internalType":"uint256","name":"_bonusToClaim","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distribute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"}],"name":"getStakeNftId","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pending","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"rescueNft","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rvalue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rval","type":"uint256"}],"name":"setRval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"stakeSingle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakedIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uAdr","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"unstakeSingle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"userRecord","outputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_TokenId","type":"uint256"},{"internalType":"uint256","name":"_IsStaked","type":"uint256"},{"internalType":"uint256","name":"_StakedTime","type":"uint256"},{"internalType":"uint256","name":"_lastClaimed","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"from","type":"uint256"},{"internalType":"uint256","name":"to","type":"uint256"}],"name":"viewAccounts","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"}]

60806040526002805460ff60a01b1916600160a01b179055650e50ed42a6856003556000600481905560058190556006553480156200003d57600080fd5b50604051620022db380380620022db83398101604081905262000060916200011a565b620000746200006e620000a9565b620000ad565b600180546001600160a01b039283166001600160a01b0319918216179091556002805493909216921691909117905562000151565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200011557600080fd5b919050565b600080604083850312156200012d578182fd5b6200013883620000fd565b91506200014860208401620000fd565b90509250929050565b61217a80620001616000396000f3fe608060405234801561001057600080fd5b50600436106101e45760003560e01c80637b86a66e1161010f578063b88a802f116100a2578063e20ccec311610071578063e20ccec3146103e6578063e449f341146103ee578063e4fc6b6d14610401578063f2fde38b14610409576101e4565b8063b88a802f146103a5578063bd542f95146103ad578063c0bd1fc8146103c0578063c3c90e64146103d3576101e4565b80639384f418116100de5780639384f4181461036f57806395808366146103825780639669f64e1461038a578063b643191e14610392576101e4565b80637b86a66e146103395780637e7031fb1461034c578063817b1cd21461035f5780638da5cb5b14610367576101e4565b806342966c68116101875780635c975abb116101565780635c975abb146102e7578063622d62e0146102fc5780636ca2981114610311578063715018a614610331576101e4565b806342966c68146102955780634d8d773e146102a857806350635394146102bb5780635b89c6cd146102c3576101e4565b806316c38b3c116101c357806316c38b3c1461023a57806329676c3b1461024d578063350825ba1461025557806336f9825f14610275576101e4565b8062ae3bf8146101e95780630fbf0a93146101fe578063150b7a0214610211575b600080fd5b6101fc6101f7366004611b31565b61041c565b005b6101fc61020c366004611c50565b61055d565b61022461021f366004611b52565b6105ae565b6040516102319190611eb5565b60405180910390f35b6101fc610248366004611cbf565b6105be565b6101fc61061b565b610268610263366004611d52565b6107c5565b6040516102319190611e25565b610288610283366004611cf7565b6108d1565b6040516102319190611d73565b6101fc6102a3366004611cf7565b6108ec565b6101fc6102b6366004611cf7565b6109b1565b6101fc6109f5565b6102d66102d1366004611c27565b610b1b565b604051610231959493929190611df7565b6102ef610b73565b6040516102319190611eaa565b610304610b83565b6040516102319190612078565b61032461031f366004611b31565b610b89565b6040516102319190611e72565b6101fc610cea565b6101fc610347366004611cf7565b610d35565b6101fc61035a366004611cf7565b6110a1565b6103046113d5565b6102886113db565b61030461037d366004611b31565b6113eb565b6103046113fd565b610304611403565b6103046103a0366004611cf7565b611436565b6101fc611448565b6101fc6103bb366004611d27565b611636565b6103046103ce366004611b31565b6116df565b6103046103e1366004611b31565b6116f1565b6103046117f7565b6101fc6103fc366004611c50565b6117fd565b6101fc611849565b6101fc610417366004611b31565b611a3a565b610424611aab565b6001600160a01b03166104356113db565b6001600160a01b0316146104645760405162461bcd60e51b815260040161045b90611fc7565b60405180910390fd5b6040516370a0823160e01b81526001600160a01b0382169063a9059cbb90339083906370a082319061049a903090600401611d73565b60206040518083038186803b1580156104b257600080fd5b505afa1580156104c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ea9190611d0f565b6040518363ffffffff1660e01b8152600401610507929190611dde565b602060405180830381600087803b15801561052157600080fd5b505af1158015610535573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105599190611cdb565b5050565b60005b818110156105a95761059783838381811061058b57634e487b7160e01b600052603260045260246000fd5b90506020020135610d35565b806105a1816120ef565b915050610560565b505050565b630a85bd0160e11b949350505050565b6105c6611aab565b6001600160a01b03166105d76113db565b6001600160a01b0316146105fd5760405162461bcd60e51b815260040161045b90611fc7565b60028054911515600160a01b0260ff60a01b19909216919091179055565b610623611aab565b6001600160a01b03166106346113db565b6001600160a01b03161461065a5760405162461bcd60e51b815260040161045b90611fc7565b600060035461271061066c91906120b9565b610679906228de806120b9565b6006546001546040516370a0823160e01b81529293506000926001600160a01b03909116906370a08231906106b2903090600401611d73565b60206040518083038186803b1580156106ca57600080fd5b505afa1580156106de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107029190611d0f565b61070c91906120d8565b90506000828211156107255761072283836120d8565b90505b80156105a957610736600282612099565b60015460405163a9059cbb60e01b81529192506001600160a01b03169063a9059cbb906107699033908590600401611dde565b602060405180830381600087803b15801561078357600080fd5b505af1158015610797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bb9190611cdb565b506105a9816108ec565b606060006107d384846120d8565b67ffffffffffffffff8111156107f957634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610822578160200160208202803683370190505b5090506000806108336001876120d8565b90505b848110156108c7576000818152600b6020526040902054156108b55760008181526009602052604090205483516001600160a01b039091169084908490811061088f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b0390921660209283029190910190910152816108b1816120ef565b9250505b806108bf816120ef565b915050610836565b5090949350505050565b6009602052600090815260409020546001600160a01b031681565b6108f4611aab565b6001600160a01b03166109056113db565b6001600160a01b03161461092b5760405162461bcd60e51b815260040161045b90611fc7565b60015460405163a9059cbb60e01b815261dead916001600160a01b03169063a9059cbb9061095f9084908690600401611dde565b602060405180830381600087803b15801561097957600080fd5b505af115801561098d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a99190611cdb565b6109b9611aab565b6001600160a01b03166109ca6113db565b6001600160a01b0316146109f05760405162461bcd60e51b815260040161045b90611fc7565b600355565b3360009081526008602052604090205480610a225760405162461bcd60e51b815260040161045b90611f47565b6001546040516370a0823160e01b815282916001600160a01b0316906370a0823190610a52903090600401611d73565b60206040518083038186803b158015610a6a57600080fd5b505afa158015610a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa29190611d0f565b1015610ac05760405162461bcd60e51b815260040161045b90612033565b33600090815260086020526040812081905560068054839290610ae49084906120d8565b909155505060015460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906105079033908590600401611dde565b60076020528160005260406000208181548110610b3757600080fd5b6000918252602090912060059091020180546001820154600283015460038401546004909401546001600160a01b039093169550909350919085565b600254600160a01b900460ff1681565b60055481565b6060816000610b9782611aaf565b905060008167ffffffffffffffff811115610bc257634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610beb578160200160208202803683370190505b5090508115610cc8576001600160a01b0383166000908152600760205260408120905b83811015610cc157818181548110610c3657634e487b7160e01b600052603260045260246000fd5b90600052602060002090600502016002015460011415610caf57818181548110610c7057634e487b7160e01b600052603260045260246000fd5b906000526020600020906005020160010154838281518110610ca257634e487b7160e01b600052603260045260246000fd5b6020026020010181815250505b80610cb9816120ef565b915050610c0e565b5050610ce0565b60405162461bcd60e51b815260040161045b90611f10565b925050505b919050565b610cf2611aab565b6001600160a01b0316610d036113db565b6001600160a01b031614610d295760405162461bcd60e51b815260040161045b90611fc7565b610d336000611aca565b565b600254600160a01b900460ff1615610d5f5760405162461bcd60e51b815260040161045b90611ffc565b600254604051635c46a7ef60e11b815233916001600160a01b03169063b88d4fde90610d9390849030908790600401611dab565b600060405180830381600087803b158015610dad57600080fd5b505af1158015610dc1573d6000803e3d6000fd5b505050506000610dd082611aaf565b905060008115610f10576001600160a01b0383166000908152600760205260408120905b83811015610f0d576001600160a01b0385166000908152600760205260409020805487919083908110610e3757634e487b7160e01b600052603260045260246000fd5b9060005260206000209060050201600101541415610efb576001828281548110610e7157634e487b7160e01b600052603260045260246000fd5b90600052602060002090600502016002018190555042828281548110610ea757634e487b7160e01b600052603260045260246000fd5b90600052602060002090600502016003018190555042828281548110610edd57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600502016004018190555060019250610f0d565b80610f05816120ef565b915050610df4565b50505b80610fa2576001600160a01b038381166000818152600760209081526040808320815160a0810183529485528483018a8152600192860183815242606088018181526080890191825284548087018655948852959096209651600590930290960180546001600160a01b0319169290971691909117865551908501559151600284015590516003830155516004909101555b600160046000828254610fb59190612081565b90915550506001600160a01b0383166000908152600a602052604090205461105f5760058054600090815260096020908152604080832080546001600160a01b0319166001600160a01b03891617905592548252600b9052908120805460019290611021908490612081565b9091555050600580546001600160a01b0385166000908152600a6020526040812082905560019291611054908490612081565b9091555061109b9050565b6001600160a01b0383166000908152600a60209081526040808320548352600b9091528120805460019290611095908490612081565b90915550505b50505050565b600254600160a01b900460ff16156110cb5760405162461bcd60e51b815260040161045b90611ffc565b3360006110d782611aaf565b905060006110e483610b89565b905060008060005b8483101561113e578684848151811061111557634e487b7160e01b600052603260045260246000fd5b6020026020010151141561112c576001915061113e565b82611136816120ef565b9350506110ec565b8115610cc857841561127b576001600160a01b0386166000908152600760205260408120905b868110156112785760008983838154811061118f57634e487b7160e01b600052603260045260246000fd5b9060005260206000209060050201600101541415611265578282815481106111c757634e487b7160e01b600052603260045260246000fd5b906000526020600020906005020160040154426111e491906120d8565b90506111f08185612081565b93504283838154811061121357634e487b7160e01b600052603260045260246000fd5b906000526020600020906005020160040181905550600083838154811061124a57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600502016002018190555050611278565b8161126f816120ef565b92505050611164565b50505b60016004600082825461128e91906120d8565b90915550506001600160a01b0386166000908152600a60209081526040808320548352600b90915281208054600192906112c99084906120d8565b90915550506003546000906112df9083906120b9565b60015460405163a9059cbb60e01b81529192506001600160a01b03169063a9059cbb90611312908a908590600401611dde565b602060405180830381600087803b15801561132c57600080fd5b505af1158015611340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113649190611cdb565b506002546040516323b872dd60e01b81526001600160a01b03909116906323b872dd906113999030908b908d90600401611d87565b600060405180830381600087803b1580156113b357600080fd5b505af11580156113c7573d6000803e3d6000fd5b505050505050505050505050565b60045481565b6000546001600160a01b03165b90565b600a6020526000908152604090205481565b60035481565b336000908152600860205260408120541561142e5750336000908152600860205260409020546113e8565b5060006113e8565b600b6020526000908152604090205481565b600254600160a01b900460ff16156114725760405162461bcd60e51b815260040161045b90611ffc565b3360008061147f83611aaf565b90508015610cc8576001600160a01b0383166000908152600760205260408120905b8281101561157a5760008282815481106114cb57634e487b7160e01b600052603260045260246000fd5b906000526020600020906005020160020154600114156115675782828154811061150557634e487b7160e01b600052603260045260246000fd5b9060005260206000209060050201600401544261152291906120d8565b905061152e8186612081565b94504283838154811061155157634e487b7160e01b600052603260045260246000fd5b9060005260206000209060050201600401819055505b81611571816120ef565b925050506114a1565b505060008260035461158c91906120b9565b9050801561161e5760015460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906115c69087908590600401611dde565b602060405180830381600087803b1580156115e057600080fd5b505af11580156115f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116189190611cdb565b5061109b565b60405162461bcd60e51b815260040161045b90611f7c565b61163e611aab565b6001600160a01b031661164f6113db565b6001600160a01b0316146116755760405162461bcd60e51b815260040161045b90611fc7565b6002546040516323b872dd60e01b81526001600160a01b03909116906323b872dd906116a990309085908790600401611d87565b600060405180830381600087803b1580156116c357600080fd5b505af11580156116d7573d6000803e3d6000fd5b505050505050565b60086020526000908152604090205481565b60008181806116ff83611aaf565b905080156117c7576001600160a01b0383166000908152600760205260408120905b828110156117c457600082828154811061174b57634e487b7160e01b600052603260045260246000fd5b906000526020600020906005020160020154600114156117b15782828154811061178557634e487b7160e01b600052603260045260246000fd5b906000526020600020906005020160040154426117a291906120d8565b90506117ae8186612081565b94505b816117bb816120ef565b92505050611721565b50505b6000826003546117d791906120b9565b905080156117ea579350610ce592505050565b6000945050505050610ce5565b60065481565b60005b818110156105a95761183783838381811061182b57634e487b7160e01b600052603260045260246000fd5b905060200201356110a1565b80611841816120ef565b915050611800565b611851611aab565b6001600160a01b03166118626113db565b6001600160a01b0316146118885760405162461bcd60e51b815260040161045b90611fc7565b600060035461271061189a91906120b9565b6118a7906228de806120b9565b6006546001546040516370a0823160e01b81529293506000926001600160a01b03909116906370a08231906118e0903090600401611d73565b60206040518083038186803b1580156118f857600080fd5b505afa15801561190c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119309190611d0f565b61193a91906120d8565b90506000828211156119535761195083836120d8565b90505b80156105a95760045460009061196a600284612099565b6119749190612099565b905060005b600554811015611a2b576000818152600b602052604090205415611a19576000818152600b60205260409020546119b090836120b9565b6000828152600960209081526040808320546001600160a01b031683526008909152812080549091906119e4908490612081565b90915550506000818152600b6020526040902054611a0290836120b9565b60066000828254611a139190612081565b90915550505b80611a23816120ef565b915050611979565b5061109b6102a3600284612099565b611a42611aab565b6001600160a01b0316611a536113db565b6001600160a01b031614611a795760405162461bcd60e51b815260040161045b90611fc7565b6001600160a01b038116611a9f5760405162461bcd60e51b815260040161045b90611eca565b611aa881611aca565b50565b3390565b6001600160a01b031660009081526007602052604090205490565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b0381168114610ce557600080fd5b600060208284031215611b42578081fd5b611b4b82611b1a565b9392505050565b60008060008060808587031215611b67578283fd5b611b7085611b1a565b9350611b7e60208601611b1a565b925060408501359150606085013567ffffffffffffffff80821115611ba1578283fd5b818701915087601f830112611bb4578283fd5b813581811115611bc657611bc6612120565b604051601f8201601f19908116603f01168101908382118183101715611bee57611bee612120565b816040528281528a6020848701011115611c06578586fd5b82602086016020830137918201602001949094529598949750929550505050565b60008060408385031215611c39578182fd5b611c4283611b1a565b946020939093013593505050565b60008060208385031215611c62578182fd5b823567ffffffffffffffff80821115611c79578384fd5b818501915085601f830112611c8c578384fd5b813581811115611c9a578485fd5b8660208083028501011115611cad578485fd5b60209290920196919550909350505050565b600060208284031215611cd0578081fd5b8135611b4b81612136565b600060208284031215611cec578081fd5b8151611b4b81612136565b600060208284031215611d08578081fd5b5035919050565b600060208284031215611d20578081fd5b5051919050565b60008060408385031215611d39578182fd5b82359150611d4960208401611b1a565b90509250929050565b60008060408385031215611d64578182fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b039384168152919092166020820152604081019190915260806060820181905260009082015260a00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03959095168552602085019390935260408401919091526060830152608082015260a00190565b6020808252825182820181905260009190848201906040850190845b81811015611e665783516001600160a01b031683529284019291840191600101611e41565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611e6657835183529284019291840191600101611e8e565b901515815260200190565b6001600160e01b031991909116815260200190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526018908201527f4572726f723a204e6f205265636f726420466f756e6421210000000000000000604082015260600190565b6020808252818101527f596f752068617665206e6f20626f6e7573206c65667420746f20636c61696d21604082015260600190565b6020808252602b908201527f506c6561736520576169742074696c6c2074686520726577617264204765742060408201526a47656e657261746564212160a81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601d908201527f5374616b696e672069732043757272656e746c79205061757365642121000000604082015260600190565b60208082526025908201527f4f6f70732c206e6f7468696e67206c65667420696e2074686520726577617264604082015264081c1bdbdb60da1b606082015260800190565b90815260200190565b600082198211156120945761209461210a565b500190565b6000826120b457634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156120d3576120d361210a565b500290565b6000828210156120ea576120ea61210a565b500390565b60006000198214156121035761210361210a565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b8015158114611aa857600080fdfea2646970667358221220ae86e86dbe833836dc04226780af1a045b5c922171e6bf958bc847be7ab35c2e64736f6c63430008010033000000000000000000000000da9d418c4b8ac59a6ec92cdfdd514f75a0f44e18000000000000000000000000a2ae6273dd65f9fa76c3d383ede9c1261e025dac

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

000000000000000000000000da9d418c4b8ac59a6ec92cdfdd514f75a0f44e18000000000000000000000000a2ae6273dd65f9fa76c3d383ede9c1261e025dac

-----Decoded View---------------
Arg [0] : _nftAdr (address): 0xda9d418c4b8ac59a6ec92cdfdd514f75a0f44e18
Arg [1] : _token (address): 0xa2ae6273dd65f9fa76c3d383ede9c1261e025dac

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000da9d418c4b8ac59a6ec92cdfdd514f75a0f44e18
Arg [1] : 000000000000000000000000a2ae6273dd65f9fa76c3d383ede9c1261e025dac


Deployed ByteCode Sourcemap

21688:10072:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31193:143;;;;;;:::i;:::-;;:::i;:::-;;25041:173;;;;;;:::i;:::-;;:::i;6618:207::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31481:85;;;;;;:::i;:::-;;:::i;23476:477::-;;;:::i;24625:408::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;22345:48::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;31572:185::-;;;;;;:::i;:::-;;:::i;22634:73::-;;;;;;:::i;:::-;;:::i;24225:392::-;;;:::i;22229:49::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;21805:25::-;;;:::i;:::-;;;;;;;:::i;21925:23::-;;;:::i;:::-;;;;;;;:::i;30381:681::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2222:103::-;;;:::i;25222:1509::-;;;;;;:::i;:::-;;:::i;27992:1546::-;;;;;;:::i;:::-;;:::i;21888:30::-;;;:::i;1999:87::-;;;:::i;22400:46::-;;;;;;:::i;:::-;;:::i;21843:38::-;;;:::i;23961:256::-;;;:::i;22453:47::-;;;;;;:::i;:::-;;:::i;26743:1056::-;;;:::i;31344:129::-;;;;;;:::i;:::-;;:::i;22285:53::-;;;;;;:::i;:::-;;:::i;29550:823::-;;;;;;:::i;:::-;;:::i;21955:26::-;;;:::i;27807:177::-;;;;;;:::i;:::-;;:::i;22715:753::-;;;:::i;2333:201::-;;;;;;:::i;:::-;;:::i;31193:143::-;2145:12;:10;:12::i;:::-;-1:-1:-1;;;;;2134:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2134:23:0;;2126:68;;;;-1:-1:-1;;;2126:68:0;;;;;;;:::i;:::-;;;;;;;;;31290:37:::1;::::0;-1:-1:-1;;;31290:37:0;;-1:-1:-1;;;;;31257:21:0;::::1;::::0;::::1;::::0;31279:10:::1;::::0;31257:21;;31290:22:::1;::::0;:37:::1;::::0;31321:4:::1;::::0;31290:37:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31257:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31193:143:::0;:::o;25041:173::-;25108:6;25104:103;25119:20;;;25104:103;;;25170:25;25182:9;;25192:1;25182:12;;;;;-1:-1:-1;;;25182:12:0;;;;;;;;;;;;;;;25170:11;:25::i;:::-;25141:3;;;;:::i;:::-;;;;25104:103;;;;25041:173;;:::o;6618:207::-;-1:-1:-1;;;6618:207:0;;;;;;:::o;31481:85::-;2145:12;:10;:12::i;:::-;-1:-1:-1;;;;;2134:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2134:23:0;;2126:68;;;;-1:-1:-1;;;2126:68:0;;;;;;;:::i;:::-;31542:6:::1;:16:::0;;;::::1;;-1:-1:-1::0;;;31542:16:0::1;-1:-1:-1::0;;;;31542:16:0;;::::1;::::0;;;::::1;::::0;;31481:85::o;23476:477::-;2145:12;:10;:12::i;:::-;-1:-1:-1;;;;;2134:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2134:23:0;;2126:68;;;;-1:-1:-1;;;2126:68:0;;;;;;;:::i;:::-;23526:22:::1;23552:6;;23561:5;23552:14;;;;:::i;:::-;23551:26;::::0;23570:7:::1;23551:26;:::i;:::-;23642:7;::::0;23606::::1;::::0;:32:::1;::::0;-1:-1:-1;;;23606:32:0;;23526:51;;-1:-1:-1;23588:13:0::1;::::0;-1:-1:-1;;;;;23606:7:0;;::::1;::::0;:17:::1;::::0;:32:::1;::::0;23632:4:::1;::::0;23606:32:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23605:44;;;;:::i;:::-;23588:62;;23661:18;23706:14;23698:5;:22;23694:70;;;23738:22;23746:14:::0;23738:5;:22:::1;:::i;:::-;23724:37;;23694:70;23778:14:::0;;23774:172:::1;;23834:14;23847:1;23834:10:::0;:14:::1;:::i;:::-;23864:7;::::0;:39:::1;::::0;-1:-1:-1;;;23864:39:0;;23820:29;;-1:-1:-1;;;;;;23864:7:0::1;::::0;:16:::1;::::0;:39:::1;::::0;23881:10:::1;::::0;23820:29;;23864:39:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23918:16;23923:10;23918:4;:16::i;24625:408::-:0;24694:16;24723:28;24768:9;24773:4;24768:2;:9;:::i;:::-;24754:24;;;;;;-1:-1:-1;;;24754:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24754:24:0;-1:-1:-1;24723:55:0;-1:-1:-1;24789:6:0;;24824;24829:1;24824:4;:6;:::i;:::-;24815:15;;24810:187;24836:2;24832:1;:6;24810:187;;;24881:1;24864:14;;;:11;:14;;;;;;:18;24860:126;;24933:15;;;;:12;:15;;;;;;24916:14;;-1:-1:-1;;;;;24933:15:0;;;;24916:11;;24928:1;;24916:14;;;;-1:-1:-1;;;24916:14:0;;;;;;;;;-1:-1:-1;;;;;24916:32:0;;;:14;;;;;;;;;;;:32;24967:3;;;;:::i;:::-;;;;24860:126;24840:3;;;;:::i;:::-;;;;24810:187;;;-1:-1:-1;25014:11:0;;24625:408;-1:-1:-1;;;;24625:408:0:o;22345:48::-;;;;;;;;;;;;-1:-1:-1;;;;;22345:48:0;;:::o;31572:185::-;2145:12;:10;:12::i;:::-;-1:-1:-1;;;;;2134:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2134:23:0;;2126:68;;;;-1:-1:-1;;;2126:68:0;;;;;;;:::i;:::-;31717:7:::1;::::0;:32:::1;::::0;-1:-1:-1;;;31717:32:0;;31656:42:::1;::::0;-1:-1:-1;;;;;31717:7:0::1;::::0;:16:::1;::::0;:32:::1;::::0;31656:42;;31742:6;;31717:32:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;22634:73::-:0;2145:12;:10;:12::i;:::-;-1:-1:-1;;;;;2134:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2134:23:0;;2126:68;;;;-1:-1:-1;;;2126:68:0;;;;;;;:::i;:::-;22688:6:::1;:14:::0;22634:73::o;24225:392::-;24293:10;24265:13;24281:23;;;:11;:23;;;;;:37;24337:9;24329:54;;;;-1:-1:-1;;;24329:54:0;;;;;;;:::i;:::-;24402:7;;:32;;-1:-1:-1;;;24402:32:0;;24438:5;;-1:-1:-1;;;;;24402:7:0;;:17;;:32;;24428:4;;24402:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:41;;24394:91;;;;-1:-1:-1;;;24394:91:0;;;;;;;:::i;:::-;24508:10;24536:1;24496:23;;;:11;:23;;;;;:41;;;24548:7;:16;;24559:5;;24536:1;24548:16;;24559:5;;24548:16;:::i;:::-;;;;-1:-1:-1;;24575:7:0;;:34;;-1:-1:-1;;;24575:34:0;;-1:-1:-1;;;;;24575:7:0;;;;:16;;:34;;24592:10;;24603:5;;24575:34;;;:::i;22229:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22229:49:0;;;;-1:-1:-1;22229:49:0;;-1:-1:-1;22229:49:0;;;:::o;21805:25::-;;;-1:-1:-1;;;21805:25:0;;;;;:::o;21925:23::-;;;;:::o;30381:681::-;30439:16;30486:4;30468:15;30522:18;30486:4;30522:9;:18::i;:::-;30501:39;;30551:30;30598:13;30584:28;;;;;;-1:-1:-1;;;30584:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30584:28:0;-1:-1:-1;30551:61:0;-1:-1:-1;30628:17:0;;30625:392;;-1:-1:-1;;;;;30687:19:0;;30662:22;30687:19;;;:10;:19;;;;;;30746:184;30756:13;30752:1;:17;30746:184;;;30793:3;30797:1;30793:6;;;;;;-1:-1:-1;;;30793:6:0;;;;;;;;;;;;;;;;;;;:16;;;30813:1;30793:21;30790:103;;;30858:3;30862:1;30858:6;;;;;;-1:-1:-1;;;30858:6:0;;;;;;;;;;;;;;;;;;;:15;;;30839:13;30853:1;30839:16;;;;;;-1:-1:-1;;;30839:16:0;;;;;;;;;;;;;;:34;;;;;30790:103;30911:3;;;;:::i;:::-;;;;30746:184;;;30625:392;;;;;30971:34;;-1:-1:-1;;;30971:34:0;;;;;;;:::i;30625:392::-;31036:13;-1:-1:-1;;;30381:681:0;;;;:::o;2222:103::-;2145:12;:10;:12::i;:::-;-1:-1:-1;;;;;2134:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2134:23:0;;2126:68;;;;-1:-1:-1;;;2126:68:0;;;;;;;:::i;:::-;2287:30:::1;2314:1;2287:18;:30::i;:::-;2222:103::o:0;25222:1509::-;25285:6;;-1:-1:-1;;;25285:6:0;;;;25284:7;25276:48;;;;-1:-1:-1;;;25276:48:0;;;;;;;:::i;:::-;25374:3;;:58;;-1:-1:-1;;;25374:58:0;;25353:10;;-1:-1:-1;;;;;25374:3:0;;:20;;:58;;25353:10;;25412:4;;25420:8;;25374:58;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25443:18;25464;25474:7;25464:9;:18::i;:::-;25443:39;-1:-1:-1;25493:12:0;25519:17;;25516:520;;-1:-1:-1;;;;;25581:19:0;;25553:25;25581:19;;;:10;:19;;;;;;25640:385;25650:13;25646:1;:17;25640:385;;;-1:-1:-1;;;;;25687:19:0;;;;;;:10;:19;;;;;:22;;25722:8;;25687:19;25707:1;;25687:22;;;;-1:-1:-1;;;25687:22:0;;;;;;;;;;;;;;;;;;;:31;;;:43;25684:304;;;25777:1;25755:6;25762:1;25755:9;;;;;;-1:-1:-1;;;25755:9:0;;;;;;;;;;;;;;;;;;;:19;;:23;;;;25825:15;25801:6;25808:1;25801:9;;;;;;-1:-1:-1;;;25801:9:0;;;;;;;;;;;;;;;;;;;:21;;:39;;;;25888:15;25863:6;25870:1;25863:9;;;;;;-1:-1:-1;;;25863:9:0;;;;;;;;;;;;;;;;;;;:22;;:40;;;;25936:4;25926:14;;25963:5;;25684:304;26006:3;;;;:::i;:::-;;;;25640:385;;;25516:520;;;26050:7;26046:343;;-1:-1:-1;;;;;26074:19:0;;;;;;;:10;:19;;;;;;;;26117:245;;;;;;;;;;;;;;;;26238:1;26117:245;;;;;;26275:15;26117:245;;;;;;;;;;;;26074:303;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26074:303:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26046:343;26416:1;26401:11;;:16;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;26432:19:0;;;;;;:10;:19;;;;;;26428:296;;26495:4;;;26482:18;;;;:12;:18;;;;;;;;:28;;-1:-1:-1;;;;;;26482:28:0;-1:-1:-1;;;;;26482:28:0;;;;;26537:4;;26525:17;;:11;:17;;;;;:22;;-1:-1:-1;;26482:18:0;26525:22;;-1:-1:-1;;26525:22:0;:::i;:::-;;;;-1:-1:-1;;26584:4:0;;;-1:-1:-1;;;;;26562:19:0;;;;;;:10;:19;;;;;:26;;;26611:1;;26584:4;26603:9;;26611:1;;26603:9;:::i;:::-;;;;-1:-1:-1;26428:296:0;;-1:-1:-1;26428:296:0;;-1:-1:-1;;;;;26687:19:0;;26675:32;26687:19;;;:10;:19;;;;;;;;;26675:32;;:11;:32;;;;;:37;;26711:1;;26675:32;:37;;26711:1;;26675:37;:::i;:::-;;;;-1:-1:-1;;26428:296:0;25222:1509;;;;:::o;27992:1546::-;28057:6;;-1:-1:-1;;;28057:6:0;;;;28056:7;28048:48;;;;-1:-1:-1;;;28048:48:0;;;;;;;:::i;:::-;28125:10;28107:15;28167:18;28125:10;28167:9;:18::i;:::-;28146:39;;28196:22;28221;28235:7;28221:13;:22::i;:::-;28196:47;;28254:6;28271:10;28292:19;28322:168;28332:13;28328:1;:17;28322:168;;;28380:8;28365;28374:1;28365:11;;;;;;-1:-1:-1;;;28365:11:0;;;;;;;;;;;;;;;:23;28362:99;;;28417:4;28409:12;;28440:5;;28362:99;28475:3;;;;:::i;:::-;;;;28322:168;;;28505:5;28502:1019;;;28532:17;;28529:621;;-1:-1:-1;;;;;28598:19:0;;28570:25;28598:19;;;:10;:19;;;;;;28665:470;28675:13;28671:1;:17;28665:470;;;28713:14;28779:8;28757:6;28764:1;28757:9;;;;;;-1:-1:-1;;;28757:9:0;;;;;;;;;;;;;;;;;;;:18;;;:30;28754:336;;;28843:6;28850:1;28843:9;;;;;;-1:-1:-1;;;28843:9:0;;;;;;;;;;;;;;;;;;;:22;;;28825:15;:40;;;;:::i;:::-;28816:49;-1:-1:-1;28892:24:0;28816:49;28892:24;;:::i;:::-;;;28969:15;28943:6;28950:1;28943:9;;;;;;-1:-1:-1;;;28943:9:0;;;;;;;;;;;;;;;;;;;:22;;:41;;;;29033:1;29011:6;29018:1;29011:9;;;;;;-1:-1:-1;;;29011:9:0;;;;;;;;;;;;;;;;;;;:19;;:23;;;;29061:5;;;28754:336;29112:3;;;;:::i;:::-;;;;28665:470;;;;28529:621;;;29193:1;29178:11;;:16;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;29221:19:0;;29209:32;29221:19;;;:10;:19;;;;;;;;;29209:32;;:11;:32;;;;;:37;;29245:1;;29209:32;:37;;29245:1;;29209:37;:::i;:::-;;;;-1:-1:-1;;29290:6:0;;29263:24;;29290:23;;29299:14;;29290:23;:::i;:::-;29328:7;;:42;;-1:-1:-1;;;29328:42:0;;29263:50;;-1:-1:-1;;;;;;29328:7:0;;:16;;:42;;29345:7;;29263:50;;29328:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;29385:3:0;;:49;;-1:-1:-1;;;29385:49:0;;-1:-1:-1;;;;;29385:3:0;;;;:16;;:49;;29410:4;;29416:7;;29425:8;;29385:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28502:1019;27992:1546;;;;;;;:::o;21888:30::-;;;;:::o;1999:87::-;2045:7;2072:6;-1:-1:-1;;;;;2072:6:0;1999:87;;:::o;22400:46::-;;;;;;;;;;;;;:::o;21843:38::-;;;;:::o;23961:256::-;24040:10;24004:7;24028:23;;;:11;:23;;;;;:37;:41;24024:186;;-1:-1:-1;24114:10:0;24102:23;;;;:11;:23;;;;;:37;24095:44;;24024:186;-1:-1:-1;24197:1:0;24190:8;;22453:47;;;;;;;;;;;;;:::o;26743:1056::-;26793:6;;-1:-1:-1;;;26793:6:0;;;;26792:7;26784:48;;;;-1:-1:-1;;;26784:48:0;;;;;;;:::i;:::-;26861:10;26843:15;;26939:18;26861:10;26939:9;:18::i;:::-;26918:39;-1:-1:-1;26971:17:0;;26968:563;;-1:-1:-1;;;;;27033:19:0;;27005:25;27033:19;;;:10;:19;;;;;;27092:353;27102:13;27098:1;:17;27092:353;;;27136:14;27176:6;27183:1;27176:9;;;;;;-1:-1:-1;;;27176:9:0;;;;;;;;;;;;;;;;;;;:19;;;27199:1;27176:24;27173:235;;;27252:6;27259:1;27252:9;;;;;;-1:-1:-1;;;27252:9:0;;;;;;;;;;;;;;;;;;;:22;;;27234:15;:40;;;;:::i;:::-;27225:49;-1:-1:-1;27297:27:0;27225:49;27297:27;;:::i;:::-;;;27373:15;27347:6;27354:1;27347:9;;;;;;-1:-1:-1;;;27347:9:0;;;;;;;;;;;;;;;;;;;:22;;:41;;;;27173:235;27426:3;;;;:::i;:::-;;;;27092:353;;;;26968:563;;27543:22;27577:17;27568:6;;:26;;;;:::i;:::-;27543:51;-1:-1:-1;27608:18:0;;27605:185;;27643:7;;:40;;-1:-1:-1;;;27643:40:0;;-1:-1:-1;;;;;27643:7:0;;;;:16;;:40;;27660:7;;27668:14;;27643:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27605:185;;;27725:53;;-1:-1:-1;;;27725:53:0;;;;;;;:::i;31344:129::-;2145:12;:10;:12::i;:::-;-1:-1:-1;;;;;2134:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2134:23:0;;2126:68;;;;-1:-1:-1;;;2126:68:0;;;;;;;:::i;:::-;31419:3:::1;::::0;:46:::1;::::0;-1:-1:-1;;;31419:46:0;;-1:-1:-1;;;;;31419:3:0;;::::1;::::0;:16:::1;::::0;:46:::1;::::0;31444:4:::1;::::0;31450:9;;31461:3;;31419:46:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;31344:129:::0;;:::o;22285:53::-;;;;;;;;;;;;;:::o;29550:823::-;29606:7;29644:4;29606:7;;29716:18;29644:4;29716:9;:18::i;:::-;29695:39;-1:-1:-1;29748:17:0;;29745:424;;-1:-1:-1;;;;;29810:19:0;;29782:25;29810:19;;;:10;:19;;;;;;29869:289;29879:13;29875:1;:17;29869:289;;;29913:14;29953:6;29960:1;29953:9;;;;;;-1:-1:-1;;;29953:9:0;;;;;;;;;;;;;;;;;;;:19;;;29976:1;29953:24;29950:171;;;30029:6;30036:1;30029:9;;;;;;-1:-1:-1;;;30029:9:0;;;;;;;;;;;;;;;;;;;:22;;;30011:15;:40;;;;:::i;:::-;30002:49;-1:-1:-1;30074:27:0;30002:49;30074:27;;:::i;:::-;;;29950:171;30139:3;;;;:::i;:::-;;;;29869:289;;;;29745:424;;;30181:22;30215:17;30206:6;;:26;;;;:::i;:::-;30181:51;-1:-1:-1;30246:18:0;;30243:121;;30288:14;-1:-1:-1;30281:21:0;;-1:-1:-1;;;30281:21:0;30243:121;30351:1;30344:8;;;;;;;;21955:26;;;;:::o;27807:177::-;27876:6;27872:105;27887:20;;;27872:105;;;27938:27;27952:9;;27962:1;27952:12;;;;;-1:-1:-1;;;27952:12:0;;;;;;;;;;;;;;;27938:13;:27::i;:::-;27909:3;;;;:::i;:::-;;;;27872:105;;22715:753;2145:12;:10;:12::i;:::-;-1:-1:-1;;;;;2134:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2134:23:0;;2126:68;;;;-1:-1:-1;;;2126:68:0;;;;;;;:::i;:::-;22765:22:::1;22792:6;;22801:5;22792:14;;;;:::i;:::-;22791:26;::::0;22810:7:::1;22791:26;:::i;:::-;22883:7;::::0;22847::::1;::::0;:32:::1;::::0;-1:-1:-1;;;22847:32:0;;22765:53;;-1:-1:-1;22829:13:0::1;::::0;-1:-1:-1;;;;;22847:7:0;;::::1;::::0;:17:::1;::::0;:32:::1;::::0;22873:4:::1;::::0;22847:32:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22846:44;;;;:::i;:::-;22829:62;;22902:18;22947:14;22939:5;:22;22935:70;;;22979:22;22987:14:::0;22979:5;:22:::1;:::i;:::-;22965:37;;22935:70;23019:14:::0;;23015:446:::1;;23097:11;::::0;23061:14:::1;::::0;23079::::1;23092:1;23079:10:::0;:14:::1;:::i;:::-;23078:30;;;;:::i;:::-;23061:47;;23127:6;23123:292;23143:4;;23139:1;:8;23123:292;;;23207:1;23190:14:::0;;;:11:::1;:14;::::0;;;;;:18;23186:214:::1;;23306:14;::::0;;;:11:::1;:14;::::0;;;;;23297:23:::1;::::0;:6;:23:::1;:::i;:::-;23250:28;23262:15:::0;;;:12:::1;:15;::::0;;;;;;;;-1:-1:-1;;;;;23262:15:0::1;23250:28:::0;;:11:::1;:28:::0;;;;;:71;;:28;;;:71:::1;::::0;;;::::1;:::i;:::-;::::0;;;-1:-1:-1;;23365:14:0::1;::::0;;;:11:::1;:14;::::0;;;;;23356:23:::1;::::0;:6;:23:::1;:::i;:::-;23344:7;;:36;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;23186:214:0::1;23149:3:::0;::::1;::::0;::::1;:::i;:::-;;;;23123:292;;;-1:-1:-1::0;23429:20:0::1;23434:14;23447:1;23434:10:::0;:14:::1;:::i;2333:201::-:0;2145:12;:10;:12::i;:::-;-1:-1:-1;;;;;2134:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2134:23:0;;2126:68;;;;-1:-1:-1;;;2126:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2422:22:0;::::1;2414:73;;;;-1:-1:-1::0;;;2414:73:0::1;;;;;;;:::i;:::-;2498:28;2517:8;2498:18;:28::i;:::-;2333:201:::0;:::o;1545:98::-;1625:10;1545:98;:::o;31074:111::-;-1:-1:-1;;;;;31154:16:0;31130:4;31154:16;;;:10;:16;;;;;:23;;31074:111::o;2542:191::-;2616:16;2635:6;;-1:-1:-1;;;;;2652:17:0;;;-1:-1:-1;;;;;;2652:17:0;;;;;;2685:40;;2635:6;;;;;;;2685:40;;2616:16;2685:40;2542:191;;:::o;14:175:1:-;84:20;;-1:-1:-1;;;;;133:31:1;;123:42;;113:2;;179:1;176;169:12;194:198;;306:2;294:9;285:7;281:23;277:32;274:2;;;327:6;319;312:22;274:2;355:31;376:9;355:31;:::i;:::-;345:41;264:128;-1:-1:-1;;;264:128:1:o;397:1187::-;;;;;569:3;557:9;548:7;544:23;540:33;537:2;;;591:6;583;576:22;537:2;619:31;640:9;619:31;:::i;:::-;609:41;;669:40;705:2;694:9;690:18;669:40;:::i;:::-;659:50;;756:2;745:9;741:18;728:32;718:42;;811:2;800:9;796:18;783:32;834:18;875:2;867:6;864:14;861:2;;;896:6;888;881:22;861:2;939:6;928:9;924:22;914:32;;984:7;977:4;973:2;969:13;965:27;955:2;;1011:6;1003;996:22;955:2;1052;1039:16;1074:2;1070;1067:10;1064:2;;;1080:18;;:::i;:::-;1155:2;1149:9;1123:2;1209:13;;-1:-1:-1;;1205:22:1;;;1229:2;1201:31;1197:40;1185:53;;;1253:18;;;1273:22;;;1250:46;1247:2;;;1299:18;;:::i;:::-;1339:10;1335:2;1328:22;1374:2;1366:6;1359:18;1414:7;1409:2;1404;1400;1396:11;1392:20;1389:33;1386:2;;;1440:6;1432;1425:22;1386:2;1501;1496;1492;1488:11;1483:2;1475:6;1471:15;1458:46;1524:15;;;1541:2;1520:24;1513:40;;;;527:1057;;;;-1:-1:-1;527:1057:1;;-1:-1:-1;;;;527:1057:1:o;1589:266::-;;;1718:2;1706:9;1697:7;1693:23;1689:32;1686:2;;;1739:6;1731;1724:22;1686:2;1767:31;1788:9;1767:31;:::i;:::-;1757:41;1845:2;1830:18;;;;1817:32;;-1:-1:-1;;;1676:179:1:o;1860:666::-;;;2007:2;1995:9;1986:7;1982:23;1978:32;1975:2;;;2028:6;2020;2013:22;1975:2;2073:9;2060:23;2102:18;2143:2;2135:6;2132:14;2129:2;;;2164:6;2156;2149:22;2129:2;2207:6;2196:9;2192:22;2182:32;;2252:7;2245:4;2241:2;2237:13;2233:27;2223:2;;2279:6;2271;2264:22;2223:2;2324;2311:16;2350:2;2342:6;2339:14;2336:2;;;2371:6;2363;2356:22;2336:2;2430:7;2425:2;2419;2411:6;2407:15;2403:2;2399:24;2395:33;2392:46;2389:2;;;2456:6;2448;2441:22;2389:2;2492;2484:11;;;;;2514:6;;-1:-1:-1;1965:561:1;;-1:-1:-1;;;;1965:561:1:o;2531:253::-;;2640:2;2628:9;2619:7;2615:23;2611:32;2608:2;;;2661:6;2653;2646:22;2608:2;2705:9;2692:23;2724:30;2748:5;2724:30;:::i;2789:257::-;;2909:2;2897:9;2888:7;2884:23;2880:32;2877:2;;;2930:6;2922;2915:22;2877:2;2967:9;2961:16;2986:30;3010:5;2986:30;:::i;3051:190::-;;3163:2;3151:9;3142:7;3138:23;3134:32;3131:2;;;3184:6;3176;3169:22;3131:2;-1:-1:-1;3212:23:1;;3121:120;-1:-1:-1;3121:120:1:o;3246:194::-;;3369:2;3357:9;3348:7;3344:23;3340:32;3337:2;;;3390:6;3382;3375:22;3337:2;-1:-1:-1;3418:16:1;;3327:113;-1:-1:-1;3327:113:1:o;3445:266::-;;;3574:2;3562:9;3553:7;3549:23;3545:32;3542:2;;;3595:6;3587;3580:22;3542:2;3636:9;3623:23;3613:33;;3665:40;3701:2;3690:9;3686:18;3665:40;:::i;:::-;3655:50;;3532:179;;;;;:::o;3716:258::-;;;3845:2;3833:9;3824:7;3820:23;3816:32;3813:2;;;3866:6;3858;3851:22;3813:2;-1:-1:-1;;3894:23:1;;;3964:2;3949:18;;;3936:32;;-1:-1:-1;3803:171:1:o;3979:203::-;-1:-1:-1;;;;;4143:32:1;;;;4125:51;;4113:2;4098:18;;4080:102::o;4187:375::-;-1:-1:-1;;;;;4445:15:1;;;4427:34;;4497:15;;;;4492:2;4477:18;;4470:43;4544:2;4529:18;;4522:34;;;;4377:2;4362:18;;4344:218::o;4567:558::-;-1:-1:-1;;;;;4890:15:1;;;4872:34;;4942:15;;;;4937:2;4922:18;;4915:43;4989:2;4974:18;;4967:34;;;;5037:3;5032:2;5017:18;;5010:31;;;4567:558;5057:19;;;5050:33;4852:3;5100:19;;4824:301::o;5130:274::-;-1:-1:-1;;;;;5322:32:1;;;;5304:51;;5386:2;5371:18;;5364:34;5292:2;5277:18;;5259:145::o;5409:489::-;-1:-1:-1;;;;;5686:32:1;;;;5668:51;;5750:2;5735:18;;5728:34;;;;5793:2;5778:18;;5771:34;;;;5836:2;5821:18;;5814:34;5879:3;5864:19;;5857:35;5655:3;5640:19;;5622:276::o;5903:661::-;6074:2;6126:21;;;6196:13;;6099:18;;;6218:22;;;5903:661;;6074:2;6297:15;;;;6271:2;6256:18;;;5903:661;6343:195;6357:6;6354:1;6351:13;6343:195;;;6422:13;;-1:-1:-1;;;;;6418:39:1;6406:52;;6513:15;;;;6478:12;;;;6454:1;6372:9;6343:195;;;-1:-1:-1;6555:3:1;;6054:510;-1:-1:-1;;;;;;6054:510:1:o;6569:635::-;6740:2;6792:21;;;6862:13;;6765:18;;;6884:22;;;6569:635;;6740:2;6963:15;;;;6937:2;6922:18;;;6569:635;7009:169;7023:6;7020:1;7017:13;7009:169;;;7084:13;;7072:26;;7153:15;;;;7118:12;;;;7045:1;7038:9;7009:169;;7209:187;7374:14;;7367:22;7349:41;;7337:2;7322:18;;7304:92::o;7401:202::-;-1:-1:-1;;;;;;7563:33:1;;;;7545:52;;7533:2;7518:18;;7500:103::o;7608:402::-;7810:2;7792:21;;;7849:2;7829:18;;;7822:30;7888:34;7883:2;7868:18;;7861:62;-1:-1:-1;;;7954:2:1;7939:18;;7932:36;8000:3;7985:19;;7782:228::o;8015:348::-;8217:2;8199:21;;;8256:2;8236:18;;;8229:30;8295:26;8290:2;8275:18;;8268:54;8354:2;8339:18;;8189:174::o;8368:356::-;8570:2;8552:21;;;8589:18;;;8582:30;8648:34;8643:2;8628:18;;8621:62;8715:2;8700:18;;8542:182::o;8729:407::-;8931:2;8913:21;;;8970:2;8950:18;;;8943:30;9009:34;9004:2;8989:18;;8982:62;-1:-1:-1;;;9075:2:1;9060:18;;9053:41;9126:3;9111:19;;8903:233::o;9141:356::-;9343:2;9325:21;;;9362:18;;;9355:30;9421:34;9416:2;9401:18;;9394:62;9488:2;9473:18;;9315:182::o;9502:353::-;9704:2;9686:21;;;9743:2;9723:18;;;9716:30;9782:31;9777:2;9762:18;;9755:59;9846:2;9831:18;;9676:179::o;9860:401::-;10062:2;10044:21;;;10101:2;10081:18;;;10074:30;10140:34;10135:2;10120:18;;10113:62;-1:-1:-1;;;10206:2:1;10191:18;;10184:35;10251:3;10236:19;;10034:227::o;10266:177::-;10412:25;;;10400:2;10385:18;;10367:76::o;10448:128::-;;10519:1;10515:6;10512:1;10509:13;10506:2;;;10525:18;;:::i;:::-;-1:-1:-1;10561:9:1;;10496:80::o;10581:217::-;;10647:1;10637:2;;-1:-1:-1;;;10672:31:1;;10726:4;10723:1;10716:15;10754:4;10679:1;10744:15;10637:2;-1:-1:-1;10783:9:1;;10627:171::o;10803:168::-;;10909:1;10905;10901:6;10897:14;10894:1;10891:21;10886:1;10879:9;10872:17;10868:45;10865:2;;;10916:18;;:::i;:::-;-1:-1:-1;10956:9:1;;10855:116::o;10976:125::-;;11044:1;11041;11038:8;11035:2;;;11049:18;;:::i;:::-;-1:-1:-1;11086:9:1;;11025:76::o;11106:135::-;;-1:-1:-1;;11166:17:1;;11163:2;;;11186:18;;:::i;:::-;-1:-1:-1;11233:1:1;11222:13;;11153:88::o;11246:127::-;11307:10;11302:3;11298:20;11295:1;11288:31;11338:4;11335:1;11328:15;11362:4;11359:1;11352:15;11378:127;11439:10;11434:3;11430:20;11427:1;11420:31;11470:4;11467:1;11460:15;11494:4;11491:1;11484:15;11510:120;11598:5;11591:13;11584:21;11577:5;11574:32;11564:2;;11620:1;11617;11610:12

Swarm Source

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