Contract 0x25ad59adbe00c2d80c86d01e2e05e1294da84823 1

Contract Overview

Balance:
70.291772292306952883 MATIC

Token:
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0x710395e6e9b86b09e8a58a03ccbdde1b0e27f37add3fc441eb194ff2a4b31505Exec With Sigs336346852023-03-27 14:46:312 mins ago0x94d39db37b6f18fdea7c6d730e4e6502c7d27700 IN  0x25ad59adbe00c2d80c86d01e2e05e1294da848230 MATIC0.000596251506 1.500000016
0xb9038f7640b247c604066787a8a9bac6e5ef260621dd1346d2c43321b7854f5bExec336346682023-03-27 14:45:553 mins ago0x41e5d6bdf32d1acb1ab0abee083a211385591e62 IN  0x25ad59adbe00c2d80c86d01e2e05e1294da848230 MATIC0.001395748515 1.500000017
0xf0f4c655ac886759b7b3e5da85327b0497db9d87dbd5ab8c48e97580b18d84abExec336346492023-03-27 14:45:153 mins ago0x94d39db37b6f18fdea7c6d730e4e6502c7d27700 IN  0x25ad59adbe00c2d80c86d01e2e05e1294da848230 MATIC0.001396164014 1.500000016
0xfd93845a36edcc7f578287668a40b172eb68081c24b1ca51e7ab9a7d4529bc7bExec336346372023-03-27 14:44:494 mins ago0x94d39db37b6f18fdea7c6d730e4e6502c7d27700 IN  0x25ad59adbe00c2d80c86d01e2e05e1294da848230 MATIC0.001146409461 1.550000016
0xbaf961ecfcc197eb4308d1a84f2fb28e85b4f4d572cff35f92e2b6417df6b656Exec336346042023-03-27 14:43:395 mins ago0x65df3eac43c1f09363ef59178867d63563fe0c0c IN  0x25ad59adbe00c2d80c86d01e2e05e1294da848230 MATIC0.001006550951 1.810193673
0x24e601a40b668adfafda5cfa8e91ec88e5735007c2a00ea1e2352225e5150789Exec336344702023-03-27 14:38:5510 mins ago0x41e5d6bdf32d1acb1ab0abee083a211385591e62 IN  0x25ad59adbe00c2d80c86d01e2e05e1294da848230 MATIC0.000281291202 1.600000017
0xf197921413c389685576159b8e65b1b7f87087206d5cf0f0c9572b9f54d76de7Exec336343572023-03-27 14:34:5514 mins ago0x65df3eac43c1f09363ef59178867d63563fe0c0c IN  0x25ad59adbe00c2d80c86d01e2e05e1294da848230 MATIC0.001152720877 1.55853335
0xea571878ebe448a305a37fdc5967e73540a1f0dc9378c10b789b4c0b71eb04fdExec336343512023-03-27 14:34:4114 mins ago0x41e5d6bdf32d1acb1ab0abee083a211385591e62 IN  0x25ad59adbe00c2d80c86d01e2e05e1294da848230 MATIC0.001405293905 1.493533349
0xbb1beab0b1fb2136d2fb476301b2c574cfd50ca6e168a2b1f050eda38d8b128eExec336343502023-03-27 14:34:3914 mins ago0x65df3eac43c1f09363ef59178867d63563fe0c0c IN  0x25ad59adbe00c2d80c86d01e2e05e1294da848230 MATIC0.000830211876 1.493533349
0x4384acac64b2e7e12bfd76b7cdf64d9be160b90df3374849de8fc624117b6f04Exec With Sigs336342732023-03-27 14:31:5717 mins ago0x41e5d6bdf32d1acb1ab0abee083a211385591e62 IN  0x25ad59adbe00c2d80c86d01e2e05e1294da848230 MATIC0.000227033848 1.6649715
0x9b23ac56878ca5b00388b577a552143c28d0faa0a61208c5016a2b2555cb9a25Exec336342672023-03-27 14:31:4317 mins ago0x41e5d6bdf32d1acb1ab0abee083a211385591e62 IN  0x25ad59adbe00c2d80c86d01e2e05e1294da848230 MATIC0.000211214511 1.489555571
0xb13e04ec49a1fe78e0f5a5da1b62d21d3f20f7c15587f0703e8c660815666ae2Exec336342102023-03-27 14:29:4319 mins ago0x94d39db37b6f18fdea7c6d730e4e6502c7d27700 IN  0x25ad59adbe00c2d80c86d01e2e05e1294da848230 MATIC0.000225608547 1.59106714
0x851573589552cdd12308881958500f4ac1dc40aa396c8a004bd76b3a00004087Exec336341732023-03-27 14:28:2320 mins ago0x94d39db37b6f18fdea7c6d730e4e6502c7d27700 IN  0x25ad59adbe00c2d80c86d01e2e05e1294da848230 MATIC0.001131617081 1.530000016
0x4e48bf2b2b846114dd69eef3012624edd73f599f51e19fd4ff6cc99daa25ed6bExec336341642023-03-27 14:28:0520 mins ago0x94d39db37b6f18fdea7c6d730e4e6502c7d27700 IN  0x25ad59adbe00c2d80c86d01e2e05e1294da848230 MATIC0.000408865504 1.500000016
0x2756b69e8f6c0e52ec1bde3a15df276ed84582a31bc4290eb7eac45a7f7a5c33Exec336341542023-03-27 14:27:4321 mins ago0x94d39db37b6f18fdea7c6d730e4e6502c7d27700 IN  0x25ad59adbe00c2d80c86d01e2e05e1294da848230 MATIC0.00021879103 1.542857159
0x79bd72db96aef6e210f0d3e6f977a21ef29a60c388058297d0a2a6a0e904ec8cExec336340632023-03-27 14:24:2924 mins ago0x65df3eac43c1f09363ef59178867d63563fe0c0c IN  0x25ad59adbe00c2d80c86d01e2e05e1294da848230 MATIC0.001109428512 1.500000017
0x14bd65df44cb08678b2efa7f03fa659d91c56b357443b5e5c296e0cd8a6024d1Exec336340572023-03-27 14:24:1724 mins ago0x41e5d6bdf32d1acb1ab0abee083a211385591e62 IN  0x25ad59adbe00c2d80c86d01e2e05e1294da848230 MATIC0.001411854016 1.500000017
0x60f2f19794fbbb4e50fd3b8c6ebf99d85e153749069a74aaa8cb13eef9595d5eExec336340572023-03-27 14:24:1724 mins ago0x65df3eac43c1f09363ef59178867d63563fe0c0c IN  0x25ad59adbe00c2d80c86d01e2e05e1294da848230 MATIC0.000834147009 1.500000017
0x2ec89028f8f82235ac997f166ccb02841637427b214692eda4586677b380a3fbExec336340332023-03-27 14:23:2725 mins ago0x94d39db37b6f18fdea7c6d730e4e6502c7d27700 IN  0x25ad59adbe00c2d80c86d01e2e05e1294da848230 MATIC0.001429569571 1.555555573
0x61e6492b5e31e802b7b6c78927cacf3f63e2d07e6481d7007d4dde6a001c6f6aExec336339842023-03-27 14:21:4327 mins ago0x94d39db37b6f18fdea7c6d730e4e6502c7d27700 IN  0x25ad59adbe00c2d80c86d01e2e05e1294da848230 MATIC0.000228055503 1.500000023
0x668ae75572ccf9b0b45da73adce1ecc35e75cbe24c1744667c3f9c1a73b306baExec336338142023-03-27 14:15:4133 mins ago0x41e5d6bdf32d1acb1ab0abee083a211385591e62 IN  0x25ad59adbe00c2d80c86d01e2e05e1294da848230 MATIC0.001109428515 1.500000021
0xa82e1213e8443ad07cca8c351985c807116d19d228ae058efd1f7e1ce32bdc38Exec336337572023-03-27 14:13:3935 mins ago0x94d39db37b6f18fdea7c6d730e4e6502c7d27700 IN  0x25ad59adbe00c2d80c86d01e2e05e1294da848230 MATIC0.000203922002 1.500000016
0x65454775e948b39219b9e7c3bf8f5618f67d18f1a28e4455aa84b6124f10b335Exec336337062023-03-27 14:11:5137 mins ago0x65df3eac43c1f09363ef59178867d63563fe0c0c IN  0x25ad59adbe00c2d80c86d01e2e05e1294da848230 MATIC0.001395700515 1.500000017
0xdc46d5d1eda599cf452e12dfecd7fabfb61be45cf3ede1f490f42c94028ee2f4Exec336336652023-03-27 14:10:2538 mins ago0x65df3eac43c1f09363ef59178867d63563fe0c0c IN  0x25ad59adbe00c2d80c86d01e2e05e1294da848230 MATIC0.001109428514 1.50000002
0x5b8517c0e0024123b927e035549a2a3f131e3198f997ede357c87b5b713a3666Exec336336472023-03-27 14:09:4539 mins ago0x41e5d6bdf32d1acb1ab0abee083a211385591e62 IN  0x25ad59adbe00c2d80c86d01e2e05e1294da848230 MATIC0.000207615002 1.500000021
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xb9038f7640b247c604066787a8a9bac6e5ef260621dd1346d2c43321b7854f5b336346682023-03-27 14:45:553 mins ago 0xca922557e13be58e1889f5d5cfbbe8f98ae67298 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.00154615501649232 MATIC
0xf0f4c655ac886759b7b3e5da85327b0497db9d87dbd5ab8c48e97580b18d84ab336346492023-03-27 14:45:153 mins ago 0xd3b6767173fe6c9d60938713bb7578fbab80947e 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.001546648516497584 MATIC
0xfd93845a36edcc7f578287668a40b172eb68081c24b1ca51e7ab9a7d4529bc7b336346372023-03-27 14:44:494 mins ago 0x21a682c4a8e316ef93d3d79f462d2f2e7393222b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.001242272312823456 MATIC
0xf197921413c389685576159b8e65b1b7f87087206d5cf0f0c9572b9f54d76de7336343572023-03-27 14:34:5514 mins ago 0x21a682c4a8e316ef93d3d79f462d2f2e7393222b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.001249111489089634 MATIC
0xea571878ebe448a305a37fdc5967e73540a1f0dc9378c10b789b4c0b71eb04fd336343512023-03-27 14:34:4114 mins ago 0xca922557e13be58e1889f5d5cfbbe8f98ae67298 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.0015450602495405 MATIC
0x851573589552cdd12308881958500f4ac1dc40aa396c8a004bd76b3a00004087336341732023-03-27 14:28:2320 mins ago 0x21a682c4a8e316ef93d3d79f462d2f2e7393222b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.001226242992823456 MATIC
0x4e48bf2b2b846114dd69eef3012624edd73f599f51e19fd4ff6cc99daa25ed6b336341642023-03-27 14:28:0520 mins ago 0x7d3a6b49f547ad0b1bb8fef326818b2735a53142 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.000506269505400208 MATIC
0x79bd72db96aef6e210f0d3e6f977a21ef29a60c388058297d0a2a6a0e904ec8c336340632023-03-27 14:24:2924 mins ago 0x21a682c4a8e316ef93d3d79f462d2f2e7393222b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.001202199013624922 MATIC
0x14bd65df44cb08678b2efa7f03fa659d91c56b357443b5e5c296e0cd8a6024d1336340572023-03-27 14:24:1724 mins ago 0xd3b6767173fe6c9d60938713bb7578fbab80947e 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.001562239517705381 MATIC
0x2ec89028f8f82235ac997f166ccb02841637427b214692eda4586677b380a3fb336340332023-03-27 14:23:2725 mins ago 0xca922557e13be58e1889f5d5cfbbe8f98ae67298 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.001582609795525616 MATIC
0x668ae75572ccf9b0b45da73adce1ecc35e75cbe24c1744667c3f9c1a73b306ba336338142023-03-27 14:15:4133 mins ago 0x21a682c4a8e316ef93d3d79f462d2f2e7393222b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.001202199016830786 MATIC
0xa82e1213e8443ad07cca8c351985c807116d19d228ae058efd1f7e1ce32bdc38336337572023-03-27 14:13:3935 mins ago 0xdbf4e075d4bdabf895800d217ec61cffe70b7ee8 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.00025249500269328 MATIC
0x65454775e948b39219b9e7c3bf8f5618f67d18f1a28e4455aa84b6124f10b335336337062023-03-27 14:11:5137 mins ago 0xca922557e13be58e1889f5d5cfbbe8f98ae67298 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.001536108017409224 MATIC
0xdc46d5d1eda599cf452e12dfecd7fabfb61be45cf3ede1f490f42c94028ee2f4336336652023-03-27 14:10:2538 mins ago 0x21a682c4a8e316ef93d3d79f462d2f2e7393222b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.00120219901602932 MATIC
0x405770c332063c6e4c8e5dc2cd314f9f22421236b077c2bead3328f0d574a9b5336334852023-03-27 14:04:0144 mins ago 0x21a682c4a8e316ef93d3d79f462d2f2e7393222b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.001188266422452444 MATIC
0xad7e3f65c67c58551af18a24dd784ed6214a2614a342eb36d5b1e2bc274f7191336334732023-03-27 14:03:3745 mins ago 0xd3b6767173fe6c9d60938713bb7578fbab80947e 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.001490713104661644 MATIC
0x9e59f2d8d0edf73c1803857ce0ce9cba27715f8fbe4650bd101b6a82958229c6336334092023-03-27 14:01:2147 mins ago 0x21a682c4a8e316ef93d3d79f462d2f2e7393222b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.001294367602823456 MATIC
0x77c39eb570caf4e00ff89fe17ab7624bb66dcaefe71ed828faa9fdd131b2c3f9336333912023-03-27 14:00:4148 mins ago 0xca922557e13be58e1889f5d5cfbbe8f98ae67298 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.001551729016551776 MATIC
0x1efc3cd4a7063ccce477b05421065a1e2774d5fc0a912d8be69281f46b16a480336333732023-03-27 14:00:0348 mins ago 0x21a682c4a8e316ef93d3d79f462d2f2e7393222b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.001186169692823456 MATIC
0x9c6de46b684d85ebb5e4663c708051bce011308fb1284e8bd9dcc5a4609d6c79336331502023-03-27 13:52:0956 mins ago 0x21a682c4a8e316ef93d3d79f462d2f2e7393222b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.001202199012823456 MATIC
0x9e089c63f8936ca6b6b7d9d71f6e651f5081f2d1c6173063cb172b8bc42e2291336331212023-03-27 13:51:0957 mins ago 0x21a682c4a8e316ef93d3d79f462d2f2e7393222b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.001337818137085042 MATIC
0x134c697b63844136a9258d610a890ba2917f8c188d66700dac685d0f2e488864336330922023-03-27 13:50:0758 mins ago 0x21a682c4a8e316ef93d3d79f462d2f2e7393222b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.00133844823202199 MATIC
0xecf6372b0baeffceb298f513673ab3697e71a45c9af2df70db934344ec317a55336330722023-03-27 13:49:2559 mins ago 0xca922557e13be58e1889f5d5cfbbe8f98ae67298 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.0014945440154608 MATIC
0xeece6cd0302607bdd5427ab8e71fd9fcab1c9c125855e25a1b7b32b078598fc9336329252023-03-27 13:44:111 hr 4 mins ago 0xd3b6767173fe6c9d60938713bb7578fbab80947e 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.001546606516497136 MATIC
0x1c214442f08114627b74d3e62ed6754279959a8288a7a0054d9bc958eb20976b336328852023-03-27 13:42:471 hr 6 mins ago 0x21a682c4a8e316ef93d3d79f462d2f2e7393222b 0x25ad59adbe00c2d80c86d01e2e05e1294da848230.001413454897520634 MATIC
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Gelato

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
File 1 of 7 : Gelato.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.0;

