Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 10 from a total of 10 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Flip Pause All T... | 16592523 | 534 days ago | IN | 0 ETH | 0.00207242 | ||||
Mint | 16592161 | 534 days ago | IN | 0 ETH | 0.00616214 | ||||
Set Renew Subscr... | 16591700 | 534 days ago | IN | 0 ETH | 0.00116783 | ||||
Set Renew Subscr... | 16591694 | 534 days ago | IN | 0 ETH | 0.00185186 | ||||
Set After Mint S... | 16590426 | 534 days ago | IN | 0 ETH | 0.00122899 | ||||
Set Max Supply | 16590426 | 534 days ago | IN | 0 ETH | 0.00133696 | ||||
Set Public Key | 16590426 | 534 days ago | IN | 0 ETH | 0.00123852 | ||||
Set Base URI | 16590426 | 534 days ago | IN | 0 ETH | 0.00289188 | ||||
Diamond Cut | 16590415 | 534 days ago | IN | 0 ETH | 0.04455211 | ||||
0x60806040 | 16583161 | 535 days ago | IN | 0 ETH | 0.04989994 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
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; import { IERC165 } from "./@openzeppelin/contracts/interfaces/IERC165.sol"; import { IERC721 } from "./@openzeppelin/contracts/interfaces/IERC721.sol"; import { LibDiamond } from "./libraries/LibDiamond.sol"; import { IDiamondCut } from "./interfaces/IDiamondCut.sol"; contract Diamond { constructor(address _contractOwner, address _diamondCutFacet) payable { LibDiamond.flipContractOwnerStatus(_contractOwner); LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage(); ds.supportedInterfaces[type(IERC721).interfaceId] = true; // Add the diamondCut external function from the diamondCutFacet IDiamondCut.FacetCut[] memory cuts = new IDiamondCut.FacetCut[](1); bytes4[] memory diamondCutFunctionSelectors = new bytes4[](1); diamondCutFunctionSelectors[0] = IDiamondCut.diamondCut.selector; cuts[0] = IDiamondCut.FacetCut({ facetAddress: _diamondCutFacet, action: IDiamondCut.FacetCutAction.Add, functionSelectors: diamondCutFunctionSelectors }); LibDiamond.diamondCut(cuts, address(0), ""); } // Find facet for function that is called and execute the // function if a facet is found and return any value. fallback() external payable { LibDiamond.DiamondStorage storage ds; bytes32 position = LibDiamond.DIAMOND_STORAGE_POSITION; // get diamond storage assembly { ds.slot := position } // get facet from function selector address facet = ds.selectorToFacetAndPosition[msg.sig].facetAddress; require(facet != address(0), "Diamond: Function does not exist"); // Execute external function from facet using delegatecall and return any value. assembly { // copy function selector and any arguments calldatacopy(0, 0, calldatasize()) // execute function call using the facet let result := delegatecall(gas(), facet, 0, calldatasize(), 0, 0) // get any return value returndatacopy(0, 0, returndatasize()) // return any return value or error back to the caller switch result case 0 { revert(0, returndatasize()) } default { return(0, returndatasize()) } } } receive() external payable {} }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (interfaces/IERC165.sol) pragma solidity ^0.8.0; import "../utils/introspection/IERC165.sol";
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (interfaces/IERC721.sol) pragma solidity ^0.8.0; import "../token/ERC721/IERC721.sol";
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; import "../../utils/introspection/IERC165.sol"; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /******************************************************************************\ * Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen) * EIP-2535 Diamonds: 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; } /// @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; event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /******************************************************************************\ * Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen) * EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535 /******************************************************************************/ import { IDiamondCut } from "../interfaces/IDiamondCut.sol"; // Remember to add the loupe functions from DiamondLoupeFacet to the diamond. // The loupe functions are required by the EIP2535 Diamonds standard library LibDiamond { bytes32 constant DIAMOND_STORAGE_POSITION = keccak256("diamond.standard.diamond.storage"); struct FacetAddressAndPosition { address facetAddress; uint96 functionSelectorPosition; // position in facetFunctionSelectors.functionSelectors array } struct FacetFunctionSelectors { bytes4[] functionSelectors; uint256 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 mapping(address => bool) contractOwner; } function diamondStorage() internal pure returns (DiamondStorage storage ds) { bytes32 position = DIAMOND_STORAGE_POSITION; assembly { ds.slot := position } } event OwnershipTransferred(bool indexed state, address indexed newOwner); function flipContractOwnerStatus(address _newOwner) internal { DiamondStorage storage ds = diamondStorage(); bool previousState = ds.contractOwner[_newOwner]; ds.contractOwner[_newOwner] = !ds.contractOwner[_newOwner]; emit OwnershipTransferred(previousState, _newOwner); } function contractOwner(address addr) internal view returns (bool contractOwner_) { contractOwner_ = diamondStorage().contractOwner[addr]; } function enforceIsContractOwner() internal view { require(diamondStorage().contractOwner[msg.sender], "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(); require(_facetAddress != address(0), "LibDiamondCut: Add facet can't be address(0)"); uint96 selectorPosition = uint96(ds.facetFunctionSelectors[_facetAddress].functionSelectors.length); // add new facet address if it does not exist if (selectorPosition == 0) { addFacet(ds, _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"); addFunction(ds, selector, selectorPosition, _facetAddress); 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)"); uint96 selectorPosition = uint96(ds.facetFunctionSelectors[_facetAddress].functionSelectors.length); // add new facet address if it does not exist if (selectorPosition == 0) { addFacet(ds, _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(ds, oldFacetAddress, selector); addFunction(ds, selector, selectorPosition, _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(ds, oldFacetAddress, selector); } } function addFacet(DiamondStorage storage ds, address _facetAddress) internal { enforceHasContractCode(_facetAddress, "LibDiamondCut: New facet has no code"); ds.facetFunctionSelectors[_facetAddress].facetAddressPosition = ds.facetAddresses.length; ds.facetAddresses.push(_facetAddress); } function addFunction(DiamondStorage storage ds, bytes4 _selector, uint96 _selectorPosition, address _facetAddress) internal { ds.selectorToFacetAndPosition[_selector].functionSelectorPosition = _selectorPosition; ds.facetFunctionSelectors[_facetAddress].functionSelectors.push(_selector); ds.selectorToFacetAndPosition[_selector].facetAddress = _facetAddress; } function removeFunction(DiamondStorage storage ds, address _facetAddress, bytes4 _selector) internal { 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 = uint96(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 = 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 revert(string(error)); } 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); } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_contractOwner","type":"address"},{"internalType":"address","name":"_diamondCutFacet","type":"address"}],"stateMutability":"payable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405260405162004b1938038062004b198339818101604052810190620000299190620019f1565b6200003f826200029d60201b620001671760201c565b600062000056620003f760201b620002b91760201c565b905060018160030160007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff81111562000104576200010362001a38565b5b6040519080825280602002602001820160405280156200014157816020015b6200012d6200193b565b815260200190600190039081620001235790505b5090506000600167ffffffffffffffff81111562000164576200016362001a38565b5b604051908082528060200260200182016040528015620001935781602001602082028036833780820191505090505b509050631f931c1c60e01b81600081518110620001b557620001b462001a67565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152505060405180606001604052808573ffffffffffffffffffffffffffffffffffffffff168152602001600060028111156200023f576200023e62001a96565b5b815260200182815250826000815181106200025f576200025e62001a67565b5b602002602001018190525062000292826000604051806020016040528060008152506200042460201b620002e61760201c565b5050505050620026e2565b6000620002af620003f760201b60201c565b905060008160040160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690508160040160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158260040160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff168115157fdbddbc3351fc91dac345e399b81115b2788accaa73296e9d6711a58572510cb460405160405180910390a3505050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b60005b83518110156200065357600084828151811062000449576200044862001a67565b5b6020026020010151602001519050600060028111156200046e576200046d62001a96565b5b81600281111562000484576200048362001a96565b5b03620004e457620004de858381518110620004a457620004a362001a67565b5b602002602001015160000151868481518110620004c657620004c562001a67565b5b602002602001015160400151620006a860201b60201c565b6200063c565b60016002811115620004fb57620004fa62001a96565b5b81600281111562000511576200051062001a96565b5b0362000571576200056b85838151811062000531576200053062001a67565b5b60200260200101516000015186848151811062000553576200055262001a67565b5b6020026020010151604001516200094a60201b60201c565b6200063b565b60028081111562000587576200058662001a96565b5b8160028111156200059d576200059c62001a96565b5b03620005fd57620005f7858381518110620005bd57620005bc62001a67565b5b602002602001015160000151868481518110620005df57620005de62001a67565b5b60200260200101516040015162000bfe60201b60201c565b6200063a565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006319062001b4c565b60405180910390fd5b5b5b5080806200064a9062001ba7565b91505062000427565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673838383604051620006899392919062001f21565b60405180910390a1620006a3828262000da660201b60201c565b505050565b6000815111620006ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006e69062001fe2565b60405180910390fd5b600062000701620003f760201b60201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000775576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200076c906200207a565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff1603620007eb57620007ea828562000fd460201b60201c565b5b60005b83518110156200094357600084828151811062000810576200080f62001a67565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161462000907576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008fe9062002112565b60405180910390fd5b6200091b8583868a620010b860201b60201c565b838062000928906200214c565b945050505080806200093a9062001ba7565b915050620007ee565b5050505050565b600081511162000991576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009889062001fe2565b60405180910390fd5b6000620009a3620003f760201b60201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000a17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a0e906200207a565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff160362000a8d5762000a8c828562000fd460201b60201c565b5b60005b835181101562000bf757600084828151811062000ab25762000ab162001a67565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000ba8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b9f90620021fb565b60405180910390fd5b62000bbb8582846200126560201b60201c565b62000bcf8583868a620010b860201b60201c565b838062000bdc906200214c565b9450505050808062000bee9062001ba7565b91505062000a90565b5050505050565b600081511162000c45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c3c9062001fe2565b60405180910390fd5b600062000c57620003f760201b60201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161462000ccb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cc29062002293565b60405180910390fd5b60005b825181101562000da057600083828151811062000cf05762000cef62001a67565b5b602002602001015190506000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905062000d888482846200126560201b60201c565b5050808062000d979062001ba7565b91505062000cce565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000e2857600081511462000e22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e19906200232b565b60405180910390fd5b62000fd0565b600081511162000e6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e6690620023c3565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161462000ecf5762000ece8260405180606001604052806028815260200162004acd60289139620018e660201b60201c565b5b6000808373ffffffffffffffffffffffffffffffffffffffff168360405162000ef9919062002427565b600060405180830381855af49150503d806000811462000f36576040519150601f19603f3d011682016040523d82523d6000602084013e62000f3b565b606091505b50915091508162000fcd5760008151111562000f9057806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f8791906200248c565b60405180910390fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000fc49062002526565b60405180910390fd5b50505b5050565b62000fff8160405180606001604052806024815260200162004af560249139620018e660201b60201c565b81600201805490508260010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555081600201819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b81846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508360010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018390806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c021790555080846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620012d7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620012ce90620025be565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362001348576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200133f9062002656565b60405180910390fd5b6000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050600060018560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905062001421919062002678565b9050808214620015bc5760008560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001828154811062001486576200148562001a67565b5b90600052602060002090600891828204019190066004029054906101000a900460e01b9050808660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001848154811062001505576200150462001a67565b5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c021790555082866000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505b8460010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001805480620016135762001612620026b3565b5b60019003818190600052602060002090600891828204019190066004026101000a81549063ffffffff02191690559055846000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a8154906bffffffffffffffffffffffff0219169055505060008103620018df5760006001866002018054905062001700919062002678565b905060008660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050818114620018485760008760020183815481106200176e576200176d62001a67565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905080886002018381548110620017b557620017b462001a67565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818860010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550505b866002018054806200185f576200185e620026b3565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590558660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000905550505b5050505050565b6000823b905060008111829062001935576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200192c91906200248c565b60405180910390fd5b50505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600060028111156200197a576200197962001a96565b5b8152602001606081525090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620019b9826200198c565b9050919050565b620019cb81620019ac565b8114620019d757600080fd5b50565b600081519050620019eb81620019c0565b92915050565b6000806040838503121562001a0b5762001a0a62001987565b5b600062001a1b85828601620019da565b925050602062001a2e85828601620019da565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600082825260208201905092915050565b7f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560008201527f74416374696f6e00000000000000000000000000000000000000000000000000602082015250565b600062001b3460278362001ac5565b915062001b418262001ad6565b604082019050919050565b6000602082019050818103600083015262001b678162001b25565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b600062001bb48262001b9d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362001be95762001be862001b6e565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b62001c2b81620019ac565b82525050565b6003811062001c455762001c4462001a96565b5b50565b600081905062001c588262001c31565b919050565b600062001c6a8262001c48565b9050919050565b62001c7c8162001c5d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b62001ce58162001cae565b82525050565b600062001cf9838362001cda565b60208301905092915050565b6000602082019050919050565b600062001d1f8262001c82565b62001d2b818562001c8d565b935062001d388362001c9e565b8060005b8381101562001d6f57815162001d53888262001ceb565b975062001d608362001d05565b92505060018101905062001d3c565b5085935050505092915050565b600060608301600083015162001d96600086018262001c20565b50602083015162001dab602086018262001c71565b506040830151848203604086015262001dc5828262001d12565b9150508091505092915050565b600062001de0838362001d7c565b905092915050565b6000602082019050919050565b600062001e028262001bf4565b62001e0e818562001bff565b93508360208202850162001e228562001c10565b8060005b8581101562001e64578484038952815162001e42858262001dd2565b945062001e4f8362001de8565b925060208a0199505060018101905062001e26565b50829750879550505050505092915050565b62001e8181620019ac565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101562001ec357808201518184015260208101905062001ea6565b60008484015250505050565b6000601f19601f8301169050919050565b600062001eed8262001e87565b62001ef9818562001e92565b935062001f0b81856020860162001ea3565b62001f168162001ecf565b840191505092915050565b6000606082019050818103600083015262001f3d818662001df5565b905062001f4e602083018562001e76565b818103604083015262001f62818462001ee0565b9050949350505050565b7f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660008201527f6163657420746f20637574000000000000000000000000000000000000000000602082015250565b600062001fca602b8362001ac5565b915062001fd78262001f6c565b604082019050919050565b6000602082019050818103600083015262001ffd8162001fbb565b9050919050565b7f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260008201527f6520616464726573732830290000000000000000000000000000000000000000602082015250565b600062002062602c8362001ac5565b91506200206f8262002004565b604082019050919050565b60006020820190508181036000830152620020958162002053565b9050919050565b7f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60008201527f6e207468617420616c7265616479206578697374730000000000000000000000602082015250565b6000620020fa60358362001ac5565b915062002107826200209c565b604082019050919050565b600060208201905081810360008301526200212d81620020eb565b9050919050565b60006bffffffffffffffffffffffff82169050919050565b6000620021598262002134565b91506bffffffffffffffffffffffff82036200217a576200217962001b6e565b5b600182019050919050565b7f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60008201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000602082015250565b6000620021e360388362001ac5565b9150620021f08262002185565b604082019050919050565b600060208201905081810360008301526200221681620021d4565b9050919050565b7f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260008201527f657373206d757374206265206164647265737328302900000000000000000000602082015250565b60006200227b60368362001ac5565b915062002288826200221d565b604082019050919050565b60006020820190508181036000830152620022ae816200226c565b9050919050565b7f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860008201527f3029206275745f63616c6c64617461206973206e6f7420656d70747900000000602082015250565b600062002313603c8362001ac5565b91506200232082620022b5565b604082019050919050565b60006020820190508181036000830152620023468162002304565b9050919050565b7f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460008201527f7920627574205f696e6974206973206e6f742061646472657373283029000000602082015250565b6000620023ab603d8362001ac5565b9150620023b8826200234d565b604082019050919050565b60006020820190508181036000830152620023de816200239c565b9050919050565b600081905092915050565b6000620023fd8262001e87565b620024098185620023e5565b93506200241b81856020860162001ea3565b80840191505092915050565b6000620024358284620023f0565b915081905092915050565b600081519050919050565b6000620024588262002440565b62002464818562001ac5565b93506200247681856020860162001ea3565b620024818162001ecf565b840191505092915050565b60006020820190508181036000830152620024a881846200244b565b905092915050565b7f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e20726560008201527f7665727465640000000000000000000000000000000000000000000000000000602082015250565b60006200250e60268362001ac5565b91506200251b82620024b0565b604082019050919050565b600060208201905081810360008301526200254181620024ff565b9050919050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360008201527f74696f6e207468617420646f65736e2774206578697374000000000000000000602082015250565b6000620025a660378362001ac5565b9150620025b38262002548565b604082019050919050565b60006020820190508181036000830152620025d98162002597565b9050919050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560008201527f7461626c652066756e6374696f6e000000000000000000000000000000000000602082015250565b60006200263e602e8362001ac5565b91506200264b82620025e0565b604082019050919050565b6000602082019050818103600083015262002671816200262f565b9050919050565b6000620026858262001b9d565b9150620026928362001b9d565b9250828203905081811115620026ad57620026ac62001b6e565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6123db80620026f26000396000f3fe60806040523661000b57005b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c9050809150600082600001600080357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610141576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161013890611743565b60405180910390fd5b3660008037600080366000845af43d6000803e8060008114610162573d6000f35b3d6000fd5b60006101716102b9565b905060008160040160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690508160040160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158260040160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff168115157fdbddbc3351fc91dac345e399b81115b2788accaa73296e9d6711a58572510cb460405160405180910390a3505050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b60005b83518110156104ca57600084828151811061030757610306611763565b5b60200260200101516020015190506000600281111561032957610328611792565b5b81600281111561033c5761033b611792565b5b0361038c5761038785838151811061035757610356611763565b5b60200260200101516000015186848151811061037657610375611763565b5b602002602001015160400151610515565b6104b6565b600160028111156103a05761039f611792565b5b8160028111156103b3576103b2611792565b5b03610403576103fe8583815181106103ce576103cd611763565b5b6020026020010151600001518684815181106103ed576103ec611763565b5b60200260200101516040015161078c565b6104b5565b60028081111561041657610415611792565b5b81600281111561042957610428611792565b5b036104795761047485838151811061044457610443611763565b5b60200260200101516000015186848151811061046357610462611763565b5b602002602001015160400151610a0d565b6104b4565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ab90611833565b60405180910390fd5b5b5b5080806104c29061188c565b9150506102e9565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516104fe93929190611bf8565b60405180910390a16105108282610b98565b505050565b6000815111610559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055090611caf565b60405180910390fd5b60006105636102b9565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036105d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cb90611d41565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff1603610641576106408285610daa565b5b60005b835181101561078557600084828151811061066257610661611763565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610756576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074d90611dd3565b60405180910390fd5b6107628583868a610e85565b838061076d90611e0b565b9450505050808061077d9061188c565b915050610644565b5050505050565b60008151116107d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c790611caf565b60405180910390fd5b60006107da6102b9565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361084b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084290611d41565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff16036108b8576108b78285610daa565b5b60005b8351811015610a065760008482815181106108d9576108d8611763565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c390611eb1565b60405180910390fd5b6109d7858284611032565b6109e38583868a610e85565b83806109ee90611e0b565b945050505080806109fe9061188c565b9150506108bb565b5050505050565b6000815111610a51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4890611caf565b60405180910390fd5b6000610a5b6102b9565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610acc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac390611f43565b60405180910390fd5b60005b8251811015610b92576000838281518110610aed57610aec611763565b5b602002602001015190506000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610b7d848284611032565b50508080610b8a9061188c565b915050610acf565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c15576000815114610c10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0790611fd5565b60405180910390fd5b610da6565b6000815111610c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5090612067565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610caf57610cae8260405180606001604052806028815260200161235a60289139611694565b5b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051610cd791906120c3565b600060405180830381855af49150503d8060008114610d12576040519150601f19603f3d011682016040523d82523d6000602084013e610d17565b606091505b509150915081610da357600081511115610d6857806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5f919061211e565b60405180910390fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9a906121b2565b60405180910390fd5b50505b5050565b610dcc8160405180606001604052806024815260200161238260249139611694565b81600201805490508260010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555081600201819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b81846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508360010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018390806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c021790555080846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109890612244565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361110f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611106906122d6565b60405180910390fd5b6000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050600060018560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001805490506111e691906122f6565b905080821461137a5760008560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001828154811061124757611246611763565b5b90600052602060002090600891828204019190066004029054906101000a900460e01b9050808660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000184815481106112c3576112c2611763565b5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c021790555082866000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505b8460010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054806113ce576113cd61232a565b5b60019003818190600052602060002090600891828204019190066004026101000a81549063ffffffff02191690559055846000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a8154906bffffffffffffffffffffffff021916905550506000810361168d576000600186600201805490506114b891906122f6565b905060008660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508181146115f957600087600201838154811061152257611521611763565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508088600201838154811061156657611565611763565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818860010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550505b8660020180548061160d5761160c61232a565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590558660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000905550505b5050505050565b6000823b90506000811182906116e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d7919061211e565b60405180910390fd5b50505050565b600082825260208201905092915050565b7f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f74206578697374600082015250565b600061172d6020836116e6565b9150611738826116f7565b602082019050919050565b6000602082019050818103600083015261175c81611720565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560008201527f74416374696f6e00000000000000000000000000000000000000000000000000602082015250565b600061181d6027836116e6565b9150611828826117c1565b604082019050919050565b6000602082019050818103600083015261184c81611810565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b600061189782611882565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036118c9576118c8611853565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061192b82611900565b9050919050565b61193b81611920565b82525050565b6003811061195257611951611792565b5b50565b600081905061196382611941565b919050565b600061197382611955565b9050919050565b61198381611968565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6119ea816119b5565b82525050565b60006119fc83836119e1565b60208301905092915050565b6000602082019050919050565b6000611a2082611989565b611a2a8185611994565b9350611a35836119a5565b8060005b83811015611a66578151611a4d88826119f0565b9750611a5883611a08565b925050600181019050611a39565b5085935050505092915050565b6000606083016000830151611a8b6000860182611932565b506020830151611a9e602086018261197a565b5060408301518482036040860152611ab68282611a15565b9150508091505092915050565b6000611acf8383611a73565b905092915050565b6000602082019050919050565b6000611aef826118d4565b611af981856118df565b935083602082028501611b0b856118f0565b8060005b85811015611b475784840389528151611b288582611ac3565b9450611b3383611ad7565b925060208a01995050600181019050611b0f565b50829750879550505050505092915050565b611b6281611920565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611ba2578082015181840152602081019050611b87565b60008484015250505050565b6000601f19601f8301169050919050565b6000611bca82611b68565b611bd48185611b73565b9350611be4818560208601611b84565b611bed81611bae565b840191505092915050565b60006060820190508181036000830152611c128186611ae4565b9050611c216020830185611b59565b8181036040830152611c338184611bbf565b9050949350505050565b7f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660008201527f6163657420746f20637574000000000000000000000000000000000000000000602082015250565b6000611c99602b836116e6565b9150611ca482611c3d565b604082019050919050565b60006020820190508181036000830152611cc881611c8c565b9050919050565b7f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260008201527f6520616464726573732830290000000000000000000000000000000000000000602082015250565b6000611d2b602c836116e6565b9150611d3682611ccf565b604082019050919050565b60006020820190508181036000830152611d5a81611d1e565b9050919050565b7f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60008201527f6e207468617420616c7265616479206578697374730000000000000000000000602082015250565b6000611dbd6035836116e6565b9150611dc882611d61565b604082019050919050565b60006020820190508181036000830152611dec81611db0565b9050919050565b60006bffffffffffffffffffffffff82169050919050565b6000611e1682611df3565b91506bffffffffffffffffffffffff8203611e3457611e33611853565b5b600182019050919050565b7f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60008201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000602082015250565b6000611e9b6038836116e6565b9150611ea682611e3f565b604082019050919050565b60006020820190508181036000830152611eca81611e8e565b9050919050565b7f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260008201527f657373206d757374206265206164647265737328302900000000000000000000602082015250565b6000611f2d6036836116e6565b9150611f3882611ed1565b604082019050919050565b60006020820190508181036000830152611f5c81611f20565b9050919050565b7f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860008201527f3029206275745f63616c6c64617461206973206e6f7420656d70747900000000602082015250565b6000611fbf603c836116e6565b9150611fca82611f63565b604082019050919050565b60006020820190508181036000830152611fee81611fb2565b9050919050565b7f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460008201527f7920627574205f696e6974206973206e6f742061646472657373283029000000602082015250565b6000612051603d836116e6565b915061205c82611ff5565b604082019050919050565b6000602082019050818103600083015261208081612044565b9050919050565b600081905092915050565b600061209d82611b68565b6120a78185612087565b93506120b7818560208601611b84565b80840191505092915050565b60006120cf8284612092565b915081905092915050565b600081519050919050565b60006120f0826120da565b6120fa81856116e6565b935061210a818560208601611b84565b61211381611bae565b840191505092915050565b6000602082019050818103600083015261213881846120e5565b905092915050565b7f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e20726560008201527f7665727465640000000000000000000000000000000000000000000000000000602082015250565b600061219c6026836116e6565b91506121a782612140565b604082019050919050565b600060208201905081810360008301526121cb8161218f565b9050919050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360008201527f74696f6e207468617420646f65736e2774206578697374000000000000000000602082015250565b600061222e6037836116e6565b9150612239826121d2565b604082019050919050565b6000602082019050818103600083015261225d81612221565b9050919050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560008201527f7461626c652066756e6374696f6e000000000000000000000000000000000000602082015250565b60006122c0602e836116e6565b91506122cb82612264565b604082019050919050565b600060208201905081810360008301526122ef816122b3565b9050919050565b600061230182611882565b915061230c83611882565b925082820390508181111561232457612323611853565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a264697066735822122012e580817fa8675238b13cb4b5500e0568013946b6cd8f3312b44b6ee27541dc64736f6c634300081100334c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f646500000000000000000000000070021a160137cce0fce8b9b694aa1aab803c8a3f000000000000000000000000643ddc5f567bb38a83d5402435787d232d36d91d
Deployed Bytecode
0x60806040523661000b57005b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c9050809150600082600001600080357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610141576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161013890611743565b60405180910390fd5b3660008037600080366000845af43d6000803e8060008114610162573d6000f35b3d6000fd5b60006101716102b9565b905060008160040160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690508160040160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158260040160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff168115157fdbddbc3351fc91dac345e399b81115b2788accaa73296e9d6711a58572510cb460405160405180910390a3505050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b60005b83518110156104ca57600084828151811061030757610306611763565b5b60200260200101516020015190506000600281111561032957610328611792565b5b81600281111561033c5761033b611792565b5b0361038c5761038785838151811061035757610356611763565b5b60200260200101516000015186848151811061037657610375611763565b5b602002602001015160400151610515565b6104b6565b600160028111156103a05761039f611792565b5b8160028111156103b3576103b2611792565b5b03610403576103fe8583815181106103ce576103cd611763565b5b6020026020010151600001518684815181106103ed576103ec611763565b5b60200260200101516040015161078c565b6104b5565b60028081111561041657610415611792565b5b81600281111561042957610428611792565b5b036104795761047485838151811061044457610443611763565b5b60200260200101516000015186848151811061046357610462611763565b5b602002602001015160400151610a0d565b6104b4565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ab90611833565b60405180910390fd5b5b5b5080806104c29061188c565b9150506102e9565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516104fe93929190611bf8565b60405180910390a16105108282610b98565b505050565b6000815111610559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055090611caf565b60405180910390fd5b60006105636102b9565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036105d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cb90611d41565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff1603610641576106408285610daa565b5b60005b835181101561078557600084828151811061066257610661611763565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610756576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074d90611dd3565b60405180910390fd5b6107628583868a610e85565b838061076d90611e0b565b9450505050808061077d9061188c565b915050610644565b5050505050565b60008151116107d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c790611caf565b60405180910390fd5b60006107da6102b9565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361084b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084290611d41565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff16036108b8576108b78285610daa565b5b60005b8351811015610a065760008482815181106108d9576108d8611763565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c390611eb1565b60405180910390fd5b6109d7858284611032565b6109e38583868a610e85565b83806109ee90611e0b565b945050505080806109fe9061188c565b9150506108bb565b5050505050565b6000815111610a51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4890611caf565b60405180910390fd5b6000610a5b6102b9565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610acc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac390611f43565b60405180910390fd5b60005b8251811015610b92576000838281518110610aed57610aec611763565b5b602002602001015190506000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610b7d848284611032565b50508080610b8a9061188c565b915050610acf565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c15576000815114610c10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0790611fd5565b60405180910390fd5b610da6565b6000815111610c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5090612067565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610caf57610cae8260405180606001604052806028815260200161235a60289139611694565b5b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051610cd791906120c3565b600060405180830381855af49150503d8060008114610d12576040519150601f19603f3d011682016040523d82523d6000602084013e610d17565b606091505b509150915081610da357600081511115610d6857806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5f919061211e565b60405180910390fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9a906121b2565b60405180910390fd5b50505b5050565b610dcc8160405180606001604052806024815260200161238260249139611694565b81600201805490508260010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555081600201819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b81846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508360010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018390806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c021790555080846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109890612244565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361110f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611106906122d6565b60405180910390fd5b6000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050600060018560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001805490506111e691906122f6565b905080821461137a5760008560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001828154811061124757611246611763565b5b90600052602060002090600891828204019190066004029054906101000a900460e01b9050808660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000184815481106112c3576112c2611763565b5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c021790555082866000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505b8460010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054806113ce576113cd61232a565b5b60019003818190600052602060002090600891828204019190066004026101000a81549063ffffffff02191690559055846000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a8154906bffffffffffffffffffffffff021916905550506000810361168d576000600186600201805490506114b891906122f6565b905060008660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508181146115f957600087600201838154811061152257611521611763565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508088600201838154811061156657611565611763565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818860010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550505b8660020180548061160d5761160c61232a565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590558660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000905550505b5050505050565b6000823b90506000811182906116e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d7919061211e565b60405180910390fd5b50505050565b600082825260208201905092915050565b7f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f74206578697374600082015250565b600061172d6020836116e6565b9150611738826116f7565b602082019050919050565b6000602082019050818103600083015261175c81611720565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560008201527f74416374696f6e00000000000000000000000000000000000000000000000000602082015250565b600061181d6027836116e6565b9150611828826117c1565b604082019050919050565b6000602082019050818103600083015261184c81611810565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b600061189782611882565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036118c9576118c8611853565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061192b82611900565b9050919050565b61193b81611920565b82525050565b6003811061195257611951611792565b5b50565b600081905061196382611941565b919050565b600061197382611955565b9050919050565b61198381611968565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6119ea816119b5565b82525050565b60006119fc83836119e1565b60208301905092915050565b6000602082019050919050565b6000611a2082611989565b611a2a8185611994565b9350611a35836119a5565b8060005b83811015611a66578151611a4d88826119f0565b9750611a5883611a08565b925050600181019050611a39565b5085935050505092915050565b6000606083016000830151611a8b6000860182611932565b506020830151611a9e602086018261197a565b5060408301518482036040860152611ab68282611a15565b9150508091505092915050565b6000611acf8383611a73565b905092915050565b6000602082019050919050565b6000611aef826118d4565b611af981856118df565b935083602082028501611b0b856118f0565b8060005b85811015611b475784840389528151611b288582611ac3565b9450611b3383611ad7565b925060208a01995050600181019050611b0f565b50829750879550505050505092915050565b611b6281611920565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611ba2578082015181840152602081019050611b87565b60008484015250505050565b6000601f19601f8301169050919050565b6000611bca82611b68565b611bd48185611b73565b9350611be4818560208601611b84565b611bed81611bae565b840191505092915050565b60006060820190508181036000830152611c128186611ae4565b9050611c216020830185611b59565b8181036040830152611c338184611bbf565b9050949350505050565b7f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660008201527f6163657420746f20637574000000000000000000000000000000000000000000602082015250565b6000611c99602b836116e6565b9150611ca482611c3d565b604082019050919050565b60006020820190508181036000830152611cc881611c8c565b9050919050565b7f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260008201527f6520616464726573732830290000000000000000000000000000000000000000602082015250565b6000611d2b602c836116e6565b9150611d3682611ccf565b604082019050919050565b60006020820190508181036000830152611d5a81611d1e565b9050919050565b7f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60008201527f6e207468617420616c7265616479206578697374730000000000000000000000602082015250565b6000611dbd6035836116e6565b9150611dc882611d61565b604082019050919050565b60006020820190508181036000830152611dec81611db0565b9050919050565b60006bffffffffffffffffffffffff82169050919050565b6000611e1682611df3565b91506bffffffffffffffffffffffff8203611e3457611e33611853565b5b600182019050919050565b7f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60008201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000602082015250565b6000611e9b6038836116e6565b9150611ea682611e3f565b604082019050919050565b60006020820190508181036000830152611eca81611e8e565b9050919050565b7f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260008201527f657373206d757374206265206164647265737328302900000000000000000000602082015250565b6000611f2d6036836116e6565b9150611f3882611ed1565b604082019050919050565b60006020820190508181036000830152611f5c81611f20565b9050919050565b7f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860008201527f3029206275745f63616c6c64617461206973206e6f7420656d70747900000000602082015250565b6000611fbf603c836116e6565b9150611fca82611f63565b604082019050919050565b60006020820190508181036000830152611fee81611fb2565b9050919050565b7f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460008201527f7920627574205f696e6974206973206e6f742061646472657373283029000000602082015250565b6000612051603d836116e6565b915061205c82611ff5565b604082019050919050565b6000602082019050818103600083015261208081612044565b9050919050565b600081905092915050565b600061209d82611b68565b6120a78185612087565b93506120b7818560208601611b84565b80840191505092915050565b60006120cf8284612092565b915081905092915050565b600081519050919050565b60006120f0826120da565b6120fa81856116e6565b935061210a818560208601611b84565b61211381611bae565b840191505092915050565b6000602082019050818103600083015261213881846120e5565b905092915050565b7f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e20726560008201527f7665727465640000000000000000000000000000000000000000000000000000602082015250565b600061219c6026836116e6565b91506121a782612140565b604082019050919050565b600060208201905081810360008301526121cb8161218f565b9050919050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360008201527f74696f6e207468617420646f65736e2774206578697374000000000000000000602082015250565b600061222e6037836116e6565b9150612239826121d2565b604082019050919050565b6000602082019050818103600083015261225d81612221565b9050919050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560008201527f7461626c652066756e6374696f6e000000000000000000000000000000000000602082015250565b60006122c0602e836116e6565b91506122cb82612264565b604082019050919050565b600060208201905081810360008301526122ef816122b3565b9050919050565b600061230182611882565b915061230c83611882565b925082820390508181111561232457612323611853565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a264697066735822122012e580817fa8675238b13cb4b5500e0568013946b6cd8f3312b44b6ee27541dc64736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000070021a160137cce0fce8b9b694aa1aab803c8a3f000000000000000000000000643ddc5f567bb38a83d5402435787d232d36d91d
-----Decoded View---------------
Arg [0] : _contractOwner (address): 0x70021A160137CCE0fCE8b9B694Aa1AAb803c8A3f
Arg [1] : _diamondCutFacet (address): 0x643Ddc5F567BB38A83d5402435787D232D36d91d
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000070021a160137cce0fce8b9b694aa1aab803c8a3f
Arg [1] : 000000000000000000000000643ddc5f567bb38a83d5402435787d232d36d91d
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.