Feature Tip: Add private address tag to any address under My Name Tag !
ERC-721
Overview
Max Total Supply
203 DEFUSIONAI
Holders
186
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
2 DEFUSIONAILoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
DefusionAiProxy
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity Standard Json-Input format)
/*** * * ██████╗ ███████╗███████╗██╗ ██╗███████╗██╗ ██████╗ ███╗ ██╗ █████╗ ██╗ ██╔══██╗██╔════╝██╔════╝██║ ██║██╔════╝██║██╔═══██╗████╗ ██║██╔══██╗██║ ██║ ██║█████╗ █████╗ ██║ ██║███████╗██║██║ ██║██╔██╗ ██║███████║██║ ██║ ██║██╔══╝ ██╔══╝ ██║ ██║╚════██║██║██║ ██║██║╚██╗██║██╔══██║██║ ██████╔╝███████╗██║ ╚██████╔╝███████║██║╚██████╔╝██║ ╚████║██║ ██║██║ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝ ╚═╝╚═╝ * * https://defusion.ai * MIT License * =========== * * Copyright (c) 2023 defusionai * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE */// File: @openzeppelin/contracts/proxy/Proxy.sol // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (proxy/Proxy.sol) pragma solidity ^0.8.0; /** * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to * be specified by overriding the virtual {_implementation} function. * * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a * different contract through the {_delegate} function. * * The success and return data of the delegated call will be returned back to the caller of the proxy. */ abstract contract Proxy { /** * @dev Delegates the current call to `implementation`. * * This function does not return to its internal call site, it will return directly to the external caller. */ function _delegate(address implementation) internal virtual { assembly { // Copy msg.data. We take full control of memory in this inline assembly // block because it will not return to Solidity code. We overwrite the // Solidity scratch pad at memory position 0. calldatacopy(0, 0, calldatasize()) // Call the implementation. // out and outsize are 0 because we don't know the size yet. let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0) // Copy the returned data. returndatacopy(0, 0, returndatasize()) switch result // delegatecall returns 0 on error. case 0 { revert(0, returndatasize()) } default { return(0, returndatasize()) } } } /** * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function * and {_fallback} should delegate. */ function _implementation() internal view virtual returns (address); /** * @dev Delegates the current call to the address returned by `_implementation()`. * * This function does not return to its internall call site, it will return directly to the external caller. */ function _fallback() internal virtual { _beforeFallback(); _delegate(_implementation()); } /** * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other * function in the contract matches the call data. */ fallback() external payable virtual { _fallback(); } /** * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data * is empty. */ receive() external payable virtual { _fallback(); } /** * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback` * call, or as part of the Solidity `fallback` or `receive` functions. * * If overriden should call `super._beforeFallback()`. */ function _beforeFallback() internal virtual {} } // File: @openzeppelin/contracts/proxy/beacon/IBeacon.sol // OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol) pragma solidity ^0.8.0; /** * @dev This is the interface that {BeaconProxy} expects of its beacon. */ interface IBeacon { /** * @dev Must return an address that can be used as a delegate call target. * * {BeaconProxy} will check that this address is a contract. */ function implementation() external view returns (address); } // File: @openzeppelin/contracts/interfaces/draft-IERC1822.sol // OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol) pragma solidity ^0.8.0; /** * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified * proxy whose upgrades are fully controlled by the current implementation. */ interface IERC1822Proxiable { /** * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation * address. * * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this * function revert if invoked through a proxy. */ function proxiableUUID() external view returns (bytes32); } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/utils/StorageSlot.sol // OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol) pragma solidity ^0.8.0; /** * @dev Library for reading and writing primitive types to specific storage slots. * * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. * This library helps with reading and writing to such slots without the need for inline assembly. * * The functions in this library return Slot structs that contain a `value` member that can be used to read or write. * * Example usage to set ERC1967 implementation slot: * ``` * contract ERC1967 { * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; * * function _getImplementation() internal view returns (address) { * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; * } * * function _setImplementation(address newImplementation) internal { * require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract"); * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; * } * } * ``` * * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._ */ library StorageSlot { struct AddressSlot { address value; } struct BooleanSlot { bool value; } struct Bytes32Slot { bytes32 value; } struct Uint256Slot { uint256 value; } /** * @dev Returns an `AddressSlot` with member `value` located at `slot`. */ function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) { assembly { r.slot := slot } } /** * @dev Returns an `BooleanSlot` with member `value` located at `slot`. */ function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) { assembly { r.slot := slot } } /** * @dev Returns an `Bytes32Slot` with member `value` located at `slot`. */ function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) { assembly { r.slot := slot } } /** * @dev Returns an `Uint256Slot` with member `value` located at `slot`. */ function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) { assembly { r.slot := slot } } } // File: @openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol // OpenZeppelin Contracts (last updated v4.5.0) (proxy/ERC1967/ERC1967Upgrade.sol) pragma solidity ^0.8.2; /** * @dev This abstract contract provides getters and event emitting update functions for * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. * * _Available since v4.1._ * * @custom:oz-upgrades-unsafe-allow delegatecall */ abstract contract ERC1967Upgrade { // This is the keccak-256 hash of "eip1967.proxy.rollback" subtracted by 1 bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143; /** * @dev Storage slot with the address of the current implementation. * This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is * validated in the constructor. */ bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; /** * @dev Emitted when the implementation is upgraded. */ event Upgraded(address indexed implementation); /** * @dev Returns the current implementation address. */ function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } /** * @dev Stores a new address in the EIP1967 implementation slot. */ function _setImplementation(address newImplementation) private { require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract"); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } /** * @dev Perform implementation upgrade * * Emits an {Upgraded} event. */ function _upgradeTo(address newImplementation) internal { _setImplementation(newImplementation); emit Upgraded(newImplementation); } /** * @dev Perform implementation upgrade with additional setup call. * * Emits an {Upgraded} event. */ function _upgradeToAndCall( address newImplementation, bytes memory data, bool forceCall ) internal { _upgradeTo(newImplementation); if (data.length > 0 || forceCall) { Address.functionDelegateCall(newImplementation, data); } } /** * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call. * * Emits an {Upgraded} event. */ function _upgradeToAndCallUUPS( address newImplementation, bytes memory data, bool forceCall ) internal { // Upgrades from old implementations will perform a rollback test. This test requires the new // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing // this special case will break upgrade paths from old UUPS implementation to new ones. if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) { _setImplementation(newImplementation); } else { try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) { require(slot == _IMPLEMENTATION_SLOT, "ERC1967Upgrade: unsupported proxiableUUID"); } catch { revert("ERC1967Upgrade: new implementation is not UUPS"); } _upgradeToAndCall(newImplementation, data, forceCall); } } /** * @dev Storage slot with the admin of the contract. * This is the keccak-256 hash of "eip1967.proxy.admin" subtracted by 1, and is * validated in the constructor. */ bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103; /** * @dev Emitted when the admin account has changed. */ event AdminChanged(address previousAdmin, address newAdmin); /** * @dev Returns the current admin. */ function _getAdmin() internal view returns (address) { return StorageSlot.getAddressSlot(_ADMIN_SLOT).value; } /** * @dev Stores a new address in the EIP1967 admin slot. */ function _setAdmin(address newAdmin) private { require(newAdmin != address(0), "ERC1967: new admin is the zero address"); StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin; } /** * @dev Changes the admin of the proxy. * * Emits an {AdminChanged} event. */ function _changeAdmin(address newAdmin) internal { emit AdminChanged(_getAdmin(), newAdmin); _setAdmin(newAdmin); } /** * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor. */ bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50; /** * @dev Emitted when the beacon is upgraded. */ event BeaconUpgraded(address indexed beacon); /** * @dev Returns the current beacon. */ function _getBeacon() internal view returns (address) { return StorageSlot.getAddressSlot(_BEACON_SLOT).value; } /** * @dev Stores a new beacon in the EIP1967 beacon slot. */ function _setBeacon(address newBeacon) private { require(Address.isContract(newBeacon), "ERC1967: new beacon is not a contract"); require( Address.isContract(IBeacon(newBeacon).implementation()), "ERC1967: beacon implementation is not a contract" ); StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon; } /** * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that). * * Emits a {BeaconUpgraded} event. */ function _upgradeBeaconToAndCall( address newBeacon, bytes memory data, bool forceCall ) internal { _setBeacon(newBeacon); emit BeaconUpgraded(newBeacon); if (data.length > 0 || forceCall) { Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data); } } } // File: @openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol // OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol) pragma solidity ^0.8.0; /** * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an * implementation address that can be changed. This address is stored in storage in the location specified by * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the * implementation behind the proxy. */ contract ERC1967Proxy is Proxy, ERC1967Upgrade { /** * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`. * * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded * function call, and allows initializating the storage of the proxy like a Solidity constructor. */ constructor(address _logic, bytes memory _data) payable { assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1)); _upgradeToAndCall(_logic, _data, false); } /** * @dev Returns the current implementation address. */ function _implementation() internal view virtual override returns (address impl) { return ERC1967Upgrade._getImplementation(); } } // File: @openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol // OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol) pragma solidity ^0.8.0; /** * @dev This contract implements a proxy that is upgradeable by an admin. * * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector * clashing], which can potentially be used in an attack, this contract uses the * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two * things that go hand in hand: * * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if * that call matches one of the admin functions exposed by the proxy itself. * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the * implementation. If the admin tries to call a function on the implementation it will fail with an error that says * "admin cannot fallback to proxy target". * * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due * to sudden errors when trying to call a function from the proxy implementation. * * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy. */ contract TransparentUpgradeableProxy is ERC1967Proxy { /** * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}. */ constructor( address _logic, address admin_, bytes memory _data ) payable ERC1967Proxy(_logic, _data) { assert(_ADMIN_SLOT == bytes32(uint256(keccak256("eip1967.proxy.admin")) - 1)); _changeAdmin(admin_); } /** * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin. */ modifier ifAdmin() { if (msg.sender == _getAdmin()) { _; } else { _fallback(); } } /** * @dev Returns the current admin. * * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. * * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103` */ function admin() external ifAdmin returns (address admin_) { admin_ = _getAdmin(); } /** * @dev Returns the current implementation. * * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. * * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc` */ function implementation() external ifAdmin returns (address implementation_) { implementation_ = _implementation(); } /** * @dev Changes the admin of the proxy. * * Emits an {AdminChanged} event. * * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}. */ function changeAdmin(address newAdmin) external virtual ifAdmin { _changeAdmin(newAdmin); } /** * @dev Upgrade the implementation of the proxy. * * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}. */ function upgradeTo(address newImplementation) external ifAdmin { _upgradeToAndCall(newImplementation, bytes(""), false); } /** * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the * proxied contract. * * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}. */ function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin { _upgradeToAndCall(newImplementation, data, true); } /** * @dev Returns the current admin. */ function _admin() internal view virtual returns (address) { return _getAdmin(); } /** * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}. */ function _beforeFallback() internal virtual override { require(msg.sender != _getAdmin(), "TransparentUpgradeableProxy: admin cannot fallback to proxy target"); super._beforeFallback(); } } // File: contracts/editor/DefusionAiProxy.sol pragma solidity ^0.8.0; contract DefusionAiProxy is TransparentUpgradeableProxy { constructor(address _implementation, bytes memory _data) TransparentUpgradeableProxy(_implementation, msg.sender, _data) {} // Allow anyone to view the implementation address function proxyImplementation() external view returns (address) { return _implementation(); } function proxyAdmin() external view returns (address) { return _admin(); } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_implementation","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proxyAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxyImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162001b0938038062001b0983398181016040528101906200003791906200080f565b813382828160017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd60001c6200006e9190620008ae565b60001b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b14620000a657620000a5620008e9565b5b620000ba828260006200014260201b60201c565b505060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610460001c620000ee9190620008ae565b60001b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b14620001265762000125620008e9565b5b62000137826200018560201b60201c565b505050505062000c05565b6200015383620001e360201b60201c565b600082511180620001615750805b1562000180576200017e83836200023a60201b620003e41760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620001b66200027060201b60201c565b82604051620001c792919062000929565b60405180910390a1620001e081620002d460201b60201c565b50565b620001f481620003c460201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b606062000268838360405180606001604052806027815260200162001ae2602791396200049a60201b60201c565b905092915050565b6000620002ab7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b6200057e60201b620004111760201c565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000346576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200033d90620009dd565b60405180910390fd5b80620003807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b6200057e60201b620004111760201c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b620003da816200058860201b6200041b1760201c565b6200041c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004139062000a75565b60405180910390fd5b80620004567f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200057e60201b620004111760201c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060620004ad846200058860201b60201c565b620004ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004e69062000b0d565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff168560405162000519919062000b7c565b600060405180830381855af49150503d806000811462000556576040519150601f19603f3d011682016040523d82523d6000602084013e6200055b565b606091505b509150915062000573828286620005ab60201b60201c565b925050509392505050565b6000819050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60608315620005bd5782905062000610565b600083511115620005d15782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000607919062000be1565b60405180910390fd5b9392505050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000658826200062b565b9050919050565b6200066a816200064b565b81146200067657600080fd5b50565b6000815190506200068a816200065f565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620006e5826200069a565b810181811067ffffffffffffffff82111715620007075762000706620006ab565b5b80604052505050565b60006200071c62000617565b90506200072a8282620006da565b919050565b600067ffffffffffffffff8211156200074d576200074c620006ab565b5b62000758826200069a565b9050602081019050919050565b60005b838110156200078557808201518184015260208101905062000768565b60008484015250505050565b6000620007a8620007a2846200072f565b62000710565b905082815260208101848484011115620007c757620007c662000695565b5b620007d484828562000765565b509392505050565b600082601f830112620007f457620007f362000690565b5b81516200080684826020860162000791565b91505092915050565b6000806040838503121562000829576200082862000621565b5b6000620008398582860162000679565b925050602083015167ffffffffffffffff8111156200085d576200085c62000626565b5b6200086b85828601620007dc565b9150509250929050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620008bb8262000875565b9150620008c88362000875565b9250828203905081811115620008e357620008e26200087f565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b62000923816200064b565b82525050565b600060408201905062000940600083018562000918565b6200094f602083018462000918565b9392505050565b600082825260208201905092915050565b7f455243313936373a206e65772061646d696e20697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000620009c560268362000956565b9150620009d28262000967565b604082019050919050565b60006020820190508181036000830152620009f881620009b6565b9050919050565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b600062000a5d602d8362000956565b915062000a6a82620009ff565b604082019050919050565b6000602082019050818103600083015262000a908162000a4e565b9050919050565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b600062000af560268362000956565b915062000b028262000a97565b604082019050919050565b6000602082019050818103600083015262000b288162000ae6565b9050919050565b600081519050919050565b600081905092915050565b600062000b528262000b2f565b62000b5e818562000b3a565b935062000b7081856020860162000765565b80840191505092915050565b600062000b8a828462000b45565b915081905092915050565b600081519050919050565b600062000bad8262000b95565b62000bb9818562000956565b935062000bcb81856020860162000765565b62000bd6816200069a565b840191505092915050565b6000602082019050818103600083015262000bfd818462000ba0565b905092915050565b610ecd8062000c156000396000f3fe6080604052600436106100745760003560e01c80634f1ef2861161004e5780634f1ef2861461010c5780635c60da1b146101285780638f28397014610153578063f851a4401461017c57610083565b80630c870f911461008d5780633659cfe6146100b85780633e47158c146100e157610083565b36610083576100816101a7565b005b61008b6101a7565b005b34801561009957600080fd5b506100a26101c1565b6040516100af9190610986565b60405180910390f35b3480156100c457600080fd5b506100df60048036038101906100da91906109d7565b6101d0565b005b3480156100ed57600080fd5b506100f6610236565b6040516101039190610986565b60405180910390f35b61012660048036038101906101219190610a69565b610245565b005b34801561013457600080fd5b5061013d6102e2565b60405161014a9190610986565b60405180910390f35b34801561015f57600080fd5b5061017a600480360381019061017591906109d7565b610339565b005b34801561018857600080fd5b5061019161038d565b60405161019e9190610986565b60405180910390f35b6101af61043e565b6101bf6101ba6104bd565b6104cc565b565b60006101cb6104bd565b905090565b6101d86104f2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361022a5761022581604051806020016040528060008152506000610549565b610233565b6102326101a7565b5b50565b6000610240610575565b905090565b61024d6104f2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036102d4576102cf8383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506001610549565b6102dd565b6102dc6101a7565b5b505050565b60006102ec6104f2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361032d576103266104bd565b9050610336565b6103356101a7565b5b90565b6103416104f2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036103815761037c81610584565b61038a565b6103896101a7565b5b50565b60006103976104f2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036103d8576103d16104f2565b90506103e1565b6103e06101a7565b5b90565b60606104098383604051806060016040528060278152602001610e71602791396105d0565b905092915050565b6000819050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6104466104f2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036104b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104aa90610b72565b60405180910390fd5b6104bb61069d565b565b60006104c761069f565b905090565b3660008037600080366000845af43d6000803e80600081146104ed573d6000f35b3d6000fd5b60006105207fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b610411565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610552836106f6565b60008251118061055f5750805b156105705761056e83836103e4565b505b505050565b600061057f6104f2565b905090565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6105ad6104f2565b826040516105bc929190610b92565b60405180910390a16105cd81610745565b50565b60606105db8461041b565b61061a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061190610c2d565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516106429190610cbe565b600060405180830381855af49150503d806000811461067d576040519150601f19603f3d011682016040523d82523d6000602084013e610682565b606091505b5091509150610692828286610825565b925050509392505050565b565b60006106cd7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b610411565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6106ff8161088c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036107b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ab90610d47565b60405180910390fd5b806107e17fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b610411565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060831561083557829050610885565b6000835111156108485782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087c9190610dbc565b60405180910390fd5b9392505050565b6108958161041b565b6108d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cb90610e50565b60405180910390fd5b806109017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b610411565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061097082610945565b9050919050565b61098081610965565b82525050565b600060208201905061099b6000830184610977565b92915050565b600080fd5b600080fd5b6109b481610965565b81146109bf57600080fd5b50565b6000813590506109d1816109ab565b92915050565b6000602082840312156109ed576109ec6109a1565b5b60006109fb848285016109c2565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112610a2957610a28610a04565b5b8235905067ffffffffffffffff811115610a4657610a45610a09565b5b602083019150836001820283011115610a6257610a61610a0e565b5b9250929050565b600080600060408486031215610a8257610a816109a1565b5b6000610a90868287016109c2565b935050602084013567ffffffffffffffff811115610ab157610ab06109a6565b5b610abd86828701610a13565b92509250509250925092565b600082825260208201905092915050565b7f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60008201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760208201527f6574000000000000000000000000000000000000000000000000000000000000604082015250565b6000610b5c604283610ac9565b9150610b6782610ada565b606082019050919050565b60006020820190508181036000830152610b8b81610b4f565b9050919050565b6000604082019050610ba76000830185610977565b610bb46020830184610977565b9392505050565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b6000610c17602683610ac9565b9150610c2282610bbb565b604082019050919050565b60006020820190508181036000830152610c4681610c0a565b9050919050565b600081519050919050565b600081905092915050565b60005b83811015610c81578082015181840152602081019050610c66565b60008484015250505050565b6000610c9882610c4d565b610ca28185610c58565b9350610cb2818560208601610c63565b80840191505092915050565b6000610cca8284610c8d565b915081905092915050565b7f455243313936373a206e65772061646d696e20697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000610d31602683610ac9565b9150610d3c82610cd5565b604082019050919050565b60006020820190508181036000830152610d6081610d24565b9050919050565b600081519050919050565b6000601f19601f8301169050919050565b6000610d8e82610d67565b610d988185610ac9565b9350610da8818560208601610c63565b610db181610d72565b840191505092915050565b60006020820190508181036000830152610dd68184610d83565b905092915050565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b6000610e3a602d83610ac9565b9150610e4582610dde565b604082019050919050565b60006020820190508181036000830152610e6981610e2d565b905091905056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220acba819adee74a274b7c9ffbc46c2cf7c696729438d9287917938aefde4b0ab164736f6c63430008120033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009184f8564c71f28fa6d220699edee63eb379e4cc00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000880539b0d982b76ae6f018aea29a9b8df4d4ee7700000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106100745760003560e01c80634f1ef2861161004e5780634f1ef2861461010c5780635c60da1b146101285780638f28397014610153578063f851a4401461017c57610083565b80630c870f911461008d5780633659cfe6146100b85780633e47158c146100e157610083565b36610083576100816101a7565b005b61008b6101a7565b005b34801561009957600080fd5b506100a26101c1565b6040516100af9190610986565b60405180910390f35b3480156100c457600080fd5b506100df60048036038101906100da91906109d7565b6101d0565b005b3480156100ed57600080fd5b506100f6610236565b6040516101039190610986565b60405180910390f35b61012660048036038101906101219190610a69565b610245565b005b34801561013457600080fd5b5061013d6102e2565b60405161014a9190610986565b60405180910390f35b34801561015f57600080fd5b5061017a600480360381019061017591906109d7565b610339565b005b34801561018857600080fd5b5061019161038d565b60405161019e9190610986565b60405180910390f35b6101af61043e565b6101bf6101ba6104bd565b6104cc565b565b60006101cb6104bd565b905090565b6101d86104f2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361022a5761022581604051806020016040528060008152506000610549565b610233565b6102326101a7565b5b50565b6000610240610575565b905090565b61024d6104f2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036102d4576102cf8383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506001610549565b6102dd565b6102dc6101a7565b5b505050565b60006102ec6104f2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361032d576103266104bd565b9050610336565b6103356101a7565b5b90565b6103416104f2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036103815761037c81610584565b61038a565b6103896101a7565b5b50565b60006103976104f2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036103d8576103d16104f2565b90506103e1565b6103e06101a7565b5b90565b60606104098383604051806060016040528060278152602001610e71602791396105d0565b905092915050565b6000819050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6104466104f2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036104b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104aa90610b72565b60405180910390fd5b6104bb61069d565b565b60006104c761069f565b905090565b3660008037600080366000845af43d6000803e80600081146104ed573d6000f35b3d6000fd5b60006105207fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b610411565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610552836106f6565b60008251118061055f5750805b156105705761056e83836103e4565b505b505050565b600061057f6104f2565b905090565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6105ad6104f2565b826040516105bc929190610b92565b60405180910390a16105cd81610745565b50565b60606105db8461041b565b61061a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061190610c2d565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516106429190610cbe565b600060405180830381855af49150503d806000811461067d576040519150601f19603f3d011682016040523d82523d6000602084013e610682565b606091505b5091509150610692828286610825565b925050509392505050565b565b60006106cd7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b610411565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6106ff8161088c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036107b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ab90610d47565b60405180910390fd5b806107e17fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b610411565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060831561083557829050610885565b6000835111156108485782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087c9190610dbc565b60405180910390fd5b9392505050565b6108958161041b565b6108d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cb90610e50565b60405180910390fd5b806109017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b610411565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061097082610945565b9050919050565b61098081610965565b82525050565b600060208201905061099b6000830184610977565b92915050565b600080fd5b600080fd5b6109b481610965565b81146109bf57600080fd5b50565b6000813590506109d1816109ab565b92915050565b6000602082840312156109ed576109ec6109a1565b5b60006109fb848285016109c2565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112610a2957610a28610a04565b5b8235905067ffffffffffffffff811115610a4657610a45610a09565b5b602083019150836001820283011115610a6257610a61610a0e565b5b9250929050565b600080600060408486031215610a8257610a816109a1565b5b6000610a90868287016109c2565b935050602084013567ffffffffffffffff811115610ab157610ab06109a6565b5b610abd86828701610a13565b92509250509250925092565b600082825260208201905092915050565b7f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60008201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760208201527f6574000000000000000000000000000000000000000000000000000000000000604082015250565b6000610b5c604283610ac9565b9150610b6782610ada565b606082019050919050565b60006020820190508181036000830152610b8b81610b4f565b9050919050565b6000604082019050610ba76000830185610977565b610bb46020830184610977565b9392505050565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b6000610c17602683610ac9565b9150610c2282610bbb565b604082019050919050565b60006020820190508181036000830152610c4681610c0a565b9050919050565b600081519050919050565b600081905092915050565b60005b83811015610c81578082015181840152602081019050610c66565b60008484015250505050565b6000610c9882610c4d565b610ca28185610c58565b9350610cb2818560208601610c63565b80840191505092915050565b6000610cca8284610c8d565b915081905092915050565b7f455243313936373a206e65772061646d696e20697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000610d31602683610ac9565b9150610d3c82610cd5565b604082019050919050565b60006020820190508181036000830152610d6081610d24565b9050919050565b600081519050919050565b6000601f19601f8301169050919050565b6000610d8e82610d67565b610d988185610ac9565b9350610da8818560208601610c63565b610db181610d72565b840191505092915050565b60006020820190508181036000830152610dd68184610d83565b905092915050565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b6000610e3a602d83610ac9565b9150610e4582610dde565b604082019050919050565b60006020820190508181036000830152610e6981610e2d565b905091905056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220acba819adee74a274b7c9ffbc46c2cf7c696729438d9287917938aefde4b0ab164736f6c63430008120033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000009184f8564c71f28fa6d220699edee63eb379e4cc00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000880539b0d982b76ae6f018aea29a9b8df4d4ee7700000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _implementation (address): 0x9184f8564C71f28fa6D220699EdEe63Eb379E4Cc
Arg [1] : _data (bytes): 0xc4d66de8000000000000000000000000880539b0d982b76ae6f018aea29a9b8df4d4ee77
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000009184f8564c71f28fa6d220699edee63eb379e4cc
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000024
Arg [3] : c4d66de8000000000000000000000000880539b0d982b76ae6f018aea29a9b8d
Arg [4] : f4d4ee7700000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
30947:456:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5371:11;:9;:11::i;:::-;30947:456;;5148:11;:9;:11::i;:::-;30947:456;31205:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29713:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31315:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30223:164;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29116:129;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29450:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28560:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4795:110;4843:17;:15;:17::i;:::-;4870:28;4880:17;:15;:17::i;:::-;4870:9;:28::i;:::-;4795:110::o;31205:104::-;31259:7;31285:17;:15;:17::i;:::-;31278:24;;31205:104;:::o;29713:134::-;28031:11;:9;:11::i;:::-;28017:25;;:10;:25;;;28013:99;;29786:54:::1;29804:17;29823:9;;;;;;;;;;;::::0;29834:5:::1;29786:17;:54::i;:::-;28013:99:::0;;;28090:11;:9;:11::i;:::-;28013:99;29713:134;:::o;31315:86::-;31360:7;31386:8;:6;:8::i;:::-;31379:15;;31315:86;:::o;30223:164::-;28031:11;:9;:11::i;:::-;28017:25;;:10;:25;;;28013:99;;30332:48:::1;30350:17;30369:4;;30332:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30375:4;30332:17;:48::i;:::-;28013:99:::0;;;28090:11;:9;:11::i;:::-;28013:99;30223:164;;;:::o;29116:129::-;29168:23;28031:11;:9;:11::i;:::-;28017:25;;:10;:25;;;28013:99;;29221:17:::1;:15;:17::i;:::-;29203:35;;28013:99:::0;;;28090:11;:9;:11::i;:::-;28013:99;29116:129;:::o;29450:103::-;28031:11;:9;:11::i;:::-;28017:25;;:10;:25;;;28013:99;;29524:22:::1;29537:8;29524:12;:22::i;:::-;28013:99:::0;;;28090:11;:9;:11::i;:::-;28013:99;29450:103;:::o;28560:96::-;28603:14;28031:11;:9;:11::i;:::-;28017:25;;:10;:25;;;28013:99;;28638:11:::1;:9;:11::i;:::-;28629:20;;28013:99:::0;;;28090:11;:9;:11::i;:::-;28013:99;28560:96;:::o;13703:198::-;13786:12;13817:77;13838:6;13846:4;13817:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;13810:84;;13703:198;;;;:::o;17014:147::-;17075:21;17141:4;17131:14;;17014:147;;;:::o;8308:320::-;8368:4;8620:1;8598:7;:19;;;:23;8591:30;;8308:320;;;:::o;30662:207::-;30747:11;:9;:11::i;:::-;30733:25;;:10;:25;;;30725:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;30839:23;:21;:23::i;:::-;30662:207::o;25523:140::-;25590:12;25621:35;:33;:35::i;:::-;25614:42;;25523:140;:::o;3421:895::-;3759:14;3756:1;3753;3740:34;3973:1;3970;3954:14;3951:1;3935:14;3928:5;3915:60;4049:16;4046:1;4043;4028:38;4087:6;4159:1;4154:66;;;;4269:16;4266:1;4259:27;4154:66;4189:16;4186:1;4179:27;21896:122;21940:7;21966:39;21630:66;21993:11;;21966:26;:39::i;:::-;:45;;;;;;;;;;;;21959:52;;21896:122;:::o;19971:295::-;20109:29;20120:17;20109:10;:29::i;:::-;20166:1;20152:4;:11;:15;:28;;;;20171:9;20152:28;20148:112;;;20196:53;20225:17;20244:4;20196:28;:53::i;:::-;;20148:112;19971:295;;;:::o;30448:93::-;30497:7;30523:11;:9;:11::i;:::-;30516:18;;30448:93;:::o;22412:135::-;22476:35;22489:11;:9;:11::i;:::-;22502:8;22476:35;;;;;;;:::i;:::-;;;;;;;;22521:19;22531:8;22521:9;:19::i;:::-;22412:135;:::o;14087:387::-;14228:12;14260:18;14271:6;14260:10;:18::i;:::-;14252:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;14333:12;14347:23;14374:6;:19;;14394:4;14374:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14332:67;;;;14416:51;14433:7;14442:10;14454:12;14416:16;:51::i;:::-;14409:58;;;;14087:387;;;;;:::o;5670:46::-;:::o;19089:140::-;19142:7;19168:48;18818:66;19195:20;;19168:26;:48::i;:::-;:54;;;;;;;;;;;;19161:61;;19089:140;:::o;19685:152::-;19751:37;19770:17;19751:18;:37::i;:::-;19812:17;19803:27;;;;;;;;;;;;19685:152;:::o;22100:201::-;22183:1;22163:22;;:8;:22;;;22155:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22286:8;22238:39;21630:66;22265:11;;22238:26;:39::i;:::-;:45;;;:56;;;;;;;;;;;;;;;;;;22100:201;:::o;14694:692::-;14840:12;14868:7;14864:516;;;14898:10;14891:17;;;;14864:516;15029:1;15009:10;:17;:21;15005:365;;;15203:10;15197:17;15263:15;15250:10;15246:2;15242:19;15235:44;15005:365;15342:12;15335:20;;;;;;;;;;;:::i;:::-;;;;;;;;14694:692;;;;;;:::o;19320:259::-;19401:37;19420:17;19401:18;:37::i;:::-;19393:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;19555:17;19498:48;18818:66;19525:20;;19498:26;:48::i;:::-;:54;;;:74;;;;;;;;;;;;;;;;;;19320:259;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;674:117::-;783:1;780;773:12;797:117;906:1;903;896:12;920:122;993:24;1011:5;993:24;:::i;:::-;986:5;983:35;973:63;;1032:1;1029;1022:12;973:63;920:122;:::o;1048:139::-;1094:5;1132:6;1119:20;1110:29;;1148:33;1175:5;1148:33;:::i;:::-;1048:139;;;;:::o;1193:329::-;1252:6;1301:2;1289:9;1280:7;1276:23;1272:32;1269:119;;;1307:79;;:::i;:::-;1269:119;1427:1;1452:53;1497:7;1488:6;1477:9;1473:22;1452:53;:::i;:::-;1442:63;;1398:117;1193:329;;;;:::o;1528:117::-;1637:1;1634;1627:12;1651:117;1760:1;1757;1750:12;1774:117;1883:1;1880;1873:12;1910:552;1967:8;1977:6;2027:3;2020:4;2012:6;2008:17;2004:27;1994:122;;2035:79;;:::i;:::-;1994:122;2148:6;2135:20;2125:30;;2178:18;2170:6;2167:30;2164:117;;;2200:79;;:::i;:::-;2164:117;2314:4;2306:6;2302:17;2290:29;;2368:3;2360:4;2352:6;2348:17;2338:8;2334:32;2331:41;2328:128;;;2375:79;;:::i;:::-;2328:128;1910:552;;;;;:::o;2468:672::-;2547:6;2555;2563;2612:2;2600:9;2591:7;2587:23;2583:32;2580:119;;;2618:79;;:::i;:::-;2580:119;2738:1;2763:53;2808:7;2799:6;2788:9;2784:22;2763:53;:::i;:::-;2753:63;;2709:117;2893:2;2882:9;2878:18;2865:32;2924:18;2916:6;2913:30;2910:117;;;2946:79;;:::i;:::-;2910:117;3059:64;3115:7;3106:6;3095:9;3091:22;3059:64;:::i;:::-;3041:82;;;;2836:297;2468:672;;;;;:::o;3146:169::-;3230:11;3264:6;3259:3;3252:19;3304:4;3299:3;3295:14;3280:29;;3146:169;;;;:::o;3321:290::-;3461:34;3457:1;3449:6;3445:14;3438:58;3530:34;3525:2;3517:6;3513:15;3506:59;3599:4;3594:2;3586:6;3582:15;3575:29;3321:290;:::o;3617:366::-;3759:3;3780:67;3844:2;3839:3;3780:67;:::i;:::-;3773:74;;3856:93;3945:3;3856:93;:::i;:::-;3974:2;3969:3;3965:12;3958:19;;3617:366;;;:::o;3989:419::-;4155:4;4193:2;4182:9;4178:18;4170:26;;4242:9;4236:4;4232:20;4228:1;4217:9;4213:17;4206:47;4270:131;4396:4;4270:131;:::i;:::-;4262:139;;3989:419;;;:::o;4414:332::-;4535:4;4573:2;4562:9;4558:18;4550:26;;4586:71;4654:1;4643:9;4639:17;4630:6;4586:71;:::i;:::-;4667:72;4735:2;4724:9;4720:18;4711:6;4667:72;:::i;:::-;4414:332;;;;;:::o;4752:225::-;4892:34;4888:1;4880:6;4876:14;4869:58;4961:8;4956:2;4948:6;4944:15;4937:33;4752:225;:::o;4983:366::-;5125:3;5146:67;5210:2;5205:3;5146:67;:::i;:::-;5139:74;;5222:93;5311:3;5222:93;:::i;:::-;5340:2;5335:3;5331:12;5324:19;;4983:366;;;:::o;5355:419::-;5521:4;5559:2;5548:9;5544:18;5536:26;;5608:9;5602:4;5598:20;5594:1;5583:9;5579:17;5572:47;5636:131;5762:4;5636:131;:::i;:::-;5628:139;;5355:419;;;:::o;5780:98::-;5831:6;5865:5;5859:12;5849:22;;5780:98;;;:::o;5884:147::-;5985:11;6022:3;6007:18;;5884:147;;;;:::o;6037:246::-;6118:1;6128:113;6142:6;6139:1;6136:13;6128:113;;;6227:1;6222:3;6218:11;6212:18;6208:1;6203:3;6199:11;6192:39;6164:2;6161:1;6157:10;6152:15;;6128:113;;;6275:1;6266:6;6261:3;6257:16;6250:27;6099:184;6037:246;;;:::o;6289:386::-;6393:3;6421:38;6453:5;6421:38;:::i;:::-;6475:88;6556:6;6551:3;6475:88;:::i;:::-;6468:95;;6572:65;6630:6;6625:3;6618:4;6611:5;6607:16;6572:65;:::i;:::-;6662:6;6657:3;6653:16;6646:23;;6397:278;6289:386;;;;:::o;6681:271::-;6811:3;6833:93;6922:3;6913:6;6833:93;:::i;:::-;6826:100;;6943:3;6936:10;;6681:271;;;;:::o;6958:225::-;7098:34;7094:1;7086:6;7082:14;7075:58;7167:8;7162:2;7154:6;7150:15;7143:33;6958:225;:::o;7189:366::-;7331:3;7352:67;7416:2;7411:3;7352:67;:::i;:::-;7345:74;;7428:93;7517:3;7428:93;:::i;:::-;7546:2;7541:3;7537:12;7530:19;;7189:366;;;:::o;7561:419::-;7727:4;7765:2;7754:9;7750:18;7742:26;;7814:9;7808:4;7804:20;7800:1;7789:9;7785:17;7778:47;7842:131;7968:4;7842:131;:::i;:::-;7834:139;;7561:419;;;:::o;7986:99::-;8038:6;8072:5;8066:12;8056:22;;7986:99;;;:::o;8091:102::-;8132:6;8183:2;8179:7;8174:2;8167:5;8163:14;8159:28;8149:38;;8091:102;;;:::o;8199:377::-;8287:3;8315:39;8348:5;8315:39;:::i;:::-;8370:71;8434:6;8429:3;8370:71;:::i;:::-;8363:78;;8450:65;8508:6;8503:3;8496:4;8489:5;8485:16;8450:65;:::i;:::-;8540:29;8562:6;8540:29;:::i;:::-;8535:3;8531:39;8524:46;;8291:285;8199:377;;;;:::o;8582:313::-;8695:4;8733:2;8722:9;8718:18;8710:26;;8782:9;8776:4;8772:20;8768:1;8757:9;8753:17;8746:47;8810:78;8883:4;8874:6;8810:78;:::i;:::-;8802:86;;8582:313;;;;:::o;8901:232::-;9041:34;9037:1;9029:6;9025:14;9018:58;9110:15;9105:2;9097:6;9093:15;9086:40;8901:232;:::o;9139:366::-;9281:3;9302:67;9366:2;9361:3;9302:67;:::i;:::-;9295:74;;9378:93;9467:3;9378:93;:::i;:::-;9496:2;9491:3;9487:12;9480:19;;9139:366;;;:::o;9511:419::-;9677:4;9715:2;9704:9;9700:18;9692:26;;9764:9;9758:4;9754:20;9750:1;9739:9;9735:17;9728:47;9792:131;9918:4;9792:131;:::i;:::-;9784:139;;9511:419;;;:::o
Swarm Source
ipfs://acba819adee74a274b7c9ffbc46c2cf7c696729438d9287917938aefde4b0ab1
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.