import {LibDiamond} from "./libraries/standard/LibDiamond.sol";
import {IDiamondLoupe} from "./interfaces/standard/IDiamondLoupe.sol";
import {IDiamondCut} from "./interfaces/standard/IDiamondCut.sol";
import {IERC173} from "./interfaces/standard/IERC173.sol";
import {IERC165} from "./interfaces/standard/IERC165.sol";

contract Gelato {
    // more arguments are added to this struct
    // this avoids stack too deep errors
    struct DiamondArgs {
        address owner;
    }

    constructor(
        IDiamondCut.FacetCut[] memory _diamondCut,
        DiamondArgs memory _args
    ) payable {
        LibDiamond.diamondCut(_diamondCut, address(0), new bytes(0));
        LibDiamond.setContractOwner(_args.owner);

        LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage();

        // adding ERC165 data
        ds.supportedInterfaces[type(IERC165).interfaceId] = true;
        ds.supportedInterfaces[type(IDiamondCut).interfaceId] = true;
        ds.supportedInterfaces[type(IDiamondLoupe).interfaceId] = true;
        ds.supportedInterfaces[type(IERC173).interfaceId] = true;
    }

    // Find facet for function that is called and execute the
    // function if a facet is found and return any value.
    // solhint-disable-next-line no-complex-fallback
    fallback() external payable {
        LibDiamond.DiamondStorage storage ds;
        bytes32 position = LibDiamond.DIAMOND_STORAGE_POSITION;
        assembly {
            ds.slot := position
        }
        address facet = ds.selectorToFacetAndPosition[msg.sig].facetAddress;
        require(facet != address(0), "Gelato: Function does not exist");
        assembly {
            calldatacopy(0, 0, calldatasize())
            let result := delegatecall(gas(), facet, 0, calldatasize(), 0, 0)
            returndatacopy(0, 0, returndatasize())
            switch result
                case 0 {
                    revert(0, returndatasize())
                }
                default {
                    return(0, returndatasize())
                }
        }
    }

    // solhint-disable-next-line no-empty-blocks, ordering
    receive() external payable {}
}

