Contract 0xeba27a2301975ff5bf7864b99f55a4f7a457ed10 1

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x8452e6a33d570768e46913ffef3850d648791d23bb8225d0d4f1834b2c80f676Exec551859882023-02-06 8:29:166 mins ago0xeba8f39400fa84b4ef73a6056ae36d3d25c6fd86 IN  Gelato Network: Gelato0 FTM0.025936102725
0x900310ba0ee23a1c3564bcfef32299320c1d3fdcf43002f3fffe9567473b5152Exec551859662023-02-06 8:28:256 mins ago0xf1bea24376329e01c7c10a00a6a7329591168cf9 IN  Gelato Network: Gelato0 FTM0.027958700572
0x4cbb99f08c4f1ce02a1b297171fcc4512220a82e6fbd586c0f0dde44377c200eExec551857272023-02-06 8:19:5715 mins ago0xf1bea24376329e01c7c10a00a6a7329591168cf9 IN  Gelato Network: Gelato0 FTM0.027251785716
0xb254789b1624f0afdd19976211a089dd583c3868c50e6f7f63878dccd8d991c9Exec551856702023-02-06 8:17:4317 mins ago0xf1bea24376329e01c7c10a00a6a7329591168cf9 IN  Gelato Network: Gelato0 FTM0.058788000449
0xdce767c0b779371f925da1f2dd084890a0ddf5b0cb4b513f6c8d059f8acea624Exec551851582023-02-06 8:00:2534 mins ago0xeba8f39400fa84b4ef73a6056ae36d3d25c6fd86 IN  Gelato Network: Gelato0 FTM0.011658396816
0xd3a790772b33204d483e886f18c2a62956e16ab6d20b3835c0e025dcab896201Exec551851552023-02-06 8:00:1935 mins ago0xeba8f39400fa84b4ef73a6056ae36d3d25c6fd86 IN  Gelato Network: Gelato0 FTM0.014455253894
0xdb06f692a54c210e1b9e8e045971ee3a0177b100b3239c985a4c73a7026d8cb1Exec551851332023-02-06 7:59:2835 mins ago0xf1bea24376329e01c7c10a00a6a7329591168cf9 IN  Gelato Network: Gelato0 FTM0.031574114482
0x2a5d85f41d227902f70027c3ca3122e783728f5fc8fdaa2cb0863bcab5c8f539Exec551850382023-02-06 7:56:1739 mins ago0xeba8f39400fa84b4ef73a6056ae36d3d25c6fd86 IN  Gelato Network: Gelato0 FTM0.011055283737
0x61f5df5be56db247d59f204b01d3a4b77dadc5dac09e8f7fe1af3422568971acExec551850242023-02-06 7:55:5439 mins ago0xeba8f39400fa84b4ef73a6056ae36d3d25c6fd86 IN  Gelato Network: Gelato0 FTM0.011156956884
0xc4571dc96891e60127615964e01cc324209ca10555f627ce3845998940993143Exec551849592023-02-06 7:53:3941 mins ago0xeba8f39400fa84b4ef73a6056ae36d3d25c6fd86 IN  Gelato Network: Gelato0 FTM0.011477061237
0x29b31bc24fe4144c79238b93cc5ac799d4d24de8f31f055a7eb5b034cebfa983Exec551848112023-02-06 7:49:0046 mins ago0xf1bea24376329e01c7c10a00a6a7329591168cf9 IN  Gelato Network: Gelato0 FTM0.123444425663
0xacbbcde5934483c81d9c2b3e06be206cf7bcf8f4a5ad68038fa0bc60bcfb273cExec551847832023-02-06 7:48:0247 mins ago0xf1bea24376329e01c7c10a00a6a7329591168cf9 IN  Gelato Network: Gelato0 FTM0.159299771125
0xa202d6706c478b23f19344cf2fbe6608c64e78049ddb756fcab234d83f97e0a8Exec551837232023-02-06 7:16:051 hr 19 mins ago0xeba8f39400fa84b4ef73a6056ae36d3d25c6fd86 IN  Gelato Network: Gelato0 FTM0.015663529751
0x881a300319e64ce5d70810d8786b177ca4fa46ffa01b1e34612729b97a9f1f5fExec551831382023-02-06 6:56:031 hr 39 mins ago0xeba8f39400fa84b4ef73a6056ae36d3d25c6fd86 IN  Gelato Network: Gelato0 FTM0.011397957378
0x2ce0be15a23b69e972e662e7a5eff4edb81319b596a53080bdd60cccac0933e2Exec551831292023-02-06 6:55:451 hr 39 mins ago0xf1bea24376329e01c7c10a00a6a7329591168cf9 IN  Gelato Network: Gelato0 FTM0.011502782023
0x7b3a358a25f4a2e609bf6c2b7749ae984e620c8340f057f1b44d4b3ac175d616Exec551830592023-02-06 6:53:031 hr 42 mins ago0xeba8f39400fa84b4ef73a6056ae36d3d25c6fd86 IN  Gelato Network: Gelato0 FTM0.011633235239
0x92ce8eb7fbd878151695aa64d18d5bface047ccc657957ccb0e0df7e868214e1Exec551823832023-02-06 6:30:152 hrs 5 mins ago0xeba8f39400fa84b4ef73a6056ae36d3d25c6fd86 IN  Gelato Network: Gelato0 FTM0.015441285425
0x62f85b740e72217e13523e755428891a8577ad7408871caa804a6ec5c3786b1bExec551821802023-02-06 6:24:532 hrs 10 mins ago0xf1bea24376329e01c7c10a00a6a7329591168cf9 IN  Gelato Network: Gelato0 FTM0.01548073678
0x8c60553b7178821710c2b2bbfcd37e067427f4df5f0b65e7e4ce152d2dc090a1Exec551819772023-02-06 6:19:192 hrs 16 mins ago0xf1bea24376329e01c7c10a00a6a7329591168cf9 IN  Gelato Network: Gelato0 FTM0.030194752424
0x9fd5cccc00391200ec95ca304ff68ade9b0b5b7d57f2a6fa89ceed15c0de321fExec551819502023-02-06 6:18:372 hrs 16 mins ago0xf1bea24376329e01c7c10a00a6a7329591168cf9 IN  Gelato Network: Gelato0 FTM0.007921760518
0xdf0ef4a6afc0df1b9d37f3ab84a3d3ad1df3a90496d4fdf1b0f6048ccc774de8Exec551816222023-02-06 6:08:482 hrs 26 mins ago0xeba8f39400fa84b4ef73a6056ae36d3d25c6fd86 IN  Gelato Network: Gelato0 FTM0.058026709323
0xf8c5eeb0102e9aae6652fe394f164bb84f62c0e62d2e9757a7725c01ac424ff1Exec551814082023-02-06 6:01:222 hrs 33 mins ago0xf1bea24376329e01c7c10a00a6a7329591168cf9 IN  Gelato Network: Gelato0 FTM0.039863363018
0x8bf7f7eb3659c1eeb734a72723552c158b368f5b4126930179dbd03e61092930Exec551813832023-02-06 6:00:272 hrs 34 mins ago0xf1bea24376329e01c7c10a00a6a7329591168cf9 IN  Gelato Network: Gelato0 FTM0.015598146708
0xc8dc6678c3d5223381a26c03189be2eef94801d5ff64e576d6cc61c7246783ceExec551813832023-02-06 6:00:272 hrs 34 mins ago0xf1bea24376329e01c7c10a00a6a7329591168cf9 IN  Gelato Network: Gelato0 FTM0.015107284701
0x68c8946ef4b1825d369099e0ebdcce81b3a1e37af4442f03364943a7267ee3bfExec551813832023-02-06 6:00:272 hrs 34 mins ago0xf1bea24376329e01c7c10a00a6a7329591168cf9 IN  Gelato Network: Gelato0 FTM0.011401478486
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xdb06f692a54c210e1b9e8e045971ee3a0177b100b3239c985a4c73a7026d8cb1551851332023-02-06 7:59:2835 mins ago 0x9ab353057cf41cfba981a37e6c8f3942cc0147b6 Gelato Network: Gelato0.02868327385328215 FTM
0x9fd5cccc00391200ec95ca304ff68ade9b0b5b7d57f2a6fa89ceed15c0de321f551819502023-02-06 6:18:372 hrs 16 mins ago 0x23019312e1ae24bfc15e3d257f409e686c9f20a1 Gelato Network: Gelato0.009938158547394 FTM
0xa6828956bd8eea3d7ee302f666783cbc4e136a8190763ed5875fd1fa01790711551809482023-02-06 5:46:482 hrs 48 mins ago 0x23019312e1ae24bfc15e3d257f409e686c9f20a1 Gelato Network: Gelato0.0117793931066735 FTM
0x75a1c6d23166a85aa9d6bd0269da26cd38109f625523d2a2f493b0cdd0e29477551805032023-02-06 5:32:163 hrs 3 mins ago 0x228ffd7122d202c0cd24330892881c47b0817c7a Gelato Network: Gelato2.774491951040238958 FTM
0xbacaec021ca05c1fd5e23ed175991788bfdfd408b8cee5d76ecb4da48c6c9378551804002023-02-06 5:28:433 hrs 6 mins ago 0x228ffd7122d202c0cd24330892881c47b0817c7a Gelato Network: Gelato11.73153565426435413 FTM
0x5e6e889ce63ac223897f22f0a6cfcb7f114eb8a29bae4a3315dc86f69ee3cd62551789982023-02-06 4:35:493 hrs 59 mins ago Gelato Network: Task Treasury Gelato Network: Gelato0.009841730018637567 FTM
0xf355b76c5de287ea514524f18e48b70301e294838b68f6bb72ab956f810e9d78551789802023-02-06 4:35:154 hrs ago Gelato Network: Task Treasury Gelato Network: Gelato0.006490603285167294 FTM
0xdce7dd2c329dfa3ef62f1fc01a4e7c3c9daed5050eaf0f6dfe507546893da65f551789702023-02-06 4:34:354 hrs ago Gelato Network: Task Treasury Gelato Network: Gelato0.006465176249952099 FTM
0x0ad53dfd3337c0553fd11ef47914ce5e71996d8458410bf8342b36afa8af5911551783932023-02-06 4:10:424 hrs 24 mins ago 0x228ffd7122d202c0cd24330892881c47b0817c7a Gelato Network: Gelato1.919624193296018613 FTM
0xc5939ad8cd5ca7812856c17b187a41bf68d67db9c047e72ef95da02a18b90d03551775632023-02-06 3:35:564 hrs 59 mins ago 0x228ffd7122d202c0cd24330892881c47b0817c7a Gelato Network: Gelato0.113730432991746446 FTM
0x34004028bd3bfa1000af486413ec8a1d3227438a6aa76ea0f29d05716f936cc7551775542023-02-06 3:35:264 hrs 59 mins ago 0x228ffd7122d202c0cd24330892881c47b0817c7a Gelato Network: Gelato11.540031616209220383 FTM
0x251467c2cd6e55658c42f1203fd84586b7d8fe5d97d131ca23d86b5254350014551774372023-02-06 3:30:105 hrs 5 mins ago 0x9ab353057cf41cfba981a37e6c8f3942cc0147b6 Gelato Network: Gelato0.029503248432912295 FTM
0xe6a46aa9bfec9616a34a4808b25e0db3d737a00b4f933e4466283094ca693843551742662023-02-06 1:06:007 hrs 29 mins ago 0x228ffd7122d202c0cd24330892881c47b0817c7a Gelato Network: Gelato0.25421503846527701 FTM
0x093927318dbb0cefd385af7074f06a785ac55ec6dd30e798e446b705ab4f9ccd551738262023-02-06 0:52:087 hrs 43 mins ago 0xf504e99599670029be53d5a6e3deb37ba016548e Gelato Network: Gelato0.040069824019314375 FTM
0x2b72416fa3aec5b4836fb2681bcc560f43ae509e5f9d7f2157d90b33db9fe496551736122023-02-06 0:45:177 hrs 50 mins ago 0x228ffd7122d202c0cd24330892881c47b0817c7a Gelato Network: Gelato0.051758537568162002 FTM
0xea64adca07ea7c24866577b625ad5b2ea989d193d0b15ebb32d3776d82449485551729722023-02-06 0:25:178 hrs 10 mins ago 0x228ffd7122d202c0cd24330892881c47b0817c7a Gelato Network: Gelato0.1265886617997342 FTM
0x94eebced740220a78bf893af14e77b84256dd7a945ff97cbb810809fed81340e551703922023-02-05 23:22:029 hrs 13 mins ago 0x9ab353057cf41cfba981a37e6c8f3942cc0147b6 Gelato Network: Gelato0.057158940319203456 FTM
0xc2bbe5c37cd6585d9a19ad9576b5bb6e353820b2d94337393a0c5baefd9bb474551678552023-02-05 22:36:389 hrs 58 mins ago 0x228ffd7122d202c0cd24330892881c47b0817c7a Gelato Network: Gelato1.31290959994568978 FTM
0xd0f025645e6112eca11a3ec042bae1aca696c30f564cd794c541d0cad6210aa3551677982023-02-05 22:35:379 hrs 59 mins ago Gelato Network: Task Treasury Gelato Network: Gelato0.01582045780187958 FTM
0x0e8310f257d6452b8025385be9e7d2855a94161ea18588f2dd337f6c01cc23eb551677582023-02-05 22:34:5710 hrs ago Gelato Network: Task Treasury Gelato Network: Gelato0.01350225868417914 FTM
0x1c6927b78dd06a4f82419734eac39451fe1ba1e3e64fc524c4c54a9292628383551677222023-02-05 22:34:1910 hrs 1 min ago Gelato Network: Task Treasury Gelato Network: Gelato0.01350225868417914 FTM
0x9b79e1a7c5f76223f2334ab792d5559c5434e4bee30b266258f48efadac41ccd551659692023-02-05 22:00:5210 hrs 34 mins ago 0x228ffd7122d202c0cd24330892881c47b0817c7a Gelato Network: Gelato0.059000634386946388 FTM
0x9ddc48b988dc5d310587f6a55f72903fcc01cddb8569447e69085ac2a4015f9a551657902023-02-05 21:57:2310 hrs 37 mins ago 0x228ffd7122d202c0cd24330892881c47b0817c7a Gelato Network: Gelato0.065744647132181261 FTM
0x1cb665299c785e979e719d1815bed8b0543b3944ca4dd6b0fccd042f662548af551614932023-02-05 20:38:1211 hrs 57 mins ago Gelato Network: Task Treasury Gelato Network: Gelato0.051233127669531691 FTM
0x0516b7a1a4541bc4011303fd355d494cad59f517678cc844ca9bfa8a23f3b1ac551582402023-02-05 19:40:3912 hrs 54 mins ago 0x228ffd7122d202c0cd24330892881c47b0817c7a Gelato Network: Gelato0.215336146010848017 FTM
[ 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",
        "abi"
      ]
    }
  }
}

