Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 445 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Exit_target Repa... | 13597223 | 1053 days ago | IN | 0 ETH | 0.14991035 | ||||
Exit_target Repa... | 13571880 | 1057 days ago | IN | 0 ETH | 0.10765349 | ||||
Exit_target Repa... | 13501381 | 1069 days ago | IN | 0 ETH | 0.18656584 | ||||
Exit_target Repa... | 13500780 | 1069 days ago | IN | 0 ETH | 0.18590509 | ||||
Exit_target Repa... | 13487083 | 1071 days ago | IN | 0 ETH | 0.04321392 | ||||
Exit_target Repa... | 13485573 | 1071 days ago | IN | 0 ETH | 0.08376007 | ||||
Join | 13460910 | 1075 days ago | IN | 0 ETH | 0.08694974 | ||||
Join | 13455832 | 1076 days ago | IN | 0 ETH | 0.14413455 | ||||
Join | 13439188 | 1078 days ago | IN | 0 ETH | 0.11433716 | ||||
Join | 13438583 | 1078 days ago | IN | 0 ETH | 0.09812246 | ||||
Join | 13438574 | 1078 days ago | IN | 0 ETH | 0.0207768 | ||||
Exit_target Repa... | 13410498 | 1083 days ago | IN | 0 ETH | 0.02027126 | ||||
Join | 13408910 | 1083 days ago | IN | 0 ETH | 0.08467552 | ||||
Join | 13403649 | 1084 days ago | IN | 0 ETH | 0.0754849 | ||||
Exit_target Repa... | 13403218 | 1084 days ago | IN | 0 ETH | 0.01972957 | ||||
Join | 13392070 | 1086 days ago | IN | 0 ETH | 0.06371085 | ||||
Join | 13391915 | 1086 days ago | IN | 0 ETH | 0.01809015 | ||||
Join | 13391496 | 1086 days ago | IN | 0 ETH | 0.05637452 | ||||
Join | 13391032 | 1086 days ago | IN | 0 ETH | 0.06233556 | ||||
Join | 13381557 | 1087 days ago | IN | 0 ETH | 0.01735668 | ||||
Join | 13381557 | 1087 days ago | IN | 0 ETH | 0.07901923 | ||||
Join | 13371990 | 1089 days ago | IN | 0 ETH | 0.08815441 | ||||
Join | 13316595 | 1097 days ago | IN | 0 ETH | 0.08326056 | ||||
Join | 13288003 | 1102 days ago | IN | 0 ETH | 0.07374539 | ||||
Exit_target Repa... | 13260846 | 1106 days ago | IN | 0 ETH | 0.0135813 |
Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers. Name tag integration is not available in advanced view.
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | ||||
---|---|---|---|---|---|---|---|
13597223 | 1053 days ago | 0 ETH | |||||
13597223 | 1053 days ago | 0 ETH | |||||
13597223 | 1053 days ago | 0 ETH | |||||
13597223 | 1053 days ago | 0 ETH | |||||
13597223 | 1053 days ago | 0 ETH | |||||
13597223 | 1053 days ago | 0 ETH | |||||
13597223 | 1053 days ago | 0 ETH | |||||
13597223 | 1053 days ago | 0 ETH | |||||
13597223 | 1053 days ago | 0 ETH | |||||
13597223 | 1053 days ago | 0 ETH | |||||
13597223 | 1053 days ago | 0 ETH | |||||
13597223 | 1053 days ago | 0 ETH | |||||
13597223 | 1053 days ago | 0 ETH | |||||
13597223 | 1053 days ago | 0 ETH | |||||
13597223 | 1053 days ago | 0 ETH | |||||
13571880 | 1057 days ago | 0 ETH | |||||
13571880 | 1057 days ago | 0 ETH | |||||
13571880 | 1057 days ago | 0 ETH | |||||
13571880 | 1057 days ago | 0 ETH | |||||
13571880 | 1057 days ago | 0 ETH | |||||
13571880 | 1057 days ago | 0 ETH | |||||
13571880 | 1057 days ago | 0 ETH | |||||
13571880 | 1057 days ago | 0 ETH | |||||
13571880 | 1057 days ago | 0 ETH | |||||
13571880 | 1057 days ago | 0 ETH |
Loading...
Loading
Contract Name:
CDPManager01_Fallback
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: bsl-1.1 /* Copyright 2020 Unit Protocol: Artem Zakharov ([email protected]). */ pragma solidity 0.7.6; pragma abicoder v2; import '../interfaces/IOracleRegistry.sol'; import '../interfaces/IKeydonixOracleUsd.sol'; import '../interfaces/IToken.sol'; import '../interfaces/IVault.sol'; import '../interfaces/ICDPRegistry.sol'; import '../interfaces/IVaultManagerParameters.sol'; import '../interfaces/IVaultParameters.sol'; import '../helpers/ReentrancyGuard.sol'; import '../helpers/SafeMath.sol'; /** * @title CDPManager01_Fallback **/ contract CDPManager01_Fallback is ReentrancyGuard { using SafeMath for uint; IVault public immutable vault; IVaultManagerParameters public immutable vaultManagerParameters; IOracleRegistry public immutable oracleRegistry; ICDPRegistry public immutable cdpRegistry; uint public constant Q112 = 2 ** 112; uint public constant DENOMINATOR_1E5 = 1e5; /** * @dev Trigger when joins are happened **/ event Join(address indexed asset, address indexed owner, uint main, uint usdp); /** * @dev Trigger when exits are happened **/ event Exit(address indexed asset, address indexed owner, uint main, uint usdp); /** * @dev Trigger when liquidations are initiated **/ event LiquidationTriggered(address indexed asset, address indexed owner); modifier checkpoint(address asset, address owner) { _; cdpRegistry.checkpoint(asset, owner); } /** * @param _vaultManagerParameters The address of the contract with Vault manager parameters * @param _oracleRegistry The address of the oracle registry * @param _cdpRegistry The address of the CDP registry **/ constructor(address _vaultManagerParameters, address _oracleRegistry, address _cdpRegistry) { require( _vaultManagerParameters != address(0) && _oracleRegistry != address(0) && _cdpRegistry != address(0), "Unit Protocol: INVALID_ARGS" ); vaultManagerParameters = IVaultManagerParameters(_vaultManagerParameters); vault = IVault(IVaultParameters(IVaultManagerParameters(_vaultManagerParameters).vaultParameters()).vault()); oracleRegistry = IOracleRegistry(_oracleRegistry); cdpRegistry = ICDPRegistry(_cdpRegistry); } /** * @notice Depositing tokens must be pre-approved to Vault address * @notice position actually considered as spawned only when debt > 0 * @dev Deposits collateral and/or borrows USDP * @param asset The address of the collateral * @param assetAmount The amount of the collateral to deposit * @param usdpAmount The amount of USDP token to borrow **/ function join(address asset, uint assetAmount, uint usdpAmount, IKeydonixOracleUsd.ProofDataStruct calldata proofData) public nonReentrant checkpoint(asset, msg.sender) { require(usdpAmount != 0 || assetAmount != 0, "Unit Protocol: USELESS_TX"); require(IToken(asset).decimals() <= 18, "Unit Protocol: NOT_SUPPORTED_DECIMALS"); if (usdpAmount == 0) { vault.depositMain(asset, msg.sender, assetAmount); } else { uint oracleType = _selectOracleType(asset); bool spawned = vault.debts(asset, msg.sender) != 0; if (!spawned) { // spawn a position vault.spawn(asset, msg.sender, oracleType); } if (assetAmount != 0) { vault.depositMain(asset, msg.sender, assetAmount); } // mint USDP to owner vault.borrow(asset, msg.sender, usdpAmount); // check collateralization _ensurePositionCollateralization(asset, msg.sender, proofData); } // fire an event emit Join(asset, msg.sender, assetAmount, usdpAmount); } /** * @notice Tx sender must have a sufficient USDP balance to pay the debt * @dev Withdraws collateral and repays specified amount of debt * @param asset The address of the collateral * @param assetAmount The amount of the collateral to withdraw * @param usdpAmount The amount of USDP to repay **/ function exit(address asset, uint assetAmount, uint usdpAmount, IKeydonixOracleUsd.ProofDataStruct calldata proofData) public nonReentrant checkpoint(asset, msg.sender) returns (uint) { // check usefulness of tx require(assetAmount != 0 || usdpAmount != 0, "Unit Protocol: USELESS_TX"); uint debt = vault.debts(asset, msg.sender); // catch full repayment if (usdpAmount > debt) { usdpAmount = debt; } if (assetAmount == 0) { _repay(asset, msg.sender, usdpAmount); } else { if (debt == usdpAmount) { vault.withdrawMain(asset, msg.sender, assetAmount); if (usdpAmount != 0) { _repay(asset, msg.sender, usdpAmount); } } else { // withdraw collateral to the owner address vault.withdrawMain(asset, msg.sender, assetAmount); if (usdpAmount != 0) { _repay(asset, msg.sender, usdpAmount); } vault.update(asset, msg.sender); _ensurePositionCollateralization(asset, msg.sender, proofData); } } // fire an event emit Exit(asset, msg.sender, assetAmount, usdpAmount); return usdpAmount; } /** * @notice Repayment is the sum of the principal and interest * @dev Withdraws collateral and repays specified amount of debt * @param asset The address of the collateral * @param assetAmount The amount of the collateral to withdraw * @param repayment The target repayment amount **/ function exit_targetRepayment(address asset, uint assetAmount, uint repayment, IKeydonixOracleUsd.ProofDataStruct calldata proofData) external returns (uint) { uint usdpAmount = _calcPrincipal(asset, msg.sender, repayment); return exit(asset, assetAmount, usdpAmount, proofData); } // decreases debt function _repay(address asset, address owner, uint usdpAmount) internal { uint fee = vault.calculateFee(asset, owner, usdpAmount); vault.chargeFee(vault.usdp(), owner, fee); // burn USDP from the owner's balance uint debtAfter = vault.repay(asset, owner, usdpAmount); if (debtAfter == 0) { // clear unused storage vault.destroy(asset, owner); } } function _ensurePositionCollateralization(address asset, address owner, IKeydonixOracleUsd.ProofDataStruct calldata proofData) internal view { // collateral value of the position in USD uint usdValue_q112 = getCollateralUsdValue_q112(asset, owner, proofData); // USD limit of the position uint usdLimit = usdValue_q112 * vaultManagerParameters.initialCollateralRatio(asset) / Q112 / 100; // revert if collateralization is not enough require(vault.getTotalDebt(asset, owner) <= usdLimit, "Unit Protocol: UNDERCOLLATERALIZED"); } // Liquidation Trigger /** * @dev Triggers liquidation of a position * @param asset The address of the collateral token of a position * @param owner The owner of the position **/ function triggerLiquidation(address asset, address owner, IKeydonixOracleUsd.ProofDataStruct calldata proofData) external nonReentrant { // USD value of the collateral uint usdValue_q112 = getCollateralUsdValue_q112(asset, owner, proofData); // reverts if a position is not liquidatable require(_isLiquidatablePosition(asset, owner, usdValue_q112), "Unit Protocol: SAFE_POSITION"); uint liquidationDiscount_q112 = usdValue_q112.mul( vaultManagerParameters.liquidationDiscount(asset) ).div(DENOMINATOR_1E5); uint initialLiquidationPrice = usdValue_q112.sub(liquidationDiscount_q112).div(Q112); // sends liquidation command to the Vault vault.triggerLiquidation(asset, owner, initialLiquidationPrice); // fire an liquidation event emit LiquidationTriggered(asset, owner); } function getCollateralUsdValue_q112(address asset, address owner, IKeydonixOracleUsd.ProofDataStruct calldata proofData) public view returns (uint) { uint oracleType = _selectOracleType(asset); return IKeydonixOracleUsd(oracleRegistry.oracleByType(oracleType)).assetToUsd(asset, vault.collaterals(asset, owner), proofData); } /** * @dev Determines whether a position is liquidatable * @param asset The address of the collateral * @param owner The owner of the position * @param usdValue_q112 Q112-encoded USD value of the collateral * @return boolean value, whether a position is liquidatable **/ function _isLiquidatablePosition( address asset, address owner, uint usdValue_q112 ) internal view returns (bool) { uint debt = vault.getTotalDebt(asset, owner); // position is collateralized if there is no debt if (debt == 0) return false; return debt.mul(100).mul(Q112).div(usdValue_q112) >= vaultManagerParameters.liquidationRatio(asset); } function _selectOracleType(address asset) internal view returns (uint oracleType) { oracleType = _getOracleType(asset); require(oracleType != 0, "Unit Protocol: INVALID_ORACLE_TYPE"); address oracle = oracleRegistry.oracleByType(oracleType); require(oracle != address(0), "Unit Protocol: DISABLED_ORACLE"); } /** * @dev Determines whether a position is liquidatable * @param asset The address of the collateral * @param owner The owner of the position * @return boolean value, whether a position is liquidatable **/ function isLiquidatablePosition( address asset, address owner, IKeydonixOracleUsd.ProofDataStruct calldata proofData ) external view returns (bool) { uint usdValue_q112 = getCollateralUsdValue_q112(asset, owner, proofData); return _isLiquidatablePosition(asset, owner, usdValue_q112); } /** * @dev Calculates current utilization ratio * @param asset The address of the collateral * @param owner The owner of the position * @return utilization ratio **/ function utilizationRatio( address asset, address owner, IKeydonixOracleUsd.ProofDataStruct calldata proofData ) public view returns (uint) { uint debt = vault.getTotalDebt(asset, owner); if (debt == 0) return uint(0); uint usdValue_q112 = getCollateralUsdValue_q112(asset, owner, proofData); return debt.mul(100).mul(Q112).div(usdValue_q112); } /** * @dev Calculates liquidation price * @param asset The address of the collateral * @param owner The owner of the position * @return Q112-encoded liquidation price **/ function liquidationPrice_q112( address asset, address owner ) external view returns (uint) { uint debt = vault.getTotalDebt(asset, owner); if (debt == 0) return uint(-1); uint collateralLiqPrice = debt.mul(100).mul(Q112).div(vaultManagerParameters.liquidationRatio(asset)); require(IToken(asset).decimals() <= 18, "Unit Protocol: NOT_SUPPORTED_DECIMALS"); return collateralLiqPrice / vault.collaterals(asset, owner) / 10 ** (18 - IToken(asset).decimals()); } function _calcPrincipal(address asset, address owner, uint repayment) internal view returns (uint) { uint fee = vault.stabilityFee(asset, owner) * (block.timestamp - vault.lastUpdate(asset, owner)) / 365 days; return repayment * DENOMINATOR_1E5 / (DENOMINATOR_1E5 + fee); } function _getOracleType(address asset) internal view returns (uint) { uint[] memory keydonixOracleTypes = oracleRegistry.getKeydonixOracleTypes(); for (uint i = 0; i < keydonixOracleTypes.length; i++) { if (IVaultParameters(vaultManagerParameters.vaultParameters()).isOracleTypeEnabled(keydonixOracleTypes[i], asset)) { return keydonixOracleTypes[i]; } } revert("Unit Protocol: NO_ORACLE_FOUND"); } }
pragma abicoder v2; interface IOracleRegistry { struct Oracle { uint oracleType; address oracleAddress; } function WETH ( ) external view returns ( address ); function getKeydonixOracleTypes ( ) external view returns ( uint256[] memory ); function getOracles ( ) external view returns ( Oracle[] memory foundOracles ); function keydonixOracleTypes ( uint256 ) external view returns ( uint256 ); function maxOracleType ( ) external view returns ( uint256 ); function oracleByAsset ( address asset ) external view returns ( address ); function oracleByType ( uint256 ) external view returns ( address ); function oracleTypeByAsset ( address ) external view returns ( uint256 ); function oracleTypeByOracle ( address ) external view returns ( uint256 ); function setKeydonixOracleTypes ( uint256[] memory _keydonixOracleTypes ) external; function setOracle ( uint256 oracleType, address oracle ) external; function setOracleTypeForAsset ( address asset, uint256 oracleType ) external; function setOracleTypeForAssets ( address[] memory assets, uint256 oracleType ) external; function unsetOracle ( uint256 oracleType ) external; function unsetOracleForAsset ( address asset ) external; function unsetOracleForAssets ( address[] memory assets ) external; function vaultParameters ( ) external view returns ( address ); }
pragma abicoder v2; interface IKeydonixOracleUsd { struct ProofDataStruct { bytes block; bytes accountProofNodesRlp; bytes reserveAndTimestampProofNodesRlp; bytes priceAccumulatorProofNodesRlp; } // returns Q112-encoded value function assetToUsd(address asset, uint amount, ProofDataStruct calldata proofData) external view returns (uint); }
interface IToken { function decimals() external view returns (uint8); function symbol() external view returns (string memory); function balanceOf(address) external view returns (uint); }
interface IVault { function DENOMINATOR_1E2 ( ) external view returns ( uint256 ); function DENOMINATOR_1E5 ( ) external view returns ( uint256 ); function borrow ( address asset, address user, uint256 amount ) external returns ( uint256 ); function calculateFee ( address asset, address user, uint256 amount ) external view returns ( uint256 ); function changeOracleType ( address asset, address user, uint256 newOracleType ) external; function chargeFee ( address asset, address user, uint256 amount ) external; function col ( ) external view returns ( address ); function colToken ( address, address ) external view returns ( uint256 ); function collaterals ( address, address ) external view returns ( uint256 ); function debts ( address, address ) external view returns ( uint256 ); function depositCol ( address asset, address user, uint256 amount ) external; function depositEth ( address user ) external payable; function depositMain ( address asset, address user, uint256 amount ) external; function destroy ( address asset, address user ) external; function getTotalDebt ( address asset, address user ) external view returns ( uint256 ); function lastUpdate ( address, address ) external view returns ( uint256 ); function liquidate ( address asset, address positionOwner, uint256 mainAssetToLiquidator, uint256 colToLiquidator, uint256 mainAssetToPositionOwner, uint256 colToPositionOwner, uint256 repayment, uint256 penalty, address liquidator ) external; function liquidationBlock ( address, address ) external view returns ( uint256 ); function liquidationFee ( address, address ) external view returns ( uint256 ); function liquidationPrice ( address, address ) external view returns ( uint256 ); function oracleType ( address, address ) external view returns ( uint256 ); function repay ( address asset, address user, uint256 amount ) external returns ( uint256 ); function spawn ( address asset, address user, uint256 _oracleType ) external; function stabilityFee ( address, address ) external view returns ( uint256 ); function tokenDebts ( address ) external view returns ( uint256 ); function triggerLiquidation ( address asset, address positionOwner, uint256 initialPrice ) external; function update ( address asset, address user ) external; function usdp ( ) external view returns ( address ); function vaultParameters ( ) external view returns ( address ); function weth ( ) external view returns ( address payable ); function withdrawCol ( address asset, address user, uint256 amount ) external; function withdrawEth ( address user, uint256 amount ) external; function withdrawMain ( address asset, address user, uint256 amount ) external; }
pragma experimental ABIEncoderV2; interface ICDPRegistry { struct CDP { address asset; address owner; } function batchCheckpoint ( address[] calldata assets, address[] calldata owners ) external; function batchCheckpointForAsset ( address asset, address[] calldata owners ) external; function checkpoint ( address asset, address owner ) external; function cr ( ) external view returns ( address ); function getAllCdps ( ) external view returns ( CDP[] memory r ); function getCdpsByCollateral ( address asset ) external view returns ( CDP[] memory cdps ); function getCdpsByOwner ( address owner ) external view returns ( CDP[] memory r ); function getCdpsCount ( ) external view returns ( uint256 totalCdpCount ); function getCdpsCountForCollateral ( address asset ) external view returns ( uint256 ); function isAlive ( address asset, address owner ) external view returns ( bool ); function isListed ( address asset, address owner ) external view returns ( bool ); function vault ( ) external view returns ( address ); }
interface IVaultManagerParameters { function devaluationPeriod ( address ) external view returns ( uint256 ); function initialCollateralRatio ( address ) external view returns ( uint256 ); function liquidationDiscount ( address ) external view returns ( uint256 ); function liquidationRatio ( address ) external view returns ( uint256 ); function maxColPercent ( address ) external view returns ( uint256 ); function minColPercent ( address ) external view returns ( uint256 ); function setColPartRange ( address asset, uint256 min, uint256 max ) external; function setCollateral ( address asset, uint256 stabilityFeeValue, uint256 liquidationFeeValue, uint256 initialCollateralRatioValue, uint256 liquidationRatioValue, uint256 liquidationDiscountValue, uint256 devaluationPeriodValue, uint256 usdpLimit, uint256[] calldata oracles, uint256 minColP, uint256 maxColP ) external; function setDevaluationPeriod ( address asset, uint256 newValue ) external; function setInitialCollateralRatio ( address asset, uint256 newValue ) external; function setLiquidationDiscount ( address asset, uint256 newValue ) external; function setLiquidationRatio ( address asset, uint256 newValue ) external; function vaultParameters ( ) external view returns ( address ); }
interface IVaultParameters { function canModifyVault ( address ) external view returns ( bool ); function foundation ( ) external view returns ( address ); function isManager ( address ) external view returns ( bool ); function isOracleTypeEnabled ( uint256, address ) external view returns ( bool ); function liquidationFee ( address ) external view returns ( uint256 ); function setCollateral ( address asset, uint256 stabilityFeeValue, uint256 liquidationFeeValue, uint256 usdpLimit, uint256[] calldata oracles ) external; function setFoundation ( address newFoundation ) external; function setLiquidationFee ( address asset, uint256 newValue ) external; function setManager ( address who, bool permit ) external; function setOracleType ( uint256 _type, address asset, bool enabled ) external; function setStabilityFee ( address asset, uint256 newValue ) external; function setTokenDebtLimit ( address asset, uint256 limit ) external; function setVaultAccess ( address who, bool permit ) external; function stabilityFee ( address ) external view returns ( uint256 ); function tokenDebtLimit ( address ) external view returns ( uint256 ); function vault ( ) external view returns ( address ); function vaultParameters ( ) external view returns ( address ); }
// SPDX-License-Identifier: MIT pragma solidity 0.7.6; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor () { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: bsl-1.1 /* Copyright 2020 Unit Protocol: Artem Zakharov ([email protected]). */ pragma solidity 0.7.6; /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256 c) { if (a == 0) { return 0; } c = a * b; assert(c / a == b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0, "SafeMath: division by zero"); return a / b; } /** * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256 c) { c = a + b; assert(c >= a); return c; } }
{ "metadata": { "useLiteralContent": true }, "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_vaultManagerParameters","type":"address"},{"internalType":"address","name":"_oracleRegistry","type":"address"},{"internalType":"address","name":"_cdpRegistry","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"main","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"usdp","type":"uint256"}],"name":"Exit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"main","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"usdp","type":"uint256"}],"name":"Join","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"}],"name":"LiquidationTriggered","type":"event"},{"inputs":[],"name":"DENOMINATOR_1E5","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Q112","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cdpRegistry","outputs":[{"internalType":"contract ICDPRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"assetAmount","type":"uint256"},{"internalType":"uint256","name":"usdpAmount","type":"uint256"},{"components":[{"internalType":"bytes","name":"block","type":"bytes"},{"internalType":"bytes","name":"accountProofNodesRlp","type":"bytes"},{"internalType":"bytes","name":"reserveAndTimestampProofNodesRlp","type":"bytes"},{"internalType":"bytes","name":"priceAccumulatorProofNodesRlp","type":"bytes"}],"internalType":"struct IKeydonixOracleUsd.ProofDataStruct","name":"proofData","type":"tuple"}],"name":"exit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"assetAmount","type":"uint256"},{"internalType":"uint256","name":"repayment","type":"uint256"},{"components":[{"internalType":"bytes","name":"block","type":"bytes"},{"internalType":"bytes","name":"accountProofNodesRlp","type":"bytes"},{"internalType":"bytes","name":"reserveAndTimestampProofNodesRlp","type":"bytes"},{"internalType":"bytes","name":"priceAccumulatorProofNodesRlp","type":"bytes"}],"internalType":"struct IKeydonixOracleUsd.ProofDataStruct","name":"proofData","type":"tuple"}],"name":"exit_targetRepayment","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"components":[{"internalType":"bytes","name":"block","type":"bytes"},{"internalType":"bytes","name":"accountProofNodesRlp","type":"bytes"},{"internalType":"bytes","name":"reserveAndTimestampProofNodesRlp","type":"bytes"},{"internalType":"bytes","name":"priceAccumulatorProofNodesRlp","type":"bytes"}],"internalType":"struct IKeydonixOracleUsd.ProofDataStruct","name":"proofData","type":"tuple"}],"name":"getCollateralUsdValue_q112","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"components":[{"internalType":"bytes","name":"block","type":"bytes"},{"internalType":"bytes","name":"accountProofNodesRlp","type":"bytes"},{"internalType":"bytes","name":"reserveAndTimestampProofNodesRlp","type":"bytes"},{"internalType":"bytes","name":"priceAccumulatorProofNodesRlp","type":"bytes"}],"internalType":"struct IKeydonixOracleUsd.ProofDataStruct","name":"proofData","type":"tuple"}],"name":"isLiquidatablePosition","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"assetAmount","type":"uint256"},{"internalType":"uint256","name":"usdpAmount","type":"uint256"},{"components":[{"internalType":"bytes","name":"block","type":"bytes"},{"internalType":"bytes","name":"accountProofNodesRlp","type":"bytes"},{"internalType":"bytes","name":"reserveAndTimestampProofNodesRlp","type":"bytes"},{"internalType":"bytes","name":"priceAccumulatorProofNodesRlp","type":"bytes"}],"internalType":"struct IKeydonixOracleUsd.ProofDataStruct","name":"proofData","type":"tuple"}],"name":"join","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"liquidationPrice_q112","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oracleRegistry","outputs":[{"internalType":"contract IOracleRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"components":[{"internalType":"bytes","name":"block","type":"bytes"},{"internalType":"bytes","name":"accountProofNodesRlp","type":"bytes"},{"internalType":"bytes","name":"reserveAndTimestampProofNodesRlp","type":"bytes"},{"internalType":"bytes","name":"priceAccumulatorProofNodesRlp","type":"bytes"}],"internalType":"struct IKeydonixOracleUsd.ProofDataStruct","name":"proofData","type":"tuple"}],"name":"triggerLiquidation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"components":[{"internalType":"bytes","name":"block","type":"bytes"},{"internalType":"bytes","name":"accountProofNodesRlp","type":"bytes"},{"internalType":"bytes","name":"reserveAndTimestampProofNodesRlp","type":"bytes"},{"internalType":"bytes","name":"priceAccumulatorProofNodesRlp","type":"bytes"}],"internalType":"struct IKeydonixOracleUsd.ProofDataStruct","name":"proofData","type":"tuple"}],"name":"utilizationRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vaultManagerParameters","outputs":[{"internalType":"contract IVaultManagerParameters","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6101006040523480156200001257600080fd5b506040516200280438038062002804833981016040819052620000359162000206565b60016000556001600160a01b038316158015906200005b57506001600160a01b03821615155b80156200007057506001600160a01b03811615155b620000985760405162461bcd60e51b81526004016200008f906200024f565b60405180910390fd5b826001600160a01b031660a0816001600160a01b031660601b81525050826001600160a01b031663aca345ee6040518163ffffffff1660e01b815260040160206040518083038186803b158015620000ef57600080fd5b505afa15801562000104573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012a9190620001e2565b6001600160a01b031663fbfa77cf6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200016357600080fd5b505afa15801562000178573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019e9190620001e2565b6001600160601b0319606091821b811660805292811b831660c0521b1660e0525062000286565b80516001600160a01b0381168114620001dd57600080fd5b919050565b600060208284031215620001f4578081fd5b620001ff82620001c5565b9392505050565b6000806000606084860312156200021b578182fd5b6200022684620001c5565b92506200023660208501620001c5565b91506200024660408501620001c5565b90509250925092565b6020808252601b908201527f556e69742050726f746f636f6c3a20494e56414c49445f415247530000000000604082015260600190565b60805160601c60a05160601c60c05160601c60e05160601c6124976200036d600039806108aa5280610ece528061135c52508061092552806111b95280611a745280611cac5250806102a35280610fe55280611380528061175552806119895280611d4f5250806101ee528061047752806105db52806106a4528061073952806107ce528061094c5280610b875280610c085280610cc45280610d4d5280610dd052806110b6528061124f52806113a4528061146a52806114f75280611526528061162052806116ca528061180652806118c55280611b435280611be352506124976000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063944dd7611161008c578063ab15d14111610066578063ab15d141146101be578063ab2a2a82146101d1578063b7ebdc0c146101d9578063fbfa77cf146101e1576100ea565b8063944dd7611461019057806394cc855c146101a3578063971182c6146101b6576100ea565b80634bb93ab1116100c85780634bb93ab11461013357806352b844d71461014857806353553b891461015b57806384a759301461017b576100ea565b806312dc1dcc146100ef5780633bf7a83e14610118578063401594e714610120575b600080fd5b6101026100fd366004611ee3565b6101e9565b60405161010f91906123cf565b60405180910390f35b61010261052f565b61010261012e366004611f7b565b610537565b61013b610923565b60405161010f919061210d565b610102610156366004611f1b565b610947565b61016e610169366004611f1b565b610a2b565b60405161010f919061221f565b61018e610189366004611f7b565b610a4f565b005b61018e61019e366004611f1b565b610f44565b6101026101b1366004611f7b565b611166565b61010261118c565b6101026101cc366004611f1b565b611193565b61013b61135a565b61013b61137e565b61013b6113a2565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d6446d4385856040518363ffffffff1660e01b815260040161023a929190612121565b60206040518083038186803b15801561025257600080fd5b505afa158015610266573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028a91906120aa565b90508061029c57600019915050610529565b600061035c7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633bffbbe2876040518263ffffffff1660e01b81526004016102ed919061210d565b60206040518083038186803b15801561030557600080fd5b505afa158015610319573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033d91906120aa565b610356600160701b6103508660646113c6565b906113c6565b906113eb565b90506012856001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561039957600080fd5b505afa1580156103ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d191906120c2565b60ff1611156103fb5760405162461bcd60e51b81526004016103f29061238a565b60405180910390fd5b846001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561043457600080fd5b505afa158015610448573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046c91906120c2565b60120360ff16600a0a7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e51e119e87876040518363ffffffff1660e01b81526004016104c3929190612121565b60206040518083038186803b1580156104db57600080fd5b505afa1580156104ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051391906120aa565b828161051b57fe5b048161052357fe5b04925050505b92915050565b600160701b81565b600060026000541415610591576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000558433851515806105a557508415155b6105c15760405162461bcd60e51b81526004016103f290612298565b604051634ac1c33d60e01b81526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690634ac1c33d90610612908b903390600401612121565b60206040518083038186803b15801561062a57600080fd5b505afa15801561063e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066291906120aa565b905080861115610670578095505b8661068557610680883388611450565b610842565b85811415610722576040516311af95b160e31b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638d7cad88906106dd908b9033908c9060040161213b565b600060405180830381600087803b1580156106f757600080fd5b505af115801561070b573d6000803e3d6000fd5b505050508560001461068057610680883388611450565b6040516311af95b160e31b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638d7cad8890610772908b9033908c9060040161213b565b600060405180830381600087803b15801561078c57600080fd5b505af11580156107a0573d6000803e3d6000fd5b50505050856000146107b7576107b7883388611450565b60405163c640752d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c640752d90610805908b903390600401612121565b600060405180830381600087803b15801561081f57600080fd5b505af1158015610833573d6000803e3d6000fd5b5050505061084288338761173b565b336001600160a01b0316886001600160a01b03167fa702ae6024e8b4c2b0eb162b1453dacb93cf6922f5a2d7236faed898c21148f889896040516108879291906123ef565b60405180910390a385935050604051632ed56dff60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bb55b7fc906108e19085908590600401612121565b600060405180830381600087803b1580156108fb57600080fd5b505af115801561090f573d6000803e3d6000fd5b505060016000555092979650505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d6446d4386866040518363ffffffff1660e01b8152600401610998929190612121565b60206040518083038186803b1580156109b057600080fd5b505afa1580156109c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e891906120aa565b9050806109f9576000915050610a24565b6000610a06868686611193565b9050610a1f81610356600160701b6103508660646113c6565b925050505b9392505050565b600080610a39858585611193565b9050610a468585836118c0565b95945050505050565b60026000541415610aa7576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600055833383151580610abb57508415155b610ad75760405162461bcd60e51b81526004016103f290612298565b6012866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610b1257600080fd5b505afa158015610b26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4a91906120c2565b60ff161115610b6b5760405162461bcd60e51b81526004016103f29061238a565b83610bf75760405163770c1acf60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ee18359e90610bc090899033908a9060040161213b565b600060405180830381600087803b158015610bda57600080fd5b505af1158015610bee573d6000803e3d6000fd5b50505050610e6a565b6000610c0287611a30565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ac1c33d89336040518363ffffffff1660e01b8152600401610c54929190612121565b60206040518083038186803b158015610c6c57600080fd5b505afa158015610c80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca491906120aa565b1515905080610d3057604051630c6d894f60e41b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c6d894f090610cfd908b903390879060040161213b565b600060405180830381600087803b158015610d1757600080fd5b505af1158015610d2b573d6000803e3d6000fd5b505050505b8615610db95760405163770c1acf60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ee18359e90610d86908b9033908c9060040161213b565b600060405180830381600087803b158015610da057600080fd5b505af1158015610db4573d6000803e3d6000fd5b505050505b6040516314890dcb60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635224372c90610e09908b9033908b9060040161213b565b602060405180830381600087803b158015610e2357600080fd5b505af1158015610e37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5b91906120aa565b50610e6788338761173b565b50505b336001600160a01b0316866001600160a01b03167f6423b6056e64b3b29cb2d342362b47c26fa8d6877da27ea152354060df19b9bc8787604051610eaf9291906123ef565b60405180910390a3604051632ed56dff60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bb55b7fc90610f059085908590600401612121565b600060405180830381600087803b158015610f1f57600080fd5b505af1158015610f33573d6000803e3d6000fd5b505060016000555050505050505050565b60026000541415610f9c576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000908155610fae848484611193565b9050610fbb8484836118c0565b610fd75760405162461bcd60e51b81526004016103f29061222a565b6000611086620186a06103567f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166315a04ea2896040518263ffffffff1660e01b815260040161102f919061210d565b60206040518083038186803b15801561104757600080fd5b505afa15801561105b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107f91906120aa565b85906113c6565b9050600061109c600160701b6103568585611b27565b604051633a15193760e11b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063742a326e906110ef9089908990869060040161213b565b600060405180830381600087803b15801561110957600080fd5b505af115801561111d573d6000803e3d6000fd5b50506040516001600160a01b038089169350891691507f5b79a897d30813a62a1f95ba180d3320d3701d96605708b81105e00719a069e490600090a35050600160005550505050565b600080611174863386611b39565b905061118286868386610537565b9695505050505050565b620186a081565b60008061119f85611a30565b6040516362c03ee360e11b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5807dc6906111ee9084906004016123cf565b60206040518083038186803b15801561120657600080fd5b505afa15801561121a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123e9190611ec7565b6001600160a01b03166314b094fb867f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e51e119e89896040518363ffffffff1660e01b815260040161129b929190612121565b60206040518083038186803b1580156112b357600080fd5b505afa1580156112c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112eb91906120aa565b866040518463ffffffff1660e01b815260040161130a9392919061215f565b60206040518083038186803b15801561132257600080fd5b505afa158015611336573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4691906120aa565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000826113d557506000610529565b50818102818382816113e357fe5b041461052957fe5b60008161143f576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161144857fe5b049392505050565b604051633e543e5b60e11b81526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637ca87cb6906114a39087908790879060040161213b565b60206040518083038186803b1580156114bb57600080fd5b505afa1580156114cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f391906120aa565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633d1aa9637f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166374e6076c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561157d57600080fd5b505afa158015611591573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b59190611ec7565b85846040518463ffffffff1660e01b81526004016115d59392919061213b565b600060405180830381600087803b1580156115ef57600080fd5b505af1158015611603573d6000803e3d6000fd5b5050604051631da649cf60e01b8152600092506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150631da649cf9061165a9088908890889060040161213b565b602060405180830381600087803b15801561167457600080fd5b505af1158015611688573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ac91906120aa565b905080611734576040516362b40f9f60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906362b40f9f906117019088908890600401612121565b600060405180830381600087803b15801561171b57600080fd5b505af115801561172f573d6000803e3d6000fd5b505050505b5050505050565b6000611748848484611193565b905060006064600160701b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b85c4496886040518263ffffffff1660e01b815260040161179f919061210d565b60206040518083038186803b1580156117b757600080fd5b505afa1580156117cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ef91906120aa565b8402816117f857fe5b048161180057fe5b049050807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d6446d4387876040518363ffffffff1660e01b8152600401611852929190612121565b60206040518083038186803b15801561186a57600080fd5b505afa15801561187e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a291906120aa565b11156117345760405162461bcd60e51b81526004016103f290612348565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d6446d4386866040518363ffffffff1660e01b8152600401611911929190612121565b60206040518083038186803b15801561192957600080fd5b505afa15801561193d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196191906120aa565b905080611972576000915050610a24565b604051631dffddf160e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633bffbbe2906119be90889060040161210d565b60206040518083038186803b1580156119d657600080fd5b505afa1580156119ea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0e91906120aa565b611a2584610356600160701b6103508660646113c6565b101595945050505050565b6000611a3b82611ca7565b905080611a5a5760405162461bcd60e51b81526004016103f2906122cf565b6040516362c03ee360e11b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5807dc690611aa99085906004016123cf565b60206040518083038186803b158015611ac157600080fd5b505afa158015611ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af99190611ec7565b90506001600160a01b038116611b215760405162461bcd60e51b81526004016103f290612261565b50919050565b600082821115611b3357fe5b50900390565b6000806301e133807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166388ad7a6187876040518363ffffffff1660e01b8152600401611b8f929190612121565b60206040518083038186803b158015611ba757600080fd5b505afa158015611bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdf91906120aa565b42037f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d4b93dbe88886040518363ffffffff1660e01b8152600401611c2f929190612121565b60206040518083038186803b158015611c4757600080fd5b505afa158015611c5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7f91906120aa565b0281611c8757fe5b04905080620186a001620186a0840281611c9d57fe5b0495945050505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166347ae34db6040518163ffffffff1660e01b815260040160006040518083038186803b158015611d0357600080fd5b505afa158015611d17573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d3f9190810190611fdc565b905060005b8151811015611e98577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aca345ee6040518163ffffffff1660e01b815260040160206040518083038186803b158015611da657600080fd5b505afa158015611dba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dde9190611ec7565b6001600160a01b031663fec0feb3838381518110611df857fe5b6020026020010151866040518363ffffffff1660e01b8152600401611e1e9291906123d8565b60206040518083038186803b158015611e3657600080fd5b505afa158015611e4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e6e919061208a565b15611e9057818181518110611e7f57fe5b602002602001015192505050611eb1565b600101611d44565b5060405162461bcd60e51b81526004016103f290612311565b919050565b600060808284031215611b21578081fd5b600060208284031215611ed8578081fd5b8151610a2481612449565b60008060408385031215611ef5578081fd5b8235611f0081612449565b91506020830135611f1081612449565b809150509250929050565b600080600060608486031215611f2f578081fd5b8335611f3a81612449565b92506020840135611f4a81612449565b9150604084013567ffffffffffffffff811115611f65578182fd5b611f7186828701611eb6565b9150509250925092565b60008060008060808587031215611f90578081fd5b8435611f9b81612449565b93506020850135925060408501359150606085013567ffffffffffffffff811115611fc4578182fd5b611fd087828801611eb6565b91505092959194509250565b60006020808385031215611fee578182fd5b825167ffffffffffffffff80821115612005578384fd5b818501915085601f830112612018578384fd5b81518181111561202457fe5b8381026040518582820101818110858211171561203d57fe5b604052828152858101935084860182860187018a101561205b578788fd5b8795505b8386101561207d57805185526001959095019493860193860161205f565b5098975050505050505050565b60006020828403121561209b578081fd5b81518015158114610a24578182fd5b6000602082840312156120bb578081fd5b5051919050565b6000602082840312156120d3578081fd5b815160ff81168114610a24578182fd5b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03841681526020810183905260606040820152600061218583806123fd565b6080606085015261219a60e0850182846120e3565b9150506121aa60208501856123fd565b605f19808685030160808701526121c28483856120e3565b93506121d160408801886123fd565b93509150808685030160a08701526121ea8484846120e3565b93506121f960608801886123fd565b93509150808685030160c0870152506122138383836120e3565b98975050505050505050565b901515815260200190565b6020808252601c908201527f556e69742050726f746f636f6c3a20534146455f504f534954494f4e00000000604082015260600190565b6020808252601e908201527f556e69742050726f746f636f6c3a2044495341424c45445f4f5241434c450000604082015260600190565b60208082526019908201527f556e69742050726f746f636f6c3a205553454c4553535f545800000000000000604082015260600190565b60208082526022908201527f556e69742050726f746f636f6c3a20494e56414c49445f4f5241434c455f5459604082015261504560f01b606082015260800190565b6020808252601e908201527f556e69742050726f746f636f6c3a204e4f5f4f5241434c455f464f554e440000604082015260600190565b60208082526022908201527f556e69742050726f746f636f6c3a20554e444552434f4c4c41544552414c495a604082015261115160f21b606082015260800190565b60208082526025908201527f556e69742050726f746f636f6c3a204e4f545f535550504f525445445f444543604082015264494d414c5360d81b606082015260800190565b90815260200190565b9182526001600160a01b0316602082015260400190565b918252602082015260400190565b6000808335601e19843603018112612413578283fd5b830160208101925035905067ffffffffffffffff81111561243357600080fd5b80360383131561244257600080fd5b9250929050565b6001600160a01b038116811461245e57600080fd5b5056fea2646970667358221220ef2cf8c28c1702809c77454b2c1f1915f4fc2cfe9ef52f743313d5d257fb53e264736f6c63430007060033000000000000000000000000203153522b9eaef4ae17c6e99851ee7b2f7d312e00000000000000000000000075fbfe26b21fd3ea008af0c764949f8214150c8f0000000000000000000000001a5ff58bc3246eb233fea20d32b79b5f01ec650c
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063944dd7611161008c578063ab15d14111610066578063ab15d141146101be578063ab2a2a82146101d1578063b7ebdc0c146101d9578063fbfa77cf146101e1576100ea565b8063944dd7611461019057806394cc855c146101a3578063971182c6146101b6576100ea565b80634bb93ab1116100c85780634bb93ab11461013357806352b844d71461014857806353553b891461015b57806384a759301461017b576100ea565b806312dc1dcc146100ef5780633bf7a83e14610118578063401594e714610120575b600080fd5b6101026100fd366004611ee3565b6101e9565b60405161010f91906123cf565b60405180910390f35b61010261052f565b61010261012e366004611f7b565b610537565b61013b610923565b60405161010f919061210d565b610102610156366004611f1b565b610947565b61016e610169366004611f1b565b610a2b565b60405161010f919061221f565b61018e610189366004611f7b565b610a4f565b005b61018e61019e366004611f1b565b610f44565b6101026101b1366004611f7b565b611166565b61010261118c565b6101026101cc366004611f1b565b611193565b61013b61135a565b61013b61137e565b61013b6113a2565b6000807f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf196001600160a01b031663d6446d4385856040518363ffffffff1660e01b815260040161023a929190612121565b60206040518083038186803b15801561025257600080fd5b505afa158015610266573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028a91906120aa565b90508061029c57600019915050610529565b600061035c7f000000000000000000000000203153522b9eaef4ae17c6e99851ee7b2f7d312e6001600160a01b0316633bffbbe2876040518263ffffffff1660e01b81526004016102ed919061210d565b60206040518083038186803b15801561030557600080fd5b505afa158015610319573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033d91906120aa565b610356600160701b6103508660646113c6565b906113c6565b906113eb565b90506012856001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561039957600080fd5b505afa1580156103ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d191906120c2565b60ff1611156103fb5760405162461bcd60e51b81526004016103f29061238a565b60405180910390fd5b846001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561043457600080fd5b505afa158015610448573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046c91906120c2565b60120360ff16600a0a7f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf196001600160a01b031663e51e119e87876040518363ffffffff1660e01b81526004016104c3929190612121565b60206040518083038186803b1580156104db57600080fd5b505afa1580156104ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051391906120aa565b828161051b57fe5b048161052357fe5b04925050505b92915050565b600160701b81565b600060026000541415610591576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000558433851515806105a557508415155b6105c15760405162461bcd60e51b81526004016103f290612298565b604051634ac1c33d60e01b81526000906001600160a01b037f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf191690634ac1c33d90610612908b903390600401612121565b60206040518083038186803b15801561062a57600080fd5b505afa15801561063e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066291906120aa565b905080861115610670578095505b8661068557610680883388611450565b610842565b85811415610722576040516311af95b160e31b81526001600160a01b037f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf191690638d7cad88906106dd908b9033908c9060040161213b565b600060405180830381600087803b1580156106f757600080fd5b505af115801561070b573d6000803e3d6000fd5b505050508560001461068057610680883388611450565b6040516311af95b160e31b81526001600160a01b037f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf191690638d7cad8890610772908b9033908c9060040161213b565b600060405180830381600087803b15801561078c57600080fd5b505af11580156107a0573d6000803e3d6000fd5b50505050856000146107b7576107b7883388611450565b60405163c640752d60e01b81526001600160a01b037f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf19169063c640752d90610805908b903390600401612121565b600060405180830381600087803b15801561081f57600080fd5b505af1158015610833573d6000803e3d6000fd5b5050505061084288338761173b565b336001600160a01b0316886001600160a01b03167fa702ae6024e8b4c2b0eb162b1453dacb93cf6922f5a2d7236faed898c21148f889896040516108879291906123ef565b60405180910390a385935050604051632ed56dff60e21b81526001600160a01b037f0000000000000000000000001a5ff58bc3246eb233fea20d32b79b5f01ec650c169063bb55b7fc906108e19085908590600401612121565b600060405180830381600087803b1580156108fb57600080fd5b505af115801561090f573d6000803e3d6000fd5b505060016000555092979650505050505050565b7f00000000000000000000000075fbfe26b21fd3ea008af0c764949f8214150c8f81565b6000807f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf196001600160a01b031663d6446d4386866040518363ffffffff1660e01b8152600401610998929190612121565b60206040518083038186803b1580156109b057600080fd5b505afa1580156109c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e891906120aa565b9050806109f9576000915050610a24565b6000610a06868686611193565b9050610a1f81610356600160701b6103508660646113c6565b925050505b9392505050565b600080610a39858585611193565b9050610a468585836118c0565b95945050505050565b60026000541415610aa7576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600055833383151580610abb57508415155b610ad75760405162461bcd60e51b81526004016103f290612298565b6012866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610b1257600080fd5b505afa158015610b26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4a91906120c2565b60ff161115610b6b5760405162461bcd60e51b81526004016103f29061238a565b83610bf75760405163770c1acf60e11b81526001600160a01b037f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf19169063ee18359e90610bc090899033908a9060040161213b565b600060405180830381600087803b158015610bda57600080fd5b505af1158015610bee573d6000803e3d6000fd5b50505050610e6a565b6000610c0287611a30565b905060007f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf196001600160a01b0316634ac1c33d89336040518363ffffffff1660e01b8152600401610c54929190612121565b60206040518083038186803b158015610c6c57600080fd5b505afa158015610c80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca491906120aa565b1515905080610d3057604051630c6d894f60e41b81526001600160a01b037f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf19169063c6d894f090610cfd908b903390879060040161213b565b600060405180830381600087803b158015610d1757600080fd5b505af1158015610d2b573d6000803e3d6000fd5b505050505b8615610db95760405163770c1acf60e11b81526001600160a01b037f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf19169063ee18359e90610d86908b9033908c9060040161213b565b600060405180830381600087803b158015610da057600080fd5b505af1158015610db4573d6000803e3d6000fd5b505050505b6040516314890dcb60e21b81526001600160a01b037f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf191690635224372c90610e09908b9033908b9060040161213b565b602060405180830381600087803b158015610e2357600080fd5b505af1158015610e37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5b91906120aa565b50610e6788338761173b565b50505b336001600160a01b0316866001600160a01b03167f6423b6056e64b3b29cb2d342362b47c26fa8d6877da27ea152354060df19b9bc8787604051610eaf9291906123ef565b60405180910390a3604051632ed56dff60e21b81526001600160a01b037f0000000000000000000000001a5ff58bc3246eb233fea20d32b79b5f01ec650c169063bb55b7fc90610f059085908590600401612121565b600060405180830381600087803b158015610f1f57600080fd5b505af1158015610f33573d6000803e3d6000fd5b505060016000555050505050505050565b60026000541415610f9c576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000908155610fae848484611193565b9050610fbb8484836118c0565b610fd75760405162461bcd60e51b81526004016103f29061222a565b6000611086620186a06103567f000000000000000000000000203153522b9eaef4ae17c6e99851ee7b2f7d312e6001600160a01b03166315a04ea2896040518263ffffffff1660e01b815260040161102f919061210d565b60206040518083038186803b15801561104757600080fd5b505afa15801561105b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107f91906120aa565b85906113c6565b9050600061109c600160701b6103568585611b27565b604051633a15193760e11b81529091506001600160a01b037f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf19169063742a326e906110ef9089908990869060040161213b565b600060405180830381600087803b15801561110957600080fd5b505af115801561111d573d6000803e3d6000fd5b50506040516001600160a01b038089169350891691507f5b79a897d30813a62a1f95ba180d3320d3701d96605708b81105e00719a069e490600090a35050600160005550505050565b600080611174863386611b39565b905061118286868386610537565b9695505050505050565b620186a081565b60008061119f85611a30565b6040516362c03ee360e11b81529091506001600160a01b037f00000000000000000000000075fbfe26b21fd3ea008af0c764949f8214150c8f169063c5807dc6906111ee9084906004016123cf565b60206040518083038186803b15801561120657600080fd5b505afa15801561121a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123e9190611ec7565b6001600160a01b03166314b094fb867f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf196001600160a01b031663e51e119e89896040518363ffffffff1660e01b815260040161129b929190612121565b60206040518083038186803b1580156112b357600080fd5b505afa1580156112c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112eb91906120aa565b866040518463ffffffff1660e01b815260040161130a9392919061215f565b60206040518083038186803b15801561132257600080fd5b505afa158015611336573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4691906120aa565b7f0000000000000000000000001a5ff58bc3246eb233fea20d32b79b5f01ec650c81565b7f000000000000000000000000203153522b9eaef4ae17c6e99851ee7b2f7d312e81565b7f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf1981565b6000826113d557506000610529565b50818102818382816113e357fe5b041461052957fe5b60008161143f576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161144857fe5b049392505050565b604051633e543e5b60e11b81526000906001600160a01b037f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf191690637ca87cb6906114a39087908790879060040161213b565b60206040518083038186803b1580156114bb57600080fd5b505afa1580156114cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f391906120aa565b90507f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf196001600160a01b0316633d1aa9637f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf196001600160a01b03166374e6076c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561157d57600080fd5b505afa158015611591573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b59190611ec7565b85846040518463ffffffff1660e01b81526004016115d59392919061213b565b600060405180830381600087803b1580156115ef57600080fd5b505af1158015611603573d6000803e3d6000fd5b5050604051631da649cf60e01b8152600092506001600160a01b037f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf19169150631da649cf9061165a9088908890889060040161213b565b602060405180830381600087803b15801561167457600080fd5b505af1158015611688573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ac91906120aa565b905080611734576040516362b40f9f60e01b81526001600160a01b037f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf1916906362b40f9f906117019088908890600401612121565b600060405180830381600087803b15801561171b57600080fd5b505af115801561172f573d6000803e3d6000fd5b505050505b5050505050565b6000611748848484611193565b905060006064600160701b7f000000000000000000000000203153522b9eaef4ae17c6e99851ee7b2f7d312e6001600160a01b031663b85c4496886040518263ffffffff1660e01b815260040161179f919061210d565b60206040518083038186803b1580156117b757600080fd5b505afa1580156117cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ef91906120aa565b8402816117f857fe5b048161180057fe5b049050807f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf196001600160a01b031663d6446d4387876040518363ffffffff1660e01b8152600401611852929190612121565b60206040518083038186803b15801561186a57600080fd5b505afa15801561187e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a291906120aa565b11156117345760405162461bcd60e51b81526004016103f290612348565b6000807f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf196001600160a01b031663d6446d4386866040518363ffffffff1660e01b8152600401611911929190612121565b60206040518083038186803b15801561192957600080fd5b505afa15801561193d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196191906120aa565b905080611972576000915050610a24565b604051631dffddf160e11b81526001600160a01b037f000000000000000000000000203153522b9eaef4ae17c6e99851ee7b2f7d312e1690633bffbbe2906119be90889060040161210d565b60206040518083038186803b1580156119d657600080fd5b505afa1580156119ea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0e91906120aa565b611a2584610356600160701b6103508660646113c6565b101595945050505050565b6000611a3b82611ca7565b905080611a5a5760405162461bcd60e51b81526004016103f2906122cf565b6040516362c03ee360e11b81526000906001600160a01b037f00000000000000000000000075fbfe26b21fd3ea008af0c764949f8214150c8f169063c5807dc690611aa99085906004016123cf565b60206040518083038186803b158015611ac157600080fd5b505afa158015611ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af99190611ec7565b90506001600160a01b038116611b215760405162461bcd60e51b81526004016103f290612261565b50919050565b600082821115611b3357fe5b50900390565b6000806301e133807f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf196001600160a01b03166388ad7a6187876040518363ffffffff1660e01b8152600401611b8f929190612121565b60206040518083038186803b158015611ba757600080fd5b505afa158015611bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdf91906120aa565b42037f000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf196001600160a01b031663d4b93dbe88886040518363ffffffff1660e01b8152600401611c2f929190612121565b60206040518083038186803b158015611c4757600080fd5b505afa158015611c5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7f91906120aa565b0281611c8757fe5b04905080620186a001620186a0840281611c9d57fe5b0495945050505050565b6000807f00000000000000000000000075fbfe26b21fd3ea008af0c764949f8214150c8f6001600160a01b03166347ae34db6040518163ffffffff1660e01b815260040160006040518083038186803b158015611d0357600080fd5b505afa158015611d17573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d3f9190810190611fdc565b905060005b8151811015611e98577f000000000000000000000000203153522b9eaef4ae17c6e99851ee7b2f7d312e6001600160a01b031663aca345ee6040518163ffffffff1660e01b815260040160206040518083038186803b158015611da657600080fd5b505afa158015611dba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dde9190611ec7565b6001600160a01b031663fec0feb3838381518110611df857fe5b6020026020010151866040518363ffffffff1660e01b8152600401611e1e9291906123d8565b60206040518083038186803b158015611e3657600080fd5b505afa158015611e4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e6e919061208a565b15611e9057818181518110611e7f57fe5b602002602001015192505050611eb1565b600101611d44565b5060405162461bcd60e51b81526004016103f290612311565b919050565b600060808284031215611b21578081fd5b600060208284031215611ed8578081fd5b8151610a2481612449565b60008060408385031215611ef5578081fd5b8235611f0081612449565b91506020830135611f1081612449565b809150509250929050565b600080600060608486031215611f2f578081fd5b8335611f3a81612449565b92506020840135611f4a81612449565b9150604084013567ffffffffffffffff811115611f65578182fd5b611f7186828701611eb6565b9150509250925092565b60008060008060808587031215611f90578081fd5b8435611f9b81612449565b93506020850135925060408501359150606085013567ffffffffffffffff811115611fc4578182fd5b611fd087828801611eb6565b91505092959194509250565b60006020808385031215611fee578182fd5b825167ffffffffffffffff80821115612005578384fd5b818501915085601f830112612018578384fd5b81518181111561202457fe5b8381026040518582820101818110858211171561203d57fe5b604052828152858101935084860182860187018a101561205b578788fd5b8795505b8386101561207d57805185526001959095019493860193860161205f565b5098975050505050505050565b60006020828403121561209b578081fd5b81518015158114610a24578182fd5b6000602082840312156120bb578081fd5b5051919050565b6000602082840312156120d3578081fd5b815160ff81168114610a24578182fd5b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03841681526020810183905260606040820152600061218583806123fd565b6080606085015261219a60e0850182846120e3565b9150506121aa60208501856123fd565b605f19808685030160808701526121c28483856120e3565b93506121d160408801886123fd565b93509150808685030160a08701526121ea8484846120e3565b93506121f960608801886123fd565b93509150808685030160c0870152506122138383836120e3565b98975050505050505050565b901515815260200190565b6020808252601c908201527f556e69742050726f746f636f6c3a20534146455f504f534954494f4e00000000604082015260600190565b6020808252601e908201527f556e69742050726f746f636f6c3a2044495341424c45445f4f5241434c450000604082015260600190565b60208082526019908201527f556e69742050726f746f636f6c3a205553454c4553535f545800000000000000604082015260600190565b60208082526022908201527f556e69742050726f746f636f6c3a20494e56414c49445f4f5241434c455f5459604082015261504560f01b606082015260800190565b6020808252601e908201527f556e69742050726f746f636f6c3a204e4f5f4f5241434c455f464f554e440000604082015260600190565b60208082526022908201527f556e69742050726f746f636f6c3a20554e444552434f4c4c41544552414c495a604082015261115160f21b606082015260800190565b60208082526025908201527f556e69742050726f746f636f6c3a204e4f545f535550504f525445445f444543604082015264494d414c5360d81b606082015260800190565b90815260200190565b9182526001600160a01b0316602082015260400190565b918252602082015260400190565b6000808335601e19843603018112612413578283fd5b830160208101925035905067ffffffffffffffff81111561243357600080fd5b80360383131561244257600080fd5b9250929050565b6001600160a01b038116811461245e57600080fd5b5056fea2646970667358221220ef2cf8c28c1702809c77454b2c1f1915f4fc2cfe9ef52f743313d5d257fb53e264736f6c63430007060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000203153522b9eaef4ae17c6e99851ee7b2f7d312e00000000000000000000000075fbfe26b21fd3ea008af0c764949f8214150c8f0000000000000000000000001a5ff58bc3246eb233fea20d32b79b5f01ec650c
-----Decoded View---------------
Arg [0] : _vaultManagerParameters (address): 0x203153522B9EAef4aE17c6e99851EE7b2F7D312E
Arg [1] : _oracleRegistry (address): 0x75fBFe26B21fd3EA008af0C764949f8214150C8f
Arg [2] : _cdpRegistry (address): 0x1a5Ff58BC3246Eb233fEA20D32b79B5F01eC650c
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000203153522b9eaef4ae17c6e99851ee7b2f7d312e
Arg [1] : 00000000000000000000000075fbfe26b21fd3ea008af0c764949f8214150c8f
Arg [2] : 0000000000000000000000001a5ff58bc3246eb233fea20d32b79b5f01ec650c
Deployed Bytecode Sourcemap
567:11958:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11194:550;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;858:36;;;:::i;4273:1310::-;;;;;;:::i;:::-;;:::i;757:47::-;;;:::i;:::-;;;;;;;:::i;10564:419::-;;;;;;:::i;:::-;;:::i;10027:336::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2769:1159::-;;;;;;:::i;:::-;;:::i;:::-;;7475:889;;;;;;:::i;:::-;;:::i;5916:303::-;;;;;;:::i;:::-;;:::i;900:42::-;;;:::i;8370:345::-;;;;;;:::i;:::-;;:::i;810:41::-;;;:::i;688:63::-;;;:::i;653:29::-;;;:::i;11194:550::-;11300:4;11316:9;11328:5;-1:-1:-1;;;;;11328:18:9;;11347:5;11354;11328:32;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11316:44;-1:-1:-1;11374:9:9;11370:30;;-1:-1:-1;;11385:15:9;;;;;11370:30;11419:23;11445:75;11473:22;-1:-1:-1;;;;;11473:39:9;;11513:5;11473:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11445:23;-1:-1:-1;;;11445:13:9;:4;11454:3;11445:8;:13::i;:::-;:17;;:23::i;:::-;:27;;:75::i;:::-;11419:101;;11575:2;11554:5;-1:-1:-1;;;;;11547:22:9;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:30;;;;11539:80;;;;-1:-1:-1;;;11539:80:9;;;;;;;:::i;:::-;;;;;;;;;11719:5;-1:-1:-1;;;;;11712:22:9;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11707:2;:29;11700:37;;:2;:37;11666:5;-1:-1:-1;;;;;11666:17:9;;11684:5;11691;11666:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11645:18;:52;;;;;;:92;;;;;;11638:99;;;;11194:550;;;;;:::o;858:36::-;-1:-1:-1;;;858:36:9;:::o;4273:1310::-;4451:4;1670:1:0;2250:7;;:19;;2242:63;;;;;-1:-1:-1;;;2242:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1670:1;2380:7;:18;4423:5:9;4430:10:::1;4510:16:::0;;::::2;::::0;:35:::2;;-1:-1:-1::0;4530:15:9;;::::2;4510:35;4502:73;;;;-1:-1:-1::0;;;4502:73:9::2;;;;;;;:::i;:::-;4598:30;::::0;-1:-1:-1;;;4598:30:9;;4586:9:::2;::::0;-1:-1:-1;;;;;4598:5:9::2;:11;::::0;::::2;::::0;:30:::2;::::0;4610:5;;4617:10:::2;::::0;4598:30:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4586:42;;4688:4;4675:10;:17;4671:45;;;4709:4;4696:17;;4671:45;4730:16:::0;4726:734:::2;;4762:37;4769:5;4776:10;4788;4762:6;:37::i;:::-;4726:734;;;4842:10;4834:4;:18;4830:620;;;4872:50;::::0;-1:-1:-1;;;4872:50:9;;-1:-1:-1;;;;;4872:5:9::2;:18;::::0;::::2;::::0;:50:::2;::::0;4891:5;;4898:10:::2;::::0;4910:11;;4872:50:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;4944:10;4958:1;4944:15;4940:99;;4983:37;4990:5;4997:10;5009;4983:6;:37::i;4830:620::-;5137:50;::::0;-1:-1:-1;;;5137:50:9;;-1:-1:-1;;;;;5137:5:9::2;:18;::::0;::::2;::::0;:50:::2;::::0;5156:5;;5163:10:::2;::::0;5175:11;;5137:50:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;5210:10;5224:1;5210:15;5206:99;;5249:37;5256:5;5263:10;5275;5249:6;:37::i;:::-;5323:31;::::0;-1:-1:-1;;;5323:31:9;;-1:-1:-1;;;;;5323:5:9::2;:12;::::0;::::2;::::0;:31:::2;::::0;5336:5;;5343:10:::2;::::0;5323:31:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;5373:62;5406:5;5413:10;5425:9;5373:32;:62::i;:::-;5512:10;-1:-1:-1::0;;;;;5500:48:9::2;5505:5;-1:-1:-1::0;;;;;5500:48:9::2;;5524:11;5537:10;5500:48;;;;;;;:::i;:::-;;;;;;;;5566:10;5559:17;;;1457:36:::1;::::0;-1:-1:-1;;;1457:36:9;;-1:-1:-1;;;;;1457:11:9::1;:22;::::0;::::1;::::0;:36:::1;::::0;1480:5;;1487;;1457:36:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1627:1:0;2553:7;:22;-1:-1:-1;4273:1310:9;;;-1:-1:-1;;;;;;;4273:1310:9:o;757:47::-;;;:::o;10564:419::-;10726:4;10742:9;10754:5;-1:-1:-1;;;;;10754:18:9;;10773:5;10780;10754:32;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10742:44;-1:-1:-1;10800:9:9;10796:29;;10823:1;10811:14;;;;;10796:29;10844:18;10865:51;10892:5;10899;10906:9;10865:26;:51::i;:::-;10844:72;-1:-1:-1;10934:42:9;10844:72;10934:23;-1:-1:-1;;;10934:13:9;:4;10943:3;10934:8;:13::i;:42::-;10927:49;;;;10564:419;;;;;;:::o;10027:336::-;10197:4;10214:18;10235:51;10262:5;10269;10276:9;10235:26;:51::i;:::-;10214:72;;10304:52;10328:5;10335;10342:13;10304:23;:52::i;:::-;10297:59;10027:336;-1:-1:-1;;;;;10027:336:9:o;2769:1159::-;1670:1:0;2250:7;;:19;;2242:63;;;;;-1:-1:-1;;;2242:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1670:1;2380:7;:18;2919:5:9;2926:10:::1;2956:15:::0;;::::2;::::0;:35:::2;;-1:-1:-1::0;2975:16:9;;::::2;2956:35;2948:73;;;;-1:-1:-1::0;;;2948:73:9::2;;;;;;;:::i;:::-;3076:2;3055:5;-1:-1:-1::0;;;;;3048:22:9::2;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:30;;;;3040:80;;;;-1:-1:-1::0;;;3040:80:9::2;;;;;;;:::i;:::-;3135:15:::0;3131:702:::2;;3167:49;::::0;-1:-1:-1;;;3167:49:9;;-1:-1:-1;;;;;3167:5:9::2;:17;::::0;::::2;::::0;:49:::2;::::0;3185:5;;3192:10:::2;::::0;3204:11;;3167:49:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;3131:702;;;3249:15;3267:24;3285:5;3267:17;:24::i;:::-;3249:42;;3306:12;3321:5;-1:-1:-1::0;;;;;3321:11:9::2;;3333:5;3340:10;3321:30;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:35:::0;::::2;::::0;-1:-1:-1;3321:35:9;3371:125:::2;;3439:42;::::0;-1:-1:-1;;;3439:42:9;;-1:-1:-1;;;;;3439:5:9::2;:11;::::0;::::2;::::0;:42:::2;::::0;3451:5;;3458:10:::2;::::0;3470;;3439:42:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;3371:125;3514:16:::0;;3510:104:::2;;3550:49;::::0;-1:-1:-1;;;3550:49:9;;-1:-1:-1;;;;;3550:5:9::2;:17;::::0;::::2;::::0;:49:::2;::::0;3568:5;;3575:10:::2;::::0;3587:11;;3550:49:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;3510:104;3662:43;::::0;-1:-1:-1;;;3662:43:9;;-1:-1:-1;;;;;3662:5:9::2;:12;::::0;::::2;::::0;:43:::2;::::0;3675:5;;3682:10:::2;::::0;3694;;3662:43:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3759:62;3792:5;3799:10;3811:9;3759:32;:62::i;:::-;3131:702;;;3885:10;-1:-1:-1::0;;;;;3873:48:9::2;3878:5;-1:-1:-1::0;;;;;3873:48:9::2;;3897:11;3910:10;3873:48;;;;;;;:::i;:::-;;;;;;;;1457:36:::1;::::0;-1:-1:-1;;;1457:36:9;;-1:-1:-1;;;;;1457:11:9::1;:22;::::0;::::1;::::0;:36:::1;::::0;1480:5;;1487;;1457:36:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1627:1:0;2553:7;:22;-1:-1:-1;;;;;;;;2769:1159:9:o;7475:889::-;1670:1:0;2250:7;;:19;;2242:63;;;;;-1:-1:-1;;;2242:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1670:1;2380:7;:18;;;7681:51:9::1;7708:5:::0;7715;7722:9;7681:26:::1;:51::i;:::-;7660:72;;7812:52;7836:5;7843;7850:13;7812:23;:52::i;:::-;7804:93;;;;-1:-1:-1::0;;;7804:93:9::1;;;;;;;:::i;:::-;7908:29;7940:111;939:3;7940:90;7971:22;-1:-1:-1::0;;;;;7971:42:9::1;;8014:5;7971:49;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7940:13:::0;;:17:::1;:90::i;:111::-;7908:143:::0;-1:-1:-1;8062:28:9::1;8093:53;-1:-1:-1::0;;;8093:43:9::1;:13:::0;7908:143;8093:17:::1;:43::i;:53::-;8207:63;::::0;-1:-1:-1;;;8207:63:9;;8062:84;;-1:-1:-1;;;;;;8207:5:9::1;:24;::::0;::::1;::::0;:63:::1;::::0;8232:5;;8239;;8062:84;;8207:63:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;8323:34:9::1;::::0;-1:-1:-1;;;;;8323:34:9;;::::1;::::0;-1:-1:-1;8323:34:9;::::1;::::0;-1:-1:-1;8323:34:9::1;::::0;;;::::1;-1:-1:-1::0;;1627:1:0;2553:7;:22;-1:-1:-1;;;;7475:889:9:o;5916:303::-;6068:4;6085:15;6103:44;6118:5;6125:10;6137:9;6103:14;:44::i;:::-;6085:62;;6165:47;6170:5;6177:11;6190:10;6202:9;6165:4;:47::i;:::-;6158:54;5916:303;-1:-1:-1;;;;;;5916:303:9:o;900:42::-;939:3;900:42;:::o;8370:345::-;8512:4;8528:15;8546:24;8564:5;8546:17;:24::i;:::-;8606:39;;-1:-1:-1;;;8606:39:9;;8528:42;;-1:-1:-1;;;;;;8606:14:9;:27;;;;:39;;8528:42;;8606:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8587:70:9;;8658:5;8665;-1:-1:-1;;;;;8665:17:9;;8683:5;8690;8665:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8698:9;8587:121;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;810:41::-;;;:::o;688:63::-;;;:::o;653:29::-;;;:::o;314:195:1:-;372:9;397:6;393:45;;-1:-1:-1;426:1:1;419:8;;393:45;-1:-1:-1;451:5:1;;;455:1;451;:5;:1;473:5;;;;;:10;466:18;;;599:151;657:7;684:6;676:45;;;;;-1:-1:-1;;;676:45:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;742:1;738;:5;;;;;;;599:151;-1:-1:-1;;;599:151:1:o;6247:423:9:-;6340:44;;-1:-1:-1;;;6340:44:9;;6329:8;;-1:-1:-1;;;;;6340:5:9;:18;;;;:44;;6359:5;;6366;;6373:10;;6340:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6329:55;;6394:5;-1:-1:-1;;;;;6394:15:9;;6410:5;-1:-1:-1;;;;;6410:10:9;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6424:5;6431:3;6394:41;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6509:37:9;;-1:-1:-1;;;6509:37:9;;6492:14;;-1:-1:-1;;;;;;6509:5:9;:11;;-1:-1:-1;6509:11:9;;:37;;6521:5;;6528;;6535:10;;6509:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6492:54;-1:-1:-1;6560:14:9;6556:108;;6626:27;;-1:-1:-1;;;6626:27:9;;-1:-1:-1;;;;;6626:5:9;:13;;;;:27;;6640:5;;6647;;6626:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6556:108;6247:423;;;;;:::o;6676:581::-;6878:18;6899:51;6926:5;6933;6940:9;6899:26;:51::i;:::-;6878:72;;6998:13;7092:3;-1:-1:-1;;;7030:22:9;-1:-1:-1;;;;;7030:45:9;;7076:5;7030:52;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7014:13;:68;:75;;;;;;:81;;;;;;6998:97;;7203:8;7167:5;-1:-1:-1;;;;;7167:18:9;;7186:5;7193;7167:32;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;7159:91;;;;-1:-1:-1;;;7159:91:9;;;;;;;:::i;9026:409::-;9162:4;9178:9;9190:5;-1:-1:-1;;;;;9190:18:9;;9209:5;9216;9190:32;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9178:44;-1:-1:-1;9295:9:9;9291:27;;9313:5;9306:12;;;;;9291:27;9382:46;;-1:-1:-1;;;9382:46:9;;-1:-1:-1;;;;;9382:22:9;:39;;;;:46;;9422:5;;9382:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9336:42;9364:13;9336:23;-1:-1:-1;;;9336:13:9;:4;9345:3;9336:8;:13::i;:42::-;:92;;;9026:409;-1:-1:-1;;;;;9026:409:9:o;9441:344::-;9506:15;9546:21;9561:5;9546:14;:21::i;:::-;9533:34;-1:-1:-1;9585:15:9;9577:62;;;;-1:-1:-1;;;9577:62:9;;;;;;;:::i;:::-;9666:39;;-1:-1:-1;;;9666:39:9;;9649:14;;-1:-1:-1;;;;;9666:14:9;:27;;;;:39;;9694:10;;9666:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9649:56;-1:-1:-1;;;;;;9723:20:9;;9715:63;;;;-1:-1:-1;;;9715:63:9;;;;;;;:::i;:::-;9441:344;;;;:::o;870:120:1:-;928:7;959:1;954;:6;;947:14;;;;-1:-1:-1;978:5:1;;;870:120::o;11750:293:9:-;11843:4;11859:8;11958;11924:5;-1:-1:-1;;;;;11924:16:9;;11941:5;11948;11924:30;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11906:15;:48;11870:5;-1:-1:-1;;;;;11870:18:9;;11889:5;11896;11870:32;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:85;:96;;;;;;11859:107;;12032:3;939;12014:21;939:3;11983:9;:27;:53;;;;;;;11750:293;-1:-1:-1;;;;;11750:293:9:o;12049:474::-;12111:4;12127:33;12163:14;-1:-1:-1;;;;;12163:37:9;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12163:39:9;;;;;;;;;;;;:::i;:::-;12127:75;;12217:6;12212:255;12233:19;:26;12229:1;:30;12212:255;;;12301:22;-1:-1:-1;;;;;12301:38:9;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12284:78:9;;12363:19;12383:1;12363:22;;;;;;;;;;;;;;12387:5;12284:109;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12280:177;;;12420:19;12440:1;12420:22;;;;;;;;;;;;;;12413:29;;;;;;12280:177;12261:3;;12212:255;;;;12476:40;;-1:-1:-1;;;12476:40:9;;;;;;;:::i;12049:474::-;;;;:::o;14:175:10:-;;130:3;121:6;116:3;112:16;108:26;105:2;;;151:5;144;137:20;194:263;;317:2;305:9;296:7;292:23;288:32;285:2;;;338:6;330;323:22;285:2;375:9;369:16;394:33;421:5;394:33;:::i;462:402::-;;;591:2;579:9;570:7;566:23;562:32;559:2;;;612:6;604;597:22;559:2;656:9;643:23;675:33;702:5;675:33;:::i;:::-;727:5;-1:-1:-1;784:2:10;769:18;;756:32;797:35;756:32;797:35;:::i;:::-;851:7;841:17;;;549:315;;;;;:::o;869:674::-;;;;1049:2;1037:9;1028:7;1024:23;1020:32;1017:2;;;1070:6;1062;1055:22;1017:2;1114:9;1101:23;1133:33;1160:5;1133:33;:::i;:::-;1185:5;-1:-1:-1;1242:2:10;1227:18;;1214:32;1255:35;1214:32;1255:35;:::i;:::-;1309:7;-1:-1:-1;1367:2:10;1352:18;;1339:32;1394:18;1383:30;;1380:2;;;1431:6;1423;1416:22;1380:2;1459:78;1529:7;1520:6;1509:9;1505:22;1459:78;:::i;:::-;1449:88;;;1007:536;;;;;:::o;1548:668::-;;;;;1745:3;1733:9;1724:7;1720:23;1716:33;1713:2;;;1767:6;1759;1752:22;1713:2;1811:9;1798:23;1830:33;1857:5;1830:33;:::i;:::-;1882:5;-1:-1:-1;1934:2:10;1919:18;;1906:32;;-1:-1:-1;1985:2:10;1970:18;;1957:32;;-1:-1:-1;2040:2:10;2025:18;;2012:32;2067:18;2056:30;;2053:2;;;2104:6;2096;2089:22;2053:2;2132:78;2202:7;2193:6;2182:9;2178:22;2132:78;:::i;:::-;2122:88;;;1703:513;;;;;;;:::o;2221:1130::-;;2347:2;2390;2378:9;2369:7;2365:23;2361:32;2358:2;;;2411:6;2403;2396:22;2358:2;2449:9;2443:16;2478:18;2519:2;2511:6;2508:14;2505:2;;;2540:6;2532;2525:22;2505:2;2583:6;2572:9;2568:22;2558:32;;2628:7;2621:4;2617:2;2613:13;2609:27;2599:2;;2655:6;2647;2640:22;2599:2;2689;2683:9;2711:2;2707;2704:10;2701:2;;;2717:9;2701:2;2755;2751;2747:11;2787:2;2781:9;2838:2;2833;2825:6;2821:15;2817:24;2891:6;2879:10;2876:22;2871:2;2859:10;2856:18;2853:46;2850:2;;;2902:9;2850:2;2929;2922:22;2979:18;;;3013:15;;;;-1:-1:-1;3048:11:10;;;3078;;;3074:20;;3071:33;-1:-1:-1;3068:2:10;;;3122:6;3114;3107:22;3068:2;3149:6;3140:15;;3164:156;3178:2;3175:1;3172:9;3164:156;;;3235:10;;3223:23;;3196:1;3189:9;;;;;3266:12;;;;3298;;3164:156;;;-1:-1:-1;3339:6:10;2327:1024;-1:-1:-1;;;;;;;;2327:1024:10:o;3356:297::-;;3476:2;3464:9;3455:7;3451:23;3447:32;3444:2;;;3497:6;3489;3482:22;3444:2;3534:9;3528:16;3587:5;3580:13;3573:21;3566:5;3563:32;3553:2;;3614:6;3606;3599:22;3658:194;;3781:2;3769:9;3760:7;3756:23;3752:32;3749:2;;;3802:6;3794;3787:22;3749:2;-1:-1:-1;3830:16:10;;3739:113;-1:-1:-1;3739:113:10:o;3857:293::-;;3978:2;3966:9;3957:7;3953:23;3949:32;3946:2;;;3999:6;3991;3984:22;3946:2;4036:9;4030:16;4086:4;4079:5;4075:16;4068:5;4065:27;4055:2;;4111:6;4103;4096:22;4155:270;;4245:6;4240:3;4233:19;4297:6;4290:5;4283:4;4278:3;4274:14;4261:43;4349:3;4342:4;4333:6;4328:3;4324:16;4320:27;4313:40;4414:4;4407:2;4403:7;4398:2;4390:6;4386:15;4382:29;4377:3;4373:39;4369:50;4362:57;;4223:202;;;;;:::o;4430:203::-;-1:-1:-1;;;;;4594:32:10;;;;4576:51;;4564:2;4549:18;;4531:102::o;4638:304::-;-1:-1:-1;;;;;4868:15:10;;;4850:34;;4920:15;;4915:2;4900:18;;4893:43;4800:2;4785:18;;4767:175::o;5264:383::-;-1:-1:-1;;;;;5530:15:10;;;5512:34;;5582:15;;;;5577:2;5562:18;;5555:43;5629:2;5614:18;;5607:34;;;;5462:2;5447:18;;5429:218::o;6032:1413::-;-1:-1:-1;;;;;6283:32:10;;6265:51;;6347:2;6332:18;;6325:34;;;6395:2;6390;6375:18;;6368:30;6032:1413;6441:48;6482:6;;6441:48;:::i;:::-;6525:4;6520:2;6509:9;6505:18;6498:32;6553:76;6624:3;6613:9;6609:19;6595:12;6581;6553:76;:::i;:::-;6539:90;;;6676:57;6729:2;6721:6;6717:15;6709:6;6676:57;:::i;:::-;6756:2;6752:7;6825:2;6813:9;6805:6;6801:22;6797:31;6790:4;6779:9;6775:20;6768:61;6852:67;6912:6;6896:14;6880;6852:67;:::i;:::-;6838:81;;6966:57;7019:2;7011:6;7007:15;6999:6;6966:57;:::i;:::-;6928:95;;;;7088:2;7076:9;7068:6;7064:22;7060:31;7054:3;7043:9;7039:19;7032:60;7115:67;7175:6;7159:14;7143;7115:67;:::i;:::-;7101:81;;7229:57;7282:2;7274:6;7270:15;7262:6;7229:57;:::i;:::-;7191:95;;;;7351:2;7339:9;7331:6;7327:22;7323:31;7317:3;7306:9;7302:19;7295:60;;7372:67;7432:6;7416:14;7400;7372:67;:::i;:::-;7364:75;6255:1190;-1:-1:-1;;;;;;;;6255:1190:10:o;7450:187::-;7615:14;;7608:22;7590:41;;7578:2;7563:18;;7545:92::o;8562:352::-;8764:2;8746:21;;;8803:2;8783:18;;;8776:30;8842;8837:2;8822:18;;8815:58;8905:2;8890:18;;8736:178::o;8919:354::-;9121:2;9103:21;;;9160:2;9140:18;;;9133:30;9199:32;9194:2;9179:18;;9172:60;9264:2;9249:18;;9093:180::o;9278:349::-;9480:2;9462:21;;;9519:2;9499:18;;;9492:30;9558:27;9553:2;9538:18;;9531:55;9618:2;9603:18;;9452:175::o;9632:398::-;9834:2;9816:21;;;9873:2;9853:18;;;9846:30;9912:34;9907:2;9892:18;;9885:62;-1:-1:-1;;;9978:2:10;9963:18;;9956:32;10020:3;10005:19;;9806:224::o;10035:354::-;10237:2;10219:21;;;10276:2;10256:18;;;10249:30;10315:32;10310:2;10295:18;;10288:60;10380:2;10365:18;;10209:180::o;10394:398::-;10596:2;10578:21;;;10635:2;10615:18;;;10608:30;10674:34;10669:2;10654:18;;10647:62;-1:-1:-1;;;10740:2:10;10725:18;;10718:32;10782:3;10767:19;;10568:224::o;10797:401::-;10999:2;10981:21;;;11038:2;11018:18;;;11011:30;11077:34;11072:2;11057:18;;11050:62;-1:-1:-1;;;11143:2:10;11128:18;;11121:35;11188:3;11173:19;;10971:227::o;11203:177::-;11349:25;;;11337:2;11322:18;;11304:76::o;11385:274::-;11559:25;;;-1:-1:-1;;;;;11620:32:10;11615:2;11600:18;;11593:60;11547:2;11532:18;;11514:145::o;11664:248::-;11838:25;;;11894:2;11879:18;;11872:34;11826:2;11811:18;;11793:119::o;11917:513::-;;;12044:3;12031:17;12130:2;12126:7;12115:8;12099:14;12095:29;12091:43;12071:18;12067:68;12057:2;;12153:5;12146;12139:20;12057:2;12185:33;;12289:4;12276:18;;;-1:-1:-1;12237:21:10;;-1:-1:-1;12317:18:10;12306:30;;12303:2;;;12349:1;12346;12339:12;12303:2;12399:6;12383:14;12379:27;12369:8;12365:42;12362:2;;;12420:1;12417;12410:12;12362:2;11995:435;;;;;:::o;12435:133::-;-1:-1:-1;;;;;12512:31:10;;12502:42;;12492:2;;12558:1;12555;12548:12;12492:2;12482:86;:::o
Swarm Source
ipfs://ef2cf8c28c1702809c77454b2c1f1915f4fc2cfe9ef52f743313d5d257fb53e2
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.