File 2 of 7 : IDiamondCut.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.0;

/******************************************************************************\
* Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen)
* EIP-2535 Diamond Standard: https://eips.ethereum.org/EIPS/eip-2535
/******************************************************************************/

interface IDiamondCut {
    enum FacetCutAction {Add, Replace, Remove}
    // Add=0, Replace=1, Remove=2

    struct FacetCut {
        address facetAddress;
        FacetCutAction action;
        bytes4[] functionSelectors;
    }

    event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata);

    /// @notice Add/replace/remove any number of functions and optionally execute
    ///         a function with delegatecall
    /// @param _diamondCut Contains the facet addresses and function selectors
    /// @param _init The address of the contract or facet to execute _calldata
    /// @param _calldata A function call, including function selector and arguments
    ///                  _calldata is executed with delegatecall on _init
    function diamondCut(
        FacetCut[] calldata _diamondCut,
        address _init,
        bytes calldata _calldata
    ) external;
}

File 3 of 7 : IDiamondLoupe.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.0;

/******************************************************************************\
* Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen)
* EIP-2535 Diamond Standard: https://eips.ethereum.org/EIPS/eip-2535
/******************************************************************************/

// A loupe is a small magnifying glass used to look at diamonds.
// These functions look at diamonds
interface IDiamondLoupe {
    /// These functions are expected to be called frequently
    /// by tools.

    struct Facet {
        address facetAddress;
        bytes4[] functionSelectors;
    }

    /// @notice Gets all facet addresses and their four byte function selectors.
    /// @return facets_ Facet
    function facets() external view returns (Facet[] memory facets_);

    /// @notice Gets all the function selectors supported by a specific facet.
    /// @param _facet The facet address.
    /// @return facetFunctionSelectors_
    function facetFunctionSelectors(address _facet)
        external
        view
        returns (bytes4[] memory facetFunctionSelectors_);

    /// @notice Get all the facet addresses used by a diamond.
    /// @return facetAddresses_
    function facetAddresses()
        external
        view
        returns (address[] memory facetAddresses_);

    /// @notice Gets the facet that supports the given selector.
    /// @dev If facet is not found return address(0).
    /// @param _functionSelector The function selector.
    /// @return facetAddress_ The facet address.
    function facetAddress(bytes4 _functionSelector)
        external
        view
        returns (address facetAddress_);
}

File 4 of 7 : IERC165.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.0;

interface IERC165 {
    /// @notice Query if a contract implements an interface
    /// @param interfaceId The interface identifier, as specified in ERC-165
    /// @dev Interface identification is specified in ERC-165. This function
    ///  uses less than 30,000 gas.
    /// @return `true` if the contract implements `interfaceID` and
    ///  `interfaceID` is not 0xffffffff, `false` otherwise
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

File 5 of 7 : IERC173.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.0;

/// @title ERC-173 Contract Ownership Standard
///  Note: the ERC-165 identifier for this interface is 0x7f5828d0
/* is ERC165 */
interface IERC173 {
    /// @dev This emits when ownership of a contract changes.
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    /// @notice Set the address of the new owner of the contract
    /// @dev Set _newOwner to address(0) to renounce any ownership.
    /// @param _newOwner The address of the new owner of the contract
    function transferOwnership(address _newOwner) external;