Contract Security Audit

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"}]

608060405260405162002e5738038062002e57833981016040819052620000269162001081565b604080516000808252602082019092526200004e918491620000f560201b6200009c1760201c565b6200006881600001516200039d60201b6200030a1760201c565b60006200007f620003ff60201b6200036a1760201c565b6301ffc9a760e01b600090815260039091016020526040808220805460ff1990811660019081179092556307e4c70760e21b845282842080548216831790556348e2b09360e01b845282842080548216831790556307f5828d60e41b845291909220805490911690911790555062001890915050565b60005b83518110156200034e5760008482815181106200012557634e487b7160e01b600052603260045260246000fd5b6020026020010151602001519050600060028111156200015557634e487b7160e01b600052602160045260246000fd5b8160028111156200017657634e487b7160e01b600052602160045260246000fd5b1415620001ed57620001e7858381518110620001a257634e487b7160e01b600052603260045260246000fd5b602002602001015160000151868481518110620001cf57634e487b7160e01b600052603260045260246000fd5b6020026020010151604001516200042360201b60201c565b62000338565b60018160028111156200021057634e487b7160e01b600052602160045260246000fd5b14156200028157620001e78583815181106200023c57634e487b7160e01b600052603260045260246000fd5b6020026020010151600001518684815181106200026957634e487b7160e01b600052603260045260246000fd5b6020026020010151604001516200066360201b60201c565b6002816002811115620002a457634e487b7160e01b600052602160045260246000fd5b14156200031557620001e7858381518110620002d057634e487b7160e01b600052603260045260246000fd5b602002602001015160000151868481518110620002fd57634e487b7160e01b600052603260045260246000fd5b602002602001015160400151620008b860201b60201c565b60405162461bcd60e51b81526004016200032f9062001510565b60405180910390fd5b5080620003458162001825565b915050620000f8565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516200038493929190620012a7565b60405180910390a1620003988282620009a0565b505050565b6000620003a9620003ff565b6004810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90565b6000815111620004475760405162461bcd60e51b81526004016200032f9062001468565b600062000453620003ff565b90506001600160a01b0383166200047e5760405162461bcd60e51b81526004016200032f9062001557565b6001600160a01b038316600090815260018201602052604090205461ffff81166200052457620004c88460405180606001604052806024815260200162002e336024913962000b13565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b83518110156200065c5760008482815181106200055457634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b03168015620005a75760405162461bcd60e51b81526004016200032f906200164e565b6001600160a01b03871660008181526001878101602090815260408084208054938401815584528184206008840401805463ffffffff60079095166004026101000a948502191660e089901c94909402939093179092556001600160e01b031986168352889052902080546001600160a01b03191690911761ffff60a01b1916600160a01b61ffff87160217905583620006418162001800565b94505050508080620006539062001825565b91505062000527565b5050505050565b6000815111620006875760405162461bcd60e51b81526004016200032f9062001468565b600062000693620003ff565b90506001600160a01b038316620006be5760405162461bcd60e51b81526004016200032f9062001557565b6001600160a01b038316600090815260018201602052604090205461ffff81166200076457620007088460405180606001604052806024815260200162002e336024913962000b13565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b83518110156200065c5760008482815181106200079457634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b03908116908716811415620007ed5760405162461bcd60e51b81526004016200032f90620016ab565b620007f9818362000b37565b6001600160e01b03198216600081815260208781526040808320805461ffff60a01b1916600160a01b61ffff8b16021781556001600160a01b038c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b031916179055836200089d8162001800565b94505050508080620008af9062001825565b91505062000767565b6000815111620008dc5760405162461bcd60e51b81526004016200032f9062001468565b6000620008e8620003ff565b90506001600160a01b03831615620009145760405162461bcd60e51b81526004016200032f9062001708565b60005b82518110156200099a5760008382815181106200094457634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b031662000982818362000b37565b50508080620009919062001825565b91505062000917565b50505050565b6001600160a01b038216620009d757805115620009d15760405162461bcd60e51b81526004016200032f90620013c5565b62000b0f565b6000815111620009fb5760405162461bcd60e51b81526004016200032f90620015a3565b6001600160a01b038216301462000a315762000a318260405180606001604052806028815260200162002e0b6028913962000b13565b600080836001600160a01b03168360405162000a4e9190620011de565b600060405180830381855af49150503d806000811462000a8b576040519150601f19603f3d011682016040523d82523d6000602084013e62000a90565b606091505b5091509150816200099a5780511562000af55762000aef816040518060400160405280601481526020017f4c69624469616d6f6e644375743a5f696e69743a00000000000000000000000081525062000eea60201b6200038e1760201c565b6200099a565b60405162461bcd60e51b81526004016200032f9062001422565b5050565b813b81816200099a5760405162461bcd60e51b81526004016200032f9190620013a9565b600062000b43620003ff565b90506001600160a01b03831662000b6e5760405162461bcd60e51b81526004016200032f90620014b3565b6001600160a01b03831630141562000b9a5760405162461bcd60e51b81526004016200032f9062001600565b6001600160e01b03198216600090815260208281526040808320546001600160a01b0387168452600180860190935290832054600160a01b90910461ffff16929162000be691620017b7565b905080821462000cf1576001600160a01b0385166000908152600184016020526040812080548390811062000c2b57634e487b7160e01b600052603260045260246000fd5b600091825260208083206008830401546001600160a01b038a168452600188019091526040909220805460079092166004026101000a90920460e01b92508291908590811062000c8b57634e487b7160e01b600052603260045260246000fd5b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b031992909216825284905260409020805461ffff60a01b1916600160a01b61ffff8516021790555b6001600160a01b0385166000908152600184016020526040902080548062000d2957634e487b7160e01b600052603160045260246000fd5b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319861682528490526040902080546001600160b01b0319169055806200065c57600283015460009062000d9890600190620017b7565b6001600160a01b038716600090815260018087016020526040909120015490915061ffff1680821462000e7657600085600201838154811062000deb57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546002870180546001600160a01b03909216925082918490811062000e2b57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815260018781019092526040902001805461ffff191661ffff83161790555b8460020180548062000e9857634e487b7160e01b600052603160045260246000fd5b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03891682526001878101909152604090912001805461ffff1916905550505050505050565b6020825162000efa919062001843565b6004141562000f7757602082015162461bcd60e51b6001600160e01b03198216141562000f6457604483019250818360405160200162000f3c929190620011fc565b60408051601f198184030181529082905262461bcd60e51b82526200032f91600401620013a9565b8160405160200162000f3c91906200122f565b8060405160200162000f3c919062001264565b80516001600160a01b038116811462000fa257600080fd5b919050565b600082601f83011262000fb8578081fd5b8151602062000fd162000fcb8362001791565b62001765565b828152818101908583018385028701840188101562000fee578586fd5b855b85811015620010245781516001600160e01b03198116811462001011578788fd5b8452928401929084019060010162000ff0565b5090979650505050505050565b60006020828403121562001043578081fd5b604051602081016001600160401b03811182821017156200106857620010686200187a565b604052905080620010798362000f8a565b905292915050565b6000806040838503121562001094578182fd5b82516001600160401b0380821115620010ab578384fd5b818501915085601f830112620010bf578384fd5b81516020620010d262000fcb8362001791565b82815281810190858301885b858110156200118157815188016060818e03601f19011215620010ff578a8bfd5b604051606081018181108a821117156200111d576200111d6200187a565b6040526200112d82880162000f8a565b815260408201516003811062001141578c8dfd5b8188015260608201518981111562001157578c8dfd5b620011678f898386010162000fa7565b6040830152508552509284019290840190600101620010de565b50508097505050620011968882890162001031565b9450505050509250929050565b6001600160a01b03169052565b60008151808452620011ca816020860160208601620017d1565b601f01601f19169290920160200192915050565b60008251620011f2818460208701620017d1565b9190910192915050565b6000835162001210818460208801620017d1565b83519083019062001226818360208801620017d1565b01949350505050565b6000825162001243818460208701620017d1565b6e2737a2b93937b929b2b632b1ba37b960891b920191825250600f01919050565b6000825162001278818460208701620017d1565b7f556e657870656374656452657475726e64617461000000000000000000000000920191825250601401919050565b606080825284518282018190526000919060809081850190602080820287018401818b01875b848110156200137657898303607f19018652815180516001600160a01b031684528481015189850190600381106200131357634e487b7160e01b8c52602160045260248cfd5b858701526040918201519185018a9052815190819052908501908a90898601905b80831015620013605783516001600160e01b031916825292870192600192909201919087019062001334565b50978601979450505090830190600101620012cd565b5050620013868289018b620011a3565b87810360408901526200139a818a620011b0565b9b9a5050505050505050505050565b600060208252620013be6020830184620011b0565b9392505050565b6020808252603c908201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860408201527f3029206275745f63616c6c64617461206973206e6f7420656d70747900000000606082015260800190565b60208082526026908201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656040820152651d995c9d195960d21b606082015260800190565b6020808252602b908201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660408201526a1858d95d081d1bc818dd5d60aa1b606082015260800190565b60208082526037908201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360408201527f74696f6e207468617420646f65736e2774206578697374000000000000000000606082015260800190565b60208082526027908201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756040820152663a20b1ba34b7b760c91b606082015260800190565b6020808252602c908201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260408201526b65206164647265737328302960a01b606082015260800190565b6020808252603d908201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460408201527f7920627574205f696e6974206973206e6f742061646472657373283029000000606082015260800190565b6020808252602e908201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560408201526d3a30b1363290333ab731ba34b7b760911b606082015260800190565b60208082526035908201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60408201527f6e207468617420616c7265616479206578697374730000000000000000000000606082015260800190565b60208082526038908201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60408201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000606082015260800190565b60208082526036908201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260408201527f657373206d757374206265206164647265737328302900000000000000000000606082015260800190565b6040518181016001600160401b03811182821017156200178957620017896200187a565b604052919050565b60006001600160401b03821115620017ad57620017ad6200187a565b5060209081020190565b600082821015620017cc57620017cc62001864565b500390565b60005b83811015620017ee578181015183820152602001620017d4565b838111156200099a5750506000910152565b600061ffff808316818114156200181b576200181b62001864565b6001019392505050565b60006000198214156200183c576200183c62001864565b5060010190565b6000826200185f57634e487b7160e01b81526012600452602481fd5b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b61156b80620018a06000396000f3fe60806040523661000b57005b600080356001600160e01b03191681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602081905260409091205481906001600160a01b0316806100785760405162461bcd60e51b815260040161006f906113fc565b60405180910390fd5b3660008037600080366000845af43d6000803e808015610097573d6000f35b3d6000fd5b60005b83518110156102bf5760008482815181106100ca57634e487b7160e01b600052603260045260246000fd5b6020026020010151602001519050600060028111156100f957634e487b7160e01b600052602160045260246000fd5b81600281111561011957634e487b7160e01b600052602160045260246000fd5b14156101845761017f85838151811061014257634e487b7160e01b600052603260045260246000fd5b60200260200101516000015186848151811061016e57634e487b7160e01b600052603260045260246000fd5b602002602001015160400151610426565b6102ac565b60018160028111156101a657634e487b7160e01b600052602160045260246000fd5b141561020c5761017f8583815181106101cf57634e487b7160e01b600052603260045260246000fd5b6020026020010151600001518684815181106101fb57634e487b7160e01b600052603260045260246000fd5b602002602001015160400151610650565b600281600281111561022e57634e487b7160e01b600052602160045260246000fd5b14156102945761017f85838151811061025757634e487b7160e01b600052603260045260246000fd5b60200260200101516000015186848151811061028357634e487b7160e01b600052603260045260246000fd5b60200260200101516040015161088d565b60405162461bcd60e51b815260040161006f906111b6565b50806102b781611498565b91505061009f565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516102f393929190610f58565b60405180910390a16103058282610966565b505050565b600061031461036a565b6004810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90565b6020825161039c91906114b3565b6004141561041157602082015162461bcd60e51b6001600160e01b0319821614156104005760448301925081836040516020016103da929190610ebe565b60408051601f198184030181529082905262461bcd60e51b825261006f91600401611051565b816040516020016103da9190610eed565b806040516020016103da9190610f20565b5050565b60008151116104475760405162461bcd60e51b815260040161006f9061110e565b600061045161036a565b90506001600160a01b0383166104795760405162461bcd60e51b815260040161006f906111fd565b6001600160a01b038316600090815260018201602052604090205461ffff811661051b576104bf8460405180606001604052806024815260200161151260249139610aaa565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b835181101561064957600084828151811061054957634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b031680156105995760405162461bcd60e51b815260040161006f906112f4565b6001600160a01b03871660008181526001878101602090815260408084208054938401815584528184206008840401805463ffffffff60079095166004026101000a948502191660e089901c94909402939093179092556001600160e01b031986168352889052902080546001600160a01b03191690911761ffff60a01b1916600160a01b61ffff8716021790558361063181611476565b9450505050808061064190611498565b91505061051e565b5050505050565b60008151116106715760405162461bcd60e51b815260040161006f9061110e565b600061067b61036a565b90506001600160a01b0383166106a35760405162461bcd60e51b815260040161006f906111fd565b6001600160a01b038316600090815260018201602052604090205461ffff8116610745576106e98460405180606001604052806024815260200161151260249139610aaa565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b835181101561064957600084828151811061077357634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b039081169087168114156107c95760405162461bcd60e51b815260040161006f90611349565b6107d38183610acb565b6001600160e01b03198216600081815260208781526040808320805461ffff60a01b1916600160a01b61ffff8b16021781556001600160a01b038c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b0319161790558361087581611476565b9450505050808061088590611498565b915050610748565b60008151116108ae5760405162461bcd60e51b815260040161006f9061110e565b60006108b861036a565b90506001600160a01b038316156108e15760405162461bcd60e51b815260040161006f906113a6565b60005b825181101561096057600083828151811061090f57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b031661094b8183610acb565b5050808061095890611498565b9150506108e4565b50505050565b6001600160a01b038216610998578051156109935760405162461bcd60e51b815260040161006f9061106b565b610422565b60008151116109b95760405162461bcd60e51b815260040161006f90611249565b6001600160a01b03821630146109eb576109eb826040518060600160405280602881526020016114ea60289139610aaa565b600080836001600160a01b031683604051610a069190610ea2565b600060405180830381855af49150503d8060008114610a41576040519150601f19603f3d011682016040523d82523d6000602084013e610a46565b606091505b50915091508161096057805115610a9257610a8d81604051806040016040528060148152602001732634b12234b0b6b7b73221baba1d2fb4b734ba1d60611b81525061038e565b610960565b60405162461bcd60e51b815260040161006f906110c8565b813b81816109605760405162461bcd60e51b815260040161006f9190611051565b6000610ad561036a565b90506001600160a01b038316610afd5760405162461bcd60e51b815260040161006f90611159565b6001600160a01b038316301415610b265760405162461bcd60e51b815260040161006f906112a6565b6001600160e01b03198216600090815260208281526040808320546001600160a01b0387168452600180860190935290832054600160a01b90910461ffff169291610b7091611433565b9050808214610c78576001600160a01b03851660009081526001840160205260408120805483908110610bb357634e487b7160e01b600052603260045260246000fd5b600091825260208083206008830401546001600160a01b038a168452600188019091526040909220805460079092166004026101000a90920460e01b925082919085908110610c1257634e487b7160e01b600052603260045260246000fd5b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b031992909216825284905260409020805461ffff60a01b1916600160a01b61ffff8516021790555b6001600160a01b03851660009081526001840160205260409020805480610caf57634e487b7160e01b600052603160045260246000fd5b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319861682528490526040902080546001600160b01b031916905580610649576002830154600090610d1b90600190611433565b6001600160a01b038716600090815260018087016020526040909120015490915061ffff16808214610df6576000856002018381548110610d6c57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546002870180546001600160a01b039092169250829184908110610dab57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815260018781019092526040902001805461ffff191661ffff83161790555b84600201805480610e1757634e487b7160e01b600052603160045260246000fd5b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03891682526001878101909152604090912001805461ffff1916905550505050505050565b6001600160a01b03169052565b60008151808452610e8e81602086016020860161144a565b601f01601f19169290920160200192915050565b60008251610eb481846020870161144a565b9190910192915050565b60008351610ed081846020880161144a565b835190830190610ee481836020880161144a565b01949350505050565b60008251610eff81846020870161144a565b6e2737a2b93937b929b2b632b1ba37b960891b920191825250600f01919050565b60008251610f3281846020870161144a565b73556e657870656374656452657475726e6461746160601b920191825250601401919050565b606080825284518282018190526000919060809081850190602080820287018401818b01875b8481101561102257898303607f19018652815180516001600160a01b03168452848101518985019060038110610fc257634e487b7160e01b8c52602160045260248cfd5b858701526040918201519185018a9052815190819052908501908a90898601905b8083101561100d5783516001600160e01b0319168252928701926001929092019190870190610fe3565b50978601979450505090830190600101610f7e565b50506110308289018b610e69565b8781036040890152611042818a610e76565b9b9a5050505050505050505050565b6000602082526110646020830184610e76565b9392505050565b6020808252603c908201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860408201527f3029206275745f63616c6c64617461206973206e6f7420656d70747900000000606082015260800190565b60208082526026908201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656040820152651d995c9d195960d21b606082015260800190565b6020808252602b908201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660408201526a1858d95d081d1bc818dd5d60aa1b606082015260800190565b60208082526037908201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360408201527f74696f6e207468617420646f65736e2774206578697374000000000000000000606082015260800190565b60208082526027908201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756040820152663a20b1ba34b7b760c91b606082015260800190565b6020808252602c908201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260408201526b65206164647265737328302960a01b606082015260800190565b6020808252603d908201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460408201527f7920627574205f696e6974206973206e6f742061646472657373283029000000606082015260800190565b6020808252602e908201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560408201526d3a30b1363290333ab731ba34b7b760911b606082015260800190565b60208082526035908201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f6040820152746e207468617420616c72656164792065786973747360581b606082015260800190565b60208082526038908201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60408201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000606082015260800190565b60208082526036908201527f4c69624469616d6f6e644375743a2052656d6f76652066616365742061646472604082015275657373206d757374206265206164647265737328302960501b606082015260800190565b6020808252601f908201527f47656c61746f3a2046756e6374696f6e20646f6573206e6f7420657869737400604082015260600190565b600082821015611445576114456114d3565b500390565b60005b8381101561146557818101518382015260200161144d565b838111156109605750506000910152565b600061ffff8083168181141561148e5761148e6114d3565b6001019392505050565b60006000198214156114ac576114ac6114d3565b5060010190565b6000826114ce57634e487b7160e01b81526012600452602481fd5b500690565b634e487b7160e01b600052601160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a2646970667358221220cec609c0d247fd16c365c9801837d30d683dbd1cf0b08f0fd32d65fe5b885f2564736f6c634300080000334c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f646500000000000000000000000000000000000000000000000000000000000000400000000000000000000000006a0a93cd6d6fb7a36bf6234ef4650bf9474e7682000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000003e00000000000000000000000003bae1bf6a43b7843ad2858f0c6eed3def09607920000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000011f931c1c000000000000000000000000000000000000000000000000000000000000000000000000000000007c5c4af1618220c090a6863175de47afb20fa9df000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed6270000000000000000000000000000000000000000000000000000000001ffc9a70000000000000000000000000000000000000000000000000000000000000000000000000000000029b6603d17b9d8f021ecb8845b6fd06e1adf89de0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000028da5cb5b00000000000000000000000000000000000000000000000000000000f2fde38b000000000000000000000000000000000000000000000000000000000000000000000000000000007598e84b2e114ab62cab288ce5f7d5f6bad35bba000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000002da44c84e00000000000000000000000000000000000000000000000000000000a4d0c0a9000000000000000000000000000000000000000000000000000000000000000000000000000000004775af8fef4809fe10bf05867d2b038a4b5b21460000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000033da3156000000000000000000000000000000000000000000000000000000000b9880caa00000000000000000000000000000000000000000000000000000000b87b0b4c00000000000000000000000000000000000000000000000000000000

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

