More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 5,869 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Convert Emission... | 5737784 | 39 secs ago | IN | 0 S | 0.00382107 | ||||
Approve | 5737203 | 10 mins ago | IN | 0 S | 0.00267403 | ||||
Create Vest | 5736938 | 15 mins ago | IN | 0 S | 0.00694925 | ||||
Convert Emission... | 5736894 | 16 mins ago | IN | 0 S | 0.00382107 | ||||
Exit | 5736518 | 23 mins ago | IN | 0 S | 0.00401329 | ||||
Exit | 5736510 | 23 mins ago | IN | 0 S | 0.00401395 | ||||
Convert Emission... | 5736127 | 29 mins ago | IN | 0 S | 0.00417165 | ||||
Approve | 5736053 | 31 mins ago | IN | 0 S | 0.00254628 | ||||
Convert Emission... | 5735848 | 35 mins ago | IN | 0 S | 0.00382107 | ||||
Approve | 5735509 | 42 mins ago | IN | 0 S | 0.00277077 | ||||
Exit | 5735464 | 43 mins ago | IN | 0 S | 0.0043801 | ||||
Approve | 5735456 | 43 mins ago | IN | 0 S | 0.00277077 | ||||
Exit | 5734731 | 57 mins ago | IN | 0 S | 0.00401329 | ||||
Convert Emission... | 5734685 | 58 mins ago | IN | 0 S | 0.00358731 | ||||
Approve | 5732612 | 1 hr ago | IN | 0 S | 0.0024305 | ||||
Approve | 5732608 | 1 hr ago | IN | 0 S | 0.00267403 | ||||
Exit | 5732471 | 1 hr ago | IN | 0 S | 0.00422861 | ||||
Approve | 5732302 | 1 hr ago | IN | 0 S | 0.00253044 | ||||
Approve | 5730972 | 1 hr ago | IN | 0 S | 0.00267403 | ||||
Exit | 5729897 | 2 hrs ago | IN | 0 S | 0.0042279 | ||||
Approve | 5729517 | 2 hrs ago | IN | 0 S | 0.00267403 | ||||
Approve | 5729511 | 2 hrs ago | IN | 0 S | 0.00159093 | ||||
Create Vest | 5729110 | 2 hrs ago | IN | 0 S | 0.00710325 | ||||
Approve | 5726447 | 2 hrs ago | IN | 0 S | 0.00276045 | ||||
Approve | 5722664 | 3 hrs ago | IN | 0 S | 0.00260991 |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
XShadow
Compiler Version
v0.8.28+commit.7893614a
Optimization Enabled:
Yes with 1633 runs
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.26;import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";import {Pausable} from "@openzeppelin/contracts/utils/Pausable.sol";import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";import {IVoter} from "../interfaces/IVoter.sol";import {IRamsesV3Pool} from "../CL/core/interfaces/IRamsesV3Pool.sol";import {IXShadow} from "../interfaces/IXShadow.sol";import {IVoteModule} from "../interfaces/IVoteModule.sol";contract XShadow is ERC20, IXShadow, Pausable {using EnumerableSet for EnumerableSet.AddressSet;/** Addresses *//// @inheritdoc IXShadowaddress public operator;/// @inheritdoc IXShadowaddress public immutable MINTER;/// @inheritdoc IXShadowaddress public immutable ACCESS_HUB;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/ERC20.sol)pragma solidity ^0.8.20;import {IERC20} from "./IERC20.sol";import {IERC20Metadata} from "./extensions/IERC20Metadata.sol";import {Context} from "../../utils/Context.sol";import {IERC20Errors} from "../../interfaces/draft-IERC6093.sol";/*** @dev Implementation of the {IERC20} interface.** This implementation is agnostic to the way tokens are created. This means* that a supply mechanism has to be added in a derived contract using {_mint}.** TIP: For a detailed writeup see our guide* https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How* to implement supply mechanisms].** The default value of {decimals} is 18. To change this, you should override* this function so it returns a different value.** We have followed general OpenZeppelin Contracts guidelines: functions revert* instead returning `false` on failure. This behavior is nonetheless* conventional and does not conflict with the expectations of ERC-20
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)pragma solidity ^0.8.20;/*** @dev Interface of the ERC-20 standard as defined in the ERC.*/interface IERC20 {/*** @dev Emitted when `value` tokens are moved from one account (`from`) to* another (`to`).** Note that `value` may be zero.*/event Transfer(address indexed from, address indexed to, uint256 value);/*** @dev Emitted when the allowance of a `spender` for an `owner` is set by* a call to {approve}. `value` is the new allowance.*/event Approval(address indexed owner, address indexed spender, uint256 value);/*** @dev Returns the value of tokens in existence.*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/Pausable.sol)pragma solidity ^0.8.20;import {Context} from "../utils/Context.sol";/*** @dev Contract module which allows children to implement an emergency stop* mechanism that can be triggered by an authorized account.** This module is used through inheritance. It will make available the* modifiers `whenNotPaused` and `whenPaused`, which can be applied to* the functions of your contract. Note that they will not be pausable by* simply including this module, only once the modifiers are put in place.*/abstract contract Pausable is Context {bool private _paused;/*** @dev Emitted when the pause is triggered by `account`.*/event Paused(address account);/*** @dev Emitted when the pause is lifted by `account`.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/Math.sol)pragma solidity ^0.8.20;import {Panic} from "../Panic.sol";import {SafeCast} from "./SafeCast.sol";/*** @dev Standard math utilities missing in the Solidity language.*/library Math {enum Rounding {Floor, // Toward negative infinityCeil, // Toward positive infinityTrunc, // Toward zeroExpand // Away from zero}/*** @dev Returns the addition of two unsigned integers, with an success flag (no overflow).*/function tryAdd(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {unchecked {uint256 c = a + b;if (c < a) return (false, 0);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (utils/structs/EnumerableSet.sol)// This file was procedurally generated from scripts/generate/templates/EnumerableSet.js.pragma solidity ^0.8.20;/*** @dev Library for managing* https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive* types.** Sets have the following properties:** - Elements are added, removed, and checked for existence in constant time* (O(1)).* - Elements are enumerated in O(n). No guarantees are made on the ordering.** ```solidity* contract Example {* // Add the library methods* using EnumerableSet for EnumerableSet.AddressSet;** // Declare a set state variable* EnumerableSet.AddressSet private mySet;* }* ```
1234567891011121314151617181920212223242526// SPDX-License-Identifier: BUSL-1.1pragma solidity ^0.8.26;pragma abicoder v2;interface IVoter {error ACTIVE_GAUGE(address gauge);error GAUGE_INACTIVE(address gauge);error ALREADY_WHITELISTED(address token);error NOT_AUTHORIZED(address caller);error NOT_WHITELISTED();error NOT_POOL();error NOT_INIT();error LENGTH_MISMATCH();error NO_GAUGE();error ALREADY_DISTRIBUTED(address gauge, uint256 period);error ZERO_VOTE(address pool);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.5.0;import {IRamsesV3PoolImmutables} from './pool/IRamsesV3PoolImmutables.sol';import {IRamsesV3PoolState} from './pool/IRamsesV3PoolState.sol';import {IRamsesV3PoolDerivedState} from './pool/IRamsesV3PoolDerivedState.sol';import {IRamsesV3PoolActions} from './pool/IRamsesV3PoolActions.sol';import {IRamsesV3PoolOwnerActions} from './pool/IRamsesV3PoolOwnerActions.sol';import {IRamsesV3PoolErrors} from './pool/IRamsesV3PoolErrors.sol';import {IRamsesV3PoolEvents} from './pool/IRamsesV3PoolEvents.sol';/// @title The interface for a Ramses V3 Pool/// @notice A Ramses pool facilitates swapping and automated market making between any two assets that strictly conform/// to the ERC20 specification/// @dev The pool interface is broken up into many smaller piecesinterface IRamsesV3Pool isIRamsesV3PoolImmutables,IRamsesV3PoolState,IRamsesV3PoolDerivedState,IRamsesV3PoolActions,IRamsesV3PoolOwnerActions,IRamsesV3PoolErrors,IRamsesV3PoolEvents{/// @notice if a new period, advance on interactionfunction _advancePeriod() external;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity ^0.8.24;import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";import {IVoter} from "./IVoter.sol";interface IXShadow is IERC20 {struct VestPosition {/// @dev amount of xShadowuint256 amount;/// @dev start unix timestampuint256 start;/// @dev start + MAX_VEST (end timestamp)uint256 maxEnd;/// @dev vest identifier (starting from 0)uint256 vestID;}error NOT_WHITELISTED(address);error NOT_MINTER();error ZERO();error NO_VEST();error ALREADY_EXEMPT();error NOT_EXEMPT();error CANT_RESCUE();error NO_CHANGE();
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity ^0.8.26;interface IVoteModule {/** Custom Errors *//// @dev == 0error ZERO_AMOUNT();/// @dev if address is not xShadowerror NOT_XSHADOW();/// @dev error for when the cooldown period has not been passed yeterror COOLDOWN_ACTIVE();/// @dev error for when you try to deposit or withdraw for someone who isn't the msg.sendererror NOT_VOTEMODULE();/// @dev error for when the caller is not authorizederror UNAUTHORIZED();/// @dev error for accessHub gated functionserror NOT_ACCESSHUB();/// @dev error for when there is no change of stateerror NO_CHANGE();
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)pragma solidity ^0.8.20;import {IERC20} from "../IERC20.sol";/*** @dev Interface for the optional metadata functions from the ERC-20 standard.*/interface IERC20Metadata is IERC20 {/*** @dev Returns the name of the token.*/function name() external view returns (string memory);/*** @dev Returns the symbol of the token.*/function symbol() external view returns (string memory);/*** @dev Returns the decimals places of the token.*/function decimals() external view returns (uint8);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)pragma solidity ^0.8.20;/*** @dev Provides information about the current execution context, including the* sender of the transaction and its data. While these are generally available* via msg.sender and msg.data, they should not be accessed in such a direct* manner, since when dealing with meta-transactions the account sending and* paying for execution may not be the actual sender (as far as an application* is concerned).** This contract is only required for intermediate, library-like contracts.*/abstract contract Context {function _msgSender() internal view virtual returns (address) {return msg.sender;}function _msgData() internal view virtual returns (bytes calldata) {return msg.data;}function _contextSuffixLength() internal view virtual returns (uint256) {return 0;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)pragma solidity ^0.8.20;/*** @dev Standard ERC-20 Errors* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.*/interface IERC20Errors {/*** @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.* @param sender Address whose tokens are being transferred.* @param balance Current balance for the interacting account.* @param needed Minimum amount required to perform a transfer.*/error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);/*** @dev Indicates a failure with the token `sender`. Used in transfers.* @param sender Address whose tokens are being transferred.*/error ERC20InvalidSender(address sender);/*** @dev Indicates a failure with the token `receiver`. Used in transfers.* @param receiver Address to which tokens are being transferred.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (utils/Panic.sol)pragma solidity ^0.8.20;/*** @dev Helper library for emitting standardized panic codes.** ```solidity* contract Example {* using Panic for uint256;** // Use any of the declared internal constants* function foo() { Panic.GENERIC.panic(); }** // Alternatively* function foo() { Panic.panic(Panic.GENERIC); }* }* ```** Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].** _Available since v5.1._*/// slither-disable-next-line unused-statelibrary Panic {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SafeCast.sol)// This file was procedurally generated from scripts/generate/templates/SafeCast.js.pragma solidity ^0.8.20;/*** @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow* checks.** Downcasting from uint256/int256 in Solidity does not revert on overflow. This can* easily result in undesired exploitation or bugs, since developers usually* assume that overflows raise errors. `SafeCast` restores this intuition by* reverting the transaction when such an operation overflows.** Using this library instead of the unchecked operations eliminates an entire* class of bugs, so it's recommended to use it always.*/library SafeCast {/*** @dev Value doesn't fit in an uint of `bits` size.*/error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value);/*** @dev An int value doesn't fit in an uint of `bits` size.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.5.0;/// @title Pool state that never changes/// @notice These parameters are fixed for a pool forever, i.e., the methods will always return the same valuesinterface IRamsesV3PoolImmutables {/// @notice The contract that deployed the pool, which must adhere to the IRamsesV3Factory interface/// @return The contract addressfunction factory() external view returns (address);/// @notice The first of the two tokens of the pool, sorted by address/// @return The token contract addressfunction token0() external view returns (address);/// @notice The second of the two tokens of the pool, sorted by address/// @return The token contract addressfunction token1() external view returns (address);/// @notice The pool's fee in hundredths of a bip, i.e. 1e-6/// @return The feefunction fee() external view returns (uint24);/// @notice The pool tick spacing/// @dev Ticks can only be used at multiples of this value, minimum of 1 and always positive/// e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, .../// This value is an int24 to avoid casting even though it is always positive.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.5.0;/// @title Pool state that can change/// @notice These methods compose the pool's state, and can change with any frequency including multiple times/// per transactioninterface IRamsesV3PoolState {/// @notice The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas/// when accessed externally./// @return sqrtPriceX96 The current price of the pool as a sqrt(token1/token0) Q64.96 value/// @return tick The current tick of the pool, i.e. according to the last tick transition that was run./// This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick/// boundary./// @return observationIndex The index of the last oracle observation that was written,/// @return observationCardinality The current maximum number of observations stored in the pool,/// @return observationCardinalityNext The next maximum number of observations, to be updated when the observation./// @return feeProtocol The protocol fee for both tokens of the pool./// Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0/// is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee./// unlocked Whether the pool is currently locked to reentrancyfunction slot0()externalviewreturns (uint160 sqrtPriceX96,int24 tick,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.5.0;/// @title Pool state that is not stored/// @notice Contains view functions to provide information about the pool that is computed rather than stored on the/// blockchain. The functions here may have variable gas costs.interface IRamsesV3PoolDerivedState {/// @notice Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp/// @dev To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing/// the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick,/// you must call it with secondsAgos = [3600, 0]./// @dev The time weighted average tick represents the geometric time weighted average price of the pool, in/// log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio./// @param secondsAgos From how long ago each cumulative tick and liquidity value should be returned/// @return tickCumulatives Cumulative tick values as of each `secondsAgos` from the current block timestamp/// @return secondsPerLiquidityCumulativeX128s Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block/// timestampfunction observe(uint32[] calldata secondsAgos) external view returns (int56[] memory tickCumulatives, uint160[] memory secondsPerLiquidityCumulativeX128s);/// @notice Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range/// @dev Snapshots must only be compared to other snapshots, taken over a period for which a position existed./// I.e., snapshots cannot be compared if a position is not held for the entire period between when the first/// snapshot is taken and the second snapshot is taken./// @param tickLower The lower tick of the range
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.5.0;/// @title Permissionless pool actions/// @notice Contains pool methods that can be called by anyoneinterface IRamsesV3PoolActions {/// @notice Sets the initial price for the pool/// @dev Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value/// @param sqrtPriceX96 the initial sqrt price of the pool as a Q64.96function initialize(uint160 sqrtPriceX96) external;/// @notice Adds liquidity for the given recipient/tickLower/tickUpper position/// @dev The caller of this method receives a callback in the form of IUniswapV3MintCallback#uniswapV3MintCallback/// in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends/// on tickLower, tickUpper, the amount of liquidity, and the current price./// @param recipient The address for which the liquidity will be created/// @param index The index for which the liquidity will be created/// @param tickLower The lower tick of the position in which to add liquidity/// @param tickUpper The upper tick of the position in which to add liquidity/// @param amount The amount of liquidity to mint/// @param data Any data that should be passed through to the callback/// @return amount0 The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback/// @return amount1 The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callbackfunction mint(address recipient,uint256 index,
1234567891011121314151617181920212223// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.5.0;/// @title Permissioned pool actions/// @notice Contains pool methods that may only be called by the factory ownerinterface IRamsesV3PoolOwnerActions {/// @notice Set the denominator of the protocol's % share of the feesfunction setFeeProtocol() external;/// @notice Collect the protocol fee accrued to the pool/// @param recipient The address to which collected protocol fees should be sent/// @param amount0Requested The maximum amount of token0 to send, can be 0 to collect fees in only token1/// @param amount1Requested The maximum amount of token1 to send, can be 0 to collect fees in only token0/// @return amount0 The protocol fee collected in token0/// @return amount1 The protocol fee collected in token1function collectProtocol(address recipient,uint128 amount0Requested,uint128 amount1Requested) external returns (uint128 amount0, uint128 amount1);function setFee(uint24 _fee) external;}
1234567891011121314151617181920// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.5.0;/// @title Errors emitted by a pool/// @notice Contains all events emitted by the poolinterface IRamsesV3PoolErrors {error LOK();error TLU();error TLM();error TUM();error AI();error M0();error M1();error AS();error IIA();error L();error F0();error F1();error SPL();}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.5.0;/// @title Events emitted by a pool/// @notice Contains all events emitted by the poolinterface IRamsesV3PoolEvents {/// @notice Emitted exactly once by a pool when #initialize is first called on the pool/// @dev Mint/Burn/Swap cannot be emitted by the pool before Initialize/// @param sqrtPriceX96 The initial sqrt price of the pool, as a Q64.96/// @param tick The initial tick of the pool, i.e. log base 1.0001 of the starting price of the poolevent Initialize(uint160 sqrtPriceX96, int24 tick);/// @notice Emitted when liquidity is minted for a given position/// @param sender The address that minted the liquidity/// @param owner The owner of the position and recipient of any minted liquidity/// @param tickLower The lower tick of the position/// @param tickUpper The upper tick of the position/// @param amount The amount of liquidity minted to the position range/// @param amount0 How much token0 was required for the minted liquidity/// @param amount1 How much token1 was required for the minted liquidityevent Mint(address sender,address indexed owner,int24 indexed tickLower,int24 indexed tickUpper,uint128 amount,
1234567891011121314151617181920212223242526{"remappings": ["@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@forge-std-1.9.4/=dependencies/forge-std-1.9.4/","@layerzerolabs/=node_modules/@layerzerolabs/","@layerzerolabs/lz-evm-protocol-v2/=node_modules/@layerzerolabs/lz-evm-protocol-v2/","@openzeppelin-contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin-contracts/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","erc4626-tests/=dependencies/erc4626-property-tests-1.0/","forge-std/=dependencies/forge-std-1.9.4/src/","permit2/=lib/permit2/","@openzeppelin-3.4.2/=node_modules/@openzeppelin-3.4.2/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@uniswap/=node_modules/@uniswap/","base64-sol/=node_modules/base64-sol/","ds-test/=node_modules/ds-test/","erc4626-property-tests-1.0/=dependencies/erc4626-property-tests-1.0/","eth-gas-reporter/=node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","hardhat/=node_modules/hardhat/","solidity-bytes-utils/=node_modules/solidity-bytes-utils/","solmate/=node_modules/solmate/"],
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_shadow","type":"address"},{"internalType":"address","name":"_voter","type":"address"},{"internalType":"address","name":"_operator","type":"address"},{"internalType":"address","name":"_accessHub","type":"address"},{"internalType":"address","name":"_voteModule","type":"address"},{"internalType":"address","name":"_minter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ALREADY_EXEMPT","type":"error"},{"inputs":[],"name":"ARRAY_LENGTHS","type":"error"},{"inputs":[],"name":"CANT_RESCUE","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"NOT_AUTHORIZED","type":"error"},{"inputs":[],"name":"NOT_EXEMPT","type":"error"},{"inputs":[],"name":"NOT_MINTER","type":"error"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"NOT_WHITELISTED","type":"error"},{"inputs":[],"name":"NO_CHANGE","type":"error"},{"inputs":[],"name":"NO_VEST","type":"error"},{"inputs":[],"name":"TOO_HIGH","type":"error"},{"inputs":[],"name":"VEST_OVERLAP","type":"error"},{"inputs":[],"name":"ZERO","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"vestId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"CancelVesting","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"Converted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"candidate","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"},{"indexed":false,"internalType":"bool","name":"success","type":"bool"}],"name":"Exemption","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"vestId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ExitVesting","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"InstantExit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"o","type":"address"},{"indexed":true,"internalType":"address","name":"n","type":"address"}],"name":"NewOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"penalty","type":"uint256"}],"name":"NewSlashingPenalty","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"vestId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"NewVest","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"min","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"max","type":"uint256"}],"name":"NewVestingTimes","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Rebase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"XShadowRedeemed","type":"event"},{"inputs":[],"name":"ACCESS_HUB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BASIS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_VEST","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_VEST","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SHADOW","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SLASHING_PENALTY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VOTER","outputs":[{"internalType":"contract IVoter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VOTE_MODULE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"convertEmissionsToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"createVest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"exit","outputs":[{"internalType":"uint256","name":"_exitedAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_vestID","type":"uint256"}],"name":"exitVest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBalanceResiding","outputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_who","type":"address"},{"internalType":"uint256","name":"_vestID","type":"uint256"}],"name":"getVestInfo","outputs":[{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"maxEnd","type":"uint256"},{"internalType":"uint256","name":"vestID","type":"uint256"}],"internalType":"struct IXShadow.VestPosition","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_who","type":"address"}],"name":"isExempt","outputs":[{"internalType":"bool","name":"_exempt","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastDistributedPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"}],"name":"migrateOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"operatorRedeem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingRebase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rebase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"rescueTrappedTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_exemptee","type":"address[]"},{"internalType":"bool[]","name":"_exempt","type":"bool[]"}],"name":"setExemption","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_exemptee","type":"address[]"},{"internalType":"bool[]","name":"_exempt","type":"bool[]"}],"name":"setExemptionTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shadow","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_who","type":"address"}],"name":"usersTotalVests","outputs":[{"internalType":"uint256","name":"_length","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"vestInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"maxEnd","type":"uint256"},{"internalType":"uint256","name":"vestID","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
61012080604052346103325760c081612acc8038038091610020828561053f565b8339810103126103325761003381610562565b61003f60208301610562565b9161004c60408201610562565b9161005960608301610562565b9061007260a061006b60808601610562565b9401610562565b936040519561008260408861053f565b600787526678536861646f7760c81b6020880152604051966100a560408961053f565b600788526678534841444f5760c81b60208901528051906001600160401b0382116104425760035490600182811c92168015610535575b60208310146104245781601f8493116104c7575b50602090601f8311600114610461575f92610456575b50508160011b915f199060031b1c1916176003555b86516001600160401b03811161044257600454600181811c91168015610438575b602082101461042457601f81116103c1575b506020601f821160011461035457908060209897969594939260049a5f92610349575b50508160011b915f199060031b1c19161788555b600580546001600160a01b0394851660e052919093166101008190526080969096526001600160a81b03191660089190911b610100600160a81b031617905560a05260c0526101d381610576565b506005546101ec9060081c6001600160a01b0316610576565b5060c051610202906001600160a01b0316610576565b5060c051610218906001600160a01b0316610602565b50604051631ed2419560e01b815292839182905afa90811561033e575f91610308575b50600a55604051612456908161067682396080518181816101f50152610542015260a051818181610289015281816104dd01528181610b9201528181610d3401528181610f7f015281816111a9015281816112560152611343015260c0518181816106150152610efd015260e0518181816102b2015281816104400152818161065f0152818161080e015281816108ff01528181610e2e015281816113c2015261166201526101005181818161059e01528181610cf201528181611c8001528181611eb001526120c90152f35b90506020813d602011610336575b816103236020938361053f565b8101031261033257515f61023b565b5f80fd5b3d9150610316565b6040513d5f823e3d90fd5b015190505f80610171565b601f1982169860045f52815f20995f5b8181106103a9575099600192849260209b9a999897969560049d10610391575b505050811b018855610185565b01515f1960f88460031b161c191690555f8080610384565b838301518c556001909b019a60209384019301610364565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c8101916020841061041a575b601f0160051c01905b81811061040f575061014e565b5f8155600101610402565b90915081906103f9565b634e487b7160e01b5f52602260045260245ffd5b90607f169061013c565b634e487b7160e01b5f52604160045260245ffd5b015190505f80610106565b60035f9081528281209350601f198516905b8181106104af5750908460019594939210610497575b505050811b0160035561011b565b01515f1960f88460031b161c191690555f8080610489565b92936020600181928786015181550195019301610473565b60035f529091507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c8101916020851061052b575b90601f859493920160051c01905b81811061051d57506100f0565b5f8155849350600101610510565b9091508190610502565b91607f16916100dc565b601f909101601f19168101906001600160401b0382119082101761044257604052565b51906001600160a01b038216820361033257565b805f52600760205260405f2054155f146105fd57600654680100000000000000008110156104425760018101806006558110156105e9577ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f018190556006545f9182526007602052604090912055600190565b634e487b7160e01b5f52603260045260245ffd5b505f90565b805f52600960205260405f2054155f146105fd57600854680100000000000000008110156104425760018101806008558110156105e9577ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3018190556008545f918252600960205260409091205560019056fe6080806040526004361015610012575f80fd5b5f905f3560e01c90816306fdde03146118d95750806308b4bd63146117d9578063095ea7b31461175757806311147bd6146116e557806312e82674146115f757806318160ddd146115da57806323b872dd146114aa57806325d64f4b1461148e5780632cf53bd814611456578063313ce5671461143b57806332fef3cf14611321578063353140d0146112375780633f4ba83a1461118b57806349e821931461116e578063528cfa9814611152578063570ca735146111295780635a8aed661461107e5780635c975abb1461105c5780636379808f14610f5857806370a0823114610f2157806379248d94146107ef5780637dd51d7a14610ede5780637f8661a114610db95780638392331114610d9c5780638456cb5914610d165780638ebf2fd614610cd35780638f7b565b14610cb657806394126bb114610b7357806395d89b4114610a6f578063a9059cbb14610a3e578063ab95605414610832578063ac600a3c146107ef578063ad5dff73146107b5578063af14052c1461051f578063b7f045e914610501578063b989216a146104bd578063bacbf61b146103f2578063beb7dc341461026a578063dd62ed3e1461021c5763fe6d8124146101d6575f80fd5b3461021957806003193601126102195760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b80fd5b5034610219576040366003190112610219576001600160a01b0360406102406119bb565b928261024a6119d1565b9416815260016020522091165f52602052602060405f2054604051908152f35b50346102195761027936611a45565b90916102b0336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314611afa565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693855b8281106102e8578680f35b856001600160a01b036103046102ff848787611b37565b611b54565b16146103ca578060206001600160a01b036103266102ff610377958888611b37565b166001600160a01b0360055460081c169061034284898b611b37565b35918b60405180978195829463a9059cbb60e01b845260048401602090939291936001600160a01b0360408201951681520152565b03925af19182156103bf57600192610391575b50016102dd565b6103b19060203d81116103b8575b6103a98183611ab3565b810190611ae2565b505f61038a565b503d61039f565b6040513d8a823e3d90fd5b6004877f512428f9000000000000000000000000000000000000000000000000000000008152fd5b5034610219578060031936011261021957604051907f70a082310000000000000000000000000000000000000000000000000000000082523060048301526020826024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156104b1579061047a575b602090604051908152f35b506020813d6020116104a9575b8161049460209383611ab3565b810103126104a5576020905161046f565b5f80fd5b3d9150610487565b604051903d90823e3d90fd5b503461021957806003193601126102195760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102195780600319360112610219576020600a54604051908152f35b50346104a5575f3660031901126104a557610538611b75565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361078e576040517f1ed241950000000000000000000000000000000000000000000000000000000081526020816004816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610726575f9161075c575b50600a5481118061074e575b6105e2575080f35b600a55600b80545f9091556040517f095ea7b30000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b038116600483015260248201839052602082806044810103815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1918215610726576001600160a01b0392610731575b5016803b156104a5575f80916024604051809481937f3c6b16ab0000000000000000000000000000000000000000000000000000000083528760048401525af1801561072657610711575b506040519081527fcf0cf43969b3f0a08a20481cfa1fd31d1023ab827f0babb8d8125862a9c403f860203392a280f35b61071e9192505f90611ab3565b5f905f6106e1565b6040513d5f823e3d90fd5b6107499060203d6020116103b8576103a98183611ab3565b610696565b50612710600b5410156105da565b90506020813d602011610786575b8161077760209383611ab3565b810103126104a557515f6105ce565b3d915061076a565b7e914334000000000000000000000000000000000000000000000000000000005f5260045ffd5b346104a55760203660031901126104a5576001600160a01b036107d66119bb565b165f526007602052602060405f20541515604051908152f35b346104a5575f3660031901126104a55760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346104a55760203660031901126104a55760043561084e611b75565b335f52600c6020526108638160405f206119e7565b508054908115610a16576001810154905f8155621275008201808311610a02574210156108c45750506108968133611dd7565b6040519081527fcda231b62bdbcfdebaec108470aea3eb3fcc5ebe00d79b6e252850d4bf5c60b560203392a3005b600201544210610978575060405163a9059cbb60e01b81523360048201526024810182905260208180604481015b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156107265761095b575b506040519081527f902061c3e3f4d419563154f2c22ef4847f185919d82ff921a64559c1dc83bb7660203392a3005b6109739060203d6020116103b8576103a98183611ab3565b61092c565b61138882029082820461138803610a02576109939042611b68565b9061138882840202918183041481151715610a02576109c36020916127108062ed4e006108f29604049104611ad5565b6109d86109d08286611b68565b600b54611ad5565b600b5560405163a9059cbb60e01b8152336004820152602481019190915291829081906044820190565b634e487b7160e01b5f52601160045260245ffd5b7f2b5d497a000000000000000000000000000000000000000000000000000000005f5260045ffd5b346104a55760403660031901126104a557610a64610a5a6119bb565b6024359033611fde565b602060405160018152f35b346104a5575f3660031901126104a5576040515f6004548060011c90600181168015610b69575b602083108114610b5557828552908115610b315750600114610ad3575b610acf83610ac381850382611ab3565b60405191829182611991565b0390f35b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b808210610b1757509091508101602001610ac3610ab3565b919260018160209254838588010152019101909291610aff565b60ff191660208086019190915291151560051b84019091019150610ac39050610ab3565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610a96565b346104a557610b8136611a45565b610bb9939193336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314611afa565b808303610c8e575f5b818110610bcb57005b80837f0c26de26c21d52b9af1eae2bc6d3c4f03cf66cf139d32166af29b8aed71351926001600160a01b0388610c6d610c4d610c1f878a610c476102ff8f9c8d8160019f8e610c24610c1f848f8b90611b37565b611b47565b15610c76576102ff610c41938f93610c3b93611b37565b166123cb565b9c611b37565b95611b37565b946040519384931695839092916020906040830194151583521515910152565b0390a201610bc2565b6102ff610c41938f93610c8893611b37565b166122c6565b7f3d0084d4000000000000000000000000000000000000000000000000000000005f5260045ffd5b346104a5575f3660031901126104a5576020600b54604051908152f35b346104a5575f3660031901126104a55760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346104a5575f3660031901126104a557610d5b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314611afa565b610d63611b75565b600160ff1960055416176005557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b346104a5575f3660031901126104a557602060405162ed4e008152f35b346104a55760203660031901126104a557600435610dd5611b75565b8015610eb657611388810281810461138803610a0257612710610e0791046109d0610e008285611b68565b9333611ba9565b600b5560405163a9059cbb60e01b815233600482015260248101829052906020826044815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af191821561072657602092610e9b575b506040518181527fa8a63b0531e55ae709827fb089d01034e24a200ad14dc710dfa9e962005f629a833392a2604051908152f35b610eb190833d85116103b8576103a98183611ab3565b610e67565b7f58fa63ca000000000000000000000000000000000000000000000000000000005f5260045ffd5b346104a5575f3660031901126104a55760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346104a55760203660031901126104a5576001600160a01b03610f426119bb565b165f525f602052602060405f2054604051908152f35b346104a55760203660031901126104a557610f716119bb565b610fa6336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314611afa565b600554906001600160a01b038260081c166001600160a01b03821691828214611034577fffffffffffffffffffffff0000000000000000000000000000000000000000ff9274ffffffffffffffffffffffffffffffffffffffff00927ff1e04d73c4304b5ff164f9d10c7473e2a1593b740674a6107975e2a7001c1e5c5f80a360081b169116176005555f80f35b7fff302aa0000000000000000000000000000000000000000000000000000000005f5260045ffd5b346104a5575f3660031901126104a557602060ff600554166040519015158152f35b346104a55760403660031901126104a5576001600160a01b0361109f6119bb565b5f60606040516110ae81611a97565b8281528260208201528260408201520152165f52600c60205260806110d860243560405f206119e7565b506040516110e581611a97565b815491828252600181015460208301908152606060036002840154936040860194855201549301928352604051938452516020840152516040830152516060820152f35b346104a5575f3660031901126104a55760206001600160a01b0360055460081c16604051908152f35b346104a5575f3660031901126104a55760206040516127108152f35b346104a5575f3660031901126104a5576020604051621275008152f35b346104a5575f3660031901126104a5576111d0336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314611afa565b60055460ff81161561120f5760ff19166005557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b7f8dfc202b000000000000000000000000000000000000000000000000000000005f5260045ffd5b346104a55761124536611a45565b61127d939193336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314611afa565b808303610c8e575f5b81811061128f57005b80837f0c26de26c21d52b9af1eae2bc6d3c4f03cf66cf139d32166af29b8aed71351926001600160a01b0388611300610c4d610c1f878a610c476102ff8f9c8d8160019f8e6112e3610c1f848f8b90611b37565b15611309576102ff610c41938f936112fa93611b37565b16612371565b0390a201611286565b6102ff610c41938f9361131b93611b37565b166121eb565b346104a55760203660031901126104a55760043561136a336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314611afa565b611382816001600160a01b0360055460081c16611ba9565b60055460405163a9059cbb60e01b815260089190911c6001600160a01b0316600482015260248101829052602081806044810103815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156107265761141e575b506040519081527f2bccc9c67b5a114aacc02e37dd4596d5aa81ee83a8f7a93e36dd0c901bc258c960203092a2005b6114369060203d6020116103b8576103a98183611ab3565b6113ef565b346104a5575f3660031901126104a557602060405160128152f35b346104a55760203660031901126104a5576001600160a01b036114776119bb565b165f52600c602052602060405f2054604051908152f35b346104a5575f3660031901126104a55760206040516113888152f35b346104a55760603660031901126104a5576114c36119bb565b6114cb6119d1565b604435906001600160a01b03831692835f52600160205260405f206001600160a01b0333165f5260205260405f20545f19810361150e575b50610a649350611fde565b8381106115a657841561157a57331561154e57610a64945f52600160205260405f206001600160a01b0333165f526020528360405f209103905584611503565b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b83907ffb8f41b2000000000000000000000000000000000000000000000000000000005f523360045260245260445260645ffd5b346104a5575f3660031901126104a5576020600254604051908152f35b346104a55760203660031901126104a557600435611613611b75565b8015610eb6576040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201528160448201526020816064815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af18015610726576116c8575b5061169a8133611dd7565b6040519081527fa428517b481b65176e7c35a57b564d5cf943c8462468b8a0f025fa689173f90160203392a2005b6116e09060203d6020116103b8576103a98183611ab3565b61168f565b346104a55760403660031901126104a5576116fe6119bb565b6001600160a01b0360243591165f52600c60205260405f2080548210156104a55760809161172b916119e7565b508054906001810154906003600282015491015491604051938452602084015260408301526060820152f35b346104a55760403660031901126104a5576117706119bb565b60243590331561157a576001600160a01b031690811561154e57335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b346104a55760203660031901126104a5576004356117f5611b75565b8015610eb6576118058133611ba9565b335f908152600c602052604090208054904262ed4e00810191908210610a02576040519061183282611a97565b84825260208201924284526040830190815260608301918583528054680100000000000000008110156118c55761186e916001820181556119e7565b9490946118b25760039351855551600185015551600284015551910155337f7d9230ebb47980ddc758fe4e69ea83a89dafbceb45bd45934798477baa5776685f80a4005b634e487b7160e01b5f525f60045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b346104a5575f3660031901126104a5575f6003548060011c90600181168015611987575b602083108114610b5557828552908115610b31575060011461192957610acf83610ac381850382611ab3565b91905060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f905b80821061196d57509091508101602001610ac3610ab3565b919260018160209254838588010152019101909291611955565b91607f16916118fd565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036104a557565b602435906001600160a01b03821682036104a557565b8054821015611a00575f5260205f209060021b01905f90565b634e487b7160e01b5f52603260045260245ffd5b9181601f840112156104a55782359167ffffffffffffffff83116104a5576020808501948460051b0101116104a557565b60406003198201126104a55760043567ffffffffffffffff81116104a55781611a7091600401611a14565b929092916024359067ffffffffffffffff82116104a557611a9391600401611a14565b9091565b6080810190811067ffffffffffffffff8211176118c557604052565b90601f8019910116810190811067ffffffffffffffff8211176118c557604052565b91908201809211610a0257565b908160209103126104a5575180151581036104a55790565b15611b025750565b6001600160a01b03907f2bc10c33000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b9190811015611a005760051b0190565b3580151581036104a55790565b356001600160a01b03811681036104a55790565b91908203918211610a0257565b60ff60055416611b8157565b7fd93c0665000000000000000000000000000000000000000000000000000000005f5260045ffd5b9091906001600160a01b03168015611dab575f815f52600760205260405f205415801590611da4575b8015611d9c575b8015611d6a575b15611c765750600160ff815b1603611c6457805f525f60205260405f2054838110611c4a576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587528684520360408620558060025403600255604051908152a3565b915063391434e360e21b5f5260045260245260445260645ffd5b630b7b234960e01b5f5260045260245ffd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166040519063aa79979b60e01b8252836004830152602082602481845afa918215610726575f92611d49575b508115611cf5575b50611ce3575b60ff600191611bec565b50611ced816123cb565b506001611cd9565b6024915060209060405192838092635397401b60e01b82528760048301525afa908115610726575f91611d2a575b505f611cd3565b611d43915060203d6020116103b8576103a98183611ab3565b5f611d23565b611d6391925060203d6020116103b8576103a98183611ab3565b905f611ccb565b505f805260096020527fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b541515611be0565b506001611bd9565b505f611bd2565b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b6001600160a01b0316908115611fb2575f80805260076020527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df5415801590611faa575b8015611fa3575b8015611f8e575b15611e9b5750600160ff815b1603611e88577fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602082611e6c5f94600254611ad5565b60025584845283825260408420818154019055604051908152a3565b630b7b234960e01b5f525f60045260245ffd5b60405163aa79979b60e01b81525f60048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316602082602481845afa918215610726575f92611f6d575b508115611f19575b50611f07575b60ff600191611e35565b50611f115f6123cb565b506001611efd565b6024915060209060405192838092635397401b60e01b82525f60048301525afa908115610726575f91611f4e575b505f611ef7565b611f67915060203d6020116103b8576103a98183611ab3565b5f611f47565b611f8791925060203d6020116103b8576103a98183611ab3565b905f611eef565b50825f52600960205260405f20541515611e29565b505f611e22565b506001611e1b565b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b6001600160a01b0316908115611dab576001600160a01b0316918215611fb2575f825f52600760205260405f2054158015906121cf575b80156121c8575b80156121b3575b156120bf5750600160ff815b16036120ac57815f525f60205260405f205481811061209357817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b50630b7b234960e01b5f5260045260245ffd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166040519063aa79979b60e01b8252846004830152602082602481845afa918215610726575f92612192575b50811561213e575b5061212c575b60ff60019161202f565b50612136826123cb565b506001612122565b6024915060209060405192838092635397401b60e01b82528860048301525afa908115610726575f91612173575b505f61211c565b61218c915060203d6020116103b8576103a98183611ab3565b5f61216c565b6121ac91925060203d6020116103b8576103a98183611ab3565b905f612114565b50835f52600960205260405f20541515612023565b505f61201c565b505f612015565b8054821015611a00575f5260205f2001905f90565b5f8181526009602052604090205480156122c0575f198101818111610a02576008545f19810191908211610a0257818103612272575b505050600854801561225e575f190161223b8160086121d6565b8154905f199060031b1b191690556008555f5260096020525f6040812055600190565b634e487b7160e01b5f52603160045260245ffd5b6122aa6122836122949360086121d6565b90549060031b1c92839260086121d6565b819391549060031b91821b915f19901b19161790565b90555f52600960205260405f20555f8080612221565b50505f90565b5f8181526007602052604090205480156122c0575f198101818111610a02576006545f19810191908211610a0257818103612339575b505050600654801561225e575f19016123168160066121d6565b8154905f199060031b1b191690556006555f5260076020525f6040812055600190565b61235b61234a6122949360066121d6565b90549060031b1c92839260066121d6565b90555f52600760205260405f20555f80806122fc565b805f52600960205260405f2054155f146123c657600854680100000000000000008110156118c5576123af61229482600185940160085560086121d6565b9055600854905f52600960205260405f2055600190565b505f90565b805f52600760205260405f2054155f146123c657600654680100000000000000008110156118c55761240961229482600185940160065560066121d6565b9055600654905f52600760205260405f205560019056fea264697066735822122033595f69a48a1f1ea8c6345866f43e67e3772812dfa858a95d7a81f3689ccda464736f6c634300081c00330000000000000000000000003333b97138d4b086720b5ae8a7844b1345a333330000000000000000000000003af1dd7a2755201f8e2d6dcda1a61d9f54838f4f0000000000000000000000005be2e859d0c2453c9aa062860ca27711ff5534320000000000000000000000005e7a9eea6988063a4dbb9ccddb3e04c923e8e37f000000000000000000000000dcb5a24ec708cc13cee12bfe6799a78a79b666b4000000000000000000000000c7022f359cd1bda8ab8a19d1f19d769cbf7f3765
Deployed Bytecode
0x6080806040526004361015610012575f80fd5b5f905f3560e01c90816306fdde03146118d95750806308b4bd63146117d9578063095ea7b31461175757806311147bd6146116e557806312e82674146115f757806318160ddd146115da57806323b872dd146114aa57806325d64f4b1461148e5780632cf53bd814611456578063313ce5671461143b57806332fef3cf14611321578063353140d0146112375780633f4ba83a1461118b57806349e821931461116e578063528cfa9814611152578063570ca735146111295780635a8aed661461107e5780635c975abb1461105c5780636379808f14610f5857806370a0823114610f2157806379248d94146107ef5780637dd51d7a14610ede5780637f8661a114610db95780638392331114610d9c5780638456cb5914610d165780638ebf2fd614610cd35780638f7b565b14610cb657806394126bb114610b7357806395d89b4114610a6f578063a9059cbb14610a3e578063ab95605414610832578063ac600a3c146107ef578063ad5dff73146107b5578063af14052c1461051f578063b7f045e914610501578063b989216a146104bd578063bacbf61b146103f2578063beb7dc341461026a578063dd62ed3e1461021c5763fe6d8124146101d6575f80fd5b3461021957806003193601126102195760206040516001600160a01b037f000000000000000000000000c7022f359cd1bda8ab8a19d1f19d769cbf7f3765168152f35b80fd5b5034610219576040366003190112610219576001600160a01b0360406102406119bb565b928261024a6119d1565b9416815260016020522091165f52602052602060405f2054604051908152f35b50346102195761027936611a45565b90916102b0336001600160a01b037f0000000000000000000000005e7a9eea6988063a4dbb9ccddb3e04c923e8e37f163314611afa565b7f0000000000000000000000003333b97138d4b086720b5ae8a7844b1345a333336001600160a01b031693855b8281106102e8578680f35b856001600160a01b036103046102ff848787611b37565b611b54565b16146103ca578060206001600160a01b036103266102ff610377958888611b37565b166001600160a01b0360055460081c169061034284898b611b37565b35918b60405180978195829463a9059cbb60e01b845260048401602090939291936001600160a01b0360408201951681520152565b03925af19182156103bf57600192610391575b50016102dd565b6103b19060203d81116103b8575b6103a98183611ab3565b810190611ae2565b505f61038a565b503d61039f565b6040513d8a823e3d90fd5b6004877f512428f9000000000000000000000000000000000000000000000000000000008152fd5b5034610219578060031936011261021957604051907f70a082310000000000000000000000000000000000000000000000000000000082523060048301526020826024816001600160a01b037f0000000000000000000000003333b97138d4b086720b5ae8a7844b1345a33333165afa9081156104b1579061047a575b602090604051908152f35b506020813d6020116104a9575b8161049460209383611ab3565b810103126104a5576020905161046f565b5f80fd5b3d9150610487565b604051903d90823e3d90fd5b503461021957806003193601126102195760206040516001600160a01b037f0000000000000000000000005e7a9eea6988063a4dbb9ccddb3e04c923e8e37f168152f35b50346102195780600319360112610219576020600a54604051908152f35b50346104a5575f3660031901126104a557610538611b75565b6001600160a01b037f000000000000000000000000c7022f359cd1bda8ab8a19d1f19d769cbf7f376516330361078e576040517f1ed241950000000000000000000000000000000000000000000000000000000081526020816004816001600160a01b037f0000000000000000000000003af1dd7a2755201f8e2d6dcda1a61d9f54838f4f165afa908115610726575f9161075c575b50600a5481118061074e575b6105e2575080f35b600a55600b80545f9091556040517f095ea7b30000000000000000000000000000000000000000000000000000000081527f000000000000000000000000dcb5a24ec708cc13cee12bfe6799a78a79b666b46001600160a01b038116600483015260248201839052602082806044810103815f6001600160a01b037f0000000000000000000000003333b97138d4b086720b5ae8a7844b1345a33333165af1918215610726576001600160a01b0392610731575b5016803b156104a5575f80916024604051809481937f3c6b16ab0000000000000000000000000000000000000000000000000000000083528760048401525af1801561072657610711575b506040519081527fcf0cf43969b3f0a08a20481cfa1fd31d1023ab827f0babb8d8125862a9c403f860203392a280f35b61071e9192505f90611ab3565b5f905f6106e1565b6040513d5f823e3d90fd5b6107499060203d6020116103b8576103a98183611ab3565b610696565b50612710600b5410156105da565b90506020813d602011610786575b8161077760209383611ab3565b810103126104a557515f6105ce565b3d915061076a565b7e914334000000000000000000000000000000000000000000000000000000005f5260045ffd5b346104a55760203660031901126104a5576001600160a01b036107d66119bb565b165f526007602052602060405f20541515604051908152f35b346104a5575f3660031901126104a55760206040516001600160a01b037f0000000000000000000000003333b97138d4b086720b5ae8a7844b1345a33333168152f35b346104a55760203660031901126104a55760043561084e611b75565b335f52600c6020526108638160405f206119e7565b508054908115610a16576001810154905f8155621275008201808311610a02574210156108c45750506108968133611dd7565b6040519081527fcda231b62bdbcfdebaec108470aea3eb3fcc5ebe00d79b6e252850d4bf5c60b560203392a3005b600201544210610978575060405163a9059cbb60e01b81523360048201526024810182905260208180604481015b03815f6001600160a01b037f0000000000000000000000003333b97138d4b086720b5ae8a7844b1345a33333165af180156107265761095b575b506040519081527f902061c3e3f4d419563154f2c22ef4847f185919d82ff921a64559c1dc83bb7660203392a3005b6109739060203d6020116103b8576103a98183611ab3565b61092c565b61138882029082820461138803610a02576109939042611b68565b9061138882840202918183041481151715610a02576109c36020916127108062ed4e006108f29604049104611ad5565b6109d86109d08286611b68565b600b54611ad5565b600b5560405163a9059cbb60e01b8152336004820152602481019190915291829081906044820190565b634e487b7160e01b5f52601160045260245ffd5b7f2b5d497a000000000000000000000000000000000000000000000000000000005f5260045ffd5b346104a55760403660031901126104a557610a64610a5a6119bb565b6024359033611fde565b602060405160018152f35b346104a5575f3660031901126104a5576040515f6004548060011c90600181168015610b69575b602083108114610b5557828552908115610b315750600114610ad3575b610acf83610ac381850382611ab3565b60405191829182611991565b0390f35b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b808210610b1757509091508101602001610ac3610ab3565b919260018160209254838588010152019101909291610aff565b60ff191660208086019190915291151560051b84019091019150610ac39050610ab3565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610a96565b346104a557610b8136611a45565b610bb9939193336001600160a01b037f0000000000000000000000005e7a9eea6988063a4dbb9ccddb3e04c923e8e37f163314611afa565b808303610c8e575f5b818110610bcb57005b80837f0c26de26c21d52b9af1eae2bc6d3c4f03cf66cf139d32166af29b8aed71351926001600160a01b0388610c6d610c4d610c1f878a610c476102ff8f9c8d8160019f8e610c24610c1f848f8b90611b37565b611b47565b15610c76576102ff610c41938f93610c3b93611b37565b166123cb565b9c611b37565b95611b37565b946040519384931695839092916020906040830194151583521515910152565b0390a201610bc2565b6102ff610c41938f93610c8893611b37565b166122c6565b7f3d0084d4000000000000000000000000000000000000000000000000000000005f5260045ffd5b346104a5575f3660031901126104a5576020600b54604051908152f35b346104a5575f3660031901126104a55760206040516001600160a01b037f0000000000000000000000003af1dd7a2755201f8e2d6dcda1a61d9f54838f4f168152f35b346104a5575f3660031901126104a557610d5b336001600160a01b037f0000000000000000000000005e7a9eea6988063a4dbb9ccddb3e04c923e8e37f163314611afa565b610d63611b75565b600160ff1960055416176005557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b346104a5575f3660031901126104a557602060405162ed4e008152f35b346104a55760203660031901126104a557600435610dd5611b75565b8015610eb657611388810281810461138803610a0257612710610e0791046109d0610e008285611b68565b9333611ba9565b600b5560405163a9059cbb60e01b815233600482015260248101829052906020826044815f7f0000000000000000000000003333b97138d4b086720b5ae8a7844b1345a333336001600160a01b03165af191821561072657602092610e9b575b506040518181527fa8a63b0531e55ae709827fb089d01034e24a200ad14dc710dfa9e962005f629a833392a2604051908152f35b610eb190833d85116103b8576103a98183611ab3565b610e67565b7f58fa63ca000000000000000000000000000000000000000000000000000000005f5260045ffd5b346104a5575f3660031901126104a55760206040516001600160a01b037f000000000000000000000000dcb5a24ec708cc13cee12bfe6799a78a79b666b4168152f35b346104a55760203660031901126104a5576001600160a01b03610f426119bb565b165f525f602052602060405f2054604051908152f35b346104a55760203660031901126104a557610f716119bb565b610fa6336001600160a01b037f0000000000000000000000005e7a9eea6988063a4dbb9ccddb3e04c923e8e37f163314611afa565b600554906001600160a01b038260081c166001600160a01b03821691828214611034577fffffffffffffffffffffff0000000000000000000000000000000000000000ff9274ffffffffffffffffffffffffffffffffffffffff00927ff1e04d73c4304b5ff164f9d10c7473e2a1593b740674a6107975e2a7001c1e5c5f80a360081b169116176005555f80f35b7fff302aa0000000000000000000000000000000000000000000000000000000005f5260045ffd5b346104a5575f3660031901126104a557602060ff600554166040519015158152f35b346104a55760403660031901126104a5576001600160a01b0361109f6119bb565b5f60606040516110ae81611a97565b8281528260208201528260408201520152165f52600c60205260806110d860243560405f206119e7565b506040516110e581611a97565b815491828252600181015460208301908152606060036002840154936040860194855201549301928352604051938452516020840152516040830152516060820152f35b346104a5575f3660031901126104a55760206001600160a01b0360055460081c16604051908152f35b346104a5575f3660031901126104a55760206040516127108152f35b346104a5575f3660031901126104a5576020604051621275008152f35b346104a5575f3660031901126104a5576111d0336001600160a01b037f0000000000000000000000005e7a9eea6988063a4dbb9ccddb3e04c923e8e37f163314611afa565b60055460ff81161561120f5760ff19166005557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b7f8dfc202b000000000000000000000000000000000000000000000000000000005f5260045ffd5b346104a55761124536611a45565b61127d939193336001600160a01b037f0000000000000000000000005e7a9eea6988063a4dbb9ccddb3e04c923e8e37f163314611afa565b808303610c8e575f5b81811061128f57005b80837f0c26de26c21d52b9af1eae2bc6d3c4f03cf66cf139d32166af29b8aed71351926001600160a01b0388611300610c4d610c1f878a610c476102ff8f9c8d8160019f8e6112e3610c1f848f8b90611b37565b15611309576102ff610c41938f936112fa93611b37565b16612371565b0390a201611286565b6102ff610c41938f9361131b93611b37565b166121eb565b346104a55760203660031901126104a55760043561136a336001600160a01b037f0000000000000000000000005e7a9eea6988063a4dbb9ccddb3e04c923e8e37f163314611afa565b611382816001600160a01b0360055460081c16611ba9565b60055460405163a9059cbb60e01b815260089190911c6001600160a01b0316600482015260248101829052602081806044810103815f6001600160a01b037f0000000000000000000000003333b97138d4b086720b5ae8a7844b1345a33333165af180156107265761141e575b506040519081527f2bccc9c67b5a114aacc02e37dd4596d5aa81ee83a8f7a93e36dd0c901bc258c960203092a2005b6114369060203d6020116103b8576103a98183611ab3565b6113ef565b346104a5575f3660031901126104a557602060405160128152f35b346104a55760203660031901126104a5576001600160a01b036114776119bb565b165f52600c602052602060405f2054604051908152f35b346104a5575f3660031901126104a55760206040516113888152f35b346104a55760603660031901126104a5576114c36119bb565b6114cb6119d1565b604435906001600160a01b03831692835f52600160205260405f206001600160a01b0333165f5260205260405f20545f19810361150e575b50610a649350611fde565b8381106115a657841561157a57331561154e57610a64945f52600160205260405f206001600160a01b0333165f526020528360405f209103905584611503565b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b83907ffb8f41b2000000000000000000000000000000000000000000000000000000005f523360045260245260445260645ffd5b346104a5575f3660031901126104a5576020600254604051908152f35b346104a55760203660031901126104a557600435611613611b75565b8015610eb6576040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201528160448201526020816064815f6001600160a01b037f0000000000000000000000003333b97138d4b086720b5ae8a7844b1345a33333165af18015610726576116c8575b5061169a8133611dd7565b6040519081527fa428517b481b65176e7c35a57b564d5cf943c8462468b8a0f025fa689173f90160203392a2005b6116e09060203d6020116103b8576103a98183611ab3565b61168f565b346104a55760403660031901126104a5576116fe6119bb565b6001600160a01b0360243591165f52600c60205260405f2080548210156104a55760809161172b916119e7565b508054906001810154906003600282015491015491604051938452602084015260408301526060820152f35b346104a55760403660031901126104a5576117706119bb565b60243590331561157a576001600160a01b031690811561154e57335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b346104a55760203660031901126104a5576004356117f5611b75565b8015610eb6576118058133611ba9565b335f908152600c602052604090208054904262ed4e00810191908210610a02576040519061183282611a97565b84825260208201924284526040830190815260608301918583528054680100000000000000008110156118c55761186e916001820181556119e7565b9490946118b25760039351855551600185015551600284015551910155337f7d9230ebb47980ddc758fe4e69ea83a89dafbceb45bd45934798477baa5776685f80a4005b634e487b7160e01b5f525f60045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b346104a5575f3660031901126104a5575f6003548060011c90600181168015611987575b602083108114610b5557828552908115610b31575060011461192957610acf83610ac381850382611ab3565b91905060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f905b80821061196d57509091508101602001610ac3610ab3565b919260018160209254838588010152019101909291611955565b91607f16916118fd565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036104a557565b602435906001600160a01b03821682036104a557565b8054821015611a00575f5260205f209060021b01905f90565b634e487b7160e01b5f52603260045260245ffd5b9181601f840112156104a55782359167ffffffffffffffff83116104a5576020808501948460051b0101116104a557565b60406003198201126104a55760043567ffffffffffffffff81116104a55781611a7091600401611a14565b929092916024359067ffffffffffffffff82116104a557611a9391600401611a14565b9091565b6080810190811067ffffffffffffffff8211176118c557604052565b90601f8019910116810190811067ffffffffffffffff8211176118c557604052565b91908201809211610a0257565b908160209103126104a5575180151581036104a55790565b15611b025750565b6001600160a01b03907f2bc10c33000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b9190811015611a005760051b0190565b3580151581036104a55790565b356001600160a01b03811681036104a55790565b91908203918211610a0257565b60ff60055416611b8157565b7fd93c0665000000000000000000000000000000000000000000000000000000005f5260045ffd5b9091906001600160a01b03168015611dab575f815f52600760205260405f205415801590611da4575b8015611d9c575b8015611d6a575b15611c765750600160ff815b1603611c6457805f525f60205260405f2054838110611c4a576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587528684520360408620558060025403600255604051908152a3565b915063391434e360e21b5f5260045260245260445260645ffd5b630b7b234960e01b5f5260045260245ffd5b6001600160a01b037f0000000000000000000000003af1dd7a2755201f8e2d6dcda1a61d9f54838f4f166040519063aa79979b60e01b8252836004830152602082602481845afa918215610726575f92611d49575b508115611cf5575b50611ce3575b60ff600191611bec565b50611ced816123cb565b506001611cd9565b6024915060209060405192838092635397401b60e01b82528760048301525afa908115610726575f91611d2a575b505f611cd3565b611d43915060203d6020116103b8576103a98183611ab3565b5f611d23565b611d6391925060203d6020116103b8576103a98183611ab3565b905f611ccb565b505f805260096020527fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b541515611be0565b506001611bd9565b505f611bd2565b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b6001600160a01b0316908115611fb2575f80805260076020527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df5415801590611faa575b8015611fa3575b8015611f8e575b15611e9b5750600160ff815b1603611e88577fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602082611e6c5f94600254611ad5565b60025584845283825260408420818154019055604051908152a3565b630b7b234960e01b5f525f60045260245ffd5b60405163aa79979b60e01b81525f60048201527f0000000000000000000000003af1dd7a2755201f8e2d6dcda1a61d9f54838f4f6001600160a01b0316602082602481845afa918215610726575f92611f6d575b508115611f19575b50611f07575b60ff600191611e35565b50611f115f6123cb565b506001611efd565b6024915060209060405192838092635397401b60e01b82525f60048301525afa908115610726575f91611f4e575b505f611ef7565b611f67915060203d6020116103b8576103a98183611ab3565b5f611f47565b611f8791925060203d6020116103b8576103a98183611ab3565b905f611eef565b50825f52600960205260405f20541515611e29565b505f611e22565b506001611e1b565b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b6001600160a01b0316908115611dab576001600160a01b0316918215611fb2575f825f52600760205260405f2054158015906121cf575b80156121c8575b80156121b3575b156120bf5750600160ff815b16036120ac57815f525f60205260405f205481811061209357817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b50630b7b234960e01b5f5260045260245ffd5b6001600160a01b037f0000000000000000000000003af1dd7a2755201f8e2d6dcda1a61d9f54838f4f166040519063aa79979b60e01b8252846004830152602082602481845afa918215610726575f92612192575b50811561213e575b5061212c575b60ff60019161202f565b50612136826123cb565b506001612122565b6024915060209060405192838092635397401b60e01b82528860048301525afa908115610726575f91612173575b505f61211c565b61218c915060203d6020116103b8576103a98183611ab3565b5f61216c565b6121ac91925060203d6020116103b8576103a98183611ab3565b905f612114565b50835f52600960205260405f20541515612023565b505f61201c565b505f612015565b8054821015611a00575f5260205f2001905f90565b5f8181526009602052604090205480156122c0575f198101818111610a02576008545f19810191908211610a0257818103612272575b505050600854801561225e575f190161223b8160086121d6565b8154905f199060031b1b191690556008555f5260096020525f6040812055600190565b634e487b7160e01b5f52603160045260245ffd5b6122aa6122836122949360086121d6565b90549060031b1c92839260086121d6565b819391549060031b91821b915f19901b19161790565b90555f52600960205260405f20555f8080612221565b50505f90565b5f8181526007602052604090205480156122c0575f198101818111610a02576006545f19810191908211610a0257818103612339575b505050600654801561225e575f19016123168160066121d6565b8154905f199060031b1b191690556006555f5260076020525f6040812055600190565b61235b61234a6122949360066121d6565b90549060031b1c92839260066121d6565b90555f52600760205260405f20555f80806122fc565b805f52600960205260405f2054155f146123c657600854680100000000000000008110156118c5576123af61229482600185940160085560086121d6565b9055600854905f52600960205260405f2055600190565b505f90565b805f52600760205260405f2054155f146123c657600654680100000000000000008110156118c55761240961229482600185940160065560066121d6565b9055600654905f52600760205260405f205560019056fea264697066735822122033595f69a48a1f1ea8c6345866f43e67e3772812dfa858a95d7a81f3689ccda464736f6c634300081c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000003333b97138d4b086720b5ae8a7844b1345a333330000000000000000000000003af1dd7a2755201f8e2d6dcda1a61d9f54838f4f0000000000000000000000005be2e859d0c2453c9aa062860ca27711ff5534320000000000000000000000005e7a9eea6988063a4dbb9ccddb3e04c923e8e37f000000000000000000000000dcb5a24ec708cc13cee12bfe6799a78a79b666b4000000000000000000000000c7022f359cd1bda8ab8a19d1f19d769cbf7f3765
-----Decoded View---------------
Arg [0] : _shadow (address): 0x3333b97138D4b086720b5aE8A7844b1345a33333
Arg [1] : _voter (address): 0x3aF1dD7A2755201F8e2D6dCDA1a61d9f54838f4f
Arg [2] : _operator (address): 0x5Be2e859D0c2453C9aA062860cA27711ff553432
Arg [3] : _accessHub (address): 0x5e7A9eea6988063A4dBb9CcDDB3E04C923E8E37f
Arg [4] : _voteModule (address): 0xDCB5A24ec708cc13cee12bFE6799A78a79b666b4
Arg [5] : _minter (address): 0xc7022F359cD1bDa8aB8a19d1F19d769cbf7F3765
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000003333b97138d4b086720b5ae8a7844b1345a33333
Arg [1] : 0000000000000000000000003af1dd7a2755201f8e2d6dcda1a61d9f54838f4f
Arg [2] : 0000000000000000000000005be2e859d0c2453c9aa062860ca27711ff553432
Arg [3] : 0000000000000000000000005e7a9eea6988063a4dbb9ccddb3e04c923e8e37f
Arg [4] : 000000000000000000000000dcb5a24ec708cc13cee12bfe6799a78a79b666b4
Arg [5] : 000000000000000000000000c7022f359cd1bda8ab8a19d1f19d769cbf7f3765
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
[ 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.