    /// @notice Get the address of the owner
    /// @return owner_ The address of the owner.
    function owner() external view returns (address owner_);
}

File 6 of 7 : LibDiamond.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.0;

// https://github.com/mudgen/diamond-3/blob/b009cd08b7822bad727bbcc47aa1b50d8b50f7f0/contracts/libraries/LibDiamond.sol#L1

/******************************************************************************\
* Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen)
* EIP-2535 Diamond Standard: https://eips.ethereum.org/EIPS/eip-2535
/******************************************************************************/

import "../../interfaces/standard/IDiamondCut.sol";

// Custom due to incorrect string casting (non UTF-8 formatted)
import {GelatoBytes} from "../../../lib/GelatoBytes.sol";

library LibDiamond {
    bytes32 constant DIAMOND_STORAGE_POSITION =
        keccak256("diamond.standard.diamond.storage");

    struct FacetAddressAndPosition {
        address facetAddress;
        uint16 functionSelectorPosition; // position in facetFunctionSelectors.functionSelectors array
    }

    struct FacetFunctionSelectors {
        bytes4[] functionSelectors;
        uint16 facetAddressPosition; // position of facetAddress in facetAddresses array
    }

    struct DiamondStorage {
        // maps function selector to the facet address and
        // the position of the selector in the facetFunctionSelectors.selectors array
        mapping(bytes4 => FacetAddressAndPosition) selectorToFacetAndPosition;
        // maps facet addresses to function selectors
        mapping(address => FacetFunctionSelectors) facetFunctionSelectors;
        // facet addresses
        address[] facetAddresses;
        // Used to query if a contract implements an interface.
        // Used to implement ERC-165.
        mapping(bytes4 => bool) supportedInterfaces;
        // owner of the contract
        address contractOwner;
    }

    function diamondStorage()
        internal
        pure
        returns (DiamondStorage storage ds)
    {
        bytes32 position = DIAMOND_STORAGE_POSITION;
        assembly {
            ds.slot := position
        }
    }

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    function setContractOwner(address _newOwner) internal {
        DiamondStorage storage ds = diamondStorage();
        address previousOwner = ds.contractOwner;
        ds.contractOwner = _newOwner;
        emit OwnershipTransferred(previousOwner, _newOwner);
    }

    function contractOwner() internal view returns (address contractOwner_) {
        contractOwner_ = diamondStorage().contractOwner;
    }

    function isContractOwner(address _guy) internal view returns (bool) {
        return _guy == contractOwner();
    }

    function enforceIsContractOwner() internal view {
        require(
            msg.sender == diamondStorage().contractOwner,
            "LibDiamond: Must be contract owner"
        );
    }

    event DiamondCut(
        IDiamondCut.FacetCut[] _diamondCut,
        address _init,
        bytes _calldata
    );

    // Internal function version of diamondCut
    function diamondCut(
        IDiamondCut.FacetCut[] memory _diamondCut,
        address _init,
        bytes memory _calldata
    ) internal {
        for (
            uint256 facetIndex;
            facetIndex < _diamondCut.length;
            facetIndex++
        ) {
            IDiamondCut.FacetCutAction action = _diamondCut[facetIndex].action;
            if (action == IDiamondCut.FacetCutAction.Add) {
                addFunctions(
                    _diamondCut[facetIndex].facetAddress,
                    _diamondCut[facetIndex].functionSelectors
                );
            } else if (action == IDiamondCut.FacetCutAction.Replace) {
                replaceFunctions(
                    _diamondCut[facetIndex].facetAddress,
                    _diamondCut[facetIndex].functionSelectors
                );
            } else if (action == IDiamondCut.FacetCutAction.Remove) {
                removeFunctions(
                    _diamondCut[facetIndex].facetAddress,
                    _diamondCut[facetIndex].functionSelectors
                );
            } else {
                revert("LibDiamondCut: Incorrect FacetCutAction");
            }
        }
        emit DiamondCut(_diamondCut, _init, _calldata);
        initializeDiamondCut(_init, _calldata);
    }

    function addFunctions(
        address _facetAddress,
        bytes4[] memory _functionSelectors
    ) internal {
        require(
            _functionSelectors.length > 0,
            "LibDiamondCut: No selectors in facet to cut"
        );
        DiamondStorage storage ds = diamondStorage();
        // uint16 selectorCount = uint16(diamondStorage().selectors.length);
        require(
            _facetAddress != address(0),
            "LibDiamondCut: Add facet can't be address(0)"
        );
        uint16 selectorPosition =
            uint16(
                ds.facetFunctionSelectors[_facetAddress]
                    .functionSelectors
                    .length
            );
        // add new facet address if it does not exist
        if (selectorPosition == 0) {
            enforceHasContractCode(
                _facetAddress,
                "LibDiamondCut: New facet has no code"
            );
            ds.facetFunctionSelectors[_facetAddress]
                .facetAddressPosition = uint16(ds.facetAddresses.length);
            ds.facetAddresses.push(_facetAddress);
        }
        for (
            uint256 selectorIndex;
            selectorIndex < _functionSelectors.length;
            selectorIndex++
        ) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldFacetAddress =
                ds.selectorToFacetAndPosition[selector].facetAddress;
            require(
                oldFacetAddress == address(0),
                "LibDiamondCut: Can't add function that already exists"
            );
            ds.facetFunctionSelectors[_facetAddress].functionSelectors.push(
                selector
            );
            ds.selectorToFacetAndPosition[selector]
                .facetAddress = _facetAddress;
            ds.selectorToFacetAndPosition[selector]
                .functionSelectorPosition = selectorPosition;
            selectorPosition++;
        }
    }