00000000000000000000000000000000000000000000000000000000000000400000000000000000000000006a0a93cd6d6fb7a36bf6234ef4650bf9474e7682000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000003e00000000000000000000000003bae1bf6a43b7843ad2858f0c6eed3def09607920000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000011f931c1c000000000000000000000000000000000000000000000000000000000000000000000000000000007c5c4af1618220c090a6863175de47afb20fa9df000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed6270000000000000000000000000000000000000000000000000000000001ffc9a70000000000000000000000000000000000000000000000000000000000000000000000000000000029b6603d17b9d8f021ecb8845b6fd06e1adf89de0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000028da5cb5b00000000000000000000000000000000000000000000000000000000f2fde38b000000000000000000000000000000000000000000000000000000000000000000000000000000007598e84b2e114ab62cab288ce5f7d5f6bad35bba000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000002da44c84e00000000000000000000000000000000000000000000000000000000a4d0c0a9000000000000000000000000000000000000000000000000000000000000000000000000000000004775af8fef4809fe10bf05867d2b038a4b5b21460000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000033da3156000000000000000000000000000000000000000000000000000000000b9880caa00000000000000000000000000000000000000000000000000000000b87b0b4c00000000000000000000000000000000000000000000000000000000

-----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] : 0000000000000000000000006a0a93cd6d6fb7a36bf6234ef4650bf9474e7682
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [3] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000260
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000320
Arg [7] : 00000000000000000000000000000000000000000000000000000000000003e0
Arg [8] : 0000000000000000000000003bae1bf6a43b7843ad2858f0c6eed3def0960792
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [12] : 1f931c1c00000000000000000000000000000000000000000000000000000000
Arg [13] : 0000000000000000000000007c5c4af1618220c090a6863175de47afb20fa9df
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] : 00000000000000000000000029b6603d17b9d8f021ecb8845b6fd06e1adf89de
Arg [23] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [24] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [25] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [26] : 8da5cb5b00000000000000000000000000000000000000000000000000000000
Arg [27] : f2fde38b00000000000000000000000000000000000000000000000000000000
Arg [28] : 0000000000000000000000007598e84b2e114ab62cab288ce5f7d5f6bad35bba
Arg [29] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [30] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [31] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [32] : da44c84e00000000000000000000000000000000000000000000000000000000
Arg [33] : a4d0c0a900000000000000000000000000000000000000000000000000000000
Arg [34] : 0000000000000000000000004775af8fef4809fe10bf05867d2b038a4b5b2146
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
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.