ERC-721
Overview
Max Total Supply
250 3777
Holders
40
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
10 3777Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xd9531C6E...68A19eE88 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
Diamond
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /***************************************************************\ . . . . . . . .... .. ...................... . . . . . .+ .. . . .. . ............................ ... .... . .. .+ . . .. .. ....... ..;@@@@@@@@@@@@@@@@@@@;........ ... . . + . . .. ...........X 8@8X8X8X8X8X8X8X8X@ 8 ....... .. .. .+ . .. . . ... ... .:..% 8 88@ 888888888888@%..8 .:...... . . + . . ... . ........:t:88888888@88888@8@888 ; @......... .. ..+ . . . . ........::.% 8 888@888888X888888 . 88:;:.:....... .+ . . .. . .....:.:; 88888888@8888888@88 S.88:.:........ .+ . . .. .......:.:;88 @8@8@888888@@88888. .888 88;.:..:..... + . .. .......:..:; 8888888888888@88888X : :Xt8 8 :S:.:........+ . .......:..:.;:8 8888888%8888888888 :. .888 8 88:;::::..... + . .. .......:::tS8@8888888@88%88888X ;. [email protected] 8 %: 8:..:.....+ . .........:..::8888@S888S8888888888 ;. :88SS 8t8. @::......+ . . .....:.::.8@ 88 @88 @8 88@ 88 @:: 8.8 8 8@ 88:.:.....v . . .......:.:;t8 :8 8 88.8 8:8.:8 t8..88 8 8 @ 8 88;::.:....+ .. .......:.:::;.%8 @ 8 @ .8:@.8 ;8;8t8:X@ 8:8X 88t::::.....+ . .. ......:..:::t88 8 8 8 t8 %88 88.@8 @ 888 X 8 XX;::::.::...+ ..........:::::::;:X:8 :8 8 ;8.8.8 @ :88 8:@ @ 8X;::::::.:...+ . .......:.:::::; 8 8.:8 8 t8:8 8 8.;88 XX 8 88t;:::::......+ .. .......:.:.:::::; @:8.;8 8.t8 8 tt8.%8@. 8 88t;:;::::.:....+ ... ....:.:.:.::;::; 8:8 ;8 8 t8 8:8 8.t8S. 888;;:;::::.:..:..+ . ........::::::::;:;.t 8 ;8 8 ;88:;8.8 ;88 88S:::::::.:.:....+ .. .. .....:.:.:::::;; 888X8S8 X@XSSS88 888X:t;;;::::::.:.....+ .. ........:..:::::;::;%;: .t. ;ttS:;t. . :;;:;:::.::......+ . . ......:.:..::::::;;;t;;:;;;;;;;;t;;;;;:: :;:;:::.:........+ /***************************************************************/ import { LibDiamond } from "./libraries/LibDiamond.sol"; import { IDiamondCut } from "./interfaces/IDiamondCut.sol"; import { IDiamondLoupe } from "./interfaces/IDiamondLoupe.sol"; import { IERC173 } from "./interfaces/IERC173.sol"; import { IERC165} from "./interfaces/IERC165.sol"; error FunctionNotFound(bytes4 _functionSelector); struct DiamondArgs { address owner; address init; bytes initCalldata; } contract Diamond { constructor(IDiamondCut.FacetCut[] memory _diamondCut, DiamondArgs memory _args) payable { LibDiamond.setContractOwner(_args.owner); LibDiamond.diamondCut(_diamondCut, _args.init, _args.initCalldata); } fallback() external payable { LibDiamond.DiamondStorage storage ds; bytes32 position = LibDiamond.DIAMOND_STORAGE_POSITION; assembly { ds.slot := position } address facet = ds.facetAddressAndSelectorPosition[msg.sig].facetAddress; if(facet == address(0)) { revert FunctionNotFound(msg.sig); } 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()) } } } receive() external payable {} }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /***************************************************************\ . . . . . . . .... .. ...................... . . . . . .+ .. . . .. . ............................ ... .... . .. .+ . . .. .. ....... ..;@@@@@@@@@@@@@@@@@@@;........ ... . . + . . .. ...........X 8@8X8X8X8X8X8X8X8X@ 8 ....... .. .. .+ . .. . . ... ... .:..% 8 88@ 888888888888@%..8 .:...... . . + . . ... . ........:t:88888888@88888@8@888 ; @......... .. ..+ . . . . ........::.% 8 888@888888X888888 . 88:;:.:....... .+ . . .. . .....:.:; 88888888@8888888@88 S.88:.:........ .+ . . .. .......:.:;88 @8@8@888888@@88888. .888 88;.:..:..... + . .. .......:..:; 8888888888888@88888X : :Xt8 8 :S:.:........+ . .......:..:.;:8 8888888%8888888888 :. .888 8 88:;::::..... + . .. .......:::tS8@8888888@88%88888X ;. [email protected] 8 %: 8:..:.....+ . .........:..::8888@S888S8888888888 ;. :88SS 8t8. @::......+ . . .....:.::.8@ 88 @88 @8 88@ 88 @:: 8.8 8 8@ 88:.:.....v . . .......:.:;t8 :8 8 88.8 8:8.:8 t8..88 8 8 @ 8 88;::.:....+ .. .......:.:::;.%8 @ 8 @ .8:@.8 ;8;8t8:X@ 8:8X 88t::::.....+ . .. ......:..:::t88 8 8 8 t8 %88 88.@8 @ 888 X 8 XX;::::.::...+ ..........:::::::;:X:8 :8 8 ;8.8.8 @ :88 8:@ @ 8X;::::::.:...+ . .......:.:::::; 8 8.:8 8 t8:8 8 8.;88 XX 8 88t;:::::......+ .. .......:.:.:::::; @:8.;8 8.t8 8 tt8.%8@. 8 88t;:;::::.:....+ ... ....:.:.:.::;::; 8:8 ;8 8 t8 8:8 8.t8S. 888;;:;::::.:..:..+ . ........::::::::;:;.t 8 ;8 8 ;88:;8.8 ;88 88S:::::::.:.:....+ .. .. .....:.:.:::::;; 888X8S8 X@XSSS88 888X:t;;;::::::.:.....+ .. ........:..:::::;::;%;: .t. ;ttS:;t. . :;;:;:::.::......+ . . ......:.:..::::::;;;t;;:;;;;;;;;t;;;;;:: :;:;:::.:........+ /***************************************************************/ interface IDiamond { 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); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /***************************************************************\ . . . . . . . .... .. ...................... . . . . . .+ .. . . .. . ............................ ... .... . .. .+ . . .. .. ....... ..;@@@@@@@@@@@@@@@@@@@;........ ... . . + . . .. ...........X 8@8X8X8X8X8X8X8X8X@ 8 ....... .. .. .+ . .. . . ... ... .:..% 8 88@ 888888888888@%..8 .:...... . . + . . ... . ........:t:88888888@88888@8@888 ; @......... .. ..+ . . . . ........::.% 8 888@888888X888888 . 88:;:.:....... .+ . . .. . .....:.:; 88888888@8888888@88 S.88:.:........ .+ . . .. .......:.:;88 @8@8@888888@@88888. .888 88;.:..:..... + . .. .......:..:; 8888888888888@88888X : :Xt8 8 :S:.:........+ . .......:..:.;:8 8888888%8888888888 :. .888 8 88:;::::..... + . .. .......:::tS8@8888888@88%88888X ;. [email protected] 8 %: 8:..:.....+ . .........:..::8888@S888S8888888888 ;. :88SS 8t8. @::......+ . . .....:.::.8@ 88 @88 @8 88@ 88 @:: 8.8 8 8@ 88:.:.....v . . .......:.:;t8 :8 8 88.8 8:8.:8 t8..88 8 8 @ 8 88;::.:....+ .. .......:.:::;.%8 @ 8 @ .8:@.8 ;8;8t8:X@ 8:8X 88t::::.....+ . .. ......:..:::t88 8 8 8 t8 %88 88.@8 @ 888 X 8 XX;::::.::...+ ..........:::::::;:X:8 :8 8 ;8.8.8 @ :88 8:@ @ 8X;::::::.:...+ . .......:.:::::; 8 8.:8 8 t8:8 8 8.;88 XX 8 88t;:::::......+ .. .......:.:.:::::; @:8.;8 8.t8 8 tt8.%8@. 8 88t;:;::::.:....+ ... ....:.:.:.::;::; 8:8 ;8 8 t8 8:8 8.t8S. 888;;:;::::.:..:..+ . ........::::::::;:;.t 8 ;8 8 ;88:;8.8 ;88 88S:::::::.:.:....+ .. .. .....:.:.:::::;; 888X8S8 X@XSSS88 888X:t;;;::::::.:.....+ .. ........:..:::::;::;%;: .t. ;ttS:;t. . :;;:;:::.::......+ . . ......:.:..::::::;;;t;;:;;;;;;;;t;;;;;:: :;:;:::.:........+ /***************************************************************/ import { IDiamond } from "./IDiamond.sol"; interface IDiamondCut is IDiamond { /// @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; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /***************************************************************\ . . . . . . . .... .. ...................... . . . . . .+ .. . . .. . ............................ ... .... . .. .+ . . .. .. ....... ..;@@@@@@@@@@@@@@@@@@@;........ ... . . + . . .. ...........X 8@8X8X8X8X8X8X8X8X@ 8 ....... .. .. .+ . .. . . ... ... .:..% 8 88@ 888888888888@%..8 .:...... . . + . . ... . ........:t:88888888@88888@8@888 ; @......... .. ..+ . . . . ........::.% 8 888@888888X888888 . 88:;:.:....... .+ . . .. . .....:.:; 88888888@8888888@88 S.88:.:........ .+ . . .. .......:.:;88 @8@8@888888@@88888. .888 88;.:..:..... + . .. .......:..:; 8888888888888@88888X : :Xt8 8 :S:.:........+ . .......:..:.;:8 8888888%8888888888 :. .888 8 88:;::::..... + . .. .......:::tS8@8888888@88%88888X ;. [email protected] 8 %: 8:..:.....+ . .........:..::8888@S888S8888888888 ;. :88SS 8t8. @::......+ . . .....:.::.8@ 88 @88 @8 88@ 88 @:: 8.8 8 8@ 88:.:.....v . . .......:.:;t8 :8 8 88.8 8:8.:8 t8..88 8 8 @ 8 88;::.:....+ .. .......:.:::;.%8 @ 8 @ .8:@.8 ;8;8t8:X@ 8:8X 88t::::.....+ . .. ......:..:::t88 8 8 8 t8 %88 88.@8 @ 888 X 8 XX;::::.::...+ ..........:::::::;:X:8 :8 8 ;8.8.8 @ :88 8:@ @ 8X;::::::.:...+ . .......:.:::::; 8 8.:8 8 t8:8 8 8.;88 XX 8 88t;:::::......+ .. .......:.:.:::::; @:8.;8 8.t8 8 tt8.%8@. 8 88t;:;::::.:....+ ... ....:.:.:.::;::; 8:8 ;8 8 t8 8:8 8.t8S. 888;;:;::::.:..:..+ . ........::::::::;:;.t 8 ;8 8 ;88:;8.8 ;88 88S:::::::.:.:....+ .. .. .....:.:.:::::;; 888X8S8 X@XSSS88 888X:t;;;::::::.:.....+ .. ........:..:::::;::;%;: .t. ;ttS:;t. . :;;:;:::.::......+ . . ......:.:..::::::;;;t;;:;;;;;;;;t;;;;;:: :;:;:::.:........+ /***************************************************************/ interface IDiamondLoupe { 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_); }
// 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); }
// 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 Get the address of the owner /// @return owner_ The address of the owner. function owner() external view returns (address owner_); /// @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; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /***************************************************************\ . . . . . . . .... .. ...................... . . . . . .+ .. . . .. . ............................ ... .... . .. .+ . . .. .. ....... ..;@@@@@@@@@@@@@@@@@@@;........ ... . . + . . .. ...........X 8@8X8X8X8X8X8X8X8X@ 8 ....... .. .. .+ . .. . . ... ... .:..% 8 88@ 888888888888@%..8 .:...... . . + . . ... . ........:t:88888888@88888@8@888 ; @......... .. ..+ . . . . ........::.% 8 888@888888X888888 . 88:;:.:....... .+ . . .. . .....:.:; 88888888@8888888@88 S.88:.:........ .+ . . .. .......:.:;88 @8@8@888888@@88888. .888 88;.:..:..... + . .. .......:..:; 8888888888888@88888X : :Xt8 8 :S:.:........+ . .......:..:.;:8 8888888%8888888888 :. .888 8 88:;::::..... + . .. .......:::tS8@8888888@88%88888X ;. [email protected] 8 %: 8:..:.....+ . .........:..::8888@S888S8888888888 ;. :88SS 8t8. @::......+ . . .....:.::.8@ 88 @88 @8 88@ 88 @:: 8.8 8 8@ 88:.:.....v . . .......:.:;t8 :8 8 88.8 8:8.:8 t8..88 8 8 @ 8 88;::.:....+ .. .......:.:::;.%8 @ 8 @ .8:@.8 ;8;8t8:X@ 8:8X 88t::::.....+ . .. ......:..:::t88 8 8 8 t8 %88 88.@8 @ 888 X 8 XX;::::.::...+ ..........:::::::;:X:8 :8 8 ;8.8.8 @ :88 8:@ @ 8X;::::::.:...+ . .......:.:::::; 8 8.:8 8 t8:8 8 8.;88 XX 8 88t;:::::......+ .. .......:.:.:::::; @:8.;8 8.t8 8 tt8.%8@. 8 88t;:;::::.:....+ ... ....:.:.:.::;::; 8:8 ;8 8 t8 8:8 8.t8S. 888;;:;::::.:..:..+ . ........::::::::;:;.t 8 ;8 8 ;88:;8.8 ;88 88S:::::::.:.:....+ .. .. .....:.:.:::::;; 888X8S8 X@XSSS88 888X:t;;;::::::.:.....+ .. ........:..:::::;::;%;: .t. ;ttS:;t. . :;;:;:::.::......+ . . ......:.:..::::::;;;t;;:;;;;;;;;t;;;;;:: :;:;:::.:........+ /***************************************************************/ import { IDiamond } from "../interfaces/IDiamond.sol"; import { IDiamondCut } from "../interfaces/IDiamondCut.sol"; error NoSelectorsGivenToAdd(); error NotContractOwner(address _user, address _contractOwner); error NoSelectorsProvidedForFacetForCut(address _facetAddress); error CannotAddSelectorsToZeroAddress(bytes4[] _selectors); error NoBytecodeAtAddress(address _contractAddress, string _message); error IncorrectFacetCutAction(uint8 _action); error CannotAddFunctionToDiamondThatAlreadyExists(bytes4 _selector); error CannotReplaceFunctionsFromFacetWithZeroAddress(bytes4[] _selectors); error CannotReplaceImmutableFunction(bytes4 _selector); error CannotReplaceFunctionWithTheSameFunctionFromTheSameFacet(bytes4 _selector); error CannotReplaceFunctionThatDoesNotExists(bytes4 _selector); error RemoveFacetAddressMustBeZeroAddress(address _facetAddress); error CannotRemoveFunctionThatDoesNotExist(bytes4 _selector); error CannotRemoveImmutableFunction(bytes4 _selector); error InitializationFunctionReverted(address _initializationContractAddress, bytes _calldata); library LibDiamond { bytes32 constant DIAMOND_STORAGE_POSITION = keccak256("diamond.standard.diamond.storage"); uint8 constant INNER_STRUCT = 0; struct FacetAddressAndSelectorPosition { address facetAddress; uint16 selectorPosition; } struct ProjectConfig { string name; string symbol; uint256 maxSupply; uint256 price; uint256 maxTotalMints; uint256 maxMintTxns; uint256 privateSaleTimestamp; uint256 publicSaleTimestamp; address superAdmin; address[] primaryDistRecipients; uint256[] primaryDistShares; address royaltyReceiver; uint96 royaltyFraction; bytes32 merkleroot; string _baseURI; uint256 closeDate; uint256 minMint; } struct DiamondStorage { // function selector => facet address and selector position in selectors array mapping(bytes4 => FacetAddressAndSelectorPosition) facetAddressAndSelectorPosition; bytes4[] selectors; mapping(bytes4 => bool) supportedInterfaces; // owner of the contract address contractOwner; // mapping constant for avoiding future issues when adding new ProjectConfig vars uint8 INNER_STRUCT; mapping(uint8 => ProjectConfig) project; } 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 enforceIsContractOwner() internal view { if(msg.sender != diamondStorage().contractOwner && msg.sender != diamondStorage().project[INNER_STRUCT].superAdmin) { revert NotContractOwner(msg.sender, diamondStorage().contractOwner); } } 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++) { bytes4[] memory functionSelectors = _diamondCut[facetIndex].functionSelectors; address facetAddress = _diamondCut[facetIndex].facetAddress; if(functionSelectors.length == 0) { revert NoSelectorsProvidedForFacetForCut(facetAddress); } IDiamondCut.FacetCutAction action = _diamondCut[facetIndex].action; if (action == IDiamond.FacetCutAction.Add) { addFunctions(facetAddress, functionSelectors); } else if (action == IDiamond.FacetCutAction.Replace) { replaceFunctions(facetAddress, functionSelectors); } else if (action == IDiamond.FacetCutAction.Remove) { removeFunctions(facetAddress, functionSelectors); } else { revert IncorrectFacetCutAction(uint8(action)); } } emit DiamondCut(_diamondCut, _init, _calldata); initializeDiamondCut(_init, _calldata); } function addFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal { if(_facetAddress == address(0)) { revert CannotAddSelectorsToZeroAddress(_functionSelectors); } DiamondStorage storage ds = diamondStorage(); uint16 selectorCount = uint16(ds.selectors.length); enforceHasContractCode(_facetAddress, "LibDiamondCut: Add facet has no code"); for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) { bytes4 selector = _functionSelectors[selectorIndex]; address oldFacetAddress = ds.facetAddressAndSelectorPosition[selector].facetAddress; if(oldFacetAddress != address(0)) { revert CannotAddFunctionToDiamondThatAlreadyExists(selector); } ds.facetAddressAndSelectorPosition[selector] = FacetAddressAndSelectorPosition(_facetAddress, selectorCount); ds.selectors.push(selector); selectorCount++; } } function replaceFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal { DiamondStorage storage ds = diamondStorage(); if(_facetAddress == address(0)) { revert CannotReplaceFunctionsFromFacetWithZeroAddress(_functionSelectors); } enforceHasContractCode(_facetAddress, "LibDiamondCut: Replace facet has no code"); for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) { bytes4 selector = _functionSelectors[selectorIndex]; address oldFacetAddress = ds.facetAddressAndSelectorPosition[selector].facetAddress; // can't replace immutable functions -- functions defined directly in the diamond in this case if(oldFacetAddress == address(this)) { revert CannotReplaceImmutableFunction(selector); } if(oldFacetAddress == _facetAddress) { revert CannotReplaceFunctionWithTheSameFunctionFromTheSameFacet(selector); } if(oldFacetAddress == address(0)) { revert CannotReplaceFunctionThatDoesNotExists(selector); } // replace old facet address ds.facetAddressAndSelectorPosition[selector].facetAddress = _facetAddress; } } function removeFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal { DiamondStorage storage ds = diamondStorage(); uint256 selectorCount = ds.selectors.length; if(_facetAddress != address(0)) { revert RemoveFacetAddressMustBeZeroAddress(_facetAddress); } for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) { bytes4 selector = _functionSelectors[selectorIndex]; FacetAddressAndSelectorPosition memory oldFacetAddressAndSelectorPosition = ds.facetAddressAndSelectorPosition[selector]; if(oldFacetAddressAndSelectorPosition.facetAddress == address(0)) { revert CannotRemoveFunctionThatDoesNotExist(selector); } // can't remove immutable functions -- functions defined directly in the diamond if(oldFacetAddressAndSelectorPosition.facetAddress == address(this)) { revert CannotRemoveImmutableFunction(selector); } // replace selector with last selector selectorCount--; if (oldFacetAddressAndSelectorPosition.selectorPosition != selectorCount) { bytes4 lastSelector = ds.selectors[selectorCount]; ds.selectors[oldFacetAddressAndSelectorPosition.selectorPosition] = lastSelector; ds.facetAddressAndSelectorPosition[lastSelector].selectorPosition = oldFacetAddressAndSelectorPosition.selectorPosition; } // delete last selector ds.selectors.pop(); delete ds.facetAddressAndSelectorPosition[selector]; } } function initializeDiamondCut(address _init, bytes memory _calldata) internal { if (_init == address(0)) { return; } enforceHasContractCode(_init, "LibDiamondCut: _init address has no code"); (bool success, bytes memory error) = _init.delegatecall(_calldata); if (!success) { if (error.length > 0) { // bubble up error /// @solidity memory-safe-assembly assembly { let returndata_size := mload(error) revert(add(32, error), returndata_size) } } else { revert InitializationFunctionReverted(_init, _calldata); } } } function enforceHasContractCode(address _contract, string memory _errorMessage) internal view { uint256 contractSize; assembly { contractSize := extcodesize(_contract) } if(contractSize == 0) { revert NoBytecodeAtAddress(_contract, _errorMessage); } } } contract Modifiers { modifier onlyOwner() { LibDiamond.enforceIsContractOwner(); _; } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamond.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct IDiamond.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"init","type":"address"},{"internalType":"bytes","name":"initCalldata","type":"bytes"}],"internalType":"struct DiamondArgs","name":"_args","type":"tuple"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"bytes4","name":"_selector","type":"bytes4"}],"name":"CannotAddFunctionToDiamondThatAlreadyExists","type":"error"},{"inputs":[{"internalType":"bytes4[]","name":"_selectors","type":"bytes4[]"}],"name":"CannotAddSelectorsToZeroAddress","type":"error"},{"inputs":[{"internalType":"bytes4","name":"_selector","type":"bytes4"}],"name":"CannotRemoveFunctionThatDoesNotExist","type":"error"},{"inputs":[{"internalType":"bytes4","name":"_selector","type":"bytes4"}],"name":"CannotRemoveImmutableFunction","type":"error"},{"inputs":[{"internalType":"bytes4","name":"_selector","type":"bytes4"}],"name":"CannotReplaceFunctionThatDoesNotExists","type":"error"},{"inputs":[{"internalType":"bytes4","name":"_selector","type":"bytes4"}],"name":"CannotReplaceFunctionWithTheSameFunctionFromTheSameFacet","type":"error"},{"inputs":[{"internalType":"bytes4[]","name":"_selectors","type":"bytes4[]"}],"name":"CannotReplaceFunctionsFromFacetWithZeroAddress","type":"error"},{"inputs":[{"internalType":"bytes4","name":"_selector","type":"bytes4"}],"name":"CannotReplaceImmutableFunction","type":"error"},{"inputs":[{"internalType":"bytes4","name":"_functionSelector","type":"bytes4"}],"name":"FunctionNotFound","type":"error"},{"inputs":[{"internalType":"uint8","name":"_action","type":"uint8"}],"name":"IncorrectFacetCutAction","type":"error"},{"inputs":[{"internalType":"address","name":"_initializationContractAddress","type":"address"},{"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"InitializationFunctionReverted","type":"error"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"string","name":"_message","type":"string"}],"name":"NoBytecodeAtAddress","type":"error"},{"inputs":[{"internalType":"address","name":"_facetAddress","type":"address"}],"name":"NoSelectorsProvidedForFacetForCut","type":"error"},{"inputs":[{"internalType":"address","name":"_facetAddress","type":"address"}],"name":"RemoveFacetAddressMustBeZeroAddress","type":"error"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052604051620036c7380380620036c783398181016040528101906200002991906200163e565b6200004381600001516200006b60201b6200018d1760201c565b6200006382826020015183604001516200014a60201b620002641760201c565b505062001d95565b60006200007d620003b660201b60201c565b905060008160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b60005b8351811015620003615760008482815181106200016f576200016e620016c3565b5b60200260200101516040015190506000858381518110620001955762000194620016c3565b5b60200260200101516000015190506000825103620001ec57806040517fe767f91f000000000000000000000000000000000000000000000000000000008152600401620001e3919062001703565b60405180910390fd5b6000868481518110620002045762000203620016c3565b5b60200260200101516020015190506000600281111562000229576200022862001720565b5b8160028111156200023f576200023e62001720565b5b036200025d57620002578284620003e360201b60201c565b62000348565b6001600281111562000274576200027362001720565b5b8160028111156200028a576200028962001720565b5b03620002a857620002a282846200072b60201b60201c565b62000347565b600280811115620002be57620002bd62001720565b5b816002811115620002d457620002d362001720565b5b03620002f257620002ec828462000a9560201b60201c565b62000346565b80600281111562000308576200030762001720565b5b6040517f7fe9a41e0000000000000000000000000000000000000000000000000000000081526004016200033d91906200176d565b60405180910390fd5b5b5b50505080806200035890620017c3565b9150506200014d565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673838383604051620003979392919062001ac3565b60405180910390a1620003b1828262000f4060201b60201c565b505050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200045757806040517f0ae3681c0000000000000000000000000000000000000000000000000000000081526004016200044e919062001b89565b60405180910390fd5b600062000469620003b660201b60201c565b9050600081600101805490509050620004a28460405180606001604052806024815260200162003653602491396200107460201b60201c565b60005b835181101562000724576000848281518110620004c757620004c6620016c3565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614620005c057816040517febbf5d07000000000000000000000000000000000000000000000000000000008152600401620005b7919062001bbe565b60405180910390fd5b60405180604001604052808873ffffffffffffffffffffffffffffffffffffffff1681526020018561ffff16815250856000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548161ffff021916908361ffff160217905550905050846001018290806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c02179055508380620007099062001be9565b945050505080806200071b90620017c3565b915050620004a5565b5050505050565b60006200073d620003b660201b60201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620007b357816040517fcd98a96f000000000000000000000000000000000000000000000000000000008152600401620007aa919062001b89565b60405180910390fd5b620007de836040518060600160405280602881526020016200369f602891396200107460201b60201c565b60005b825181101562000a8f576000838281518110620008035762000802620016c3565b5b602002602001015190506000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620008fb57816040517f520300da000000000000000000000000000000000000000000000000000000008152600401620008f2919062001bbe565b60405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200096e57816040517f358d9d1a00000000000000000000000000000000000000000000000000000000815260040162000965919062001bbe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620009e257816040517f7479f939000000000000000000000000000000000000000000000000000000008152600401620009d9919062001bbe565b60405180910390fd5b85846000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050808062000a8690620017c3565b915050620007e1565b50505050565b600062000aa7620003b660201b60201c565b9050600081600101805490509050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161462000b2957836040517fd091bc8100000000000000000000000000000000000000000000000000000000815260040162000b20919062001703565b60405180910390fd5b60005b835181101562000f3957600084828151811062000b4e5762000b4d620016c3565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900461ffff1661ffff1661ffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160362000ca857816040517f7a08a22d00000000000000000000000000000000000000000000000000000000815260040162000c9f919062001bbe565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160362000d1f57816040517f6fafeb0800000000000000000000000000000000000000000000000000000000815260040162000d16919062001bbe565b60405180910390fd5b838062000d2c9062001c18565b94505083816020015161ffff161462000e4857600085600101858154811062000d5a5762000d59620016c3565b5b90600052602060002090600891828204019190066004029054906101000a900460e01b90508086600101836020015161ffff168154811062000da15762000da0620016c3565b5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c02179055508160200151866000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a81548161ffff021916908361ffff160217905550505b8460010180548062000e5f5762000e5e62001c46565b5b60019003818190600052602060002090600891828204019190066004026101000a81549063ffffffff02191690559055846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549061ffff021916905550505050808062000f3090620017c3565b91505062000b2c565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160315620010705762000fa18260405180606001604052806028815260200162003677602891396200107460201b60201c565b6000808373ffffffffffffffffffffffffffffffffffffffff168360405162000fcb919062001cb7565b600060405180830381855af49150503d806000811462001008576040519150601f19603f3d011682016040523d82523d6000602084013e6200100d565b606091505b5091509150816200106d576000815111156200102c5780518082602001fd5b83836040517f192105d70000000000000000000000000000000000000000000000000000000081526004016200106492919062001cd0565b60405180910390fd5b50505b5050565b6000823b905060008103620010c45782826040517f919834b9000000000000000000000000000000000000000000000000000000008152600401620010bb92919062001d61565b60405180910390fd5b505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200112d82620010e2565b810181811067ffffffffffffffff821117156200114f576200114e620010f3565b5b80604052505050565b600062001164620010c9565b905062001172828262001122565b919050565b600067ffffffffffffffff821115620011955762001194620010f3565b5b602082029050602081019050919050565b600080fd5b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620011e282620011b5565b9050919050565b620011f481620011d5565b81146200120057600080fd5b50565b6000815190506200121481620011e9565b92915050565b600381106200122857600080fd5b50565b6000815190506200123c816200121a565b92915050565b600067ffffffffffffffff82111562001260576200125f620010f3565b5b602082029050602081019050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b620012a88162001271565b8114620012b457600080fd5b50565b600081519050620012c8816200129d565b92915050565b6000620012e5620012df8462001242565b62001158565b905080838252602082019050602084028301858111156200130b576200130a620011a6565b5b835b81811015620013385780620013238882620012b7565b8452602084019350506020810190506200130d565b5050509392505050565b600082601f8301126200135a5762001359620010dd565b5b81516200136c848260208601620012ce565b91505092915050565b6000606082840312156200138e576200138d620011ab565b5b6200139a606062001158565b90506000620013ac8482850162001203565b6000830152506020620013c2848285016200122b565b602083015250604082015167ffffffffffffffff811115620013e957620013e8620011b0565b5b620013f78482850162001342565b60408301525092915050565b60006200141a620014148462001177565b62001158565b9050808382526020820190506020840283018581111562001440576200143f620011a6565b5b835b818110156200148e57805167ffffffffffffffff811115620014695762001468620010dd565b5b80860162001478898262001375565b8552602085019450505060208101905062001442565b5050509392505050565b600082601f830112620014b057620014af620010dd565b5b8151620014c284826020860162001403565b91505092915050565b600080fd5b600067ffffffffffffffff821115620014ee57620014ed620010f3565b5b620014f982620010e2565b9050602081019050919050565b60005b838110156200152657808201518184015260208101905062001509565b60008484015250505050565b6000620015496200154384620014d0565b62001158565b905082815260208101848484011115620015685762001567620014cb565b5b6200157584828562001506565b509392505050565b600082601f830112620015955762001594620010dd565b5b8151620015a784826020860162001532565b91505092915050565b600060608284031215620015c957620015c8620011ab565b5b620015d5606062001158565b90506000620015e78482850162001203565b6000830152506020620015fd8482850162001203565b602083015250604082015167ffffffffffffffff811115620016245762001623620011b0565b5b62001632848285016200157d565b60408301525092915050565b60008060408385031215620016585762001657620010d3565b5b600083015167ffffffffffffffff811115620016795762001678620010d8565b5b620016878582860162001498565b925050602083015167ffffffffffffffff811115620016ab57620016aa620010d8565b5b620016b985828601620015b0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b620016fd81620011d5565b82525050565b60006020820190506200171a6000830184620016f2565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060ff82169050919050565b62001767816200174f565b82525050565b60006020820190506200178460008301846200175c565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b6000620017d082620017b9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200180557620018046200178a565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6200184781620011d5565b82525050565b6003811062001861576200186062001720565b5b50565b600081905062001874826200184d565b919050565b6000620018868262001864565b9050919050565b620018988162001879565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b620018d58162001271565b82525050565b6000620018e98383620018ca565b60208301905092915050565b6000602082019050919050565b60006200190f826200189e565b6200191b8185620018a9565b93506200192883620018ba565b8060005b838110156200195f578151620019438882620018db565b97506200195083620018f5565b9250506001810190506200192c565b5085935050505092915050565b60006060830160008301516200198660008601826200183c565b5060208301516200199b60208601826200188d565b5060408301518482036040860152620019b5828262001902565b9150508091505092915050565b6000620019d083836200196c565b905092915050565b6000602082019050919050565b6000620019f28262001810565b620019fe81856200181b565b93508360208202850162001a12856200182c565b8060005b8581101562001a54578484038952815162001a328582620019c2565b945062001a3f83620019d8565b925060208a0199505060018101905062001a16565b50829750879550505050505092915050565b600081519050919050565b600082825260208201905092915050565b600062001a8f8262001a66565b62001a9b818562001a71565b935062001aad81856020860162001506565b62001ab881620010e2565b840191505092915050565b6000606082019050818103600083015262001adf8186620019e5565b905062001af06020830185620016f2565b818103604083015262001b04818462001a82565b9050949350505050565b600082825260208201905092915050565b600062001b2c826200189e565b62001b38818562001b0e565b935062001b4583620018ba565b8060005b8381101562001b7c57815162001b608882620018db565b975062001b6d83620018f5565b92505060018101905062001b49565b5085935050505092915050565b6000602082019050818103600083015262001ba5818462001b1f565b905092915050565b62001bb88162001271565b82525050565b600060208201905062001bd5600083018462001bad565b92915050565b600061ffff82169050919050565b600062001bf68262001bdb565b915061ffff820362001c0d5762001c0c6200178a565b5b600182019050919050565b600062001c2582620017b9565b91506000820362001c3b5762001c3a6200178a565b5b600182039050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081905092915050565b600062001c8d8262001a66565b62001c99818562001c75565b935062001cab81856020860162001506565b80840191505092915050565b600062001cc5828462001c80565b915081905092915050565b600060408201905062001ce76000830185620016f2565b818103602083015262001cfb818462001a82565b90509392505050565b600081519050919050565b600082825260208201905092915050565b600062001d2d8262001d04565b62001d39818562001d0f565b935062001d4b81856020860162001506565b62001d5681620010e2565b840191505092915050565b600060408201905062001d786000830185620016f2565b818103602083015262001d8c818462001d20565b90509392505050565b6118ae8062001da56000396000f3fe60806040523661000b57005b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c9050809150600082600001600080357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610167576000357fffffffff00000000000000000000000000000000000000000000000000000000166040517f5416eb9800000000000000000000000000000000000000000000000000000000815260040161015e9190611152565b60405180910390fd5b3660008037600080366000845af43d6000803e8060008114610188573d6000f35b3d6000fd5b6000610197610481565b905060008160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b60005b83518110156104365760008482815181106102855761028461116d565b5b602002602001015160400151905060008583815181106102a8576102a761116d565b5b602002602001015160000151905060008251036102fc57806040517fe767f91f0000000000000000000000000000000000000000000000000000000081526004016102f391906111dd565b60405180910390fd5b60008684815181106103115761031061116d565b5b602002602001015160200151905060006002811115610333576103326111f8565b5b816002811115610346576103456111f8565b5b0361035a5761035582846104ae565b610420565b6001600281111561036e5761036d6111f8565b5b816002811115610381576103806111f8565b5b036103955761039082846107d6565b61041f565b6002808111156103a8576103a76111f8565b5b8160028111156103bb576103ba6111f8565b5b036103cf576103ca8284610b1c565b61041e565b8060028111156103e2576103e16111f8565b5b6040517f7fe9a41e0000000000000000000000000000000000000000000000000000000081526004016104159190611243565b60405180910390fd5b5b5b505050808061042e90611297565b915050610267565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67383838360405161046a93929190611596565b60405180910390a161047c8282610fa3565b505050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361051f57806040517f0ae3681c000000000000000000000000000000000000000000000000000000008152600401610516919061164a565b60405180910390fd5b6000610529610481565b905060008160010180549050905061055984604051806060016040528060248152602001611805602491396110c5565b60005b83518110156107cf57600084828151811061057a5761057961116d565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461067057816040517febbf5d070000000000000000000000000000000000000000000000000000000081526004016106679190611152565b60405180910390fd5b60405180604001604052808873ffffffffffffffffffffffffffffffffffffffff1681526020018561ffff16815250856000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548161ffff021916908361ffff160217905550905050846001018290806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c021790555083806107b79061167a565b945050505080806107c790611297565b91505061055c565b5050505050565b60006107e0610481565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361085357816040517fcd98a96f00000000000000000000000000000000000000000000000000000000815260040161084a919061164a565b60405180910390fd5b61087583604051806060016040528060288152602001611851602891396110c5565b60005b8251811015610b165760008382815181106108965761089561116d565b5b602002602001015190506000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361098b57816040517f520300da0000000000000000000000000000000000000000000000000000000081526004016109829190611152565b60405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109fb57816040517f358d9d1a0000000000000000000000000000000000000000000000000000000081526004016109f29190611152565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a6c57816040517f7479f939000000000000000000000000000000000000000000000000000000008152600401610a639190611152565b60405180910390fd5b85846000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050508080610b0e90611297565b915050610878565b50505050565b6000610b26610481565b9050600081600101805490509050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614610ba557836040517fd091bc81000000000000000000000000000000000000000000000000000000008152600401610b9c91906111dd565b60405180910390fd5b60005b8351811015610f9c576000848281518110610bc657610bc561116d565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900461ffff1661ffff1661ffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1603610d1d57816040517f7a08a22d000000000000000000000000000000000000000000000000000000008152600401610d149190611152565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1603610d9157816040517f6fafeb08000000000000000000000000000000000000000000000000000000008152600401610d889190611152565b60405180910390fd5b8380610d9c906116a4565b94505083816020015161ffff1614610eb1576000856001018581548110610dc657610dc561116d565b5b90600052602060002090600891828204019190066004029054906101000a900460e01b90508086600101836020015161ffff1681548110610e0a57610e0961116d565b5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c02179055508160200151866000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a81548161ffff021916908361ffff160217905550505b84600101805480610ec557610ec46116cd565b5b60019003818190600052602060002090600891828204019190066004026101000a81549063ffffffff02191690559055846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549061ffff0219169055505050508080610f9490611297565b915050610ba8565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603156110c157610ffa82604051806060016040528060288152602001611829602891396110c5565b6000808373ffffffffffffffffffffffffffffffffffffffff16836040516110229190611738565b600060405180830381855af49150503d806000811461105d576040519150601f19603f3d011682016040523d82523d6000602084013e611062565b606091505b5091509150816110be5760008151111561107f5780518082602001fd5b83836040517f192105d70000000000000000000000000000000000000000000000000000000081526004016110b592919061174f565b60405180910390fd5b50505b5050565b6000823b9050600081036111125782826040517f919834b90000000000000000000000000000000000000000000000000000000081526004016111099291906117d4565b60405180910390fd5b505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114c81611117565b82525050565b60006020820190506111676000830184611143565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006111c78261119c565b9050919050565b6111d7816111bc565b82525050565b60006020820190506111f260008301846111ce565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060ff82169050919050565b61123d81611227565b82525050565b60006020820190506112586000830184611234565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b60006112a28261128d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036112d4576112d361125e565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611314816111bc565b82525050565b6003811061132b5761132a6111f8565b5b50565b600081905061133c8261131a565b919050565b600061134c8261132e565b9050919050565b61135c81611341565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61139781611117565b82525050565b60006113a9838361138e565b60208301905092915050565b6000602082019050919050565b60006113cd82611362565b6113d7818561136d565b93506113e28361137e565b8060005b838110156114135781516113fa888261139d565b9750611405836113b5565b9250506001810190506113e6565b5085935050505092915050565b6000606083016000830151611438600086018261130b565b50602083015161144b6020860182611353565b506040830151848203604086015261146382826113c2565b9150508091505092915050565b600061147c8383611420565b905092915050565b6000602082019050919050565b600061149c826112df565b6114a681856112ea565b9350836020820285016114b8856112fb565b8060005b858110156114f457848403895281516114d58582611470565b94506114e083611484565b925060208a019950506001810190506114bc565b50829750879550505050505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611540578082015181840152602081019050611525565b60008484015250505050565b6000601f19601f8301169050919050565b600061156882611506565b6115728185611511565b9350611582818560208601611522565b61158b8161154c565b840191505092915050565b600060608201905081810360008301526115b08186611491565b90506115bf60208301856111ce565b81810360408301526115d1818461155d565b9050949350505050565b600082825260208201905092915050565b60006115f782611362565b61160181856115db565b935061160c8361137e565b8060005b8381101561163d578151611624888261139d565b975061162f836113b5565b925050600181019050611610565b5085935050505092915050565b6000602082019050818103600083015261166481846115ec565b905092915050565b600061ffff82169050919050565b60006116858261166c565b915061ffff82036116995761169861125e565b5b600182019050919050565b60006116af8261128d565b9150600082036116c2576116c161125e565b5b600182039050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081905092915050565b600061171282611506565b61171c81856116fc565b935061172c818560208601611522565b80840191505092915050565b60006117448284611707565b915081905092915050565b600060408201905061176460008301856111ce565b8181036020830152611776818461155d565b90509392505050565b600081519050919050565b600082825260208201905092915050565b60006117a68261177f565b6117b0818561178a565b93506117c0818560208601611522565b6117c98161154c565b840191505092915050565b60006040820190506117e960008301856111ce565b81810360208301526117fb818461179b565b9050939250505056fe4c69624469616d6f6e644375743a2041646420666163657420686173206e6f20636f64654c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a205265706c61636520666163657420686173206e6f20636f6465a2646970667358221220c1e58a49e314c0fadd33c396cb6360695d84c9973d44dcc5eaca882385794c8c64736f6c634300081100334c69624469616d6f6e644375743a2041646420666163657420686173206e6f20636f64654c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a205265706c61636520666163657420686173206e6f20636f646500000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000003600000000000000000000000000000000000000000000000000000000000000680000000000000000000000000000000000000000000000000000000000000088000000000000000000000000000000000000000000000000000000000000009a000000000000000000000000031b26cafc85a3d37f18e2f4a56ee0513b477d1180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000011f931c1c0000000000000000000000000000000000000000000000000000000000000000000000000000000066d880d7d3dd16fa28e61f8ca68f03dc924c582f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed6270000000000000000000000000000000000000000000000000000000001ffc9a70000000000000000000000000000000000000000000000000000000000000000000000000000000097c254ffb0cf40c9b22224bbcb9290d519b254e20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000028da5cb5b00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000000000000000000000000000b8d6a3e525de4fc1de6198d0804ee880532ff7f4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000015e58306f900000000000000000000000000000000000000000000000000000000095ea7b30000000000000000000000000000000000000000000000000000000070a08231000000000000000000000000000000000000000000000000000000002611e12700000000000000000000000000000000000000000000000000000000c23dc68f000000000000000000000000000000000000000000000000000000005bbb217700000000000000000000000000000000000000000000000000000000081812fc000000000000000000000000000000000000000000000000000000008129fc1c00000000000000000000000000000000000000000000000000000000e985e9c500000000000000000000000000000000000000000000000000000000641ce1400000000000000000000000000000000000000000000000000000000006fdde03000000000000000000000000000000000000000000000000000000006352211e0000000000000000000000000000000000000000000000000000000042842e0e00000000000000000000000000000000000000000000000000000000b88d4fde00000000000000000000000000000000000000000000000000000000a22cb4650000000000000000000000000000000000000000000000000000000095d89b4100000000000000000000000000000000000000000000000000000000c87b56dd000000000000000000000000000000000000000000000000000000008462151c0000000000000000000000000000000000000000000000000000000099a2557a0000000000000000000000000000000000000000000000000000000018160ddd0000000000000000000000000000000000000000000000000000000023b872dd000000000000000000000000000000000000000000000000000000000000000000000000000000008f2d61e8edde239366e8938ba6459c5eba4f11e900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000c67c897fe000000000000000000000000000000000000000000000000000000008456cb590000000000000000000000000000000000000000000000000000000055f804b3000000000000000000000000000000000000000000000000000000006f8b44b00000000000000000000000000000000000000000000000000000000092f6c43900000000000000000000000000000000000000000000000000000000b7126e77000000000000000000000000000000000000000000000000000000007a91bd34000000000000000000000000000000000000000000000000000000000e1812290000000000000000000000000000000000000000000000000000000091b7f5ed00000000000000000000000000000000000000000000000000000000ef38d8b200000000000000000000000000000000000000000000000000000000fa10197700000000000000000000000000000000000000000000000000000000cae43fd80000000000000000000000000000000000000000000000000000000000000000000000000000000079ec1df2aca48deecd6f479f45fd7b475c44eca300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000536fdc63c00000000000000000000000000000000000000000000000000000000604ba39e00000000000000000000000000000000000000000000000000000000b1c1ab1b00000000000000000000000000000000000000000000000000000000b552a471000000000000000000000000000000000000000000000000000000002a55205a00000000000000000000000000000000000000000000000000000000000000000000000000000000956f3de29f85fda97ebb059f9c40ae6fd859cf6500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000c8b83209b000000000000000000000000000000000000000000000000000000004e8086aa000000000000000000000000000000000000000000000000000000004b5bed1b0000000000000000000000000000000000000000000000000000000000f4e1210000000000000000000000000000000000000000000000000000000050b2ee1d000000000000000000000000000000000000000000000000000000002561de4900000000000000000000000000000000000000000000000000000000b021e03e0000000000000000000000000000000000000000000000000000000053bd5c9a00000000000000000000000000000000000000000000000000000000ce7c2ac200000000000000000000000000000000000000000000000000000000d79779b200000000000000000000000000000000000000000000000000000000e33b7de3000000000000000000000000000000000000000000000000000000003a98ef3900000000000000000000000000000000000000000000000000000000000000000000000000000000089c8e678e4db12971f78db08f86fe69b85454d0000000000000000000000000259361580aeb14ca575dc4448c441429cd7f352a000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000004044ddf47d4000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000648b5fb000000000000000000000000000000000000000000000000000000000648b5fb0000000000000000000000000089c8e678e4db12971f78db08f86fe69b85454d000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000089c8e678e4db12971f78db08f86fe69b85454d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000648b5fb00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001a486f74204c6971756f7220616e64205761726d20536872696d7000000000000000000000000000000000000000000000000000000000000000000000000000045741524d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000089c8e678e4db12971f78db08f86fe69b85454d000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000004f68747470733a2f2f6261747465722d6170692e6865726f6b756170702e636f6d2f76312f636f6c6c656374696f6e2f3634383963366266366464306663653733643538366130622f746f6b656e732f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x60806040523661000b57005b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c9050809150600082600001600080357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610167576000357fffffffff00000000000000000000000000000000000000000000000000000000166040517f5416eb9800000000000000000000000000000000000000000000000000000000815260040161015e9190611152565b60405180910390fd5b3660008037600080366000845af43d6000803e8060008114610188573d6000f35b3d6000fd5b6000610197610481565b905060008160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b60005b83518110156104365760008482815181106102855761028461116d565b5b602002602001015160400151905060008583815181106102a8576102a761116d565b5b602002602001015160000151905060008251036102fc57806040517fe767f91f0000000000000000000000000000000000000000000000000000000081526004016102f391906111dd565b60405180910390fd5b60008684815181106103115761031061116d565b5b602002602001015160200151905060006002811115610333576103326111f8565b5b816002811115610346576103456111f8565b5b0361035a5761035582846104ae565b610420565b6001600281111561036e5761036d6111f8565b5b816002811115610381576103806111f8565b5b036103955761039082846107d6565b61041f565b6002808111156103a8576103a76111f8565b5b8160028111156103bb576103ba6111f8565b5b036103cf576103ca8284610b1c565b61041e565b8060028111156103e2576103e16111f8565b5b6040517f7fe9a41e0000000000000000000000000000000000000000000000000000000081526004016104159190611243565b60405180910390fd5b5b5b505050808061042e90611297565b915050610267565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67383838360405161046a93929190611596565b60405180910390a161047c8282610fa3565b505050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361051f57806040517f0ae3681c000000000000000000000000000000000000000000000000000000008152600401610516919061164a565b60405180910390fd5b6000610529610481565b905060008160010180549050905061055984604051806060016040528060248152602001611805602491396110c5565b60005b83518110156107cf57600084828151811061057a5761057961116d565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461067057816040517febbf5d070000000000000000000000000000000000000000000000000000000081526004016106679190611152565b60405180910390fd5b60405180604001604052808873ffffffffffffffffffffffffffffffffffffffff1681526020018561ffff16815250856000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548161ffff021916908361ffff160217905550905050846001018290806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c021790555083806107b79061167a565b945050505080806107c790611297565b91505061055c565b5050505050565b60006107e0610481565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361085357816040517fcd98a96f00000000000000000000000000000000000000000000000000000000815260040161084a919061164a565b60405180910390fd5b61087583604051806060016040528060288152602001611851602891396110c5565b60005b8251811015610b165760008382815181106108965761089561116d565b5b602002602001015190506000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361098b57816040517f520300da0000000000000000000000000000000000000000000000000000000081526004016109829190611152565b60405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109fb57816040517f358d9d1a0000000000000000000000000000000000000000000000000000000081526004016109f29190611152565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a6c57816040517f7479f939000000000000000000000000000000000000000000000000000000008152600401610a639190611152565b60405180910390fd5b85846000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050508080610b0e90611297565b915050610878565b50505050565b6000610b26610481565b9050600081600101805490509050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614610ba557836040517fd091bc81000000000000000000000000000000000000000000000000000000008152600401610b9c91906111dd565b60405180910390fd5b60005b8351811015610f9c576000848281518110610bc657610bc561116d565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900461ffff1661ffff1661ffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1603610d1d57816040517f7a08a22d000000000000000000000000000000000000000000000000000000008152600401610d149190611152565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1603610d9157816040517f6fafeb08000000000000000000000000000000000000000000000000000000008152600401610d889190611152565b60405180910390fd5b8380610d9c906116a4565b94505083816020015161ffff1614610eb1576000856001018581548110610dc657610dc561116d565b5b90600052602060002090600891828204019190066004029054906101000a900460e01b90508086600101836020015161ffff1681548110610e0a57610e0961116d565b5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c02179055508160200151866000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a81548161ffff021916908361ffff160217905550505b84600101805480610ec557610ec46116cd565b5b60019003818190600052602060002090600891828204019190066004026101000a81549063ffffffff02191690559055846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549061ffff0219169055505050508080610f9490611297565b915050610ba8565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603156110c157610ffa82604051806060016040528060288152602001611829602891396110c5565b6000808373ffffffffffffffffffffffffffffffffffffffff16836040516110229190611738565b600060405180830381855af49150503d806000811461105d576040519150601f19603f3d011682016040523d82523d6000602084013e611062565b606091505b5091509150816110be5760008151111561107f5780518082602001fd5b83836040517f192105d70000000000000000000000000000000000000000000000000000000081526004016110b592919061174f565b60405180910390fd5b50505b5050565b6000823b9050600081036111125782826040517f919834b90000000000000000000000000000000000000000000000000000000081526004016111099291906117d4565b60405180910390fd5b505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114c81611117565b82525050565b60006020820190506111676000830184611143565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006111c78261119c565b9050919050565b6111d7816111bc565b82525050565b60006020820190506111f260008301846111ce565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060ff82169050919050565b61123d81611227565b82525050565b60006020820190506112586000830184611234565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b60006112a28261128d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036112d4576112d361125e565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611314816111bc565b82525050565b6003811061132b5761132a6111f8565b5b50565b600081905061133c8261131a565b919050565b600061134c8261132e565b9050919050565b61135c81611341565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61139781611117565b82525050565b60006113a9838361138e565b60208301905092915050565b6000602082019050919050565b60006113cd82611362565b6113d7818561136d565b93506113e28361137e565b8060005b838110156114135781516113fa888261139d565b9750611405836113b5565b9250506001810190506113e6565b5085935050505092915050565b6000606083016000830151611438600086018261130b565b50602083015161144b6020860182611353565b506040830151848203604086015261146382826113c2565b9150508091505092915050565b600061147c8383611420565b905092915050565b6000602082019050919050565b600061149c826112df565b6114a681856112ea565b9350836020820285016114b8856112fb565b8060005b858110156114f457848403895281516114d58582611470565b94506114e083611484565b925060208a019950506001810190506114bc565b50829750879550505050505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611540578082015181840152602081019050611525565b60008484015250505050565b6000601f19601f8301169050919050565b600061156882611506565b6115728185611511565b9350611582818560208601611522565b61158b8161154c565b840191505092915050565b600060608201905081810360008301526115b08186611491565b90506115bf60208301856111ce565b81810360408301526115d1818461155d565b9050949350505050565b600082825260208201905092915050565b60006115f782611362565b61160181856115db565b935061160c8361137e565b8060005b8381101561163d578151611624888261139d565b975061162f836113b5565b925050600181019050611610565b5085935050505092915050565b6000602082019050818103600083015261166481846115ec565b905092915050565b600061ffff82169050919050565b60006116858261166c565b915061ffff82036116995761169861125e565b5b600182019050919050565b60006116af8261128d565b9150600082036116c2576116c161125e565b5b600182039050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081905092915050565b600061171282611506565b61171c81856116fc565b935061172c818560208601611522565b80840191505092915050565b60006117448284611707565b915081905092915050565b600060408201905061176460008301856111ce565b8181036020830152611776818461155d565b90509392505050565b600081519050919050565b600082825260208201905092915050565b60006117a68261177f565b6117b0818561178a565b93506117c0818560208601611522565b6117c98161154c565b840191505092915050565b60006040820190506117e960008301856111ce565b81810360208301526117fb818461179b565b9050939250505056fe4c69624469616d6f6e644375743a2041646420666163657420686173206e6f20636f64654c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a205265706c61636520666163657420686173206e6f20636f6465a2646970667358221220c1e58a49e314c0fadd33c396cb6360695d84c9973d44dcc5eaca882385794c8c64736f6c63430008110033
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.