    function replaceFunctions(
        address _facetAddress,
        bytes4[] memory _functionSelectors
    ) internal {
        require(
            _functionSelectors.length > 0,
            "LibDiamondCut: No selectors in facet to cut"
        );
        DiamondStorage storage ds = diamondStorage();
        require(
            _facetAddress != address(0),
            "LibDiamondCut: Add facet can't be address(0)"
        );
        uint16 selectorPosition =
            uint16(
                ds.facetFunctionSelectors[_facetAddress]
                    .functionSelectors
                    .length
            );
        // add new facet address if it does not exist
        if (selectorPosition == 0) {
            enforceHasContractCode(
                _facetAddress,
                "LibDiamondCut: New facet has no code"
            );
            ds.facetFunctionSelectors[_facetAddress]
                .facetAddressPosition = uint16(ds.facetAddresses.length);
            ds.facetAddresses.push(_facetAddress);
        }
        for (
            uint256 selectorIndex;
            selectorIndex < _functionSelectors.length;
            selectorIndex++
        ) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldFacetAddress =
                ds.selectorToFacetAndPosition[selector].facetAddress;
            require(
                oldFacetAddress != _facetAddress,
                "LibDiamondCut: Can't replace function with same function"
            );
            removeFunction(oldFacetAddress, selector);
            // add function
            ds.selectorToFacetAndPosition[selector]
                .functionSelectorPosition = selectorPosition;
            ds.facetFunctionSelectors[_facetAddress].functionSelectors.push(
                selector
            );
            ds.selectorToFacetAndPosition[selector]
                .facetAddress = _facetAddress;
            selectorPosition++;
        }
    }

    function removeFunctions(
        address _facetAddress,
        bytes4[] memory _functionSelectors
    ) internal {
        require(
            _functionSelectors.length > 0,
            "LibDiamondCut: No selectors in facet to cut"
        );
        DiamondStorage storage ds = diamondStorage();
        // if function does not exist then do nothing and return
        require(
            _facetAddress == address(0),
            "LibDiamondCut: Remove facet address must be address(0)"
        );
        for (
            uint256 selectorIndex;
            selectorIndex < _functionSelectors.length;
            selectorIndex++
        ) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldFacetAddress =
                ds.selectorToFacetAndPosition[selector].facetAddress;
            removeFunction(oldFacetAddress, selector);
        }
    }

    function removeFunction(address _facetAddress, bytes4 _selector) internal {
        DiamondStorage storage ds = diamondStorage();
        require(
            _facetAddress != address(0),
            "LibDiamondCut: Can't remove function that doesn't exist"
        );
        // an immutable function is a function defined directly in a diamond
        require(
            _facetAddress != address(this),
            "LibDiamondCut: Can't remove immutable function"
        );
        // replace selector with last selector, then delete last selector
        uint256 selectorPosition =
            ds.selectorToFacetAndPosition[_selector].functionSelectorPosition;
        uint256 lastSelectorPosition =
            ds.facetFunctionSelectors[_facetAddress].functionSelectors.length -
                1;
        // if not the same then replace _selector with lastSelector
        if (selectorPosition != lastSelectorPosition) {
            bytes4 lastSelector =
                ds.facetFunctionSelectors[_facetAddress].functionSelectors[
                    lastSelectorPosition
                ];
            ds.facetFunctionSelectors[_facetAddress].functionSelectors[
                selectorPosition
            ] = lastSelector;
            ds.selectorToFacetAndPosition[lastSelector]
                .functionSelectorPosition = uint16(selectorPosition);
        }
        // delete the last selector
        ds.facetFunctionSelectors[_facetAddress].functionSelectors.pop();
        delete ds.selectorToFacetAndPosition[_selector];

        // if no more selectors for facet address then delete the facet address
        if (lastSelectorPosition == 0) {
            // replace facet address with last facet address and delete last facet address
            uint256 lastFacetAddressPosition = ds.facetAddresses.length - 1;
            uint256 facetAddressPosition =
                ds.facetFunctionSelectors[_facetAddress].facetAddressPosition;
            if (facetAddressPosition != lastFacetAddressPosition) {
                address lastFacetAddress =
                    ds.facetAddresses[lastFacetAddressPosition];
                ds.facetAddresses[facetAddressPosition] = lastFacetAddress;
                ds.facetFunctionSelectors[lastFacetAddress]
                    .facetAddressPosition = uint16(facetAddressPosition);
            }
            ds.facetAddresses.pop();
            delete ds.facetFunctionSelectors[_facetAddress]
                .facetAddressPosition;
        }
    }

    function initializeDiamondCut(address _init, bytes memory _calldata)
        internal
    {
        if (_init == address(0)) {
            require(
                _calldata.length == 0,
                "LibDiamondCut: _init is address(0) but_calldata is not empty"
            );
        } else {
            require(
                _calldata.length > 0,
                "LibDiamondCut: _calldata is empty but _init is not address(0)"
            );
            if (_init != address(this)) {
                enforceHasContractCode(
                    _init,
                    "LibDiamondCut: _init address has no code"
                );
            }
            (bool success, bytes memory error) = _init.delegatecall(_calldata);
            if (!success) {
                if (error.length > 0) {
                    // bubble up the error
                    GelatoBytes.revertWithError(error, "LibDiamondCut:_init:");
                } else {
                    revert("LibDiamondCut: _init function reverted");
                }
            }
        }
    }

    function enforceHasContractCode(
        address _contract,
        string memory _errorMessage
    ) internal view {
        uint256 contractSize;
        assembly {
            contractSize := extcodesize(_contract)
        }
        require(contractSize > 0, _errorMessage);
    }
}

File 7 of 7 : GelatoBytes.sol
// "SPDX-License-Identifier: UNLICENSED"
pragma solidity 0.8.0;

library GelatoBytes {
    function calldataSliceSelector(bytes calldata _bytes)
        internal
        pure
        returns (bytes4 selector)
    {
        selector =
            _bytes[0] |
            (bytes4(_bytes[1]) >> 8) |
            (bytes4(_bytes[2]) >> 16) |
            (bytes4(_bytes[3]) >> 24);
    }

    function memorySliceSelector(bytes memory _bytes)
        internal
        pure
        returns (bytes4 selector)
    {
        selector =
            _bytes[0] |
            (bytes4(_bytes[1]) >> 8) |
            (bytes4(_bytes[2]) >> 16) |
            (bytes4(_bytes[3]) >> 24);
    }

    function revertWithError(bytes memory _bytes, string memory _tracingInfo)
        internal
        pure
    {
        // 68: 32-location, 32-length, 4-ErrorSelector, UTF-8 err
        if (_bytes.length % 32 == 4) {
            bytes4 selector;
            assembly {
                selector := mload(add(0x20, _bytes))
            }
            if (selector == 0x08c379a0) {
                // Function selector for Error(string)
                assembly {
                    _bytes := add(_bytes, 68)
                }
                revert(string(abi.encodePacked(_tracingInfo, string(_bytes))));
            } else {
                revert(
                    string(abi.encodePacked(_tracingInfo, "NoErrorSelector"))
                );
            }
        } else {
            revert(
                string(abi.encodePacked(_tracingInfo, "UnexpectedReturndata"))
            );
        }
    }

    function returnError(bytes memory _bytes, string memory _tracingInfo)
        internal
        pure
        returns (string memory)
    {
        // 68: 32-location, 32-length, 4-ErrorSelector, UTF-8 err
        if (_bytes.length % 32 == 4) {
            bytes4 selector;
            assembly {
                selector := mload(add(0x20, _bytes))
            }
            if (selector == 0x08c379a0) {
                // Function selector for Error(string)
                assembly {
                    _bytes := add(_bytes, 68)
                }
                return string(abi.encodePacked(_tracingInfo, string(_bytes)));
            } else {
                return
                    string(abi.encodePacked(_tracingInfo, "NoErrorSelector"));
            }
        } else {
            return
                string(abi.encodePacked(_tracingInfo, "UnexpectedReturndata"));
        }
    }
}

