Contract Overview
Balance:
0 ETH
ETH Value:
$0.00
My Name Tag:
Not Available
Txn Hash | Method |
Block
|
From
|
To
|
Value | [Txn Fee] | |||
---|---|---|---|---|---|---|---|---|---|
0xd6177a78a8d69d1f4be73d1300fceca4859d9cceb10d9005a1c4a193793c00ba | 0x60806040 | 20209866 | 230 days 12 hrs ago | Mycelium: Deployer | IN | Create: MycTimelock | 0 ETH | 0.006011983344 ETH |
[ Download CSV Export ]
Latest 8 internal transactions
[ Download CSV Export ]
Contract Name:
MycTimelock
Compiler Version
v0.6.12+commit.27d51765
Optimization Enabled:
Yes with 1 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; import "./interfaces/ITimelockTarget.sol"; import "./interfaces/IMycTimelock.sol"; import "./interfaces/IHandlerTarget.sol"; import "../access/interfaces/IAdmin.sol"; import "../core/interfaces/IVault.sol"; import "../core/interfaces/IVaultUtils.sol"; import "../core/interfaces/IVaultPriceFeed.sol"; import "../core/interfaces/IRouter.sol"; import "../tokens/interfaces/IYieldToken.sol"; import "../tokens/interfaces/IBaseToken.sol"; import "../tokens/interfaces/IMintable.sol"; import "../tokens/interfaces/IUSDG.sol"; import "../staking/interfaces/IVester.sol"; import "../libraries/math/SafeMath.sol"; import "../libraries/token/IERC20.sol"; contract MycTimelock is IMycTimelock { using SafeMath for uint256; uint256 public constant PRICE_PRECISION = 10**30; uint256 public constant MAX_BUFFER = 7 days; uint256 public constant MAX_FEE_BASIS_POINTS = 300; // 3% uint256 public constant MAX_FUNDING_RATE_FACTOR = 200; // 0.02% uint256 public constant MAX_LEVERAGE_VALIDATION = 500000; // 50x uint256 public buffer; uint256 public longBuffer; address public admin; address public tokenManager; address public rewardManager; address public mintReceiver; uint256 public maxTokenSupply; mapping(bytes32 => uint256) public pendingActions; mapping(address => bool) public excludedTokens; mapping(address => bool) public isHandler; event SignalPendingAction(bytes32 action); event SignalApprove(address token, address spender, uint256 amount, bytes32 action); event SignalWithdrawToken(address target, address token, address receiver, uint256 amount, bytes32 action); event SignalMint(address token, address receiver, uint256 amount, bytes32 action); event SignalSetGov(address target, address gov, bytes32 action); event SignalSetPriceFeed(address vault, address priceFeed, bytes32 action); event SignalAddPlugin(address router, address plugin, bytes32 action); event SignalRedeemUsdg(address vault, address token, uint256 amount); event SignalVaultSetTokenConfig( address vault, address token, uint256 tokenDecimals, uint256 tokenWeight, uint256 minProfitBps, uint256 maxUsdgAmount, bool isStable, bool isShortable ); event SignalPriceFeedSetTokenConfig( address vaultPriceFeed, address token, address priceFeed, uint256 priceDecimals, bool isStrictStable ); event ClearAction(bytes32 action); modifier onlyAdmin() { require(msg.sender == admin, "MycTimelock: forbidden"); _; } modifier onlyAdminOrHandler() { require(msg.sender == admin || isHandler[msg.sender], "MycTimelock: forbidden"); _; } modifier onlyTokenManager() { require(msg.sender == tokenManager, "MycTimelock: forbidden"); _; } modifier onlyRewardManager() { require(msg.sender == rewardManager, "MycTimelock: forbidden"); _; } constructor( address _admin, uint256 _buffer, uint256 _longBuffer, address _rewardManager, address _tokenManager, address _mintReceiver, uint256 _maxTokenSupply ) public { require(_buffer <= MAX_BUFFER, "MycTimelock: invalid _buffer"); require(_longBuffer <= MAX_BUFFER, "MycTimelock: invalid _longBuffer"); admin = _admin; buffer = _buffer; longBuffer = _longBuffer; rewardManager = _rewardManager; tokenManager = _tokenManager; mintReceiver = _mintReceiver; maxTokenSupply = _maxTokenSupply; } function setAdmin(address _admin) external override onlyTokenManager { admin = _admin; } function setExternalAdmin(address _target, address _admin) external onlyAdmin { require(_target != address(this), "MycTimelock: invalid _target"); IAdmin(_target).setAdmin(_admin); } function setContractHandler(address _handler, bool _isActive) external onlyAdmin { isHandler[_handler] = _isActive; } function setBuffer(uint256 _buffer) external onlyAdmin { require(_buffer <= MAX_BUFFER, "MycTimelock: invalid _buffer"); require(_buffer > buffer, "MycTimelock: buffer cannot be decreased"); buffer = _buffer; } function mint(address _token, uint256 _amount) external onlyAdmin { _mint(_token, mintReceiver, _amount); } function setMaxLeverage(address _vault, uint256 _maxLeverage) external onlyAdmin { require(_maxLeverage > MAX_LEVERAGE_VALIDATION, "MycTimelock: invalid _maxLeverage"); IVault(_vault).setMaxLeverage(_maxLeverage); } function setFundingRate( address _vault, uint256 _fundingInterval, uint256 _fundingRateFactor, uint256 _stableFundingRateFactor ) external onlyAdmin { require(_fundingRateFactor < MAX_FUNDING_RATE_FACTOR, "MycTimelock: invalid _fundingRateFactor"); require(_stableFundingRateFactor < MAX_FUNDING_RATE_FACTOR, "MycTimelock: invalid _stableFundingRateFactor"); IVault(_vault).setFundingRate(_fundingInterval, _fundingRateFactor, _stableFundingRateFactor); } function setFees( address _vault, uint256 _taxBasisPoints, uint256 _stableTaxBasisPoints, uint256 _mintBurnFeeBasisPoints, uint256 _swapFeeBasisPoints, uint256 _stableSwapFeeBasisPoints, uint256 _marginFeeBasisPoints, uint256 _liquidationFeeUsd, uint256 _minProfitTime, bool _hasDynamicFees ) external onlyAdmin { require(_taxBasisPoints < MAX_FEE_BASIS_POINTS, "MycTimelock: invalid _taxBasisPoints"); require(_stableTaxBasisPoints < MAX_FEE_BASIS_POINTS, "MycTimelock: invalid _stableTaxBasisPoints"); require(_mintBurnFeeBasisPoints < MAX_FEE_BASIS_POINTS, "MycTimelock: invalid _mintBurnFeeBasisPoints"); require(_swapFeeBasisPoints < MAX_FEE_BASIS_POINTS, "MycTimelock: invalid _swapFeeBasisPoints"); require(_stableSwapFeeBasisPoints < MAX_FEE_BASIS_POINTS, "MycTimelock: invalid _stableSwapFeeBasisPoints"); require(_marginFeeBasisPoints < MAX_FEE_BASIS_POINTS, "MycTimelock: invalid _marginFeeBasisPoints"); require(_liquidationFeeUsd < 10 * PRICE_PRECISION, "MycTimelock: invalid _liquidationFeeUsd"); IVault(_vault).setFees( _taxBasisPoints, _stableTaxBasisPoints, _mintBurnFeeBasisPoints, _swapFeeBasisPoints, _stableSwapFeeBasisPoints, _marginFeeBasisPoints, _liquidationFeeUsd, _minProfitTime, _hasDynamicFees ); } function setTokenConfig( address _vault, address _token, uint256 _tokenWeight, uint256 _minProfitBps, uint256 _maxUsdgAmount, uint256 _bufferAmount, uint256 _usdgAmount ) external onlyAdmin { require(_minProfitBps <= 500, "MycTimelock: invalid _minProfitBps"); IVault vault = IVault(_vault); require(vault.whitelistedTokens(_token), "MycTimelock: token not yet whitelisted"); uint256 tokenDecimals = vault.tokenDecimals(_token); bool isStable = vault.stableTokens(_token); bool isShortable = vault.shortableTokens(_token); IVault(_vault).setTokenConfig( _token, tokenDecimals, _tokenWeight, _minProfitBps, _maxUsdgAmount, isStable, isShortable ); IVault(_vault).setBufferAmount(_token, _bufferAmount); IVault(_vault).setUsdgAmount(_token, _usdgAmount); } function setMaxGlobalShortSize( address _vault, address _token, uint256 _amount ) external onlyAdmin { IVault(_vault).setMaxGlobalShortSize(_token, _amount); } function removeAdmin(address _token, address _account) external onlyAdmin { IYieldToken(_token).removeAdmin(_account); } function setIsAmmEnabled(address _priceFeed, bool _isEnabled) external onlyAdmin { IVaultPriceFeed(_priceFeed).setIsAmmEnabled(_isEnabled); } function setIsSecondaryPriceEnabled(address _priceFeed, bool _isEnabled) external onlyAdmin { IVaultPriceFeed(_priceFeed).setIsSecondaryPriceEnabled(_isEnabled); } function setMaxStrictPriceDeviation(address _priceFeed, uint256 _maxStrictPriceDeviation) external onlyAdmin { IVaultPriceFeed(_priceFeed).setMaxStrictPriceDeviation(_maxStrictPriceDeviation); } function setUseV2Pricing(address _priceFeed, bool _useV2Pricing) external onlyAdmin { IVaultPriceFeed(_priceFeed).setUseV2Pricing(_useV2Pricing); } function setAdjustment( address _priceFeed, address _token, bool _isAdditive, uint256 _adjustmentBps ) external onlyAdmin { IVaultPriceFeed(_priceFeed).setAdjustment(_token, _isAdditive, _adjustmentBps); } function setSpreadBasisPoints( address _priceFeed, address _token, uint256 _spreadBasisPoints ) external onlyAdmin { IVaultPriceFeed(_priceFeed).setSpreadBasisPoints(_token, _spreadBasisPoints); } function setSpreadThresholdBasisPoints(address _priceFeed, uint256 _spreadThresholdBasisPoints) external onlyAdmin { IVaultPriceFeed(_priceFeed).setSpreadThresholdBasisPoints(_spreadThresholdBasisPoints); } function setFavorPrimaryPrice(address _priceFeed, bool _favorPrimaryPrice) external onlyAdmin { IVaultPriceFeed(_priceFeed).setFavorPrimaryPrice(_favorPrimaryPrice); } function setPriceSampleSpace(address _priceFeed, uint256 _priceSampleSpace) external onlyAdmin { require(_priceSampleSpace <= 5, "Invalid _priceSampleSpace"); IVaultPriceFeed(_priceFeed).setPriceSampleSpace(_priceSampleSpace); } function setIsSwapEnabled(address _vault, bool _isSwapEnabled) external onlyAdmin { IVault(_vault).setIsSwapEnabled(_isSwapEnabled); } function setIsLeverageEnabled(address _vault, bool _isLeverageEnabled) external override onlyAdminOrHandler { IVault(_vault).setIsLeverageEnabled(_isLeverageEnabled); } function setVaultUtils(address _vault, IVaultUtils _vaultUtils) external onlyAdmin { IVault(_vault).setVaultUtils(_vaultUtils); } function setMaxGasPrice(address _vault, uint256 _maxGasPrice) external onlyAdmin { require(_maxGasPrice > 5000000000, "Invalid _maxGasPrice"); IVault(_vault).setMaxGasPrice(_maxGasPrice); } function withdrawFees( address _vault, address _token, address _receiver ) external onlyAdmin { IVault(_vault).withdrawFees(_token, _receiver); } function setInPrivateLiquidationMode(address _vault, bool _inPrivateLiquidationMode) external onlyAdmin { IVault(_vault).setInPrivateLiquidationMode(_inPrivateLiquidationMode); } function setLiquidator( address _vault, address _liquidator, bool _isActive ) external onlyAdmin { IVault(_vault).setLiquidator(_liquidator, _isActive); } function addExcludedToken(address _token) external onlyAdmin { excludedTokens[_token] = true; } function setInPrivateTransferMode(address _token, bool _inPrivateTransferMode) external onlyAdmin { if (excludedTokens[_token]) { // excludedTokens can only have their transfers enabled require(_inPrivateTransferMode == false, "MycTimelock: invalid _inPrivateTransferMode"); } IBaseToken(_token).setInPrivateTransferMode(_inPrivateTransferMode); } function transferIn( address _sender, address _token, uint256 _amount ) external onlyAdmin { IERC20(_token).transferFrom(_sender, address(this), _amount); } function signalApprove( address _token, address _spender, uint256 _amount ) external onlyAdmin { bytes32 action = keccak256(abi.encodePacked("approve", _token, _spender, _amount)); _setPendingAction(action); emit SignalApprove(_token, _spender, _amount, action); } function approve( address _token, address _spender, uint256 _amount ) external onlyAdmin { bytes32 action = keccak256(abi.encodePacked("approve", _token, _spender, _amount)); _validateAction(action); _clearAction(action); IERC20(_token).approve(_spender, _amount); } function signalWithdrawToken( address _target, address _token, address _receiver, uint256 _amount ) external onlyAdmin { bytes32 action = keccak256(abi.encodePacked("withdrawToken", _target, _token, _receiver, _amount)); _setPendingAction(action); emit SignalWithdrawToken(_target, _token, _receiver, _amount, action); } function withdrawToken( address _target, address _token, address _receiver, uint256 _amount ) external onlyAdmin { bytes32 action = keccak256(abi.encodePacked("withdrawToken", _target, _token, _receiver, _amount)); _validateAction(action); _clearAction(action); IBaseToken(_target).withdrawToken(_token, _receiver, _amount); } function signalMint( address _token, address _receiver, uint256 _amount ) external onlyAdmin { bytes32 action = keccak256(abi.encodePacked("mint", _token, _receiver, _amount)); _setPendingAction(action); emit SignalMint(_token, _receiver, _amount, action); } function processMint( address _token, address _receiver, uint256 _amount ) external onlyAdmin { bytes32 action = keccak256(abi.encodePacked("mint", _token, _receiver, _amount)); _validateAction(action); _clearAction(action); _mint(_token, _receiver, _amount); } function signalSetGov(address _target, address _gov) external override onlyTokenManager { bytes32 action = keccak256(abi.encodePacked("setGov", _target, _gov)); _setLongPendingAction(action); emit SignalSetGov(_target, _gov, action); } function setGov(address _target, address _gov) external onlyAdmin { bytes32 action = keccak256(abi.encodePacked("setGov", _target, _gov)); _validateAction(action); _clearAction(action); ITimelockTarget(_target).setGov(_gov); } function signalSetPriceFeed(address _vault, address _priceFeed) external onlyAdmin { bytes32 action = keccak256(abi.encodePacked("setPriceFeed", _vault, _priceFeed)); _setPendingAction(action); emit SignalSetPriceFeed(_vault, _priceFeed, action); } function setPriceFeed(address _vault, address _priceFeed) external onlyAdmin { bytes32 action = keccak256(abi.encodePacked("setPriceFeed", _vault, _priceFeed)); _validateAction(action); _clearAction(action); IVault(_vault).setPriceFeed(_priceFeed); } function signalAddPlugin(address _router, address _plugin) external onlyAdmin { bytes32 action = keccak256(abi.encodePacked("addPlugin", _router, _plugin)); _setPendingAction(action); emit SignalAddPlugin(_router, _plugin, action); } function addPlugin(address _router, address _plugin) external onlyAdmin { bytes32 action = keccak256(abi.encodePacked("addPlugin", _router, _plugin)); _validateAction(action); _clearAction(action); IRouter(_router).addPlugin(_plugin); } function signalRedeemUsdg( address _vault, address _token, uint256 _amount ) external onlyAdmin { bytes32 action = keccak256(abi.encodePacked("redeemUsdg", _vault, _token, _amount)); _setPendingAction(action); emit SignalRedeemUsdg(_vault, _token, _amount); } function redeemUsdg( address _vault, address _token, uint256 _amount ) external onlyAdmin { bytes32 action = keccak256(abi.encodePacked("redeemUsdg", _vault, _token, _amount)); _validateAction(action); _clearAction(action); address usdg = IVault(_vault).usdg(); IVault(_vault).setManager(address(this), true); IUSDG(usdg).addVault(address(this)); IUSDG(usdg).mint(address(this), _amount); IERC20(usdg).transfer(address(_vault), _amount); IVault(_vault).sellUSDG(_token, mintReceiver); IVault(_vault).setManager(address(this), false); IUSDG(usdg).removeVault(address(this)); } function signalVaultSetTokenConfig( address _vault, address _token, uint256 _tokenDecimals, uint256 _tokenWeight, uint256 _minProfitBps, uint256 _maxUsdgAmount, bool _isStable, bool _isShortable ) external onlyAdmin { bytes32 action = keccak256( abi.encodePacked( "vaultSetTokenConfig", _vault, _token, _tokenDecimals, _tokenWeight, _minProfitBps, _maxUsdgAmount, _isStable, _isShortable ) ); _setPendingAction(action); emit SignalVaultSetTokenConfig( _vault, _token, _tokenDecimals, _tokenWeight, _minProfitBps, _maxUsdgAmount, _isStable, _isShortable ); } function vaultSetTokenConfig( address _vault, address _token, uint256 _tokenDecimals, uint256 _tokenWeight, uint256 _minProfitBps, uint256 _maxUsdgAmount, bool _isStable, bool _isShortable ) external onlyAdmin { bytes32 action = keccak256( abi.encodePacked( "vaultSetTokenConfig", _vault, _token, _tokenDecimals, _tokenWeight, _minProfitBps, _maxUsdgAmount, _isStable, _isShortable ) ); _validateAction(action); _clearAction(action); IVault(_vault).setTokenConfig( _token, _tokenDecimals, _tokenWeight, _minProfitBps, _maxUsdgAmount, _isStable, _isShortable ); } function signalPriceFeedSetTokenConfig( address _vaultPriceFeed, address _token, address _priceFeed, uint256 _priceDecimals, bool _isStrictStable ) external onlyAdmin { bytes32 action = keccak256( abi.encodePacked( "priceFeedSetTokenConfig", _vaultPriceFeed, _token, _priceFeed, _priceDecimals, _isStrictStable ) ); _setPendingAction(action); emit SignalPriceFeedSetTokenConfig(_vaultPriceFeed, _token, _priceFeed, _priceDecimals, _isStrictStable); } function priceFeedSetTokenConfig( address _vaultPriceFeed, address _token, address _priceFeed, uint256 _priceDecimals, bool _isStrictStable ) external onlyAdmin { bytes32 action = keccak256( abi.encodePacked( "priceFeedSetTokenConfig", _vaultPriceFeed, _token, _priceFeed, _priceDecimals, _isStrictStable ) ); _validateAction(action); _clearAction(action); IVaultPriceFeed(_vaultPriceFeed).setTokenConfig(_token, _priceFeed, _priceDecimals, _isStrictStable); } function cancelAction(bytes32 _action) external onlyAdmin { _clearAction(_action); } function _mint( address _token, address _receiver, uint256 _amount ) private { IMintable mintable = IMintable(_token); if (!mintable.isMinter(address(this))) { mintable.setMinter(address(this), true); } mintable.mint(_receiver, _amount); require(IERC20(_token).totalSupply() <= maxTokenSupply, "MycTimelock: maxTokenSupply exceeded"); } function _setPendingAction(bytes32 _action) private { pendingActions[_action] = block.timestamp.add(buffer); emit SignalPendingAction(_action); } function _setLongPendingAction(bytes32 _action) private { pendingActions[_action] = block.timestamp.add(longBuffer); emit SignalPendingAction(_action); } function _validateAction(bytes32 _action) private view { require(pendingActions[_action] != 0, "MycTimelock: action not signalled"); require(pendingActions[_action] < block.timestamp, "MycTimelock: action time not yet passed"); } function _clearAction(bytes32 _action) private { require(pendingActions[_action] != 0, "MycTimelock: invalid _action"); delete pendingActions[_action]; emit ClearAction(_action); } }
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; interface ITimelockTarget { function setGov(address _gov) external; function withdrawToken( address _token, address _account, uint256 _amount ) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; interface IMycTimelock { function setAdmin(address _admin) external; function setIsLeverageEnabled(address _vault, bool _isLeverageEnabled) external; function signalSetGov(address _target, address _gov) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; interface IHandlerTarget { function isHandler(address _account) external returns (bool); function setHandler(address _handler, bool _isActive) external; }
//SPDX-License-Identifier: MIT pragma solidity 0.6.12; interface IAdmin { function setAdmin(address _admin) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; import "./IVaultUtils.sol"; interface IVault { function isInitialized() external view returns (bool); function isSwapEnabled() external view returns (bool); function isLeverageEnabled() external view returns (bool); function setVaultUtils(IVaultUtils _vaultUtils) external; function setError(uint256 _errorCode, string calldata _error) external; function router() external view returns (address); function usdg() external view returns (address); function gov() external view returns (address); function whitelistedTokenCount() external view returns (uint256); function maxLeverage() external view returns (uint256); function minProfitTime() external view returns (uint256); function hasDynamicFees() external view returns (bool); function fundingInterval() external view returns (uint256); function totalTokenWeights() external view returns (uint256); function getTargetUsdgAmount(address _token) external view returns (uint256); function inManagerMode() external view returns (bool); function inPrivateLiquidationMode() external view returns (bool); function maxGasPrice() external view returns (uint256); function approvedRouters(address _account, address _router) external view returns (bool); function isLiquidator(address _account) external view returns (bool); function isManager(address _account) external view returns (bool); function minProfitBasisPoints(address _token) external view returns (uint256); function tokenBalances(address _token) external view returns (uint256); function lastFundingTimes(address _token) external view returns (uint256); function setMaxLeverage(uint256 _maxLeverage) external; function setInManagerMode(bool _inManagerMode) external; function setManager(address _manager, bool _isManager) external; function setIsSwapEnabled(bool _isSwapEnabled) external; function setIsLeverageEnabled(bool _isLeverageEnabled) external; function setMaxGasPrice(uint256 _maxGasPrice) external; function setUsdgAmount(address _token, uint256 _amount) external; function setBufferAmount(address _token, uint256 _amount) external; function setMaxGlobalShortSize(address _token, uint256 _amount) external; function setInPrivateLiquidationMode(bool _inPrivateLiquidationMode) external; function setLiquidator(address _liquidator, bool _isActive) external; function setFundingRate( uint256 _fundingInterval, uint256 _fundingRateFactor, uint256 _stableFundingRateFactor ) external; function setFees( uint256 _taxBasisPoints, uint256 _stableTaxBasisPoints, uint256 _mintBurnFeeBasisPoints, uint256 _swapFeeBasisPoints, uint256 _stableSwapFeeBasisPoints, uint256 _marginFeeBasisPoints, uint256 _liquidationFeeUsd, uint256 _minProfitTime, bool _hasDynamicFees ) external; function setTokenConfig( address _token, uint256 _tokenDecimals, uint256 _redemptionBps, uint256 _minProfitBps, uint256 _maxUsdgAmount, bool _isStable, bool _isShortable ) external; function setPriceFeed(address _priceFeed) external; function withdrawFees(address _token, address _receiver) external returns (uint256); function directPoolDeposit(address _token) external; function buyUSDG(address _token, address _receiver) external returns (uint256); function sellUSDG(address _token, address _receiver) external returns (uint256); function swap( address _tokenIn, address _tokenOut, address _receiver ) external returns (uint256); function increasePosition( address _account, address _collateralToken, address _indexToken, uint256 _sizeDelta, bool _isLong ) external; function decreasePosition( address _account, address _collateralToken, address _indexToken, uint256 _collateralDelta, uint256 _sizeDelta, bool _isLong, address _receiver ) external returns (uint256); function liquidatePosition( address _account, address _collateralToken, address _indexToken, bool _isLong, address _feeReceiver ) external; function tokenToUsdMin(address _token, uint256 _tokenAmount) external view returns (uint256); function priceFeed() external view returns (address); function fundingRateFactor() external view returns (uint256); function stableFundingRateFactor() external view returns (uint256); function cumulativeFundingRates(address _token) external view returns (uint256); function getNextFundingRate(address _token) external view returns (uint256); function getFeeBasisPoints( address _token, uint256 _usdgDelta, uint256 _feeBasisPoints, uint256 _taxBasisPoints, bool _increment ) external view returns (uint256); function liquidationFeeUsd() external view returns (uint256); function taxBasisPoints() external view returns (uint256); function stableTaxBasisPoints() external view returns (uint256); function mintBurnFeeBasisPoints() external view returns (uint256); function swapFeeBasisPoints() external view returns (uint256); function stableSwapFeeBasisPoints() external view returns (uint256); function marginFeeBasisPoints() external view returns (uint256); function allWhitelistedTokensLength() external view returns (uint256); function allWhitelistedTokens(uint256) external view returns (address); function whitelistedTokens(address _token) external view returns (bool); function stableTokens(address _token) external view returns (bool); function shortableTokens(address _token) external view returns (bool); function feeReserves(address _token) external view returns (uint256); function globalShortSizes(address _token) external view returns (uint256); function globalShortAveragePrices(address _token) external view returns (uint256); function maxGlobalShortSizes(address _token) external view returns (uint256); function tokenDecimals(address _token) external view returns (uint256); function tokenWeights(address _token) external view returns (uint256); function guaranteedUsd(address _token) external view returns (uint256); function poolAmounts(address _token) external view returns (uint256); function bufferAmounts(address _token) external view returns (uint256); function reservedAmounts(address _token) external view returns (uint256); function usdgAmounts(address _token) external view returns (uint256); function maxUsdgAmounts(address _token) external view returns (uint256); function getRedemptionAmount(address _token, uint256 _usdgAmount) external view returns (uint256); function getMaxPrice(address _token) external view returns (uint256); function getMinPrice(address _token) external view returns (uint256); function getDelta( address _indexToken, uint256 _size, uint256 _averagePrice, bool _isLong, uint256 _lastIncreasedTime ) external view returns (bool, uint256); function getPosition( address _account, address _collateralToken, address _indexToken, bool _isLong ) external view returns ( uint256, uint256, uint256, uint256, uint256, uint256, bool, uint256 ); }
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; interface IVaultUtils { function updateCumulativeFundingRate(address _collateralToken, address _indexToken) external returns (bool); function validateIncreasePosition( address _account, address _collateralToken, address _indexToken, uint256 _sizeDelta, bool _isLong ) external view; function validateDecreasePosition( address _account, address _collateralToken, address _indexToken, uint256 _collateralDelta, uint256 _sizeDelta, bool _isLong, address _receiver ) external view; function validateLiquidation( address _account, address _collateralToken, address _indexToken, bool _isLong, bool _raise ) external view returns (uint256, uint256); function getEntryFundingRate( address _collateralToken, address _indexToken, bool _isLong ) external view returns (uint256); function getPositionFee( address _account, address _collateralToken, address _indexToken, bool _isLong, uint256 _sizeDelta ) external view returns (uint256); function getFundingFee( address _account, address _collateralToken, address _indexToken, bool _isLong, uint256 _size, uint256 _entryFundingRate ) external view returns (uint256); function getBuyUsdgFeeBasisPoints(address _token, uint256 _usdgAmount) external view returns (uint256); function getSellUsdgFeeBasisPoints(address _token, uint256 _usdgAmount) external view returns (uint256); function getSwapFeeBasisPoints( address _tokenIn, address _tokenOut, uint256 _usdgAmount ) external view returns (uint256); function getFeeBasisPoints( address _token, uint256 _usdgDelta, uint256 _feeBasisPoints, uint256 _taxBasisPoints, bool _increment ) external view returns (uint256); }
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; interface IVaultPriceFeed { function adjustmentBasisPoints(address _token) external view returns (uint256); function isAdjustmentAdditive(address _token) external view returns (bool); function setAdjustment( address _token, bool _isAdditive, uint256 _adjustmentBps ) external; function setUseV2Pricing(bool _useV2Pricing) external; function setIsAmmEnabled(bool _isEnabled) external; function setIsSecondaryPriceEnabled(bool _isEnabled) external; function setSpreadBasisPoints(address _token, uint256 _spreadBasisPoints) external; function setSpreadThresholdBasisPoints(uint256 _spreadThresholdBasisPoints) external; function setFavorPrimaryPrice(bool _favorPrimaryPrice) external; function setPriceSampleSpace(uint256 _priceSampleSpace) external; function setMaxStrictPriceDeviation(uint256 _maxStrictPriceDeviation) external; function getPrice( address _token, bool _maximise, bool _includeAmmPrice, bool _useSwapPricing ) external view returns (uint256); function getAmmPrice(address _token) external view returns (uint256); function getPrimaryPrice(address _token, bool _maximise) external view returns (uint256); function setTokenConfig( address _token, address _priceFeed, uint256 _priceDecimals, bool _isStrictStable ) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; interface IRouter { function addPlugin(address _plugin) external; function pluginTransfer( address _token, address _account, address _receiver, uint256 _amount ) external; function pluginIncreasePosition( address _account, address _collateralToken, address _indexToken, uint256 _sizeDelta, bool _isLong ) external; function pluginDecreasePosition( address _account, address _collateralToken, address _indexToken, uint256 _collateralDelta, uint256 _sizeDelta, bool _isLong, address _receiver ) external returns (uint256); function swap( address[] memory _path, uint256 _amountIn, uint256 _minOut, address _receiver ) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; interface IYieldToken { function totalStaked() external view returns (uint256); function stakedBalance(address _account) external view returns (uint256); function removeAdmin(address _account) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; interface IBaseToken { function totalStaked() external view returns (uint256); function stakedBalance(address _account) external view returns (uint256); function removeAdmin(address _account) external; function setInPrivateTransferMode(bool _inPrivateTransferMode) external; function withdrawToken( address _token, address _account, uint256 _amount ) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; interface IMintable { function isMinter(address _account) external returns (bool); function setMinter(address _minter, bool _isActive) external; function mint(address _account, uint256 _amount) external; function burn(address _account, uint256 _amount) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; interface IUSDG { function addVault(address _vault) external; function removeVault(address _vault) external; function mint(address _account, uint256 _amount) external; function burn(address _account, uint256 _amount) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; interface IVester { function rewardTracker() external view returns (address); function claimForAccount(address _account, address _receiver) external returns (uint256); function claimable(address _account) external view returns (uint256); function cumulativeClaimAmounts(address _account) external view returns (uint256); function claimedAmounts(address _account) external view returns (uint256); function pairAmounts(address _account) external view returns (uint256); function getVestedAmount(address _account) external view returns (uint256); function transferredAverageStakedAmounts(address _account) external view returns (uint256); function transferredCumulativeRewards(address _account) external view returns (uint256); function cumulativeRewardDeductions(address _account) external view returns (uint256); function bonusRewards(address _account) external view returns (uint256); function transferStakeValues(address _sender, address _receiver) external; function setTransferredAverageStakedAmounts(address _account, uint256 _amount) external; function setTransferredCumulativeRewards(address _account, uint256 _amount) external; function setCumulativeRewardDeductions(address _account, uint256 _amount) external; function setBonusRewards(address _account, uint256 _amount) external; function getMaxVestableAmount(address _account) external view returns (uint256); function getCombinedAverageStakedAmount(address _account) external view returns (uint256); }
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when 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 SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } }
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @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); }
{ "optimizer": { "enabled": true, "runs": 1 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
[{"inputs":[{"internalType":"address","name":"_admin","type":"address"},{"internalType":"uint256","name":"_buffer","type":"uint256"},{"internalType":"uint256","name":"_longBuffer","type":"uint256"},{"internalType":"address","name":"_rewardManager","type":"address"},{"internalType":"address","name":"_tokenManager","type":"address"},{"internalType":"address","name":"_mintReceiver","type":"address"},{"internalType":"uint256","name":"_maxTokenSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"action","type":"bytes32"}],"name":"ClearAction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"router","type":"address"},{"indexed":false,"internalType":"address","name":"plugin","type":"address"},{"indexed":false,"internalType":"bytes32","name":"action","type":"bytes32"}],"name":"SignalAddPlugin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"action","type":"bytes32"}],"name":"SignalApprove","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"action","type":"bytes32"}],"name":"SignalMint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"action","type":"bytes32"}],"name":"SignalPendingAction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"vaultPriceFeed","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"priceFeed","type":"address"},{"indexed":false,"internalType":"uint256","name":"priceDecimals","type":"uint256"},{"indexed":false,"internalType":"bool","name":"isStrictStable","type":"bool"}],"name":"SignalPriceFeedSetTokenConfig","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"vault","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SignalRedeemUsdg","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"address","name":"gov","type":"address"},{"indexed":false,"internalType":"bytes32","name":"action","type":"bytes32"}],"name":"SignalSetGov","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"vault","type":"address"},{"indexed":false,"internalType":"address","name":"priceFeed","type":"address"},{"indexed":false,"internalType":"bytes32","name":"action","type":"bytes32"}],"name":"SignalSetPriceFeed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"vault","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenDecimals","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokenWeight","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"minProfitBps","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxUsdgAmount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"isStable","type":"bool"},{"indexed":false,"internalType":"bool","name":"isShortable","type":"bool"}],"name":"SignalVaultSetTokenConfig","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"action","type":"bytes32"}],"name":"SignalWithdrawToken","type":"event"},{"inputs":[],"name":"MAX_BUFFER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_FEE_BASIS_POINTS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_FUNDING_RATE_FACTOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_LEVERAGE_VALIDATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICE_PRECISION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"addExcludedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"},{"internalType":"address","name":"_plugin","type":"address"}],"name":"addPlugin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buffer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_action","type":"bytes32"}],"name":"cancelAction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isHandler","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"longBuffer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokenSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"pendingActions","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_vaultPriceFeed","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_priceFeed","type":"address"},{"internalType":"uint256","name":"_priceDecimals","type":"uint256"},{"internalType":"bool","name":"_isStrictStable","type":"bool"}],"name":"priceFeedSetTokenConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"processMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"redeemUsdg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"name":"removeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_priceFeed","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"bool","name":"_isAdditive","type":"bool"},{"internalType":"uint256","name":"_adjustmentBps","type":"uint256"}],"name":"setAdjustment","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_admin","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buffer","type":"uint256"}],"name":"setBuffer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_handler","type":"address"},{"internalType":"bool","name":"_isActive","type":"bool"}],"name":"setContractHandler","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"address","name":"_admin","type":"address"}],"name":"setExternalAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_priceFeed","type":"address"},{"internalType":"bool","name":"_favorPrimaryPrice","type":"bool"}],"name":"setFavorPrimaryPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"},{"internalType":"uint256","name":"_taxBasisPoints","type":"uint256"},{"internalType":"uint256","name":"_stableTaxBasisPoints","type":"uint256"},{"internalType":"uint256","name":"_mintBurnFeeBasisPoints","type":"uint256"},{"internalType":"uint256","name":"_swapFeeBasisPoints","type":"uint256"},{"internalType":"uint256","name":"_stableSwapFeeBasisPoints","type":"uint256"},{"internalType":"uint256","name":"_marginFeeBasisPoints","type":"uint256"},{"internalType":"uint256","name":"_liquidationFeeUsd","type":"uint256"},{"internalType":"uint256","name":"_minProfitTime","type":"uint256"},{"internalType":"bool","name":"_hasDynamicFees","type":"bool"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"},{"internalType":"uint256","name":"_fundingInterval","type":"uint256"},{"internalType":"uint256","name":"_fundingRateFactor","type":"uint256"},{"internalType":"uint256","name":"_stableFundingRateFactor","type":"uint256"}],"name":"setFundingRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"address","name":"_gov","type":"address"}],"name":"setGov","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"},{"internalType":"bool","name":"_inPrivateLiquidationMode","type":"bool"}],"name":"setInPrivateLiquidationMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"bool","name":"_inPrivateTransferMode","type":"bool"}],"name":"setInPrivateTransferMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_priceFeed","type":"address"},{"internalType":"bool","name":"_isEnabled","type":"bool"}],"name":"setIsAmmEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"},{"internalType":"bool","name":"_isLeverageEnabled","type":"bool"}],"name":"setIsLeverageEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_priceFeed","type":"address"},{"internalType":"bool","name":"_isEnabled","type":"bool"}],"name":"setIsSecondaryPriceEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"},{"internalType":"bool","name":"_isSwapEnabled","type":"bool"}],"name":"setIsSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"},{"internalType":"address","name":"_liquidator","type":"address"},{"internalType":"bool","name":"_isActive","type":"bool"}],"name":"setLiquidator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"},{"internalType":"uint256","name":"_maxGasPrice","type":"uint256"}],"name":"setMaxGasPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxGlobalShortSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"},{"internalType":"uint256","name":"_maxLeverage","type":"uint256"}],"name":"setMaxLeverage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_priceFeed","type":"address"},{"internalType":"uint256","name":"_maxStrictPriceDeviation","type":"uint256"}],"name":"setMaxStrictPriceDeviation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"},{"internalType":"address","name":"_priceFeed","type":"address"}],"name":"setPriceFeed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_priceFeed","type":"address"},{"internalType":"uint256","name":"_priceSampleSpace","type":"uint256"}],"name":"setPriceSampleSpace","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_priceFeed","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_spreadBasisPoints","type":"uint256"}],"name":"setSpreadBasisPoints","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_priceFeed","type":"address"},{"internalType":"uint256","name":"_spreadThresholdBasisPoints","type":"uint256"}],"name":"setSpreadThresholdBasisPoints","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_tokenWeight","type":"uint256"},{"internalType":"uint256","name":"_minProfitBps","type":"uint256"},{"internalType":"uint256","name":"_maxUsdgAmount","type":"uint256"},{"internalType":"uint256","name":"_bufferAmount","type":"uint256"},{"internalType":"uint256","name":"_usdgAmount","type":"uint256"}],"name":"setTokenConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_priceFeed","type":"address"},{"internalType":"bool","name":"_useV2Pricing","type":"bool"}],"name":"setUseV2Pricing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"},{"internalType":"contract IVaultUtils","name":"_vaultUtils","type":"address"}],"name":"setVaultUtils","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"},{"internalType":"address","name":"_plugin","type":"address"}],"name":"signalAddPlugin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"signalApprove","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"signalMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vaultPriceFeed","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_priceFeed","type":"address"},{"internalType":"uint256","name":"_priceDecimals","type":"uint256"},{"internalType":"bool","name":"_isStrictStable","type":"bool"}],"name":"signalPriceFeedSetTokenConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"signalRedeemUsdg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"address","name":"_gov","type":"address"}],"name":"signalSetGov","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"},{"internalType":"address","name":"_priceFeed","type":"address"}],"name":"signalSetPriceFeed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_tokenDecimals","type":"uint256"},{"internalType":"uint256","name":"_tokenWeight","type":"uint256"},{"internalType":"uint256","name":"_minProfitBps","type":"uint256"},{"internalType":"uint256","name":"_maxUsdgAmount","type":"uint256"},{"internalType":"bool","name":"_isStable","type":"bool"},{"internalType":"bool","name":"_isShortable","type":"bool"}],"name":"signalVaultSetTokenConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"signalWithdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferIn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_tokenDecimals","type":"uint256"},{"internalType":"uint256","name":"_tokenWeight","type":"uint256"},{"internalType":"uint256","name":"_minProfitBps","type":"uint256"},{"internalType":"uint256","name":"_maxUsdgAmount","type":"uint256"},{"internalType":"bool","name":"_isStable","type":"bool"},{"internalType":"bool","name":"_isShortable","type":"bool"}],"name":"vaultSetTokenConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"withdrawFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200483d3803806200483d833981810160405260e08110156200003757600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151949593949293919290919062093a80861115620000bd576040805162461bcd60e51b815260206004820152601c60248201527f4d796354696d656c6f636b3a20696e76616c6964205f62756666657200000000604482015290519081900360640190fd5b62093a8085111562000116576040805162461bcd60e51b815260206004820181905260248201527f4d796354696d656c6f636b3a20696e76616c6964205f6c6f6e67427566666572604482015290519081900360640190fd5b600280546001600160a01b039889166001600160a01b03199182161790915560009690965560019490945560048054938716938616939093179092556003805491861691851691909117905560058054919094169216919091179091556006556146b780620001866000396000f3fe608060405234801561001057600080fd5b50600436106102e05760003560e01c80630191c237146102e557806309cc9a081461031d5780630e0dc426146103535780630e9587f3146103a15780630f4ef8a6146103d9578063117cf204146103fd57806314aea3071461042b578063185051c11461045757806321754d9e1461048557806321bd0592146104c1578063227f03eb146104ef578063268959e5146105275780632877f4c3146105555780632965c8c714610581578063296b07e5146105af5780632a709b14146105ed5780632ba3725a146105f55780633335e38a1461060f578063384cae731461065357806340c10f1914610697578063454ffa46146106c357806346ea87af146106f157806347de43e21461072b5780634befe2ca146107635780634cd23f3b1461076b57806350f7c204146107a757806351a6de0d146107af57806353b6bfdd146107dd57806355ef13951461080b5780635843752f146108395780635dae8841146108675780635fa7955c1461088d57806361d075691461089557806369623ae21461089d5780636e5227d4146108cb578063704b6c021461092c57806370ac0a931461095257806376e1128614610988578063781cc3d3146109b65780637b6f775a146109d35780637b9fb227146109ff57806380894d6214610a2d57806386803c7214610a5b5780638a39735a14610a895780638bf22c4614610a9157806395082d2514610abd578063996a7a1e14610ac5578063a0a316a214610af3578063adc7ea3714610b1f578063bc476dfd14610b3c578063bc8a8ab914610b6a578063c7bb26a014610ba0578063cd2b123014610ba8578063d7c2e92f14610bd6578063db1c844114610bfc578063dce6e18d14610c55578063df3a66d914610c8b578063e1f21c6714610cc1578063e30569e514610cf7578063e3cbeb0f14610d14578063e4652f4914610d6d578063e7b0a3a114610da3578063edaafe2014610dd9578063f851a44014610de1575b600080fd5b61031b600480360360608110156102fb57600080fd5b506001600160a01b03813581169160208101359091169060400135610de9565b005b61031b6004803603606081101561033357600080fd5b506001600160a01b03813581169160208101359091169060400135610ee7565b61031b600480360360e081101561036957600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060808101359060a08101359060c00135610fe6565b61031b600480360360608110156103b757600080fd5b506001600160a01b038135811691602081013582169160409091013516611415565b6103e16114f3565b604080516001600160a01b039092168252519081900360200190f35b61031b6004803603604081101561041357600080fd5b506001600160a01b0381351690602001351515611502565b61031b6004803603604081101561044157600080fd5b506001600160a01b0381351690602001356115b3565b61031b6004803603604081101561046d57600080fd5b506001600160a01b0381351690602001351515611646565b61031b6004803603608081101561049b57600080fd5b506001600160a01b038135811691602081013582169160408201351690606001356116be565b61031b600480360360408110156104d757600080fd5b506001600160a01b0381351690602001351515611809565b61031b6004803603608081101561050557600080fd5b506001600160a01b03813516906020810135906040810135906060013561189e565b61031b6004803603604081101561053d57600080fd5b506001600160a01b03813581169160200135166119dd565b61031b6004803603604081101561056b57600080fd5b506001600160a01b038135169060200135611a79565b61031b6004803603604081101561059757600080fd5b506001600160a01b0381351690602001351515611b5e565b61031b600480360360808110156105c557600080fd5b506001600160a01b038135811691602081013590911690604081013515159060600135611bf3565b6103e1611ca1565b6105fd611cb0565b60408051918252519081900360200190f35b61031b600480360360a081101561062557600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001351515611cb7565b61031b600480360360a081101561066957600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001351515611e11565b61031b600480360360408110156106ad57600080fd5b506001600160a01b038135169060200135611f42565b61031b600480360360408110156106d957600080fd5b506001600160a01b0381351690602001351515611fab565b6107176004803603602081101561070757600080fd5b50356001600160a01b0316612040565b604080519115158252519081900360200190f35b61031b6004803603606081101561074157600080fd5b506001600160a01b038135811691602081013590911690604001351515612055565b6105fd612118565b61031b6004803603608081101561078157600080fd5b506001600160a01b0381358116916020810135821691604082013516906060013561211e565b6105fd612239565b61031b600480360360408110156107c557600080fd5b506001600160a01b038135811691602001351661223f565b61031b600480360360408110156107f357600080fd5b506001600160a01b0381358116916020013516612339565b61031b6004803603604081101561082157600080fd5b506001600160a01b038135811691602001351661242d565b61031b6004803603604081101561084f57600080fd5b506001600160a01b0381351690602001351515612526565b6107176004803603602081101561087d57600080fd5b50356001600160a01b03166125bb565b6105fd6125d0565b6105fd6125d6565b61031b600480360360408110156108b357600080fd5b506001600160a01b03813581169160200135166125dd565b61031b60048036036101408110156108e257600080fd5b506001600160a01b038135169060208101359060408101359060608101359060808101359060a08101359060c08101359060e08101359061010081013590610120013515156126da565b61031b6004803603602081101561094257600080fd5b50356001600160a01b0316612998565b61031b6004803603606081101561096857600080fd5b506001600160a01b03813581169160208101359091169060400135612a07565b61031b6004803603604081101561099e57600080fd5b506001600160a01b0381358116916020013516612e05565b61031b600480360360208110156109cc57600080fd5b5035612f04565b61031b600480360360408110156109e957600080fd5b506001600160a01b038135169060200135612f5d565b61031b60048036036040811015610a1557600080fd5b506001600160a01b0381351690602001351515613031565b61031b60048036036040811015610a4357600080fd5b506001600160a01b03813581169160200135166130c6565b61031b60048036036040811015610a7157600080fd5b506001600160a01b03813516906020013515156131bc565b6105fd6132af565b61031b60048036036040811015610aa757600080fd5b506001600160a01b0381351690602001356132b4565b6105fd613397565b61031b60048036036040811015610adb57600080fd5b506001600160a01b03813581169160200135166133a7565b61031b60048036036040811015610b0957600080fd5b506001600160a01b038135169060200135613498565b61031b60048036036020811015610b3557600080fd5b503561352b565b61031b60048036036040811015610b5257600080fd5b506001600160a01b0381358116916020013516613614565b61031b60048036036060811015610b8057600080fd5b506001600160a01b038135811691602081013590911690604001356136b0565b6103e1613772565b61031b60048036036040811015610bbe57600080fd5b506001600160a01b0381351690602001351515613781565b61031b60048036036020811015610bec57600080fd5b50356001600160a01b0316613830565b61031b6004803603610100811015610c1357600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060808101359060a08101359060c081013515159060e0013515156138a1565b61031b60048036036060811015610c6b57600080fd5b506001600160a01b038135811691602081013590911690604001356139fe565b61031b60048036036060811015610ca157600080fd5b506001600160a01b03813581169160208101359091169060400135613b00565b61031b60048036036060811015610cd757600080fd5b506001600160a01b03813581169160208101359091169060400135613ba4565b6105fd60048036036020811015610d0d57600080fd5b5035613cd9565b61031b6004803603610100811015610d2b57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060808101359060a08101359060c081013515159060e001351515613ceb565b61031b60048036036060811015610d8357600080fd5b506001600160a01b03813581169160208101359091169060400135613e70565b61031b60048036036060811015610db957600080fd5b506001600160a01b03813581169160208101359091169060400135613f16565b6105fd613fba565b6103e1613fc0565b6002546001600160a01b03163314610e36576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b604080516972656465656d5573646760b01b6020808301919091526001600160601b0319606087811b8216602a85015286901b16603e83015260528083018590528351808403909101815260729092019092528051910120610e9781613fcf565b604080516001600160a01b0380871682528516602082015280820184905290517fe6bd553b6ef21f3a22ebc877b3aaedc30fe15826b8156d4e8c8b373ebf11d78b9181900360600190a150505050565b6002546001600160a01b03163314610f34576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b60408051631b5a5b9d60e21b6020808301919091526001600160601b0319606087811b8216602485015286901b166038830152604c80830185905283518084039091018152606c9092019092528051910120610f8f81613fcf565b604080516001600160a01b038087168252851660208201528082018490526060810183905290517f23d37bec99db82564427c9bbfe48ad7434bccf413a40fd357fb838c90a0d68289181900360800190a150505050565b6002546001600160a01b03163314611033576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b6101f48411156110745760405162461bcd60e51b815260040180806020018281038252602281526020018061443e6022913960400191505060405180910390fd5b60408051630daf9c2160e41b81526001600160a01b0388811660048301529151899283169163daf9c210916024808301926020929190829003018186803b1580156110be57600080fd5b505afa1580156110d2573d6000803e3d6000fd5b505050506040513d60208110156110e857600080fd5b50516111255760405162461bcd60e51b81526004018080602001828103825260268152602001806145b76026913960400191505060405180910390fd5b6000816001600160a01b0316638ee573ac896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561117457600080fd5b505afa158015611188573d6000803e3d6000fd5b505050506040513d602081101561119e57600080fd5b5051604080516342b60b0360e01b81526001600160a01b038b811660048301529151929350600092918516916342b60b0391602480820192602092909190829003018186803b1580156111f057600080fd5b505afa158015611204573d6000803e3d6000fd5b505050506040513d602081101561121a57600080fd5b50516040805163db3555fb60e01b81526001600160a01b038c8116600483015291519293506000929186169163db3555fb91602480820192602092909190829003018186803b15801561126c57600080fd5b505afa158015611280573d6000803e3d6000fd5b505050506040513d602081101561129657600080fd5b505160408051633c5a6e3560e01b81526001600160a01b038d8116600483015260248201879052604482018d9052606482018c9052608482018b905285151560a483015283151560c48301529151929350908d1691633c5a6e359160e48082019260009290919082900301818387803b15801561131257600080fd5b505af1158015611326573d6000803e3d6000fd5b505050508a6001600160a01b0316638585f4d28b886040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561138157600080fd5b505af1158015611395573d6000803e3d6000fd5b505050508a6001600160a01b031663d66b000d8b876040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156113f057600080fd5b505af1158015611404573d6000803e3d6000fd5b505050505050505050505050505050565b6002546001600160a01b03163314611462576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b826001600160a01b031663f255527883836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050602060405180830381600087803b1580156114c257600080fd5b505af11580156114d6573d6000803e3d6000fd5b505050506040513d60208110156114ec57600080fd5b5050505050565b6004546001600160a01b031681565b6002546001600160a01b0316331461154f576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b816001600160a01b03166330455ede826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b15801561159757600080fd5b505af11580156115ab573d6000803e3d6000fd5b505050505050565b6002546001600160a01b03163314611600576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b816001600160a01b031663b731dd87826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561159757600080fd5b6002546001600160a01b03163314611693576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6002546001600160a01b0316331461170b576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b604080516c3bb4ba34323930bbaa37b5b2b760991b6020808301919091526001600160601b0319606088811b8216602d85015287811b8216604185015286901b1660558301526069808301859052835180840390910181526089909201909252805191012061177981614028565b611782816140be565b846001600160a01b03166301e336678585856040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b1580156117ea57600080fd5b505af11580156117fe573d6000803e3d6000fd5b505050505050505050565b6002546001600160a01b03163314611856576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b816001600160a01b031663f07bbf77826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b15801561159757600080fd5b6002546001600160a01b031633146118eb576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b60c8821061192a5760405162461bcd60e51b81526004018080602001828103825260278152602001806144f06027913960400191505060405180910390fd5b60c881106119695760405162461bcd60e51b815260040180806020018281038252602d815260200180614517602d913960400191505060405180910390fd5b836001600160a01b0316638a27d4688484846040518463ffffffff1660e01b8152600401808481526020018381526020018281526020019350505050600060405180830381600087803b1580156119bf57600080fd5b505af11580156119d3573d6000803e3d6000fd5b5050505050505050565b6002546001600160a01b03163314611a2a576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b816001600160a01b0316631785f53c826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561159757600080fd5b6002546001600160a01b03163314611ac6576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b6005811115611b18576040805162461bcd60e51b8152602060048201526019602482015278496e76616c6964205f707269636553616d706c65537061636560381b604482015290519081900360640190fd5b816001600160a01b0316632fa03b8f826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561159757600080fd5b6002546001600160a01b03163314611bab576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b816001600160a01b031663eb1c92a9826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b15801561159757600080fd5b6002546001600160a01b03163314611c40576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b836001600160a01b031663d694376c8484846040518463ffffffff1660e01b815260040180846001600160a01b0316815260200183151581526020018281526020019350505050600060405180830381600087803b1580156119bf57600080fd5b6003546001600160a01b031681565b6207a12081565b6002546001600160a01b03163314611d04576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b6040805176707269636546656564536574546f6b656e436f6e66696760481b6020808301919091526001600160601b0319606089811b8216603785015288811b8216604b85015287901b16605f8301526073820185905283151560f81b60938301528251607481840301815260949092019092528051910120611d8681614028565b611d8f816140be565b60408051634b9ade4760e01b81526001600160a01b0387811660048301528681166024830152604482018690528415156064830152915191881691634b9ade479160848082019260009290919082900301818387803b158015611df157600080fd5b505af1158015611e05573d6000803e3d6000fd5b50505050505050505050565b6002546001600160a01b03163314611e5e576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b6040805176707269636546656564536574546f6b656e436f6e66696760481b6020808301919091526001600160601b0319606089811b8216603785015288811b8216604b85015287901b16605f8301526073820185905283151560f81b60938301528251607481840301815260949092019092528051910120611ee081613fcf565b604080516001600160a01b038089168252808816602083015286168183015260608101859052831515608082015290517f1b2ddf357ae016d8c127dcd3a73c34744fdeaeeb4b7ef1e04490cebf7f4816fe9181900360a00190a1505050505050565b6002546001600160a01b03163314611f8f576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b600554611fa79083906001600160a01b031683614166565b5050565b6002546001600160a01b03163314611ff8576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b816001600160a01b031663fd34ec40826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b15801561159757600080fd5b60096020526000908152604090205460ff1681565b6002546001600160a01b031633146120a2576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b826001600160a01b0316634453a37483836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001821515815260200192505050600060405180830381600087803b1580156120fb57600080fd5b505af115801561210f573d6000803e3d6000fd5b50505050505050565b61012c81565b6002546001600160a01b0316331461216b576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b604080516c3bb4ba34323930bbaa37b5b2b760991b6020808301919091526001600160601b0319606088811b8216602d85015287811b8216604185015286901b166055830152606980830185905283518084039091018152608990920190925280519101206121d981613fcf565b604080516001600160a01b0380881682528087166020830152851681830152606081018490526080810183905290517f9ed7b0f07a9eed51079fab67f6d0f141f167f5b17fdb5a23282280e15fcafed39181900360a00190a15050505050565b60065481565b6002546001600160a01b0316331461228c576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b604080516539b2ba23b7bb60d11b6020808301919091526001600160601b0319606086811b8216602685015285901b16603a8301528251602e818403018152604e90920190925280519101206122e181614028565b6122ea816140be565b826001600160a01b031663cfad57a2836040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156120fb57600080fd5b6002546001600160a01b03163314612386576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b604080516830b23228363ab3b4b760b91b6020808301919091526001600160601b0319606086811b8216602985015285901b16603d83015282516031818403018152605190920190925280519101206123de81613fcf565b604080516001600160a01b0380861682528416602082015280820183905290517fc0ad20f21e0e6b9c02a7ecfb229e39b214cb1914a4d6f202e7f9ec7ffb9445f69181900360600190a1505050565b6002546001600160a01b0316331461247a576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b6001600160a01b0382163014156124d7576040805162461bcd60e51b815260206004820152601c60248201527b135e58d51a5b595b1bd8dace881a5b9d985b1a590817dd185c99d95d60221b604482015290519081900360640190fd5b816001600160a01b031663704b6c02826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561159757600080fd5b6002546001600160a01b03163314612573576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b816001600160a01b0316639917dc74826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b15801561159757600080fd5b60086020526000908152604090205460ff1681565b60015481565b62093a8081565b6002546001600160a01b0316331461262a576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b604080516830b23228363ab3b4b760b91b6020808301919091526001600160601b0319606086811b8216602985015285901b16603d830152825160318184030181526051909201909252805191012061268281614028565b61268b816140be565b826001600160a01b031663d8867fc8836040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156120fb57600080fd5b6002546001600160a01b03163314612727576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b61012c89106127675760405162461bcd60e51b81526004018080602001828103825260248152602001806146326024913960400191505060405180910390fd5b61012c88106127a75760405162461bcd60e51b815260040180806020018281038252602a8152602001806143ea602a913960400191505060405180910390fd5b61012c87106127e75760405162461bcd60e51b815260040180806020018281038252602c815260200180614656602c913960400191505060405180910390fd5b61012c86106128275760405162461bcd60e51b81526004018080602001828103825260288152602001806144a16028913960400191505060405180910390fd5b61012c85106128675760405162461bcd60e51b815260040180806020018281038252602e8152602001806145dd602e913960400191505060405180910390fd5b61012c84106128a75760405162461bcd60e51b815260040180806020018281038252602a815260200180614414602a913960400191505060405180910390fd5b68fc6f7c40458122964d601f1b83106128f15760405162461bcd60e51b815260040180806020018281038252602781526020018061460b6027913960400191505060405180910390fd5b604080516320759c0160e11b8152600481018b9052602481018a905260448101899052606481018890526084810187905260a4810186905260c4810185905260e4810184905282151561010482015290516001600160a01b038c16916340eb38029161012480830192600092919082900301818387803b15801561297457600080fd5b505af1158015612988573d6000803e3d6000fd5b5050505050505050505050505050565b6003546001600160a01b031633146129e5576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b03163314612a54576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b604080516972656465656d5573646760b01b6020808301919091526001600160601b0319606087811b8216602a85015286901b16603e83015260528083018590528351808403909101815260729092019092528051910120612ab581614028565b612abe816140be565b6000846001600160a01b031663f5b91b7b6040518163ffffffff1660e01b815260040160206040518083038186803b158015612af957600080fd5b505afa158015612b0d573d6000803e3d6000fd5b505050506040513d6020811015612b2357600080fd5b5051604080516352f4877760e11b81523060048201526001602482015290519192506001600160a01b0387169163a5e90eee9160448082019260009290919082900301818387803b158015612b7757600080fd5b505af1158015612b8b573d6000803e3d6000fd5b5050604080516312b5ad0160e11b815230600482015290516001600160a01b038516935063256b5a029250602480830192600092919082900301818387803b158015612bd657600080fd5b505af1158015612bea573d6000803e3d6000fd5b5050604080516340c10f1960e01b81523060048201526024810187905290516001600160a01b03851693506340c10f199250604480830192600092919082900301818387803b158015612c3c57600080fd5b505af1158015612c50573d6000803e3d6000fd5b50505050806001600160a01b031663a9059cbb86856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612cab57600080fd5b505af1158015612cbf573d6000803e3d6000fd5b505050506040513d6020811015612cd557600080fd5b505060055460408051630711e61960e41b81526001600160a01b038781166004830152928316602482015290519187169163711e6190916044808201926020929091908290030181600087803b158015612d2e57600080fd5b505af1158015612d42573d6000803e3d6000fd5b505050506040513d6020811015612d5857600080fd5b5050604080516352f4877760e11b815230600482015260006024820181905291516001600160a01b0388169263a5e90eee926044808201939182900301818387803b158015612da657600080fd5b505af1158015612dba573d6000803e3d6000fd5b50506040805163ceb68c2360e01b815230600482015290516001600160a01b038516935063ceb68c239250602480830192600092919082900301818387803b1580156117ea57600080fd5b6002546001600160a01b03163314612e52576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b604080516b1cd95d141c9a58d95199595960a21b6020808301919091526001600160601b0319606086811b8216602c85015285901b16828401528251603481840301815260549092019092528051910120612eac81614028565b612eb5816140be565b826001600160a01b031663724e78da836040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156120fb57600080fd5b6002546001600160a01b03163314612f51576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b612f5a816140be565b50565b6002546001600160a01b03163314612faa576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b6207a1208111612feb5760405162461bcd60e51b81526004018080602001828103825260218152602001806145446021913960400191505060405180910390fd5b816001600160a01b031663d3127e63826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561159757600080fd5b6002546001600160a01b0316331461307e576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b816001600160a01b031663604f37e9826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b15801561159757600080fd5b6002546001600160a01b03163314613113576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b604080516b1cd95d141c9a58d95199595960a21b6020808301919091526001600160601b0319606086811b8216602c85015285901b1682840152825160348184030181526054909201909252805191012061316d81613fcf565b604080516001600160a01b0380861682528416602082015280820183905290517fb878dd4b5762f4118ad54995be907dd2bcd915d942e4ac75580fba9b4ee4727f9181900360600190a1505050565b6002546001600160a01b03163314613209576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b6001600160a01b03821660009081526008602052604090205460ff16156132675780156132675760405162461bcd60e51b815260040180806020018281038252602b81526020018061458c602b913960400191505060405180910390fd5b816001600160a01b0316635a47a1a7826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b15801561159757600080fd5b60c881565b6002546001600160a01b03163314613301576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b64012a05f2008111613351576040805162461bcd60e51b8152602060048201526014602482015273496e76616c6964205f6d6178476173507269636560601b604482015290519081900360640190fd5b816001600160a01b031663d2fa635e826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561159757600080fd5b68327cb2734119d3b7a9601e1b81565b6003546001600160a01b031633146133f4576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b604080516539b2ba23b7bb60d11b6020808301919091526001600160601b0319606086811b8216602685015285901b16603a8301528251602e818403018152604e90920190925280519101206134498161435c565b604080516001600160a01b0380861682528416602082015280820183905290517f2701a94fd55a560e291f3c54d36580040670d6fde558a77a75d619e38139f7139181900360600190a1505050565b6002546001600160a01b031633146134e5576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b816001600160a01b0316632fbfe3d3826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561159757600080fd5b6002546001600160a01b03163314613578576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b62093a808111156135cf576040805162461bcd60e51b815260206004820152601c60248201527b26bcb1aa34b6b2b637b1b59d1034b73b30b634b2102fb13ab33332b960211b604482015290519081900360640190fd5b600054811161360f5760405162461bcd60e51b81526004018080602001828103825260278152602001806144c96027913960400191505060405180910390fd5b600055565b6002546001600160a01b03163314613661576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b816001600160a01b03166371089f4d826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561159757600080fd5b6002546001600160a01b031633146136fd576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b60408051631b5a5b9d60e21b6020808301919091526001600160601b0319606087811b8216602485015286901b166038830152604c80830185905283518084039091018152606c909201909252805191012061375881614028565b613761816140be565b61376c848484614166565b50505050565b6005546001600160a01b031681565b6002546001600160a01b03163314806137a957503360009081526009602052604090205460ff165b6137e8576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b816001600160a01b0316637c2eb9f7826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b15801561159757600080fd5b6002546001600160a01b0316331461387d576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6002546001600160a01b031633146138ee576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b60408051727661756c74536574546f6b656e436f6e66696760681b6020808301919091526001600160601b031960608c811b821660338501528b901b166047830152605b8201899052607b8201889052609b820187905260bb820186905284151560f890811b60db840152841515901b60dc830152825160bd81840301815260dd909201909252805191012061398381613fcf565b604080516001600160a01b03808c1682528a166020820152808201899052606081018890526080810187905260a0810186905284151560c082015283151560e082015290517f3510e9d8245371c6c1061c33781ce16bd0eafa03cd3d0781865036520af4c743918190036101000190a1505050505050505050565b6002546001600160a01b03163314613a4b576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b6040805166617070726f766560c81b6020808301919091526001600160601b0319606087811b8216602785015286901b16603b830152604f80830185905283518084039091018152606f9092019092528051910120613aa981613fcf565b604080516001600160a01b038087168252851660208201528082018490526060810183905290517f6af9d86ba7407a934e941ed8ae5f779369a88fe8ba2cd1c204185d6f8a8287fd9181900360800190a150505050565b6002546001600160a01b03163314613b4d576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b826001600160a01b031663efa10a6e83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156120fb57600080fd5b6002546001600160a01b03163314613bf1576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b6040805166617070726f766560c81b6020808301919091526001600160601b0319606087811b8216602785015286901b16603b830152604f80830185905283518084039091018152606f9092019092528051910120613c4f81614028565b613c58816140be565b836001600160a01b031663095ea7b384846040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015613caf57600080fd5b505af1158015613cc3573d6000803e3d6000fd5b505050506040513d60208110156115ab57600080fd5b60076020526000908152604090205481565b6002546001600160a01b03163314613d38576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b60408051727661756c74536574546f6b656e436f6e66696760681b6020808301919091526001600160601b031960608c811b821660338501528b901b166047830152605b8201899052607b8201889052609b820187905260bb820186905284151560f890811b60db840152841515901b60dc830152825160bd81840301815260dd9092019092528051910120613dcd81614028565b613dd6816140be565b60408051633c5a6e3560e01b81526001600160a01b038a81166004830152602482018a905260448201899052606482018890526084820187905285151560a483015284151560c48301529151918b1691633c5a6e359160e48082019260009290919082900301818387803b158015613e4d57600080fd5b505af1158015613e61573d6000803e3d6000fd5b50505050505050505050505050565b6002546001600160a01b03163314613ebd576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b604080516323b872dd60e01b81526001600160a01b038581166004830152306024830152604482018490529151918416916323b872dd916064808201926020929091908290030181600087803b1580156114c257600080fd5b6002546001600160a01b03163314613f63576040805162461bcd60e51b81526020600482015260166024820152600080516020614460833981519152604482015290519081900360640190fd5b826001600160a01b0316639b88938083836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156120fb57600080fd5b60005481565b6002546001600160a01b031681565b600054613fdd904290614366565b60008281526007602090815260409182902092909255805183815290517f5fb9c0ecf7b4a28c4c480212e868f9da7f373a2ed4d23498b0be6aadf35242fb929181900390910190a150565b6000818152600760205260409020546140725760405162461bcd60e51b81526004018080602001828103825260218152602001806144806021913960400191505060405180910390fd5b6000818152600760205260409020544211612f5a5760405162461bcd60e51b81526004018080602001828103825260278152602001806145656027913960400191505060405180910390fd5b60008181526007602052604090205461411d576040805162461bcd60e51b815260206004820152601c60248201527b26bcb1aa34b6b2b637b1b59d1034b73b30b634b2102fb0b1ba34b7b760211b604482015290519081900360640190fd5b600081815260076020908152604080832092909255815183815291517f194ed6dd5e37e2acc44a19455c3f208c4831ee695fe362d9c4ef2d316bc53aec9281900390910190a150565b604080516355138f0d60e11b8152306004820152905184916001600160a01b0383169163aa271e1a916024808201926020929091908290030181600087803b1580156141b157600080fd5b505af11580156141c5573d6000803e3d6000fd5b505050506040513d60208110156141db57600080fd5b5051614248576040805163cf456ae760e01b81523060048201526001602482015290516001600160a01b0383169163cf456ae791604480830192600092919082900301818387803b15801561422f57600080fd5b505af1158015614243573d6000803e3d6000fd5b505050505b806001600160a01b03166340c10f1984846040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561429f57600080fd5b505af11580156142b3573d6000803e3d6000fd5b50505050600654846001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156142f357600080fd5b505afa158015614307573d6000803e3d6000fd5b505050506040513d602081101561431d57600080fd5b5051111561376c5760405162461bcd60e51b81526004018080602001828103825260248152602001806143c66024913960400191505060405180910390fd5b600154613fdd9042905b6000828201838110156143be576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b939250505056fe4d796354696d656c6f636b3a206d6178546f6b656e537570706c792065786365656465644d796354696d656c6f636b3a20696e76616c6964205f737461626c655461784261736973506f696e74734d796354696d656c6f636b3a20696e76616c6964205f6d617267696e4665654261736973506f696e74734d796354696d656c6f636b3a20696e76616c6964205f6d696e50726f6669744270734d796354696d656c6f636b3a20666f7262696464656e000000000000000000004d796354696d656c6f636b3a20616374696f6e206e6f74207369676e616c6c65644d796354696d656c6f636b3a20696e76616c6964205f737761704665654261736973506f696e74734d796354696d656c6f636b3a206275666665722063616e6e6f74206265206465637265617365644d796354696d656c6f636b3a20696e76616c6964205f66756e64696e6752617465466163746f724d796354696d656c6f636b3a20696e76616c6964205f737461626c6546756e64696e6752617465466163746f724d796354696d656c6f636b3a20696e76616c6964205f6d61784c657665726167654d796354696d656c6f636b3a20616374696f6e2074696d65206e6f7420796574207061737365644d796354696d656c6f636b3a20696e76616c6964205f696e507269766174655472616e736665724d6f64654d796354696d656c6f636b3a20746f6b656e206e6f74207965742077686974656c69737465644d796354696d656c6f636b3a20696e76616c6964205f737461626c65537761704665654261736973506f696e74734d796354696d656c6f636b3a20696e76616c6964205f6c69717569646174696f6e4665655573644d796354696d656c6f636b3a20696e76616c6964205f7461784261736973506f696e74734d796354696d656c6f636b3a20696e76616c6964205f6d696e744275726e4665654261736973506f696e7473a2646970667358221220d43461beb1afbaf2809f2ab58131e6a12caa2a631437fd8d56b7a947979df45064736f6c634300060c00330000000000000000000000003e2d84477631691cc49b75a41bae7ca8e032e8ac0000000000000000000000000000000000000000000000000000000000000e1000000000000000000000000000000000000000000000000000000000000697800000000000000000000000007ab8083f6eaac244a5248d5a23f348f60e3cd57e0000000000000000000000008da386b8e9e3c27411ec5972c5d91399ad0b9d020000000000000000000000003e2d84477631691cc49b75a41bae7ca8e032e8ac00000000000000000000000000000000000000000052b7d2dcc80cd2e4000000
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000003e2d84477631691cc49b75a41bae7ca8e032e8ac0000000000000000000000000000000000000000000000000000000000000e1000000000000000000000000000000000000000000000000000000000000697800000000000000000000000007ab8083f6eaac244a5248d5a23f348f60e3cd57e0000000000000000000000008da386b8e9e3c27411ec5972c5d91399ad0b9d020000000000000000000000003e2d84477631691cc49b75a41bae7ca8e032e8ac00000000000000000000000000000000000000000052b7d2dcc80cd2e4000000
-----Decoded View---------------
Arg [0] : _admin (address): 0x3e2d84477631691cc49b75a41bae7ca8e032e8ac
Arg [1] : _buffer (uint256): 3600
Arg [2] : _longBuffer (uint256): 432000
Arg [3] : _rewardManager (address): 0x7ab8083f6eaac244a5248d5a23f348f60e3cd57e
Arg [4] : _tokenManager (address): 0x8da386b8e9e3c27411ec5972c5d91399ad0b9d02
Arg [5] : _mintReceiver (address): 0x3e2d84477631691cc49b75a41bae7ca8e032e8ac
Arg [6] : _maxTokenSupply (uint256): 100000000000000000000000000
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000003e2d84477631691cc49b75a41bae7ca8e032e8ac
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000e10
Arg [2] : 0000000000000000000000000000000000000000000000000000000000069780
Arg [3] : 0000000000000000000000007ab8083f6eaac244a5248d5a23f348f60e3cd57e
Arg [4] : 0000000000000000000000008da386b8e9e3c27411ec5972c5d91399ad0b9d02
Arg [5] : 0000000000000000000000003e2d84477631691cc49b75a41bae7ca8e032e8ac
Arg [6] : 00000000000000000000000000000000000000000052b7d2dcc80cd2e4000000
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.