Settings
{
  "evmVersion": "istanbul",
  "libraries": {},
  "metadata": {
    "bytecodeHash": "ipfs",
    "useLiteralContent": true
  },
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "remappings": [],
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract ABI

[{"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamondCut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct IDiamondCut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"components":[{"internalType":"address","name":"owner","type":"address"}],"internalType":"struct Gelato.DiamondArgs","name":"_args","type":"tuple"}],"stateMutability":"payable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]

608060405260405162002e5738038062002e57833981016040819052620000269162001081565b604080516000808252602082019092526200004e918491620000f560201b6200009c1760201c565b6200006881600001516200039d60201b6200030a1760201c565b60006200007f620003ff60201b6200036a1760201c565b6301ffc9a760e01b600090815260039091016020526040808220805460ff1990811660019081179092556307e4c70760e21b845282842080548216831790556348e2b09360e01b845282842080548216831790556307f5828d60e41b845291909220805490911690911790555062001890915050565b60005b83518110156200034e5760008482815181106200012557634e487b7160e01b600052603260045260246000fd5b6020026020010151602001519050600060028111156200015557634e487b7160e01b600052602160045260246000fd5b8160028111156200017657634e487b7160e01b600052602160045260246000fd5b1415620001ed57620001e7858381518110620001a257634e487b7160e01b600052603260045260246000fd5b602002602001015160000151868481518110620001cf57634e487b7160e01b600052603260045260246000fd5b6020026020010151604001516200042360201b60201c565b62000338565b60018160028111156200021057634e487b7160e01b600052602160045260246000fd5b14156200028157620001e78583815181106200023c57634e487b7160e01b600052603260045260246000fd5b6020026020010151600001518684815181106200026957634e487b7160e01b600052603260045260246000fd5b6020026020010151604001516200066360201b60201c565b6002816002811115620002a457634e487b7160e01b600052602160045260246000fd5b14156200031557620001e7858381518110620002d057634e487b7160e01b600052603260045260246000fd5b602002602001015160000151868481518110620002fd57634e487b7160e01b600052603260045260246000fd5b602002602001015160400151620008b860201b60201c565b60405162461bcd60e51b81526004016200032f9062001510565b60405180910390fd5b5080620003458162001825565b915050620000f8565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516200038493929190620012a7565b60405180910390a1620003988282620009a0565b505050565b6000620003a9620003ff565b6004810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90565b6000815111620004475760405162461bcd60e51b81526004016200032f9062001468565b600062000453620003ff565b90506001600160a01b0383166200047e5760405162461bcd60e51b81526004016200032f9062001557565b6001600160a01b038316600090815260018201602052604090205461ffff81166200052457620004c88460405180606001604052806024815260200162002e336024913962000b13565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b83518110156200065c5760008482815181106200055457634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b03168015620005a75760405162461bcd60e51b81526004016200032f906200164e565b6001600160a01b03871660008181526001878101602090815260408084208054938401815584528184206008840401805463ffffffff60079095166004026101000a948502191660e089901c94909402939093179092556001600160e01b031986168352889052902080546001600160a01b03191690911761ffff60a01b1916600160a01b61ffff87160217905583620006418162001800565b94505050508080620006539062001825565b91505062000527565b5050505050565b6000815111620006875760405162461bcd60e51b81526004016200032f9062001468565b600062000693620003ff565b90506001600160a01b038316620006be5760405162461bcd60e51b81526004016200032f9062001557565b6001600160a01b038316600090815260018201602052604090205461ffff81166200076457620007088460405180606001604052806024815260200162002e336024913962000b13565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b83518110156200065c5760008482815181106200079457634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b03908116908716811415620007ed5760405162461bcd60e51b81526004016200032f90620016ab565b620007f9818362000b37565b6001600160e01b03198216600081815260208781526040808320805461ffff60a01b1916600160a01b61ffff8b16021781556001600160a01b038c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b031916179055836200089d8162001800565b94505050508080620008af9062001825565b91505062000767565b6000815111620008dc5760405162461bcd60e51b81526004016200032f9062001468565b6000620008e8620003ff565b90506001600160a01b03831615620009145760405162461bcd60e51b81526004016200032f9062001708565b60005b82518110156200099a5760008382815181106200094457634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b031662000982818362000b37565b50508080620009919062001825565b91505062000917565b50505050565b6001600160a01b038216620009d757805115620009d15760405162461bcd60e51b81526004016200032f90620013c5565b62000b0f565b6000815111620009fb5760405162461bcd60e51b81526004016200032f90620015a3565b6001600160a01b038216301462000a315762000a318260405180606001604052806028815260200162002e0b6028913962000b13565b600080836001600160a01b03168360405162000a4e9190620011de565b600060405180830381855af49150503d806000811462000a8b576040519150601f19603f3d011682016040523d82523d6000602084013e62000a90565b606091505b5091509150816200099a5780511562000af55762000aef816040518060400160405280601481526020017f4c69624469616d6f6e644375743a5f696e69743a00000000000000000000000081525062000eea60201b6200038e1760201c565b6200099a565b60405162461bcd60e51b81526004016200032f9062001422565b5050565b813b81816200099a5760405162461bcd60e51b81526004016200032f9190620013a9565b600062000b43620003ff565b90506001600160a01b03831662000b6e5760405162461bcd60e51b81526004016200032f90620014b3565b6001600160a01b03831630141562000b9a5760405162461bcd60e51b81526004016200032f9062001600565b6001600160e01b03198216600090815260208281526040808320546001600160a01b0387168452600180860190935290832054600160a01b90910461ffff16929162000be691620017b7565b905080821462000cf1576001600160a01b0385166000908152600184016020526040812080548390811062000c2b57634e487b7160e01b600052603260045260246000fd5b600091825260208083206008830401546001600160a01b038a168452600188019091526040909220805460079092166004026101000a90920460e01b92508291908590811062000c8b57634e487b7160e01b600052603260045260246000fd5b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b031992909216825284905260409020805461ffff60a01b1916600160a01b61ffff8516021790555b6001600160a01b0385166000908152600184016020526040902080548062000d2957634e487b7160e01b600052603160045260246000fd5b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319861682528490526040902080546001600160b01b0319169055806200065c57600283015460009062000d9890600190620017b7565b6001600160a01b038716600090815260018087016020526040909120015490915061ffff1680821462000e7657600085600201838154811062000deb57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546002870180546001600160a01b03909216925082918490811062000e2b57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815260018781019092526040902001805461ffff191661ffff83161790555b8460020180548062000e9857634e487b7160e01b600052603160045260246000fd5b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03891682526001878101909152604090912001805461ffff1916905550505050505050565b6020825162000efa919062001843565b6004141562000f7757602082015162461bcd60e51b6001600160e01b03198216141562000f6457604483019250818360405160200162000f3c929190620011fc565b60408051601f198184030181529082905262461bcd60e51b82526200032f91600401620013a9565b8160405160200162000f3c91906200122f565b8060405160200162000f3c919062001264565b80516001600160a01b038116811462000fa257600080fd5b919050565b600082601f83011262000fb8578081fd5b8151602062000fd162000fcb8362001791565b62001765565b828152818101908583018385028701840188101562000fee578586fd5b855b85811015620010245781516001600160e01b03198116811462001011578788fd5b8452928401929084019060010162000ff0565b5090979650505050505050565b60006020828403121562001043578081fd5b604051602081016001600160401b03811182821017156200106857620010686200187a565b604052905080620010798362000f8a565b905292915050565b6000806040838503121562001094578182fd5b82516001600160401b0380821115620010ab578384fd5b818501915085601f830112620010bf578384fd5b81516020620010d262000fcb8362001791565b82815281810190858301885b858110156200118157815188016060818e03601f19011215620010ff578a8bfd5b604051606081018181108a821117156200111d576200111d6200187a565b6040526200112d82880162000f8a565b815260408201516003811062001141578c8dfd5b8188015260608201518981111562001157578c8dfd5b620011678f898386010162000fa7565b6040830152508552509284019290840190600101620010de565b50508097505050620011968882890162001031565b9450505050509250929050565b6001600160a01b03169052565b60008151808452620011ca816020860160208601620017d1565b601f01601f19169290920160200192915050565b60008251620011f2818460208701620017d1565b9190910192915050565b6000835162001210818460208801620017d1565b83519083019062001226818360208801620017d1565b01949350505050565b6000825162001243818460208701620017d1565b6e2737a2b93937b929b2b632b1ba37b960891b920191825250600f01919050565b6000825162001278818460208701620017d1565b7f556e657870656374656452657475726e64617461000000000000000000000000920191825250601401919050565b606080825284518282018190526000919060809081850190602080820287018401818b01875b848110156200137657898303607f19018652815180516001600160a01b031684528481015189850190600381106200131357634e487b7160e01b8c52602160045260248cfd5b858701526040918201519185018a9052815190819052908501908a90898601905b80831015620013605783516001600160e01b031916825292870192600192909201919087019062001334565b50978601979450505090830190600101620012cd565b5050620013868289018b620011a3565b87810360408901526200139a818a620011b0565b9b9a5050505050505050505050565b600060208252620013be6020830184620011b0565b9392505050565b6020808252603c908201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860408201527f3029206275745f63616c6c64617461206973206e6f7420656d70747900000000606082015260800190565b60208082526026908201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656040820152651d995c9d195960d21b606082015260800190565b6020808252602b908201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660408201526a1858d95d081d1bc818dd5d60aa1b606082015260800190565b60208082526037908201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360408201527f74696f6e207468617420646f65736e2774206578697374000000000000000000606082015260800190565b60208082526027908201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756040820152663a20b1ba34b7b760c91b606082015260800190565b6020808252602c908201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260408201526b65206164647265737328302960a01b606082015260800190565b6020808252603d908201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460408201527f7920627574205f696e6974206973206e6f742061646472657373283029000000606082015260800190565b6020808252602e908201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560408201526d3a30b1363290333ab731ba34b7b760911b606082015260800190565b60208082526035908201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60408201527f6e207468617420616c7265616479206578697374730000000000000000000000606082015260800190565b60208082526038908201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60408201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000606082015260800190565b60208082526036908201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260408201527f657373206d757374206265206164647265737328302900000000000000000000606082015260800190565b6040518181016001600160401b03811182821017156200178957620017896200187a565b604052919050565b60006001600160401b03821115620017ad57620017ad6200187a565b5060209081020190565b600082821015620017cc57620017cc62001864565b500390565b60005b83811015620017ee578181015183820152602001620017d4565b838111156200099a5750506000910152565b600061ffff808316818114156200181b576200181b62001864565b6001019392505050565b60006000198214156200183c576200183c62001864565b5060010190565b6000826200185f57634e487b7160e01b81526012600452602481fd5b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b61156b80620018a06000396000f3fe60806040523661000b57005b600080356001600160e01b03191681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602081905260409091205481906001600160a01b0316806100785760405162461bcd60e51b815260040161006f906113fc565b60405180910390fd5b3660008037600080366000845af43d6000803e808015610097573d6000f35b3d6000fd5b60005b83518110156102bf5760008482815181106100ca57634e487b7160e01b600052603260045260246000fd5b6020026020010151602001519050600060028111156100f957634e487b7160e01b600052602160045260246000fd5b81600281111561011957634e487b7160e01b600052602160045260246000fd5b14156101845761017f85838151811061014257634e487b7160e01b600052603260045260246000fd5b60200260200101516000015186848151811061016e57634e487b7160e01b600052603260045260246000fd5b602002602001015160400151610426565b6102ac565b60018160028111156101a657634e487b7160e01b600052602160045260246000fd5b141561020c5761017f8583815181106101cf57634e487b7160e01b600052603260045260246000fd5b6020026020010151600001518684815181106101fb57634e487b7160e01b600052603260045260246000fd5b602002602001015160400151610650565b600281600281111561022e57634e487b7160e01b600052602160045260246000fd5b14156102945761017f85838151811061025757634e487b7160e01b600052603260045260246000fd5b60200260200101516000015186848151811061028357634e487b7160e01b600052603260045260246000fd5b60200260200101516040015161088d565b60405162461bcd60e51b815260040161006f906111b6565b50806102b781611498565b91505061009f565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516102f393929190610f58565b60405180910390a16103058282610966565b505050565b600061031461036a565b6004810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90565b6020825161039c91906114b3565b6004141561041157602082015162461bcd60e51b6001600160e01b0319821614156104005760448301925081836040516020016103da929190610ebe565b60408051601f198184030181529082905262461bcd60e51b825261006f91600401611051565b816040516020016103da9190610eed565b806040516020016103da9190610f20565b5050565b60008151116104475760405162461bcd60e51b815260040161006f9061110e565b600061045161036a565b90506001600160a01b0383166104795760405162461bcd60e51b815260040161006f906111fd565b6001600160a01b038316600090815260018201602052604090205461ffff811661051b576104bf8460405180606001604052806024815260200161151260249139610aaa565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b835181101561064957600084828151811061054957634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b031680156105995760405162461bcd60e51b815260040161006f906112f4565b6001600160a01b03871660008181526001878101602090815260408084208054938401815584528184206008840401805463ffffffff60079095166004026101000a948502191660e089901c94909402939093179092556001600160e01b031986168352889052902080546001600160a01b03191690911761ffff60a01b1916600160a01b61ffff8716021790558361063181611476565b9450505050808061064190611498565b91505061051e565b5050505050565b60008151116106715760405162461bcd60e51b815260040161006f9061110e565b600061067b61036a565b90506001600160a01b0383166106a35760405162461bcd60e51b815260040161006f906111fd565b6001600160a01b038316600090815260018201602052604090205461ffff8116610745576106e98460405180606001604052806024815260200161151260249139610aaa565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b835181101561064957600084828151811061077357634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b039081169087168114156107c95760405162461bcd60e51b815260040161006f90611349565b6107d38183610acb565b6001600160e01b03198216600081815260208781526040808320805461ffff60a01b1916600160a01b61ffff8b16021781556001600160a01b038c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b0319161790558361087581611476565b9450505050808061088590611498565b915050610748565b60008151116108ae5760405162461bcd60e51b815260040161006f9061110e565b60006108b861036a565b90506001600160a01b038316156108e15760405162461bcd60e51b815260040161006f906113a6565b60005b825181101561096057600083828151811061090f57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b031661094b8183610acb565b5050808061095890611498565b9150506108e4565b50505050565b6001600160a01b038216610998578051156109935760405162461bcd60e51b815260040161006f9061106b565b610422565b60008151116109b95760405162461bcd60e51b815260040161006f90611249565b6001600160a01b03821630146109eb576109eb826040518060600160405280602881526020016114ea60289139610aaa565b600080836001600160a01b031683604051610a069190610ea2565b600060405180830381855af49150503d8060008114610a41576040519150601f19603f3d011682016040523d82523d6000602084013e610a46565b606091505b50915091508161096057805115610a9257610a8d81604051806040016040528060148152602001732634b12234b0b6b7b73221baba1d2fb4b734ba1d60611b81525061038e565b610960565b60405162461bcd60e51b815260040161006f906110c8565b813b81816109605760405162461bcd60e51b815260040161006f9190611051565b6000610ad561036a565b90506001600160a01b038316610afd5760405162461bcd60e51b815260040161006f90611159565b6001600160a01b038316301415610b265760405162461bcd60e51b815260040161006f906112a6565b6001600160e01b03198216600090815260208281526040808320546001600160a01b0387168452600180860190935290832054600160a01b90910461ffff169291610b7091611433565b9050808214610c78576001600160a01b03851660009081526001840160205260408120805483908110610bb357634e487b7160e01b600052603260045260246000fd5b600091825260208083206008830401546001600160a01b038a168452600188019091526040909220805460079092166004026101000a90920460e01b925082919085908110610c1257634e487b7160e01b600052603260045260246000fd5b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b031992909216825284905260409020805461ffff60a01b1916600160a01b61ffff8516021790555b6001600160a01b03851660009081526001840160205260409020805480610caf57634e487b7160e01b600052603160045260246000fd5b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319861682528490526040902080546001600160b01b031916905580610649576002830154600090610d1b90600190611433565b6001600160a01b038716600090815260018087016020526040909120015490915061ffff16808214610df6576000856002018381548110610d6c57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546002870180546001600160a01b039092169250829184908110610dab57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815260018781019092526040902001805461ffff191661ffff83161790555b84600201805480610e1757634e487b7160e01b600052603160045260246000fd5b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03891682526001878101909152604090912001805461ffff1916905550505050505050565b6001600160a01b03169052565b60008151808452610e8e81602086016020860161144a565b601f01601f19169290920160200192915050565b60008251610eb481846020870161144a565b9190910192915050565b60008351610ed081846020880161144a565b835190830190610ee481836020880161144a565b01949350505050565b60008251610eff81846020870161144a565b6e2737a2b93937b929b2b632b1ba37b960891b920191825250600f01919050565b60008251610f3281846020870161144a565b73556e657870656374656452657475726e6461746160601b920191825250601401919050565b606080825284518282018190526000919060809081850190602080820287018401818b01875b8481101561102257898303607f19018652815180516001600160a01b03168452848101518985019060038110610fc257634e487b7160e01b8c52602160045260248cfd5b858701526040918201519185018a9052815190819052908501908a90898601905b8083101561100d5783516001600160e01b0319168252928701926001929092019190870190610fe3565b50978601979450505090830190600101610f7e565b50506110308289018b610e69565b8781036040890152611042818a610e76565b9b9a5050505050505050505050565b6000602082526110646020830184610e76565b9392505050565b6020808252603c908201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860408201527f3029206275745f63616c6c64617461206973206e6f7420656d70747900000000606082015260800190565b60208082526026908201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656040820152651d995c9d195960d21b606082015260800190565b6020808252602b908201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660408201526a1858d95d081d1bc818dd5d60aa1b606082015260800190565b60208082526037908201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360408201527f74696f6e207468617420646f65736e2774206578697374000000000000000000606082015260800190565b60208082526027908201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756040820152663a20b1ba34b7b760c91b606082015260800190565b6020808252602c908201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260408201526b65206164647265737328302960a01b606082015260800190565b6020808252603d908201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460408201527f7920627574205f696e6974206973206e6f742061646472657373283029000000606082015260800190565b6020808252602e908201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560408201526d3a30b1363290333ab731ba34b7b760911b606082015260800190565b60208082526035908201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f6040820152746e207468617420616c72656164792065786973747360581b606082015260800190565b60208082526038908201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60408201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000606082015260800190565b60208082526036908201527f4c69624469616d6f6e644375743a2052656d6f76652066616365742061646472604082015275657373206d757374206265206164647265737328302960501b606082015260800190565b6020808252601f908201527f47656c61746f3a2046756e6374696f6e20646f6573206e6f7420657869737400604082015260600190565b600082821015611445576114456114d3565b500390565b60005b8381101561146557818101518382015260200161144d565b838111156109605750506000910152565b600061ffff8083168181141561148e5761148e6114d3565b6001019392505050565b60006000198214156114ac576114ac6114d3565b5060010190565b6000826114ce57634e487b7160e01b81526012600452602481fd5b500690565b634e487b7160e01b600052601160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a2646970667358221220cec609c0d247fd16c365c9801837d30d683dbd1cf0b08f0fd32d65fe5b885f2564736f6c634300080000334c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f646500000000000000000000000000000000000000000000000000000000000000400000000000000000000000005b753bf02a42bc73b5846dfd16a8f2e082b99a6a000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000003e00000000000000000000000001287e5db735d4dc45379b1232d67328acfaf1fd10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000011f931c1c00000000000000000000000000000000000000000000000000000000000000000000000000000000025030bdaa159f281cae63873e68313a703725a5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed6270000000000000000000000000000000000000000000000000000000001ffc9a700000000000000000000000000000000000000000000000000000000000000000000000000000000732d0856dfd0d7c7f4b517ac25fe30a7a8b1956a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000028da5cb5b00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000000000000000000000000000b809a89cbf9e6c9c717ac99763ce07b82ab1c140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000002da44c84e00000000000000000000000000000000000000000000000000000000a4d0c0a9000000000000000000000000000000000000000000000000000000000000000000000000000000005a6bc81908df5ec5dc4ad3bd59aeaba1b86fc1260000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000033da3156000000000000000000000000000000000000000000000000000000000b9880caa00000000000000000000000000000000000000000000000000000000b87b0b4c00000000000000000000000000000000000000000000000000000000

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

00000000000000000000000000000000000000000000000000000000000000400000000000000000000000005b753bf02a42bc73b5846dfd16a8f2e082b99a6a000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000003e00000000000000000000000001287e5db735d4dc45379b1232d67328acfaf1fd10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000011f931c1c00000000000000000000000000000000000000000000000000000000000000000000000000000000025030bdaa159f281cae63873e68313a703725a5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed6270000000000000000000000000000000000000000000000000000000001ffc9a700000000000000000000000000000000000000000000000000000000000000000000000000000000732d0856dfd0d7c7f4b517ac25fe30a7a8b1956a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000028da5cb5b00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000000000000000000000000000b809a89cbf9e6c9c717ac99763ce07b82ab1c140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000002da44c84e00000000000000000000000000000000000000000000000000000000a4d0c0a9000000000000000000000000000000000000000000000000000000000000000000000000000000005a6bc81908df5ec5dc4ad3bd59aeaba1b86fc1260000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000033da3156000000000000000000000000000000000000000000000000000000000b9880caa00000000000000000000000000000000000000000000000000000000b87b0b4c00000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _diamondCut (tuple[]): System.Object,System.Object,System.Object,System.Object,System.Object
Arg [1] : _args (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]

-----Encoded View---------------
41 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000005b753bf02a42bc73b5846dfd16a8f2e082b99a6a
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [3] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000260
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000320
Arg [7] : 00000000000000000000000000000000000000000000000000000000000003e0
Arg [8] : 0000000000000000000000001287e5db735d4dc45379b1232d67328acfaf1fd1
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [12] : 1f931c1c00000000000000000000000000000000000000000000000000000000
Arg [13] : 000000000000000000000000025030bdaa159f281cae63873e68313a703725a5
Arg [14] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [16] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [17] : cdffacc600000000000000000000000000000000000000000000000000000000
Arg [18] : 52ef6b2c00000000000000000000000000000000000000000000000000000000
Arg [19] : adfca15e00000000000000000000000000000000000000000000000000000000
Arg [20] : 7a0ed62700000000000000000000000000000000000000000000000000000000
Arg [21] : 01ffc9a700000000000000000000000000000000000000000000000000000000
Arg [22] : 000000000000000000000000732d0856dfd0d7c7f4b517ac25fe30a7a8b1956a
Arg [23] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [24] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [25] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [26] : 8da5cb5b00000000000000000000000000000000000000000000000000000000
Arg [27] : f2fde38b00000000000000000000000000000000000000000000000000000000
Arg [28] : 000000000000000000000000b809a89cbf9e6c9c717ac99763ce07b82ab1c140
Arg [29] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [30] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [31] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [32] : da44c84e00000000000000000000000000000000000000000000000000000000
Arg [33] : a4d0c0a900000000000000000000000000000000000000000000000000000000
Arg [34] : 0000000000000000000000005a6bc81908df5ec5dc4ad3bd59aeaba1b86fc126
Arg [35] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [36] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [37] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [38] : 3da3156000000000000000000000000000000000000000000000000000000000
Arg [39] : b9880caa00000000000000000000000000000000000000000000000000000000
Arg [40] : b87b0b4c00000000000000000000000000000000000000000000000000000000


Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading