From 1da6fbbc2c30aef604b0b99ee999e5855c984b7f Mon Sep 17 00:00:00 2001 From: AlehNat Date: Thu, 21 Sep 2023 00:45:12 +0200 Subject: [PATCH 1/8] add radiant simple supply strategy --- .../impl/radiant/Radiant2SupplyStrategy.sol | 35 + .../radiant/Radiant2StrategyBase.sol | 128 ++ contracts/third_party/aave/DataTypes.sol | 49 + contracts/third_party/aave/IAToken.sol | 91 + .../aave/IAaveIncentivesController.sol | 132 ++ contracts/third_party/aave/ILendingPool.sol | 410 +++++ .../aave/ILendingPoolAddressesProvider.sol | 60 + .../aave/IProtocolDataProvider.sol | 61 + .../third_party/aave/IScaledBalanceToken.sol | 26 + package-lock.json | 1524 ++++++++++++++++- scripts/addresses/BscAddresses.ts | 3 +- .../radiant/DeployUSDCSupplyStrategy.ts | 28 + .../radiant/DeployUSDTSupplyStrategy.ts | 28 + test/strategies/DoHardWorkLoopBase.ts | 36 +- .../{bsc => }/cone/ConeStackerTest.ts | 28 +- .../cone/ConeStrategyVConeWbnbTest.ts | 20 +- .../cone/ConeStrategyVTetuUsdPlusTest.ts | 21 +- .../radiant/EmergencyWithdrawFromPoolTest.ts | 40 + .../radiant/RadiantSupplyStrategyTest.ts | 159 ++ .../venus/EmergencyWithdrawFromPoolTest.ts | 10 +- .../venus/VenusSupplyStrategyTest.ts | 28 +- 21 files changed, 2833 insertions(+), 84 deletions(-) create mode 100644 contracts/impl/radiant/Radiant2SupplyStrategy.sol create mode 100644 contracts/strategies/radiant/Radiant2StrategyBase.sol create mode 100644 contracts/third_party/aave/DataTypes.sol create mode 100644 contracts/third_party/aave/IAToken.sol create mode 100644 contracts/third_party/aave/IAaveIncentivesController.sol create mode 100644 contracts/third_party/aave/ILendingPool.sol create mode 100644 contracts/third_party/aave/ILendingPoolAddressesProvider.sol create mode 100644 contracts/third_party/aave/IProtocolDataProvider.sol create mode 100644 contracts/third_party/aave/IScaledBalanceToken.sol create mode 100644 scripts/deploy/strategies/radiant/DeployUSDCSupplyStrategy.ts create mode 100644 scripts/deploy/strategies/radiant/DeployUSDTSupplyStrategy.ts rename test/strategies/{bsc => }/cone/ConeStackerTest.ts (64%) rename test/strategies/{bsc => }/cone/ConeStrategyVConeWbnbTest.ts (83%) rename test/strategies/{bsc => }/cone/ConeStrategyVTetuUsdPlusTest.ts (81%) create mode 100644 test/strategies/radiant/EmergencyWithdrawFromPoolTest.ts create mode 100644 test/strategies/radiant/RadiantSupplyStrategyTest.ts rename test/strategies/{bsc => }/venus/EmergencyWithdrawFromPoolTest.ts (84%) rename test/strategies/{bsc => }/venus/VenusSupplyStrategyTest.ts (87%) diff --git a/contracts/impl/radiant/Radiant2SupplyStrategy.sol b/contracts/impl/radiant/Radiant2SupplyStrategy.sol new file mode 100644 index 0000000..7ad7e85 --- /dev/null +++ b/contracts/impl/radiant/Radiant2SupplyStrategy.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: ISC +/** +* By using this software, you understand, acknowledge and accept that Tetu +* and/or the underlying software are provided “as is” and “as available” +* basis and without warranties or representations of any kind either expressed +* or implied. Any use of this open source software released under the ISC +* Internet Systems Consortium license is done at your own risk to the fullest +* extent permissible pursuant to applicable law any and all liability as well +* as all warranties, including any fitness for a particular purpose with respect +* to Tetu and/or the underlying software and the use thereof are disclaimed. +*/ +pragma solidity 0.8.4; + +import "../../strategies/radiant/Radiant2StrategyBase.sol"; + +contract Radiant2SupplyStrategy is Radiant2StrategyBase { + + function initialize( + address controller_, + address underlying_, + address vault_, + uint buybackRatio_ + ) external initializer { + require(ISmartVault(vault_).underlying() == underlying_, "!underlying"); + + Radiant2StrategyBase.initializeStrategy( + controller_, + underlying_, + vault_, + buybackRatio_ + ); + } + + +} diff --git a/contracts/strategies/radiant/Radiant2StrategyBase.sol b/contracts/strategies/radiant/Radiant2StrategyBase.sol new file mode 100644 index 0000000..c158643 --- /dev/null +++ b/contracts/strategies/radiant/Radiant2StrategyBase.sol @@ -0,0 +1,128 @@ +// SPDX-License-Identifier: ISC +/** +* By using this software, you understand, acknowledge and accept that Tetu +* and/or the underlying software are provided “as is” and “as available” +* basis and without warranties or representations of any kind either expressed +* or implied. Any use of this open source software released under the ISC +* Internet Systems Consortium license is done at your own risk to the fullest +* extent permissible pursuant to applicable law any and all liability as well +* as all warranties, including any fitness for a particular purpose with respect +* to Tetu and/or the underlying software and the use thereof are disclaimed. +*/ +pragma solidity 0.8.4; + +import "../UniversalLendStrategy.sol"; +import "../../third_party/aave/IAToken.sol"; +import "../../third_party/aave/ILendingPool.sol"; +import "../../third_party/aave/IAaveIncentivesController.sol"; +import "../../third_party/aave/IProtocolDataProvider.sol"; + +/// @title Contract for RadiantV2 simple supply strategy simplified +/// @author belbix, Aleh +abstract contract Radiant2StrategyBase is UniversalLendStrategy { + using SafeERC20 for IERC20; + + /// ****************************************************** + /// Constants and variables + /// ****************************************************** + + /// @notice Version of the contract + /// @dev Should be incremented when contract changed + string public constant VERSION = "1.0.0"; + + IStrategy.Platform public constant override platform = IStrategy.Platform.SLOT_48; //todo change + /// @notice Strategy type for statistical purposes + string public constant override STRATEGY_NAME = "Radiant2StrategyBase"; + + ILendingPool public constant AAVE_LENDING_POOL = ILendingPool(0xd50Cf00b6e600Dd036Ba8eF475677d816d6c4281); + IProtocolDataProvider public constant AAVE_DATA_PROVIDER = IProtocolDataProvider(0x2f9D57E97C3DFED8676e605BC504a48E0c5917E9); + + + /// ****************************************************** + /// Initialization + /// ****************************************************** + + /// @notice Initialize contract after setup it as proxy implementation + function initializeStrategy( + address controller_, + address underlying_, + address vault_, + uint buybackRatio_ + ) public initializer { + UniversalLendStrategy.initializeLendStrategy( + controller_, + underlying_, + vault_, + buybackRatio_, + new address[](0) + ); + + address aToken; + (aToken,,) = AAVE_DATA_PROVIDER.getReserveTokensAddresses(underlying_); + require(IAToken(aToken).UNDERLYING_ASSET_ADDRESS() == _underlying(), "Wrong underlying"); + } + + /// ****************************************************** + /// Views + /// ****************************************************** + + /// @notice Invested assets in the pool + function _rewardPoolBalance() internal override view returns (uint) { + return localBalance; + } + + /// @notice Return approximately amount of reward tokens ready to claim + function readyToClaim() external pure override returns (uint[] memory) { + uint[] memory rewards = new uint256[](1); + return rewards; + } + + /// @notice TVL of the underlying in the pool + function poolTotalAmount() external view override returns (uint256) { + address aToken; + (aToken,,) = AAVE_DATA_PROVIDER.getReserveTokensAddresses(_underlying()); + return IERC20(_underlying()).balanceOf(aToken); + } + + /// ****************************************************** + /// Internal logic implementation + /// ****************************************************** + + + /// @dev Refresh rates and return actual deposited balance in underlying tokens + function _getActualPoolBalance() internal view override returns (uint) { + (uint suppliedUnderlying,,,,,,,,) = AAVE_DATA_PROVIDER.getUserReserveData(_underlying(), address(this)); + return suppliedUnderlying; + } + + /// @dev Deposit to pool and increase local balance + function _simpleDepositToPool(uint amount) internal override { + address u = _underlying(); + _approveIfNeeds(u, amount, address(AAVE_LENDING_POOL)); + AAVE_LENDING_POOL.deposit(u, amount, address(this), 0); + } + + /// @dev Perform only withdraw action, without changing local balance + function _withdrawFromPoolWithoutChangeLocalBalance(uint amount, uint poolBalance) internal override returns (bool withdrewAll) { + if (amount < poolBalance) { + AAVE_LENDING_POOL.withdraw(_underlying(), amount, address(this)); + return false; + } else { + AAVE_LENDING_POOL.withdraw(_underlying(), type(uint).max, address(this)); + return true; + } + } + + /// @dev Withdraw all and set localBalance to zero + function _withdrawAllFromPool() internal override { + AAVE_LENDING_POOL.withdraw(_underlying(), type(uint).max, address(this)); + } + + /// @dev Claim distribution rewards + function _claimReward() internal override { + // no rewards for the simple supply + } + + //slither-disable-next-line unused-state + uint256[49] private ______gap; +} diff --git a/contracts/third_party/aave/DataTypes.sol b/contracts/third_party/aave/DataTypes.sol new file mode 100644 index 0000000..4a3062f --- /dev/null +++ b/contracts/third_party/aave/DataTypes.sol @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: agpl-3.0 +pragma solidity 0.8.4; + +library DataTypes { + // refer to the whitepaper, section 1.1 basic concepts for a formal description of these properties. + struct ReserveData { + //stores the reserve configuration + ReserveConfigurationMap configuration; + //the liquidity index. Expressed in ray + uint128 liquidityIndex; + //variable borrow index. Expressed in ray + uint128 variableBorrowIndex; + //the current supply rate. Expressed in ray + uint128 currentLiquidityRate; + //the current variable borrow rate. Expressed in ray + uint128 currentVariableBorrowRate; + //the current stable borrow rate. Expressed in ray + uint128 currentStableBorrowRate; + uint40 lastUpdateTimestamp; + //tokens addresses + address aTokenAddress; + address stableDebtTokenAddress; + address variableDebtTokenAddress; + //address of the interest rate strategy + address interestRateStrategyAddress; + //the id of the reserve. Represents the position in the list of the active reserves + uint8 id; + } + + struct ReserveConfigurationMap { + //bit 0-15: LTV + //bit 16-31: Liq. threshold + //bit 32-47: Liq. bonus + //bit 48-55: Decimals + //bit 56: Reserve is active + //bit 57: reserve is frozen + //bit 58: borrowing is enabled + //bit 59: stable rate borrowing enabled + //bit 60-63: reserved + //bit 64-79: reserve factor + uint256 data; + } + + struct UserConfigurationMap { + uint256 data; + } + + enum InterestRateMode {NONE, STABLE, VARIABLE} +} \ No newline at end of file diff --git a/contracts/third_party/aave/IAToken.sol b/contracts/third_party/aave/IAToken.sol new file mode 100644 index 0000000..902ee59 --- /dev/null +++ b/contracts/third_party/aave/IAToken.sol @@ -0,0 +1,91 @@ +// SPDX-License-Identifier: agpl-3.0 +pragma solidity 0.8.4; + +import "./IScaledBalanceToken.sol"; +import "@tetu_io/tetu-contracts/contracts/openzeppelin/IERC20.sol"; + +interface IAToken is IERC20, IScaledBalanceToken { + /** + * @dev Emitted after the mint action + * @param from The address performing the mint + * @param value The amount being + * @param index The new liquidity index of the reserve + **/ + event Mint(address indexed from, uint256 value, uint256 index); + + /** + * @dev Mints `amount` aTokens to `user` + * @param user The address receiving the minted tokens + * @param amount The amount of tokens getting minted + * @param index The new liquidity index of the reserve + * @return `true` if the the previous balance of the user was 0 + */ + function mint( + address user, + uint256 amount, + uint256 index + ) external returns (bool); + + /** + * @dev Emitted after aTokens are burned + * @param from The owner of the aTokens, getting them burned + * @param target The address that will receive the underlying + * @param value The amount being burned + * @param index The new liquidity index of the reserve + **/ + event Burn(address indexed from, address indexed target, uint256 value, uint256 index); + + /** + * @dev Emitted during the transfer action + * @param from The user whose tokens are being transferred + * @param to The recipient + * @param value The amount being transferred + * @param index The new liquidity index of the reserve + **/ + event BalanceTransfer(address indexed from, address indexed to, uint256 value, uint256 index); + + /** + * @dev Burns aTokens from `user` and sends the equivalent amount of underlying to `receiverOfUnderlying` + * @param user The owner of the aTokens, getting them burned + * @param receiverOfUnderlying The address that will receive the underlying + * @param amount The amount being burned + * @param index The new liquidity index of the reserve + **/ + function burn( + address user, + address receiverOfUnderlying, + uint256 amount, + uint256 index + ) external; + + /** + * @dev Mints aTokens to the reserve treasury + * @param amount The amount of tokens getting minted + * @param index The new liquidity index of the reserve + */ + function mintToTreasury(uint256 amount, uint256 index) external; + + /** + * @dev Transfers aTokens in the event of a borrow being liquidated, in case the liquidators reclaims the aToken + * @param from The address getting liquidated, current owner of the aTokens + * @param to The recipient + * @param value The amount of tokens getting transferred + **/ + function transferOnLiquidation( + address from, + address to, + uint256 value + ) external; + + /** + * @dev Transfers the underlying asset to `target`. Used by the LendingPool to transfer + * assets in borrow(), withdraw() and flashLoan() + * @param user The recipient of the aTokens + * @param amount The amount getting transferred + * @return The amount transferred + **/ + function transferUnderlyingTo(address user, uint256 amount) external returns (uint256); + + function UNDERLYING_ASSET_ADDRESS() external view returns (address); + +} diff --git a/contracts/third_party/aave/IAaveIncentivesController.sol b/contracts/third_party/aave/IAaveIncentivesController.sol new file mode 100644 index 0000000..ce864df --- /dev/null +++ b/contracts/third_party/aave/IAaveIncentivesController.sol @@ -0,0 +1,132 @@ +// SPDX-License-Identifier: agpl-3.0 +pragma solidity 0.8.4; +interface IAaveIncentivesController { + event RewardsAccrued(address indexed user, uint256 amount); + + event RewardsClaimed(address indexed user, address indexed to, uint256 amount); + + event RewardsClaimed( + address indexed user, + address indexed to, + address indexed claimer, + uint256 amount + ); + + event ClaimerSet(address indexed user, address indexed claimer); + + /* + * @dev Returns the configuration of the distribution for a certain asset + * @param asset The address of the reference asset of the distribution + * @return The asset index, the emission per second and the last updated timestamp + **/ + function getAssetData(address asset) external view returns (uint256, uint256, uint256); + + /* + * LEGACY ************************** + * @dev Returns the configuration of the distribution for a certain asset + * @param asset The address of the reference asset of the distribution + * @return The asset index, the emission per second and the last updated timestamp + **/ + function assets(address _asset) external view returns (uint128, uint128, uint256); + + /** + * @dev Whitelists an address to claim the rewards on behalf of another address + * @param user The address of the user + * @param claimer The address of the claimer + */ + function setClaimer(address user, address claimer) external; + + /** + * @dev Returns the whitelisted claimer for a certain address (0x0 if not set) + * @param user The address of the user + * @return The claimer address + */ + function getClaimer(address user) external view returns (address); + + /** + * @dev Configure assets for a certain rewards emission + * @param _assets The assets to incentivize + * @param emissionsPerSecond The emission for each asset + */ + function configureAssets(address[] calldata _assets, uint256[] calldata emissionsPerSecond) + external; + + /** + * @dev Called by the corresponding asset on any update that affects the rewards distribution + * @param asset The address of the user + * @param userBalance The balance of the user of the asset in the lending pool + * @param totalSupply The total supply of the asset in the lending pool + **/ + function handleAction( + address asset, + uint256 userBalance, + uint256 totalSupply + ) external; + + /** + * @dev Returns the total of rewards of an user, already accrued + not yet accrued + * @param user The address of the user + * @return The rewards + **/ + function getRewardsBalance(address[] calldata _assets, address user) + external + view + returns (uint256); + + /** + * @dev Claims reward for an user, on all the assets of the lending pool, accumulating the pending rewards + * @param amount Amount of rewards to claim + * @param to Address that will be receiving the rewards + * @return Rewards claimed + **/ + function claimRewards( + address[] calldata _assets, + uint256 amount, + address to + ) external returns (uint256); + + /** + * @dev Claims reward for an user on behalf, on all the assets of the lending pool, accumulating the pending rewards. The caller must + * be whitelisted via "allowClaimOnBehalf" function by the RewardsAdmin role manager + * @param amount Amount of rewards to claim + * @param user Address to check and claim rewards + * @param to Address that will be receiving the rewards + * @return Rewards claimed + **/ + function claimRewardsOnBehalf( + address[] calldata _assets, + uint256 amount, + address user, + address to + ) external returns (uint256); + + /** + * @dev returns the unclaimed rewards of the user + * @param user the address of the user + * @return the unclaimed user rewards + */ + function getUserUnclaimedRewards(address user) external view returns (uint256); + + /** + * @dev returns the unclaimed rewards of the user + * @param user the address of the user + * @param _assets The asset to incentivize + * @return the user index for the asset + */ + function getUserAssetData(address user, address _assets) external view returns (uint256); + + /** + * @dev for backward compatibility with previous implementation of the Incentives controller + */ + function REWARD_TOKEN() external view returns (address); + + /** + * @dev for backward compatibility with previous implementation of the Incentives controller + */ + function PRECISION() external view returns (uint8); + + /** + * @dev Gets the distribution end timestamp of the emissions + */ + function DISTRIBUTION_END() external view returns (uint256); +} diff --git a/contracts/third_party/aave/ILendingPool.sol b/contracts/third_party/aave/ILendingPool.sol new file mode 100644 index 0000000..b750dd0 --- /dev/null +++ b/contracts/third_party/aave/ILendingPool.sol @@ -0,0 +1,410 @@ +// SPDX-License-Identifier: agpl-3.0 +pragma solidity 0.8.4; + +import "./DataTypes.sol"; +import "./ILendingPoolAddressesProvider.sol"; + + +interface ILendingPool { + /** + * @dev Emitted on deposit() + * @param reserve The address of the underlying asset of the reserve + * @param user The address initiating the deposit + * @param onBehalfOf The beneficiary of the deposit, receiving the aTokens + * @param amount The amount deposited + * @param referral The referral code used + **/ + event Deposit( + address indexed reserve, + address user, + address indexed onBehalfOf, + uint256 amount, + uint16 indexed referral + ); + + /** + * @dev Emitted on withdraw() + * @param reserve The address of the underlyng asset being withdrawn + * @param user The address initiating the withdrawal, owner of aTokens + * @param to Address that will receive the underlying + * @param amount The amount to be withdrawn + **/ + event Withdraw(address indexed reserve, address indexed user, address indexed to, uint256 amount); + + /** + * @dev Emitted on borrow() and flashLoan() when debt needs to be opened + * @param reserve The address of the underlying asset being borrowed + * @param user The address of the user initiating the borrow(), receiving the funds on borrow() or just + * initiator of the transaction on flashLoan() + * @param onBehalfOf The address that will be getting the debt + * @param amount The amount borrowed out + * @param borrowRateMode The rate mode: 1 for Stable, 2 for Variable + * @param borrowRate The numeric rate at which the user has borrowed + * @param referral The referral code used + **/ + event Borrow( + address indexed reserve, + address user, + address indexed onBehalfOf, + uint256 amount, + uint256 borrowRateMode, + uint256 borrowRate, + uint16 indexed referral + ); + + /** + * @dev Emitted on repay() + * @param reserve The address of the underlying asset of the reserve + * @param user The beneficiary of the repayment, getting his debt reduced + * @param repayer The address of the user initiating the repay(), providing the funds + * @param amount The amount repaid + **/ + event Repay( + address indexed reserve, + address indexed user, + address indexed repayer, + uint256 amount + ); + + /** + * @dev Emitted on swapBorrowRateMode() + * @param reserve The address of the underlying asset of the reserve + * @param user The address of the user swapping his rate mode + * @param rateMode The rate mode that the user wants to swap to + **/ + event Swap(address indexed reserve, address indexed user, uint256 rateMode); + + /** + * @dev Emitted on setUserUseReserveAsCollateral() + * @param reserve The address of the underlying asset of the reserve + * @param user The address of the user enabling the usage as collateral + **/ + event ReserveUsedAsCollateralEnabled(address indexed reserve, address indexed user); + + /** + * @dev Emitted on setUserUseReserveAsCollateral() + * @param reserve The address of the underlying asset of the reserve + * @param user The address of the user enabling the usage as collateral + **/ + event ReserveUsedAsCollateralDisabled(address indexed reserve, address indexed user); + + /** + * @dev Emitted on rebalanceStableBorrowRate() + * @param reserve The address of the underlying asset of the reserve + * @param user The address of the user for which the rebalance has been executed + **/ + event RebalanceStableBorrowRate(address indexed reserve, address indexed user); + + /** + * @dev Emitted on flashLoan() + * @param target The address of the flash loan receiver contract + * @param initiator The address initiating the flash loan + * @param asset The address of the asset being flash borrowed + * @param amount The amount flash borrowed + * @param premium The fee flash borrowed + * @param referralCode The referral code used + **/ + event FlashLoan( + address indexed target, + address indexed initiator, + address indexed asset, + uint256 amount, + uint256 premium, + uint16 referralCode + ); + + /** + * @dev Emitted when the pause is triggered. + */ + event Paused(); + + /** + * @dev Emitted when the pause is lifted. + */ + event Unpaused(); + + /** + * @dev Emitted when a borrower is liquidated. This event is emitted by the LendingPool via + * LendingPoolCollateral manager using a DELEGATECALL + * This allows to have the events in the generated ABI for LendingPool. + * @param collateralAsset The address of the underlying asset used as collateral, to receive as result of the liquidation + * @param debtAsset The address of the underlying borrowed asset to be repaid with the liquidation + * @param user The address of the borrower getting liquidated + * @param debtToCover The debt amount of borrowed `asset` the liquidator wants to cover + * @param liquidatedCollateralAmount The amount of collateral received by the liiquidator + * @param liquidator The address of the liquidator + * @param receiveAToken `true` if the liquidators wants to receive the collateral aTokens, `false` if he wants + * to receive the underlying collateral asset directly + **/ + event LiquidationCall( + address indexed collateralAsset, + address indexed debtAsset, + address indexed user, + uint256 debtToCover, + uint256 liquidatedCollateralAmount, + address liquidator, + bool receiveAToken + ); + + /** + * @dev Emitted when the state of a reserve is updated. NOTE: This event is actually declared + * in the ReserveLogic library and emitted in the updateInterestRates() function. Since the function is internal, + * the event will actually be fired by the LendingPool contract. The event is therefore replicated here so it + * gets added to the LendingPool ABI + * @param reserve The address of the underlying asset of the reserve + * @param liquidityRate The new liquidity rate + * @param stableBorrowRate The new stable borrow rate + * @param variableBorrowRate The new variable borrow rate + * @param liquidityIndex The new liquidity index + * @param variableBorrowIndex The new variable borrow index + **/ + event ReserveDataUpdated( + address indexed reserve, + uint256 liquidityRate, + uint256 stableBorrowRate, + uint256 variableBorrowRate, + uint256 liquidityIndex, + uint256 variableBorrowIndex + ); + + /** + * @dev Deposits an `amount` of underlying asset into the reserve, receiving in return overlying aTokens. + * - E.g. User deposits 100 USDC and gets in return 100 aUSDC + * @param asset The address of the underlying asset to deposit + * @param amount The amount to be deposited + * @param onBehalfOf The address that will receive the aTokens, same as msg.sender if the user + * wants to receive them on his own wallet, or a different address if the beneficiary of aTokens + * is a different wallet + * @param referralCode Code used to register the integrator originating the operation, for potential rewards. + * 0 if the action is executed directly by the user, without any middle-man + **/ + function deposit( + address asset, + uint256 amount, + address onBehalfOf, + uint16 referralCode + ) external; + + /** + * @dev Withdraws an `amount` of underlying asset from the reserve, burning the equivalent aTokens owned + * E.g. User has 100 aUSDC, calls withdraw() and receives 100 USDC, burning the 100 aUSDC + * @param asset The address of the underlying asset to withdraw + * @param amount The underlying amount to be withdrawn + * - Send the value type(uint256).max in order to withdraw the whole aToken balance + * @param to Address that will receive the underlying, same as msg.sender if the user + * wants to receive it on his own wallet, or a different address if the beneficiary is a + * different wallet + * @return The final amount withdrawn + **/ + function withdraw( + address asset, + uint256 amount, + address to + ) external returns (uint256); + + /** + * @dev Allows users to borrow a specific `amount` of the reserve underlying asset, provided that the borrower + * already deposited enough collateral, or he was given enough allowance by a credit delegator on the + * corresponding debt token (StableDebtToken or VariableDebtToken) + * - E.g. User borrows 100 USDC passing as `onBehalfOf` his own address, receiving the 100 USDC in his wallet + * and 100 stable/variable debt tokens, depending on the `interestRateMode` + * @param asset The address of the underlying asset to borrow + * @param amount The amount to be borrowed + * @param interestRateMode The interest rate mode at which the user wants to borrow: 1 for Stable, 2 for Variable + * @param referralCode Code used to register the integrator originating the operation, for potential rewards. + * 0 if the action is executed directly by the user, without any middle-man + * @param onBehalfOf Address of the user who will receive the debt. Should be the address of the borrower itself + * calling the function if he wants to borrow against his own collateral, or the address of the credit delegator + * if he has been given credit delegation allowance + **/ + function borrow( + address asset, + uint256 amount, + uint256 interestRateMode, + uint16 referralCode, + address onBehalfOf + ) external; + + /** + * @notice Repays a borrowed `amount` on a specific reserve, burning the equivalent debt tokens owned + * - E.g. User repays 100 USDC, burning 100 variable/stable debt tokens of the `onBehalfOf` address + * @param asset The address of the borrowed underlying asset previously borrowed + * @param amount The amount to repay + * - Send the value type(uint256).max in order to repay the whole debt for `asset` on the specific `debtMode` + * @param rateMode The interest rate mode at of the debt the user wants to repay: 1 for Stable, 2 for Variable + * @param onBehalfOf Address of the user who will get his debt reduced/removed. Should be the address of the + * user calling the function if he wants to reduce/remove his own debt, or the address of any other + * other borrower whose debt should be removed + * @return The final amount repaid + **/ + function repay( + address asset, + uint256 amount, + uint256 rateMode, + address onBehalfOf + ) external returns (uint256); + + /** + * @dev Allows a borrower to swap his debt between stable and variable mode, or viceversa + * @param asset The address of the underlying asset borrowed + * @param rateMode The rate mode that the user wants to swap to + **/ + function swapBorrowRateMode(address asset, uint256 rateMode) external; + + /** + * @dev Rebalances the stable interest rate of a user to the current stable rate defined on the reserve. + * - Users can be rebalanced if the following conditions are satisfied: + * 1. Usage ratio is above 95% + * 2. the current deposit APY is below REBALANCE_UP_THRESHOLD * maxVariableBorrowRate, which means that too much has been + * borrowed at a stable rate and depositors are not earning enough + * @param asset The address of the underlying asset borrowed + * @param user The address of the user to be rebalanced + **/ + function rebalanceStableBorrowRate(address asset, address user) external; + + /** + * @dev Allows depositors to enable/disable a specific deposited asset as collateral + * @param asset The address of the underlying asset deposited + * @param useAsCollateral `true` if the user wants to use the deposit as collateral, `false` otherwise + **/ + function setUserUseReserveAsCollateral(address asset, bool useAsCollateral) external; + + /** + * @dev Function to liquidate a non-healthy position collateral-wise, with Health Factor below 1 + * - The caller (liquidator) covers `debtToCover` amount of debt of the user getting liquidated, and receives + * a proportionally amount of the `collateralAsset` plus a bonus to cover market risk + * @param collateralAsset The address of the underlying asset used as collateral, to receive as result of the liquidation + * @param debtAsset The address of the underlying borrowed asset to be repaid with the liquidation + * @param user The address of the borrower getting liquidated + * @param debtToCover The debt amount of borrowed `asset` the liquidator wants to cover + * @param receiveAToken `true` if the liquidators wants to receive the collateral aTokens, `false` if he wants + * to receive the underlying collateral asset directly + **/ + function liquidationCall( + address collateralAsset, + address debtAsset, + address user, + uint256 debtToCover, + bool receiveAToken + ) external; + + /** + * @dev Allows smartcontracts to access the liquidity of the pool within one transaction, + * as long as the amount taken plus a fee is returned. + * IMPORTANT There are security concerns for developers of flashloan receiver contracts that must be kept into consideration. + * For further details please visit https://developers.aave.com + * @param receiverAddress The address of the contract receiving the funds, implementing the IFlashLoanReceiver interface + * @param assets The addresses of the assets being flash-borrowed + * @param amounts The amounts amounts being flash-borrowed + * @param modes Types of the debt to open if the flash loan is not returned: + * 0 -> Don't open any debt, just revert if funds can't be transferred from the receiver + * 1 -> Open debt at stable rate for the value of the amount flash-borrowed to the `onBehalfOf` address + * 2 -> Open debt at variable rate for the value of the amount flash-borrowed to the `onBehalfOf` address + * @param onBehalfOf The address that will receive the debt in the case of using on `modes` 1 or 2 + * @param params Variadic packed params to pass to the receiver as extra information + * @param referralCode Code used to register the integrator originating the operation, for potential rewards. + * 0 if the action is executed directly by the user, without any middle-man + **/ + function flashLoan( + address receiverAddress, + address[] calldata assets, + uint256[] calldata amounts, + uint256[] calldata modes, + address onBehalfOf, + bytes calldata params, + uint16 referralCode + ) external; + + /** + * @dev Returns the user account data across all the reserves + * @param user The address of the user + * @return totalCollateralETH the total collateral in ETH of the user + * @return totalDebtETH the total debt in ETH of the user + * @return availableBorrowsETH the borrowing power left of the user + * @return currentLiquidationThreshold the liquidation threshold of the user + * @return ltv the loan to value of the user + * @return healthFactor the current health factor of the user + **/ + function getUserAccountData(address user) + external + view + returns ( + uint256 totalCollateralETH, + uint256 totalDebtETH, + uint256 availableBorrowsETH, + uint256 currentLiquidationThreshold, + uint256 ltv, + uint256 healthFactor + ); + + function initReserve( + address reserve, + address aTokenAddress, + address stableDebtAddress, + address variableDebtAddress, + address interestRateStrategyAddress + ) external; + + function setReserveInterestRateStrategyAddress(address reserve, address rateStrategyAddress) + external; + + function setConfiguration(address reserve, uint256 configuration) external; + + /** + * @dev Returns the configuration of the reserve + * @param asset The address of the underlying asset of the reserve + * @return The configuration of the reserve + **/ + function getConfiguration(address asset) + external + view + returns (DataTypes.ReserveConfigurationMap memory); + + /** + * @dev Returns the configuration of the user across all the reserves + * @param user The user address + * @return The configuration of the user + **/ + function getUserConfiguration(address user) + external + view + returns (DataTypes.UserConfigurationMap memory); + + /** + * @dev Returns the normalized income normalized income of the reserve + * @param asset The address of the underlying asset of the reserve + * @return The reserve's normalized income + */ + function getReserveNormalizedIncome(address asset) external view returns (uint256); + + /** + * @dev Returns the normalized variable debt per unit of asset + * @param asset The address of the underlying asset of the reserve + * @return The reserve normalized variable debt + */ + function getReserveNormalizedVariableDebt(address asset) external view returns (uint256); + + /** + * @dev Returns the state and configuration of the reserve + * @param asset The address of the underlying asset of the reserve + * @return The state of the reserve + **/ + function getReserveData(address asset) external view returns (DataTypes.ReserveData memory); + + function finalizeTransfer( + address asset, + address from, + address to, + uint256 amount, + uint256 balanceFromAfter, + uint256 balanceToBefore + ) external; + + function getReservesList() external view returns (address[] memory); + + function getAddressesProvider() external view returns (ILendingPoolAddressesProvider); + + function setPause(bool val) external; + + function paused() external view returns (bool); +} \ No newline at end of file diff --git a/contracts/third_party/aave/ILendingPoolAddressesProvider.sol b/contracts/third_party/aave/ILendingPoolAddressesProvider.sol new file mode 100644 index 0000000..06513f8 --- /dev/null +++ b/contracts/third_party/aave/ILendingPoolAddressesProvider.sol @@ -0,0 +1,60 @@ +// SPDX-License-Identifier: agpl-3.0 +pragma solidity 0.8.4; + +/** + * @title LendingPoolAddressesProvider contract + * @dev Main registry of addresses part of or connected to the protocol, including permissioned roles + * - Acting also as factory of proxies and admin of those, so with right to change its implementations + * - Owned by the Aave Governance + * @author Aave + **/ +interface ILendingPoolAddressesProvider { + event MarketIdSet(string newMarketId); + event LendingPoolUpdated(address indexed newAddress); + event ConfigurationAdminUpdated(address indexed newAddress); + event EmergencyAdminUpdated(address indexed newAddress); + event LendingPoolConfiguratorUpdated(address indexed newAddress); + event LendingPoolCollateralManagerUpdated(address indexed newAddress); + event PriceOracleUpdated(address indexed newAddress); + event LendingRateOracleUpdated(address indexed newAddress); + event ProxyCreated(bytes32 id, address indexed newAddress); + event AddressSet(bytes32 id, address indexed newAddress, bool hasProxy); + + function getMarketId() external view returns (string memory); + + function setMarketId(string calldata marketId) external; + + function setAddress(bytes32 id, address newAddress) external; + + function setAddressAsProxy(bytes32 id, address impl) external; + + function getAddress(bytes32 id) external view returns (address); + + function getLendingPool() external view returns (address); + + function setLendingPoolImpl(address pool) external; + + function getLendingPoolConfigurator() external view returns (address); + + function setLendingPoolConfiguratorImpl(address configurator) external; + + function getLendingPoolCollateralManager() external view returns (address); + + function setLendingPoolCollateralManager(address manager) external; + + function getPoolAdmin() external view returns (address); + + function setPoolAdmin(address admin) external; + + function getEmergencyAdmin() external view returns (address); + + function setEmergencyAdmin(address admin) external; + + function getPriceOracle() external view returns (address); + + function setPriceOracle(address priceOracle) external; + + function getLendingRateOracle() external view returns (address); + + function setLendingRateOracle(address lendingRateOracle) external; +} \ No newline at end of file diff --git a/contracts/third_party/aave/IProtocolDataProvider.sol b/contracts/third_party/aave/IProtocolDataProvider.sol new file mode 100644 index 0000000..9c4a5dd --- /dev/null +++ b/contracts/third_party/aave/IProtocolDataProvider.sol @@ -0,0 +1,61 @@ +// SPDX-License-Identifier: agpl-3.0 +pragma solidity 0.8.4; + +import {ILendingPoolAddressesProvider} from './ILendingPoolAddressesProvider.sol'; + +interface IProtocolDataProvider { + struct TokenData { + string symbol; + address tokenAddress; + } + + function ADDRESSES_PROVIDER() external view returns (ILendingPoolAddressesProvider); + + function getAllReservesTokens() external view returns (TokenData[] memory); + + function getAllATokens() external view returns (TokenData[] memory); + + function getReserveConfigurationData(address asset) external view returns ( + uint256 decimals, + uint256 ltv, + uint256 liquidationThreshold, + uint256 liquidationBonus, + uint256 reserveFactor, + bool usageAsCollateralEnabled, + bool borrowingEnabled, + bool stableBorrowRateEnabled, + bool isActive, + bool isFrozen + ); + + function getReserveData(address asset) external view returns ( + uint256 availableLiquidity, + uint256 totalStableDebt, + uint256 totalVariableDebt, + uint256 liquidityRate, + uint256 variableBorrowRate, + uint256 stableBorrowRate, + uint256 averageStableBorrowRate, + uint256 liquidityIndex, + uint256 variableBorrowIndex, + uint40 lastUpdateTimestamp + ); + + function getUserReserveData(address asset, address user) external view returns ( + uint256 currentATokenBalance, + uint256 currentStableDebt, + uint256 currentVariableDebt, + uint256 principalStableDebt, + uint256 scaledVariableDebt, + uint256 stableBorrowRate, + uint256 liquidityRate, + uint40 stableRateLastUpdated, + bool usageAsCollateralEnabled + ); + + function getReserveTokensAddresses(address asset) external view returns ( + address aTokenAddress, + address stableDebtTokenAddress, + address variableDebtTokenAddress + ); +} \ No newline at end of file diff --git a/contracts/third_party/aave/IScaledBalanceToken.sol b/contracts/third_party/aave/IScaledBalanceToken.sol new file mode 100644 index 0000000..37a7aa8 --- /dev/null +++ b/contracts/third_party/aave/IScaledBalanceToken.sol @@ -0,0 +1,26 @@ +// SPDX-License-Identifier: agpl-3.0 +pragma solidity 0.8.4; + +interface IScaledBalanceToken { + /** + * @dev Returns the scaled balance of the user. The scaled balance is the sum of all the + * updated stored balance divided by the reserve's liquidity index at the moment of the update + * @param user The user whose balance is calculated + * @return The scaled balance of the user + **/ + function scaledBalanceOf(address user) external view returns (uint256); + + /** + * @dev Returns the scaled balance of the user and the scaled total supply. + * @param user The address of the user + * @return The scaled balance of the user + * @return The scaled balance and the scaled total supply + **/ + function getScaledUserBalanceAndSupply(address user) external view returns (uint256, uint256); + + /** + * @dev Returns the scaled total supply of the variable debt token. Represents sum(debt/index) + * @return The scaled total supply + **/ + function scaledTotalSupply() external view returns (uint256); +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 63f576b..72b36ca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8586,6 +8586,8 @@ }, "node_modules/ganache-core/node_modules/@ethersproject/abi": { "version": "5.0.0-beta.153", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.0-beta.153.tgz", + "integrity": "sha512-aXweZ1Z7vMNzJdLpR1CZUAIgnwjrZeUSvN9syCwlBaEBUFJmFY+HHnfuTI5vIhVs/mRkfJVrbEyl51JZQqyjAg==", "license": "MIT", "optional": true, "dependencies": { @@ -8947,6 +8949,8 @@ }, "node_modules/ganache-core/node_modules/@sindresorhus/is": { "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", "license": "MIT", "optional": true, "engines": { @@ -8955,6 +8959,8 @@ }, "node_modules/ganache-core/node_modules/@szmarczak/http-timer": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", "license": "MIT", "optional": true, "dependencies": { @@ -8966,6 +8972,8 @@ }, "node_modules/ganache-core/node_modules/@types/bn.js": { "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", "license": "MIT", "dependencies": { "@types/node": "*" @@ -8977,6 +8985,8 @@ }, "node_modules/ganache-core/node_modules/@types/pbkdf2": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", + "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", "license": "MIT", "dependencies": { "@types/node": "*" @@ -8991,10 +9001,14 @@ }, "node_modules/ganache-core/node_modules/@yarnpkg/lockfile": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", "license": "BSD-2-Clause" }, "node_modules/ganache-core/node_modules/abstract-leveldown": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-3.0.0.tgz", + "integrity": "sha512-KUWx9UWGQD12zsmLNj64/pndaz4iJh/Pj7nopgkfDG6RlCcbMZvT6+9l7dchK4idog2Is8VdC/PvNbFuFmalIQ==", "license": "MIT", "dependencies": { "xtend": "~4.0.0" @@ -9017,11 +9031,15 @@ }, "node_modules/ganache-core/node_modules/aes-js": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz", + "integrity": "sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==", "license": "MIT", "optional": true }, "node_modules/ganache-core/node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -9036,6 +9054,8 @@ }, "node_modules/ganache-core/node_modules/ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "license": "MIT", "dependencies": { "color-convert": "^1.9.0" @@ -9046,6 +9066,8 @@ }, "node_modules/ganache-core/node_modules/arr-diff": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -9053,6 +9075,8 @@ }, "node_modules/ganache-core/node_modules/arr-flatten": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -9060,6 +9084,8 @@ }, "node_modules/ganache-core/node_modules/arr-union": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -9067,11 +9093,15 @@ }, "node_modules/ganache-core/node_modules/array-flatten": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "license": "MIT", "optional": true }, "node_modules/ganache-core/node_modules/array-unique": { "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -9086,6 +9116,8 @@ }, "node_modules/ganache-core/node_modules/asn1.js": { "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", "license": "MIT", "optional": true, "dependencies": { @@ -9097,6 +9129,8 @@ }, "node_modules/ganache-core/node_modules/assert-plus": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "license": "MIT", "engines": { "node": ">=0.8" @@ -9104,6 +9138,8 @@ }, "node_modules/ganache-core/node_modules/assign-symbols": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -9111,6 +9147,8 @@ }, "node_modules/ganache-core/node_modules/async": { "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", "license": "MIT", "dependencies": { "lodash": "^4.17.11" @@ -9118,6 +9156,8 @@ }, "node_modules/ganache-core/node_modules/async-eventemitter": { "version": "0.2.4", + "resolved": "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.4.tgz", + "integrity": "sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==", "license": "MIT", "dependencies": { "async": "^2.4.0" @@ -9125,14 +9165,20 @@ }, "node_modules/ganache-core/node_modules/async-limiter": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", "license": "MIT" }, "node_modules/ganache-core/node_modules/asynckit": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "license": "MIT" }, "node_modules/ganache-core/node_modules/atob": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "license": "(MIT OR Apache-2.0)", "bin": { "atob": "bin/atob.js" @@ -9143,6 +9189,8 @@ }, "node_modules/ganache-core/node_modules/aws-sign2": { "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", "license": "Apache-2.0", "engines": { "node": "*" @@ -9150,10 +9198,14 @@ }, "node_modules/ganache-core/node_modules/aws4": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", "license": "MIT" }, "node_modules/ganache-core/node_modules/babel-code-frame": { "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", "license": "MIT", "dependencies": { "chalk": "^1.1.3", @@ -9163,6 +9215,8 @@ }, "node_modules/ganache-core/node_modules/babel-code-frame/node_modules/ansi-regex": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -9170,6 +9224,8 @@ }, "node_modules/ganache-core/node_modules/babel-code-frame/node_modules/ansi-styles": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -9177,6 +9233,8 @@ }, "node_modules/ganache-core/node_modules/babel-code-frame/node_modules/chalk": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "license": "MIT", "dependencies": { "ansi-styles": "^2.2.1", @@ -9191,10 +9249,14 @@ }, "node_modules/ganache-core/node_modules/babel-code-frame/node_modules/js-tokens": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==", "license": "MIT" }, "node_modules/ganache-core/node_modules/babel-code-frame/node_modules/strip-ansi": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "license": "MIT", "dependencies": { "ansi-regex": "^2.0.0" @@ -9205,6 +9267,8 @@ }, "node_modules/ganache-core/node_modules/babel-code-frame/node_modules/supports-color": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "license": "MIT", "engines": { "node": ">=0.8.0" @@ -9212,6 +9276,8 @@ }, "node_modules/ganache-core/node_modules/babel-core": { "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", "license": "MIT", "dependencies": { "babel-code-frame": "^6.26.0", @@ -9237,6 +9303,8 @@ }, "node_modules/ganache-core/node_modules/babel-core/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { "ms": "2.0.0" @@ -9244,6 +9312,8 @@ }, "node_modules/ganache-core/node_modules/babel-core/node_modules/json5": { "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", "license": "MIT", "bin": { "json5": "lib/cli.js" @@ -9251,10 +9321,14 @@ }, "node_modules/ganache-core/node_modules/babel-core/node_modules/ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, "node_modules/ganache-core/node_modules/babel-core/node_modules/slash": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -9262,6 +9336,8 @@ }, "node_modules/ganache-core/node_modules/babel-generator": { "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", "license": "MIT", "dependencies": { "babel-messages": "^6.23.0", @@ -9276,6 +9352,8 @@ }, "node_modules/ganache-core/node_modules/babel-generator/node_modules/jsesc": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA==", "license": "MIT", "bin": { "jsesc": "bin/jsesc" @@ -9283,6 +9361,8 @@ }, "node_modules/ganache-core/node_modules/babel-helper-builder-binary-assignment-operator-visitor": { "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha512-gCtfYORSG1fUMX4kKraymq607FWgMWg+j42IFPc18kFQEsmtaibP4UrqsXt8FlEJle25HUd4tsoDR7H2wDhe9Q==", "license": "MIT", "dependencies": { "babel-helper-explode-assignable-expression": "^6.24.1", @@ -9292,6 +9372,8 @@ }, "node_modules/ganache-core/node_modules/babel-helper-call-delegate": { "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha512-RL8n2NiEj+kKztlrVJM9JT1cXzzAdvWFh76xh/H1I4nKwunzE4INBXn8ieCZ+wh4zWszZk7NBS1s/8HR5jDkzQ==", "license": "MIT", "dependencies": { "babel-helper-hoist-variables": "^6.24.1", @@ -9302,6 +9384,8 @@ }, "node_modules/ganache-core/node_modules/babel-helper-define-map": { "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha512-bHkmjcC9lM1kmZcVpA5t2om2nzT/xiZpo6TJq7UlZ3wqKfzia4veeXbIhKvJXAMzhhEBd3cR1IElL5AenWEUpA==", "license": "MIT", "dependencies": { "babel-helper-function-name": "^6.24.1", @@ -9312,6 +9396,8 @@ }, "node_modules/ganache-core/node_modules/babel-helper-explode-assignable-expression": { "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha512-qe5csbhbvq6ccry9G7tkXbzNtcDiH4r51rrPUbwwoTzZ18AqxWYRZT6AOmxrpxKnQBW0pYlBI/8vh73Z//78nQ==", "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0", @@ -9321,6 +9407,8 @@ }, "node_modules/ganache-core/node_modules/babel-helper-function-name": { "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q==", "license": "MIT", "dependencies": { "babel-helper-get-function-arity": "^6.24.1", @@ -9332,6 +9420,8 @@ }, "node_modules/ganache-core/node_modules/babel-helper-get-function-arity": { "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng==", "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0", @@ -9340,6 +9430,8 @@ }, "node_modules/ganache-core/node_modules/babel-helper-hoist-variables": { "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha512-zAYl3tqerLItvG5cKYw7f1SpvIxS9zi7ohyGHaI9cgDUjAT6YcY9jIEH5CstetP5wHIVSceXwNS7Z5BpJg+rOw==", "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0", @@ -9348,6 +9440,8 @@ }, "node_modules/ganache-core/node_modules/babel-helper-optimise-call-expression": { "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha512-Op9IhEaxhbRT8MDXx2iNuMgciu2V8lDvYCNQbDGjdBNCjaMvyLf4wl4A3b8IgndCyQF8TwfgsQ8T3VD8aX1/pA==", "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0", @@ -9356,6 +9450,8 @@ }, "node_modules/ganache-core/node_modules/babel-helper-regex": { "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha512-VlPiWmqmGJp0x0oK27Out1D+71nVVCTSdlbhIVoaBAj2lUgrNjBCRR9+llO4lTSb2O4r7PJg+RobRkhBrf6ofg==", "license": "MIT", "dependencies": { "babel-runtime": "^6.26.0", @@ -9365,6 +9461,8 @@ }, "node_modules/ganache-core/node_modules/babel-helper-remap-async-to-generator": { "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha512-RYqaPD0mQyQIFRu7Ho5wE2yvA/5jxqCIj/Lv4BXNq23mHYu/vxikOy2JueLiBxQknwapwrJeNCesvY0ZcfnlHg==", "license": "MIT", "dependencies": { "babel-helper-function-name": "^6.24.1", @@ -9376,6 +9474,8 @@ }, "node_modules/ganache-core/node_modules/babel-helper-replace-supers": { "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha512-sLI+u7sXJh6+ToqDr57Bv973kCepItDhMou0xCP2YPVmR1jkHSCY+p1no8xErbV1Siz5QE8qKT1WIwybSWlqjw==", "license": "MIT", "dependencies": { "babel-helper-optimise-call-expression": "^6.24.1", @@ -9388,6 +9488,8 @@ }, "node_modules/ganache-core/node_modules/babel-helpers": { "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ==", "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0", @@ -9396,6 +9498,8 @@ }, "node_modules/ganache-core/node_modules/babel-messages": { "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==", "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0" @@ -9403,6 +9507,8 @@ }, "node_modules/ganache-core/node_modules/babel-plugin-check-es2015-constants": { "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha512-B1M5KBP29248dViEo1owyY32lk1ZSH2DaNNrXLGt8lyjjHm7pBqAdQ7VKUPR6EEDO323+OvT3MQXbCin8ooWdA==", "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0" @@ -9410,18 +9516,26 @@ }, "node_modules/ganache-core/node_modules/babel-plugin-syntax-async-functions": { "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw==", "license": "MIT" }, "node_modules/ganache-core/node_modules/babel-plugin-syntax-exponentiation-operator": { "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha512-Z/flU+T9ta0aIEKl1tGEmN/pZiI1uXmCiGFRegKacQfEJzp7iNsKloZmyJlQr+75FCJtiFfGIK03SiCvCt9cPQ==", "license": "MIT" }, "node_modules/ganache-core/node_modules/babel-plugin-syntax-trailing-function-commas": { "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha512-Gx9CH3Q/3GKbhs07Bszw5fPTlU+ygrOGfAhEt7W2JICwufpC4SuO0mG0+4NykPBSYPMJhqvVlDBU17qB1D+hMQ==", "license": "MIT" }, "node_modules/ganache-core/node_modules/babel-plugin-transform-async-to-generator": { "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha512-7BgYJujNCg0Ti3x0c/DL3tStvnKS6ktIYOmo9wginv/dfZOrbSZ+qG4IRRHMBOzZ5Awb1skTiAsQXg/+IWkZYw==", "license": "MIT", "dependencies": { "babel-helper-remap-async-to-generator": "^6.24.1", @@ -9431,6 +9545,8 @@ }, "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-arrow-functions": { "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha512-PCqwwzODXW7JMrzu+yZIaYbPQSKjDTAsNNlK2l5Gg9g4rz2VzLnZsStvp/3c46GfXpwkyufb3NCyG9+50FF1Vg==", "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0" @@ -9438,6 +9554,8 @@ }, "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-block-scoped-functions": { "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha512-2+ujAT2UMBzYFm7tidUsYh+ZoIutxJ3pN9IYrF1/H6dCKtECfhmB8UkHVpyxDwkj0CYbQG35ykoz925TUnBc3A==", "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0" @@ -9445,6 +9563,8 @@ }, "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-block-scoping": { "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha512-YiN6sFAQ5lML8JjCmr7uerS5Yc/EMbgg9G8ZNmk2E3nYX4ckHR01wrkeeMijEf5WHNK5TW0Sl0Uu3pv3EdOJWw==", "license": "MIT", "dependencies": { "babel-runtime": "^6.26.0", @@ -9456,6 +9576,8 @@ }, "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-classes": { "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha512-5Dy7ZbRinGrNtmWpquZKZ3EGY8sDgIVB4CU8Om8q8tnMLrD/m94cKglVcHps0BCTdZ0TJeeAWOq2TK9MIY6cag==", "license": "MIT", "dependencies": { "babel-helper-define-map": "^6.24.1", @@ -9471,6 +9593,8 @@ }, "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-computed-properties": { "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha512-C/uAv4ktFP/Hmh01gMTvYvICrKze0XVX9f2PdIXuriCSvUmV9j+u+BB9f5fJK3+878yMK6dkdcq+Ymr9mrcLzw==", "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0", @@ -9479,6 +9603,8 @@ }, "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-destructuring": { "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha512-aNv/GDAW0j/f4Uy1OEPZn1mqD+Nfy9viFGBfQ5bZyT35YqOiqx7/tXdyfZkJ1sC21NyEsBdfDY6PYmLHF4r5iA==", "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0" @@ -9486,6 +9612,8 @@ }, "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-duplicate-keys": { "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha512-ossocTuPOssfxO2h+Z3/Ea1Vo1wWx31Uqy9vIiJusOP4TbF7tPs9U0sJ9pX9OJPf4lXRGj5+6Gkl/HHKiAP5ug==", "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0", @@ -9494,6 +9622,8 @@ }, "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-for-of": { "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha512-DLuRwoygCoXx+YfxHLkVx5/NpeSbVwfoTeBykpJK7JhYWlL/O8hgAK/reforUnZDlxasOrVPPJVI/guE3dCwkw==", "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0" @@ -9501,6 +9631,8 @@ }, "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-function-name": { "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha512-iFp5KIcorf11iBqu/y/a7DK3MN5di3pNCzto61FqCNnUX4qeBwcV1SLqe10oXNnCaxBUImX3SckX2/o1nsrTcg==", "license": "MIT", "dependencies": { "babel-helper-function-name": "^6.24.1", @@ -9510,6 +9642,8 @@ }, "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-literals": { "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha512-tjFl0cwMPpDYyoqYA9li1/7mGFit39XiNX5DKC/uCNjBctMxyL1/PT/l4rSlbvBG1pOKI88STRdUsWXB3/Q9hQ==", "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0" @@ -9517,6 +9651,8 @@ }, "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-modules-amd": { "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha512-LnIIdGWIKdw7zwckqx+eGjcS8/cl8D74A3BpJbGjKTFFNJSMrjN4bIh22HY1AlkUbeLG6X6OZj56BDvWD+OeFA==", "license": "MIT", "dependencies": { "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", @@ -9526,6 +9662,8 @@ }, "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-modules-commonjs": { "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", "license": "MIT", "dependencies": { "babel-plugin-transform-strict-mode": "^6.24.1", @@ -9536,6 +9674,8 @@ }, "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-modules-systemjs": { "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha512-ONFIPsq8y4bls5PPsAWYXH/21Hqv64TBxdje0FvU3MhIV6QM2j5YS7KvAzg/nTIVLot2D2fmFQrFWCbgHlFEjg==", "license": "MIT", "dependencies": { "babel-helper-hoist-variables": "^6.24.1", @@ -9545,6 +9685,8 @@ }, "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-modules-umd": { "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha512-LpVbiT9CLsuAIp3IG0tfbVo81QIhn6pE8xBJ7XSeCtFlMltuar5VuBV6y6Q45tpui9QWcy5i0vLQfCfrnF7Kiw==", "license": "MIT", "dependencies": { "babel-plugin-transform-es2015-modules-amd": "^6.24.1", @@ -9554,6 +9696,8 @@ }, "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-object-super": { "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha512-8G5hpZMecb53vpD3mjs64NhI1au24TAmokQ4B+TBFBjN9cVoGoOvotdrMMRmHvVZUEvqGUPWL514woru1ChZMA==", "license": "MIT", "dependencies": { "babel-helper-replace-supers": "^6.24.1", @@ -9562,6 +9706,8 @@ }, "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-parameters": { "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha512-8HxlW+BB5HqniD+nLkQ4xSAVq3bR/pcYW9IigY+2y0dI+Y7INFeTbfAQr+63T3E4UDsZGjyb+l9txUnABWxlOQ==", "license": "MIT", "dependencies": { "babel-helper-call-delegate": "^6.24.1", @@ -9574,6 +9720,8 @@ }, "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-shorthand-properties": { "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha512-mDdocSfUVm1/7Jw/FIRNw9vPrBQNePy6wZJlR8HAUBLybNp1w/6lr6zZ2pjMShee65t/ybR5pT8ulkLzD1xwiw==", "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0", @@ -9582,6 +9730,8 @@ }, "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-spread": { "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha512-3Ghhi26r4l3d0Js933E5+IhHwk0A1yiutj9gwvzmFbVV0sPMYk2lekhOufHBswX7NCoSeF4Xrl3sCIuSIa+zOg==", "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0" @@ -9589,6 +9739,8 @@ }, "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-sticky-regex": { "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha512-CYP359ADryTo3pCsH0oxRo/0yn6UsEZLqYohHmvLQdfS9xkf+MbCzE3/Kolw9OYIY4ZMilH25z/5CbQbwDD+lQ==", "license": "MIT", "dependencies": { "babel-helper-regex": "^6.24.1", @@ -9598,6 +9750,8 @@ }, "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-template-literals": { "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha512-x8b9W0ngnKzDMHimVtTfn5ryimars1ByTqsfBDwAqLibmuuQY6pgBQi5z1ErIsUOWBdw1bW9FSz5RZUojM4apg==", "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0" @@ -9605,6 +9759,8 @@ }, "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-typeof-symbol": { "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha512-fz6J2Sf4gYN6gWgRZaoFXmq93X+Li/8vf+fb0sGDVtdeWvxC9y5/bTD7bvfWMEq6zetGEHpWjtzRGSugt5kNqw==", "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0" @@ -9612,6 +9768,8 @@ }, "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-unicode-regex": { "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha512-v61Dbbihf5XxnYjtBN04B/JBvsScY37R1cZT5r9permN1cp+b70DY3Ib3fIkgn1DI9U3tGgBJZVD8p/mE/4JbQ==", "license": "MIT", "dependencies": { "babel-helper-regex": "^6.24.1", @@ -9621,6 +9779,8 @@ }, "node_modules/ganache-core/node_modules/babel-plugin-transform-exponentiation-operator": { "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha512-LzXDmbMkklvNhprr20//RStKVcT8Cu+SQtX18eMHLhjHf2yFzwtQ0S2f0jQ+89rokoNdmwoSqYzAhq86FxlLSQ==", "license": "MIT", "dependencies": { "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", @@ -9630,6 +9790,8 @@ }, "node_modules/ganache-core/node_modules/babel-plugin-transform-regenerator": { "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha512-LS+dBkUGlNR15/5WHKe/8Neawx663qttS6AGqoOUhICc9d1KciBvtrQSuc0PI+CxQ2Q/S1aKuJ+u64GtLdcEZg==", "license": "MIT", "dependencies": { "regenerator-transform": "^0.10.0" @@ -9637,6 +9799,8 @@ }, "node_modules/ganache-core/node_modules/babel-plugin-transform-strict-mode": { "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha512-j3KtSpjyLSJxNoCDrhwiJad8kw0gJ9REGj8/CqL0HeRyLnvUNYV9zcqluL6QJSXh3nfsLEmSLvwRfGzrgR96Pw==", "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0", @@ -9645,6 +9809,8 @@ }, "node_modules/ganache-core/node_modules/babel-preset-env": { "version": "1.7.0", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz", + "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==", "license": "MIT", "dependencies": { "babel-plugin-check-es2015-constants": "^6.22.0", @@ -9681,6 +9847,8 @@ }, "node_modules/ganache-core/node_modules/babel-preset-env/node_modules/semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "license": "ISC", "bin": { "semver": "bin/semver" @@ -9688,6 +9856,8 @@ }, "node_modules/ganache-core/node_modules/babel-register": { "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A==", "license": "MIT", "dependencies": { "babel-core": "^6.26.0", @@ -9701,6 +9871,8 @@ }, "node_modules/ganache-core/node_modules/babel-register/node_modules/source-map-support": { "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "license": "MIT", "dependencies": { "source-map": "^0.5.6" @@ -9708,6 +9880,8 @@ }, "node_modules/ganache-core/node_modules/babel-runtime": { "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", "license": "MIT", "dependencies": { "core-js": "^2.4.0", @@ -9716,6 +9890,8 @@ }, "node_modules/ganache-core/node_modules/babel-template": { "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==", "license": "MIT", "dependencies": { "babel-runtime": "^6.26.0", @@ -9727,6 +9903,8 @@ }, "node_modules/ganache-core/node_modules/babel-traverse": { "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==", "license": "MIT", "dependencies": { "babel-code-frame": "^6.26.0", @@ -9742,6 +9920,8 @@ }, "node_modules/ganache-core/node_modules/babel-traverse/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { "ms": "2.0.0" @@ -9749,6 +9929,8 @@ }, "node_modules/ganache-core/node_modules/babel-traverse/node_modules/globals": { "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -9756,10 +9938,14 @@ }, "node_modules/ganache-core/node_modules/babel-traverse/node_modules/ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, "node_modules/ganache-core/node_modules/babel-types": { "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==", "license": "MIT", "dependencies": { "babel-runtime": "^6.26.0", @@ -9770,6 +9956,8 @@ }, "node_modules/ganache-core/node_modules/babel-types/node_modules/to-fast-properties": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -9777,6 +9965,8 @@ }, "node_modules/ganache-core/node_modules/babelify": { "version": "7.3.0", + "resolved": "https://registry.npmjs.org/babelify/-/babelify-7.3.0.tgz", + "integrity": "sha512-vID8Fz6pPN5pJMdlUnNFSfrlcx5MUule4k9aKs/zbZPyXxMTcRrB0M4Tarw22L8afr8eYSWxDPYCob3TdrqtlA==", "license": "MIT", "dependencies": { "babel-core": "^6.0.14", @@ -9785,6 +9975,8 @@ }, "node_modules/ganache-core/node_modules/babylon": { "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "license": "MIT", "bin": { "babylon": "bin/babylon.js" @@ -9792,6 +9984,8 @@ }, "node_modules/ganache-core/node_modules/backoff": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", + "integrity": "sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA==", "license": "MIT", "dependencies": { "precond": "0.2" @@ -9806,6 +10000,8 @@ }, "node_modules/ganache-core/node_modules/base": { "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "license": "MIT", "dependencies": { "cache-base": "^1.0.1", @@ -9829,6 +10025,8 @@ }, "node_modules/ganache-core/node_modules/base/node_modules/define-property": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "license": "MIT", "dependencies": { "is-descriptor": "^1.0.0" @@ -9839,6 +10037,8 @@ }, "node_modules/ganache-core/node_modules/base64-js": { "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "funding": [ { "type": "github", @@ -9857,6 +10057,8 @@ }, "node_modules/ganache-core/node_modules/bcrypt-pbkdf": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "license": "BSD-3-Clause", "dependencies": { "tweetnacl": "^0.14.3" @@ -9864,6 +10066,8 @@ }, "node_modules/ganache-core/node_modules/bcrypt-pbkdf/node_modules/tweetnacl": { "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", "license": "Unlicense" }, "node_modules/ganache-core/node_modules/bignumber.js": { @@ -9876,6 +10080,8 @@ }, "node_modules/ganache-core/node_modules/bip39": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-2.5.0.tgz", + "integrity": "sha512-xwIx/8JKoT2+IPJpFEfXoWdYwP7UVAoUxxLNfGCfVowaJE7yg1Y5B1BVPqlUNsBq5/nGwmFkwRJ8xDW4sX8OdA==", "license": "ISC", "dependencies": { "create-hash": "^1.1.0", @@ -9891,6 +10097,8 @@ }, "node_modules/ganache-core/node_modules/bluebird": { "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "license": "MIT", "optional": true }, @@ -9920,6 +10128,8 @@ }, "node_modules/ganache-core/node_modules/body-parser/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "optional": true, "dependencies": { @@ -9928,6 +10138,8 @@ }, "node_modules/ganache-core/node_modules/body-parser/node_modules/ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT", "optional": true }, @@ -9941,6 +10153,8 @@ }, "node_modules/ganache-core/node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -9949,10 +10163,14 @@ }, "node_modules/ganache-core/node_modules/brorand": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", "license": "MIT" }, "node_modules/ganache-core/node_modules/browserify-aes": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "license": "MIT", "dependencies": { "buffer-xor": "^1.0.3", @@ -9965,6 +10183,8 @@ }, "node_modules/ganache-core/node_modules/browserify-cipher": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "license": "MIT", "optional": true, "dependencies": { @@ -9975,6 +10195,8 @@ }, "node_modules/ganache-core/node_modules/browserify-des": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", "license": "MIT", "optional": true, "dependencies": { @@ -9986,6 +10208,8 @@ }, "node_modules/ganache-core/node_modules/browserify-rsa": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", "license": "MIT", "optional": true, "dependencies": { @@ -10000,6 +10224,8 @@ }, "node_modules/ganache-core/node_modules/browserify-sign": { "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", "license": "ISC", "optional": true, "dependencies": { @@ -10021,6 +10247,8 @@ }, "node_modules/ganache-core/node_modules/browserify-sign/node_modules/readable-stream": { "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "license": "MIT", "optional": true, "dependencies": { @@ -10034,6 +10262,8 @@ }, "node_modules/ganache-core/node_modules/browserslist": { "version": "3.2.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", + "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", "license": "MIT", "dependencies": { "caniuse-lite": "^1.0.30000844", @@ -10045,6 +10275,8 @@ }, "node_modules/ganache-core/node_modules/bs58": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", "license": "MIT", "dependencies": { "base-x": "^3.0.2" @@ -10052,6 +10284,8 @@ }, "node_modules/ganache-core/node_modules/bs58check": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", "license": "MIT", "dependencies": { "bs58": "^4.0.0", @@ -10061,6 +10295,8 @@ }, "node_modules/ganache-core/node_modules/buffer": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "funding": [ { "type": "github", @@ -10087,11 +10323,15 @@ }, "node_modules/ganache-core/node_modules/buffer-to-arraybuffer": { "version": "0.0.5", + "resolved": "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz", + "integrity": "sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ==", "license": "MIT", "optional": true }, "node_modules/ganache-core/node_modules/buffer-xor": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", "license": "MIT" }, "node_modules/ganache-core/node_modules/bufferutil": { @@ -10112,6 +10352,8 @@ }, "node_modules/ganache-core/node_modules/bytewise": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/bytewise/-/bytewise-1.1.0.tgz", + "integrity": "sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ==", "license": "MIT", "dependencies": { "bytewise-core": "^1.2.2", @@ -10120,6 +10362,8 @@ }, "node_modules/ganache-core/node_modules/bytewise-core": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bytewise-core/-/bytewise-core-1.2.3.tgz", + "integrity": "sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA==", "license": "MIT", "dependencies": { "typewise-core": "^1.2" @@ -10127,6 +10371,8 @@ }, "node_modules/ganache-core/node_modules/cache-base": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "license": "MIT", "dependencies": { "collection-visit": "^1.0.0", @@ -10145,6 +10391,8 @@ }, "node_modules/ganache-core/node_modules/cacheable-request": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", "license": "MIT", "optional": true, "dependencies": { @@ -10162,6 +10410,8 @@ }, "node_modules/ganache-core/node_modules/cacheable-request/node_modules/lowercase-keys": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", "license": "MIT", "optional": true, "engines": { @@ -10170,6 +10420,8 @@ }, "node_modules/ganache-core/node_modules/cachedown": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cachedown/-/cachedown-1.0.0.tgz", + "integrity": "sha512-t+yVk82vQWCJF3PsWHMld+jhhjkkWjcAzz8NbFx1iULOXWl8Tm/FdM4smZNVw3MRr0X+lVTx9PKzvEn4Ng19RQ==", "license": "MIT", "dependencies": { "abstract-leveldown": "^2.4.1", @@ -10178,6 +10430,8 @@ }, "node_modules/ganache-core/node_modules/cachedown/node_modules/abstract-leveldown": { "version": "2.7.2", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", + "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", "license": "MIT", "dependencies": { "xtend": "~4.0.0" @@ -10185,6 +10439,8 @@ }, "node_modules/ganache-core/node_modules/cachedown/node_modules/lru-cache": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", + "integrity": "sha512-91gyOKTc2k66UG6kHiH4h3S2eltcPwE1STVfMYC/NG+nZwf8IIuiamfmpGZjpbbxzSyEJaLC0tNSmhjlQUTJow==", "license": "ISC", "dependencies": { "pseudomap": "^1.0.1" @@ -10192,6 +10448,8 @@ }, "node_modules/ganache-core/node_modules/call-bind": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "license": "MIT", "dependencies": { "function-bind": "^1.1.1", @@ -10207,10 +10465,14 @@ }, "node_modules/ganache-core/node_modules/caseless": { "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", "license": "Apache-2.0" }, "node_modules/ganache-core/node_modules/chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", @@ -10223,6 +10485,8 @@ }, "node_modules/ganache-core/node_modules/checkpoint-store": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/checkpoint-store/-/checkpoint-store-1.1.0.tgz", + "integrity": "sha512-J/NdY2WvIx654cc6LWSq/IYFFCUf75fFTgwzFnmbqyORH4MwgiQCgswLLKBGzmsyTI5V7i5bp/So6sMbDWhedg==", "license": "ISC", "dependencies": { "functional-red-black-tree": "^1.0.1" @@ -10235,10 +10499,14 @@ }, "node_modules/ganache-core/node_modules/ci-info": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "license": "MIT" }, "node_modules/ganache-core/node_modules/cids": { "version": "0.7.5", + "resolved": "https://registry.npmjs.org/cids/-/cids-0.7.5.tgz", + "integrity": "sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==", "license": "MIT", "optional": true, "dependencies": { @@ -10255,6 +10523,8 @@ }, "node_modules/ganache-core/node_modules/cids/node_modules/multicodec": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz", + "integrity": "sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==", "license": "MIT", "optional": true, "dependencies": { @@ -10264,6 +10534,8 @@ }, "node_modules/ganache-core/node_modules/cipher-base": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "license": "MIT", "dependencies": { "inherits": "^2.0.1", @@ -10272,11 +10544,15 @@ }, "node_modules/ganache-core/node_modules/class-is": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz", + "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==", "license": "MIT", "optional": true }, "node_modules/ganache-core/node_modules/class-utils": { "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "license": "MIT", "dependencies": { "arr-union": "^3.1.0", @@ -10290,6 +10566,8 @@ }, "node_modules/ganache-core/node_modules/class-utils/node_modules/define-property": { "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "license": "MIT", "dependencies": { "is-descriptor": "^0.1.0" @@ -10300,6 +10578,8 @@ }, "node_modules/ganache-core/node_modules/class-utils/node_modules/is-accessor-descriptor": { "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "license": "MIT", "dependencies": { "kind-of": "^3.0.2" @@ -10310,6 +10590,8 @@ }, "node_modules/ganache-core/node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" @@ -10320,10 +10602,14 @@ }, "node_modules/ganache-core/node_modules/class-utils/node_modules/is-buffer": { "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "license": "MIT" }, "node_modules/ganache-core/node_modules/class-utils/node_modules/is-data-descriptor": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "license": "MIT", "dependencies": { "kind-of": "^3.0.2" @@ -10334,6 +10620,8 @@ }, "node_modules/ganache-core/node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" @@ -10344,6 +10632,8 @@ }, "node_modules/ganache-core/node_modules/class-utils/node_modules/is-descriptor": { "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "license": "MIT", "dependencies": { "is-accessor-descriptor": "^0.1.6", @@ -10356,6 +10646,8 @@ }, "node_modules/ganache-core/node_modules/class-utils/node_modules/kind-of": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -10363,6 +10655,8 @@ }, "node_modules/ganache-core/node_modules/clone": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", "license": "MIT", "engines": { "node": ">=0.8" @@ -10378,6 +10672,8 @@ }, "node_modules/ganache-core/node_modules/collection-visit": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", "license": "MIT", "dependencies": { "map-visit": "^1.0.0", @@ -10389,6 +10685,8 @@ }, "node_modules/ganache-core/node_modules/color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "license": "MIT", "dependencies": { "color-name": "1.1.3" @@ -10396,10 +10694,14 @@ }, "node_modules/ganache-core/node_modules/color-name": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "license": "MIT" }, "node_modules/ganache-core/node_modules/combined-stream": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" @@ -10410,14 +10712,20 @@ }, "node_modules/ganache-core/node_modules/component-emitter": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", "license": "MIT" }, "node_modules/ganache-core/node_modules/concat-map": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "license": "MIT" }, "node_modules/ganache-core/node_modules/concat-stream": { "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "engines": [ "node >= 0.8" ], @@ -10447,6 +10755,8 @@ }, "node_modules/ganache-core/node_modules/content-hash": { "version": "2.5.2", + "resolved": "https://registry.npmjs.org/content-hash/-/content-hash-2.5.2.tgz", + "integrity": "sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw==", "license": "ISC", "optional": true, "dependencies": { @@ -10457,6 +10767,8 @@ }, "node_modules/ganache-core/node_modules/content-type": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", "license": "MIT", "optional": true, "engines": { @@ -10472,6 +10784,8 @@ }, "node_modules/ganache-core/node_modules/convert-source-map/node_modules/safe-buffer": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "license": "MIT" }, "node_modules/ganache-core/node_modules/cookie": { @@ -10484,6 +10798,8 @@ }, "node_modules/ganache-core/node_modules/cookie-signature": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "license": "MIT", "optional": true }, @@ -10494,6 +10810,8 @@ }, "node_modules/ganache-core/node_modules/copy-descriptor": { "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -10501,6 +10819,8 @@ }, "node_modules/ganache-core/node_modules/core-js": { "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", "hasInstallScript": true, "license": "MIT" }, @@ -10515,10 +10835,14 @@ }, "node_modules/ganache-core/node_modules/core-util-is": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", "license": "MIT" }, "node_modules/ganache-core/node_modules/cors": { "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "license": "MIT", "optional": true, "dependencies": { @@ -10531,6 +10855,8 @@ }, "node_modules/ganache-core/node_modules/create-ecdh": { "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", "license": "MIT", "optional": true, "dependencies": { @@ -10540,6 +10866,8 @@ }, "node_modules/ganache-core/node_modules/create-hash": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "license": "MIT", "dependencies": { "cipher-base": "^1.0.1", @@ -10551,6 +10879,8 @@ }, "node_modules/ganache-core/node_modules/create-hmac": { "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "license": "MIT", "dependencies": { "cipher-base": "^1.0.3", @@ -10571,6 +10901,8 @@ }, "node_modules/ganache-core/node_modules/crypto-browserify": { "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "license": "MIT", "optional": true, "dependencies": { @@ -10592,6 +10924,8 @@ }, "node_modules/ganache-core/node_modules/d": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", "license": "ISC", "dependencies": { "es5-ext": "^0.10.50", @@ -10600,6 +10934,8 @@ }, "node_modules/ganache-core/node_modules/dashdash": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" @@ -10610,6 +10946,8 @@ }, "node_modules/ganache-core/node_modules/debug": { "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "license": "MIT", "dependencies": { "ms": "^2.1.1" @@ -10617,6 +10955,8 @@ }, "node_modules/ganache-core/node_modules/decode-uri-component": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", "license": "MIT", "engines": { "node": ">=0.10" @@ -10624,6 +10964,8 @@ }, "node_modules/ganache-core/node_modules/decompress-response": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", "license": "MIT", "optional": true, "dependencies": { @@ -10635,6 +10977,8 @@ }, "node_modules/ganache-core/node_modules/deep-equal": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", "license": "MIT", "dependencies": { "is-arguments": "^1.0.4", @@ -10650,11 +10994,15 @@ }, "node_modules/ganache-core/node_modules/defer-to-connect": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", "license": "MIT", "optional": true }, "node_modules/ganache-core/node_modules/deferred-leveldown": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-4.0.2.tgz", + "integrity": "sha512-5fMC8ek8alH16QiV0lTCis610D1Zt1+LA4MS4d63JgS32lrCjTFDUFz2ao09/j2I4Bqb5jL4FZYwu7Jz0XO1ww==", "license": "MIT", "dependencies": { "abstract-leveldown": "~5.0.0", @@ -10666,6 +11014,8 @@ }, "node_modules/ganache-core/node_modules/deferred-leveldown/node_modules/abstract-leveldown": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz", + "integrity": "sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A==", "license": "MIT", "dependencies": { "xtend": "~4.0.0" @@ -10686,6 +11036,8 @@ }, "node_modules/ganache-core/node_modules/define-property": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "license": "MIT", "dependencies": { "is-descriptor": "^1.0.2", @@ -10701,6 +11053,8 @@ }, "node_modules/ganache-core/node_modules/delayed-stream": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "license": "MIT", "engines": { "node": ">=0.4.0" @@ -10716,6 +11070,8 @@ }, "node_modules/ganache-core/node_modules/des.js": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", "license": "MIT", "optional": true, "dependencies": { @@ -10730,6 +11086,8 @@ }, "node_modules/ganache-core/node_modules/detect-indent": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==", "license": "MIT", "dependencies": { "repeating": "^2.0.0" @@ -10740,6 +11098,8 @@ }, "node_modules/ganache-core/node_modules/diffie-hellman": { "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "license": "MIT", "optional": true, "dependencies": { @@ -10749,10 +11109,14 @@ } }, "node_modules/ganache-core/node_modules/dom-walk": { - "version": "0.1.2" + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" }, "node_modules/ganache-core/node_modules/dotignore": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", + "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", "license": "MIT", "dependencies": { "minimatch": "^3.0.4" @@ -10768,6 +11132,8 @@ }, "node_modules/ganache-core/node_modules/ecc-jsbn": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "license": "MIT", "dependencies": { "jsbn": "~0.1.0", @@ -10776,6 +11142,8 @@ }, "node_modules/ganache-core/node_modules/ee-first": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "license": "MIT", "optional": true }, @@ -10798,6 +11166,8 @@ }, "node_modules/ganache-core/node_modules/encodeurl": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "license": "MIT", "optional": true, "engines": { @@ -10806,6 +11176,8 @@ }, "node_modules/ganache-core/node_modules/encoding": { "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "license": "MIT", "dependencies": { "iconv-lite": "^0.6.2" @@ -10813,6 +11185,8 @@ }, "node_modules/ganache-core/node_modules/encoding-down": { "version": "5.0.4", + "resolved": "https://registry.npmjs.org/encoding-down/-/encoding-down-5.0.4.tgz", + "integrity": "sha512-8CIZLDcSKxgzT+zX8ZVfgNbu8Md2wq/iqa1Y7zyVR18QBEAc0Nmzuvj/N5ykSKpfGzjM8qxbaFntLPwnVoUhZw==", "license": "MIT", "dependencies": { "abstract-leveldown": "^5.0.0", @@ -10827,6 +11201,8 @@ }, "node_modules/ganache-core/node_modules/encoding-down/node_modules/abstract-leveldown": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz", + "integrity": "sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A==", "license": "MIT", "dependencies": { "xtend": "~4.0.0" @@ -10847,6 +11223,8 @@ }, "node_modules/ganache-core/node_modules/end-of-stream": { "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "license": "MIT", "dependencies": { "once": "^1.4.0" @@ -10854,6 +11232,8 @@ }, "node_modules/ganache-core/node_modules/errno": { "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "license": "MIT", "dependencies": { "prr": "~1.0.1" @@ -10888,6 +11268,8 @@ }, "node_modules/ganache-core/node_modules/es-to-primitive": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "license": "MIT", "dependencies": { "is-callable": "^1.1.4", @@ -10921,6 +11303,8 @@ }, "node_modules/ganache-core/node_modules/es6-symbol": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", "license": "ISC", "dependencies": { "d": "^1.0.1", @@ -10929,11 +11313,15 @@ }, "node_modules/ganache-core/node_modules/escape-html": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "license": "MIT", "optional": true }, "node_modules/ganache-core/node_modules/escape-string-regexp": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "license": "MIT", "engines": { "node": ">=0.8.0" @@ -10941,6 +11329,8 @@ }, "node_modules/ganache-core/node_modules/esutils": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" @@ -10948,6 +11338,8 @@ }, "node_modules/ganache-core/node_modules/etag": { "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "license": "MIT", "optional": true, "engines": { @@ -10956,6 +11348,8 @@ }, "node_modules/ganache-core/node_modules/eth-block-tracker": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-3.0.1.tgz", + "integrity": "sha512-WUVxWLuhMmsfenfZvFO5sbl1qFY2IqUlw/FPVmjjdElpqLsZtSG+wPe9Dz7W/sB6e80HgFKknOmKk2eNlznHug==", "license": "MIT", "dependencies": { "eth-query": "^2.1.0", @@ -10969,6 +11363,8 @@ }, "node_modules/ganache-core/node_modules/eth-block-tracker/node_modules/ethereumjs-tx": { "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz", + "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==", "license": "MPL-2.0", "dependencies": { "ethereum-common": "^0.0.18", @@ -10977,6 +11373,8 @@ }, "node_modules/ganache-core/node_modules/eth-block-tracker/node_modules/ethereumjs-util": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", "license": "MPL-2.0", "dependencies": { "bn.js": "^4.11.0", @@ -10990,6 +11388,8 @@ }, "node_modules/ganache-core/node_modules/eth-block-tracker/node_modules/pify": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -10997,6 +11397,8 @@ }, "node_modules/ganache-core/node_modules/eth-ens-namehash": { "version": "2.0.8", + "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", + "integrity": "sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw==", "license": "ISC", "optional": true, "dependencies": { @@ -11006,6 +11408,8 @@ }, "node_modules/ganache-core/node_modules/eth-json-rpc-infura": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/eth-json-rpc-infura/-/eth-json-rpc-infura-3.2.1.tgz", + "integrity": "sha512-W7zR4DZvyTn23Bxc0EWsq4XGDdD63+XPUCEhV2zQvQGavDVC4ZpFDK4k99qN7bd7/fjj37+rxmuBOBeIqCA5Mw==", "license": "ISC", "dependencies": { "cross-fetch": "^2.1.1", @@ -11016,6 +11420,8 @@ }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware": { "version": "1.6.0", + "resolved": "https://registry.npmjs.org/eth-json-rpc-middleware/-/eth-json-rpc-middleware-1.6.0.tgz", + "integrity": "sha512-tDVCTlrUvdqHKqivYMjtFZsdD7TtpNLBCfKAcOpaVs7orBMS/A8HWro6dIzNtTZIR05FAbJ3bioFOnZpuCew9Q==", "license": "ISC", "dependencies": { "async": "^2.5.0", @@ -11035,6 +11441,8 @@ }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/abstract-leveldown": { "version": "2.6.3", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz", + "integrity": "sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==", "license": "MIT", "dependencies": { "xtend": "~4.0.0" @@ -11042,6 +11450,8 @@ }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/deferred-leveldown": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz", + "integrity": "sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA==", "license": "MIT", "dependencies": { "abstract-leveldown": "~2.6.0" @@ -11049,6 +11459,8 @@ }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/ethereumjs-account": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz", + "integrity": "sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA==", "license": "MPL-2.0", "dependencies": { "ethereumjs-util": "^5.0.0", @@ -11058,6 +11470,8 @@ }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/ethereumjs-block": { "version": "1.7.1", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz", + "integrity": "sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg==", "license": "MPL-2.0", "dependencies": { "async": "^2.0.1", @@ -11069,10 +11483,14 @@ }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/ethereumjs-block/node_modules/ethereum-common": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.2.0.tgz", + "integrity": "sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA==", "license": "MIT" }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/ethereumjs-tx": { "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz", + "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==", "license": "MPL-2.0", "dependencies": { "ethereum-common": "^0.0.18", @@ -11081,6 +11499,8 @@ }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/ethereumjs-util": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", "license": "MPL-2.0", "dependencies": { "bn.js": "^4.11.0", @@ -11094,6 +11514,8 @@ }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/ethereumjs-vm": { "version": "2.6.0", + "resolved": "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz", + "integrity": "sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw==", "license": "MPL-2.0", "dependencies": { "async": "^2.1.2", @@ -11111,6 +11533,8 @@ }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/ethereumjs-vm/node_modules/ethereumjs-block": { "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz", + "integrity": "sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==", "license": "MPL-2.0", "dependencies": { "async": "^2.0.1", @@ -11122,6 +11546,8 @@ }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/ethereumjs-vm/node_modules/ethereumjs-block/node_modules/ethereumjs-util": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", "license": "MPL-2.0", "dependencies": { "bn.js": "^4.11.0", @@ -11135,6 +11561,8 @@ }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/ethereumjs-vm/node_modules/ethereumjs-tx": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", + "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", "license": "MPL-2.0", "dependencies": { "ethereumjs-common": "^1.5.0", @@ -11143,6 +11571,8 @@ }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/ethereumjs-vm/node_modules/ethereumjs-util": { "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", "license": "MPL-2.0", "dependencies": { "@types/bn.js": "^4.11.3", @@ -11156,14 +11586,20 @@ }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/isarray": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", "license": "MIT" }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/level-codec": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-7.0.1.tgz", + "integrity": "sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ==", "license": "MIT" }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/level-errors": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.0.5.tgz", + "integrity": "sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig==", "license": "MIT", "dependencies": { "errno": "~0.1.1" @@ -11171,6 +11607,8 @@ }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/level-iterator-stream": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz", + "integrity": "sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw==", "license": "MIT", "dependencies": { "inherits": "^2.0.1", @@ -11181,6 +11619,8 @@ }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/level-iterator-stream/node_modules/readable-stream": { "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", @@ -11191,6 +11631,8 @@ }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/level-ws": { "version": "0.0.0", + "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-0.0.0.tgz", + "integrity": "sha512-XUTaO/+Db51Uiyp/t7fCMGVFOTdtLS/NIACxE/GHsij15mKzxksZifKVjlXDF41JMUP/oM1Oc4YNGdKnc3dVLw==", "license": "MIT", "dependencies": { "readable-stream": "~1.0.15", @@ -11199,6 +11641,8 @@ }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/level-ws/node_modules/readable-stream": { "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", @@ -11209,6 +11653,8 @@ }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/level-ws/node_modules/xtend": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==", "dependencies": { "object-keys": "~0.4.0" }, @@ -11218,6 +11664,8 @@ }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/levelup": { "version": "1.3.9", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-1.3.9.tgz", + "integrity": "sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ==", "license": "MIT", "dependencies": { "deferred-leveldown": "~1.2.1", @@ -11231,10 +11679,14 @@ }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/ltgt": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", "license": "MIT" }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/memdown": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", + "integrity": "sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w==", "license": "MIT", "dependencies": { "abstract-leveldown": "~2.7.1", @@ -11247,6 +11699,8 @@ }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/memdown/node_modules/abstract-leveldown": { "version": "2.7.2", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", + "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", "license": "MIT", "dependencies": { "xtend": "~4.0.0" @@ -11254,6 +11708,8 @@ }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/merkle-patricia-tree": { "version": "2.3.2", + "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz", + "integrity": "sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g==", "license": "MPL-2.0", "dependencies": { "async": "^1.4.2", @@ -11268,18 +11724,26 @@ }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/merkle-patricia-tree/node_modules/async": { "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", "license": "MIT" }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/object-keys": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==", "license": "MIT" }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/safe-buffer": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "license": "MIT" }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/semver": { "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", "license": "ISC", "bin": { "semver": "bin/semver" @@ -11287,10 +11751,14 @@ }, "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/string_decoder": { "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", "license": "MIT" }, "node_modules/ganache-core/node_modules/eth-lib": { "version": "0.1.29", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz", + "integrity": "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==", "license": "MIT", "optional": true, "dependencies": { @@ -11304,6 +11772,8 @@ }, "node_modules/ganache-core/node_modules/eth-query": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/eth-query/-/eth-query-2.1.2.tgz", + "integrity": "sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==", "license": "ISC", "dependencies": { "json-rpc-random-id": "^1.0.0", @@ -11312,6 +11782,8 @@ }, "node_modules/ganache-core/node_modules/eth-sig-util": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-3.0.0.tgz", + "integrity": "sha512-4eFkMOhpGbTxBQ3AMzVf0haUX2uTur7DpWiHzWyTURa28BVJJtOkcb9Ok5TV0YvEPG61DODPW7ZUATbJTslioQ==", "license": "ISC", "dependencies": { "buffer": "^5.2.1", @@ -11324,6 +11796,8 @@ }, "node_modules/ganache-core/node_modules/eth-sig-util/node_modules/ethereumjs-abi": { "version": "0.6.5", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.5.tgz", + "integrity": "sha512-rCjJZ/AE96c/AAZc6O3kaog4FhOsAViaysBxqJNy2+LHP0ttH0zkZ7nXdVHOAyt6lFwLO0nlCwWszysG/ao1+g==", "license": "MIT", "dependencies": { "bn.js": "^4.10.0", @@ -11332,6 +11806,8 @@ }, "node_modules/ganache-core/node_modules/eth-sig-util/node_modules/ethereumjs-abi/node_modules/ethereumjs-util": { "version": "4.5.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-4.5.1.tgz", + "integrity": "sha512-WrckOZ7uBnei4+AKimpuF1B3Fv25OmoRgmYCpGsP7u8PFxXAmAgiJSYT2kRWnt6fVIlKaQlZvuwXp7PIrmn3/w==", "license": "MPL-2.0", "dependencies": { "bn.js": "^4.8.0", @@ -11343,6 +11819,8 @@ }, "node_modules/ganache-core/node_modules/eth-sig-util/node_modules/ethereumjs-util": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", "license": "MPL-2.0", "dependencies": { "bn.js": "^4.11.0", @@ -11356,6 +11834,8 @@ }, "node_modules/ganache-core/node_modules/eth-tx-summary": { "version": "3.2.4", + "resolved": "https://registry.npmjs.org/eth-tx-summary/-/eth-tx-summary-3.2.4.tgz", + "integrity": "sha512-NtlDnaVZah146Rm8HMRUNMgIwG/ED4jiqk0TME9zFheMl1jOp6jL1m0NKGjJwehXQ6ZKCPr16MTr+qspKpEXNg==", "license": "ISC", "dependencies": { "async": "^2.1.2", @@ -11372,6 +11852,8 @@ }, "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/abstract-leveldown": { "version": "2.6.3", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz", + "integrity": "sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==", "license": "MIT", "dependencies": { "xtend": "~4.0.0" @@ -11379,6 +11861,8 @@ }, "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/deferred-leveldown": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz", + "integrity": "sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA==", "license": "MIT", "dependencies": { "abstract-leveldown": "~2.6.0" @@ -11386,6 +11870,8 @@ }, "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/ethereumjs-account": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz", + "integrity": "sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA==", "license": "MPL-2.0", "dependencies": { "ethereumjs-util": "^5.0.0", @@ -11395,6 +11881,8 @@ }, "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/ethereumjs-block": { "version": "1.7.1", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz", + "integrity": "sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg==", "license": "MPL-2.0", "dependencies": { "async": "^2.0.1", @@ -11406,10 +11894,14 @@ }, "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/ethereumjs-block/node_modules/ethereum-common": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.2.0.tgz", + "integrity": "sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA==", "license": "MIT" }, "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/ethereumjs-tx": { "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz", + "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==", "license": "MPL-2.0", "dependencies": { "ethereum-common": "^0.0.18", @@ -11418,6 +11910,8 @@ }, "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/ethereumjs-util": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", "license": "MPL-2.0", "dependencies": { "bn.js": "^4.11.0", @@ -11431,6 +11925,8 @@ }, "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/ethereumjs-vm": { "version": "2.6.0", + "resolved": "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz", + "integrity": "sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw==", "license": "MPL-2.0", "dependencies": { "async": "^2.1.2", @@ -11448,6 +11944,8 @@ }, "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/ethereumjs-vm/node_modules/ethereumjs-block": { "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz", + "integrity": "sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==", "license": "MPL-2.0", "dependencies": { "async": "^2.0.1", @@ -11459,6 +11957,8 @@ }, "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/ethereumjs-vm/node_modules/ethereumjs-block/node_modules/ethereumjs-util": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", "license": "MPL-2.0", "dependencies": { "bn.js": "^4.11.0", @@ -11472,6 +11972,8 @@ }, "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/ethereumjs-vm/node_modules/ethereumjs-tx": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", + "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", "license": "MPL-2.0", "dependencies": { "ethereumjs-common": "^1.5.0", @@ -11480,6 +11982,8 @@ }, "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/ethereumjs-vm/node_modules/ethereumjs-util": { "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", "license": "MPL-2.0", "dependencies": { "@types/bn.js": "^4.11.3", @@ -11493,14 +11997,20 @@ }, "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/isarray": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", "license": "MIT" }, "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/level-codec": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-7.0.1.tgz", + "integrity": "sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ==", "license": "MIT" }, "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/level-errors": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.0.5.tgz", + "integrity": "sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig==", "license": "MIT", "dependencies": { "errno": "~0.1.1" @@ -11508,6 +12018,8 @@ }, "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/level-iterator-stream": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz", + "integrity": "sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw==", "license": "MIT", "dependencies": { "inherits": "^2.0.1", @@ -11518,6 +12030,8 @@ }, "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/level-iterator-stream/node_modules/readable-stream": { "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", @@ -11528,6 +12042,8 @@ }, "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/level-ws": { "version": "0.0.0", + "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-0.0.0.tgz", + "integrity": "sha512-XUTaO/+Db51Uiyp/t7fCMGVFOTdtLS/NIACxE/GHsij15mKzxksZifKVjlXDF41JMUP/oM1Oc4YNGdKnc3dVLw==", "license": "MIT", "dependencies": { "readable-stream": "~1.0.15", @@ -11536,6 +12052,8 @@ }, "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/level-ws/node_modules/readable-stream": { "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", @@ -11546,6 +12064,8 @@ }, "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/level-ws/node_modules/xtend": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==", "dependencies": { "object-keys": "~0.4.0" }, @@ -11555,6 +12075,8 @@ }, "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/levelup": { "version": "1.3.9", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-1.3.9.tgz", + "integrity": "sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ==", "license": "MIT", "dependencies": { "deferred-leveldown": "~1.2.1", @@ -11568,10 +12090,14 @@ }, "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/ltgt": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", "license": "MIT" }, "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/memdown": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", + "integrity": "sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w==", "license": "MIT", "dependencies": { "abstract-leveldown": "~2.7.1", @@ -11584,6 +12110,8 @@ }, "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/memdown/node_modules/abstract-leveldown": { "version": "2.7.2", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", + "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", "license": "MIT", "dependencies": { "xtend": "~4.0.0" @@ -11591,6 +12119,8 @@ }, "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/merkle-patricia-tree": { "version": "2.3.2", + "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz", + "integrity": "sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g==", "license": "MPL-2.0", "dependencies": { "async": "^1.4.2", @@ -11605,18 +12135,26 @@ }, "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/merkle-patricia-tree/node_modules/async": { "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", "license": "MIT" }, "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/object-keys": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==", "license": "MIT" }, "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/safe-buffer": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "license": "MIT" }, "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/semver": { "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", "license": "ISC", "bin": { "semver": "bin/semver" @@ -11624,10 +12162,14 @@ }, "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/string_decoder": { "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", "license": "MIT" }, "node_modules/ganache-core/node_modules/ethashjs": { "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ethashjs/-/ethashjs-0.0.8.tgz", + "integrity": "sha512-/MSbf/r2/Ld8o0l15AymjOTlPqpN8Cr4ByUEA9GtR4x0yAh3TdtDzEg29zMjXCNPI7u6E5fOQdj/Cf9Tc7oVNw==", "license": "MPL-2.0", "dependencies": { "async": "^2.1.2", @@ -11642,6 +12184,8 @@ }, "node_modules/ganache-core/node_modules/ethashjs/node_modules/buffer-xor": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-2.0.2.tgz", + "integrity": "sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ==", "license": "MIT", "dependencies": { "safe-buffer": "^5.1.1" @@ -11672,15 +12216,21 @@ }, "node_modules/ganache-core/node_modules/ethereum-bloom-filters/node_modules/js-sha3": { "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", "license": "MIT", "optional": true }, "node_modules/ganache-core/node_modules/ethereum-common": { "version": "0.0.18", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz", + "integrity": "sha512-EoltVQTRNg2Uy4o84qpa2aXymXDJhxm7eos/ACOg0DG4baAbMjhbdAEsx9GeE8sC3XCxnYvrrzZDH8D8MtA2iQ==", "license": "MIT" }, "node_modules/ganache-core/node_modules/ethereum-cryptography": { "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", "license": "MIT", "dependencies": { "@types/pbkdf2": "^3.0.0", @@ -11702,6 +12252,8 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-abi": { "version": "0.6.8", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", + "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", "license": "MIT", "dependencies": { "bn.js": "^4.11.8", @@ -11710,6 +12262,8 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-account": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-3.0.0.tgz", + "integrity": "sha512-WP6BdscjiiPkQfF9PVfMcwx/rDvfZTjFKY0Uwc09zSQr9JfIVH87dYIJu0gNhBhpmovV4yq295fdllS925fnBA==", "license": "MPL-2.0", "dependencies": { "ethereumjs-util": "^6.0.0", @@ -11719,6 +12273,8 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-block": { "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz", + "integrity": "sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==", "license": "MPL-2.0", "dependencies": { "async": "^2.0.1", @@ -11730,6 +12286,8 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/abstract-leveldown": { "version": "2.6.3", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz", + "integrity": "sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==", "license": "MIT", "dependencies": { "xtend": "~4.0.0" @@ -11737,6 +12295,8 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/deferred-leveldown": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz", + "integrity": "sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA==", "license": "MIT", "dependencies": { "abstract-leveldown": "~2.6.0" @@ -11744,6 +12304,8 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/ethereumjs-util": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", "license": "MPL-2.0", "dependencies": { "bn.js": "^4.11.0", @@ -11757,14 +12319,20 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/isarray": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", "license": "MIT" }, "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/level-codec": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-7.0.1.tgz", + "integrity": "sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ==", "license": "MIT" }, "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/level-errors": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.0.5.tgz", + "integrity": "sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig==", "license": "MIT", "dependencies": { "errno": "~0.1.1" @@ -11772,6 +12340,8 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/level-iterator-stream": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz", + "integrity": "sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw==", "license": "MIT", "dependencies": { "inherits": "^2.0.1", @@ -11782,6 +12352,8 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/level-iterator-stream/node_modules/readable-stream": { "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", @@ -11792,6 +12364,8 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/level-ws": { "version": "0.0.0", + "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-0.0.0.tgz", + "integrity": "sha512-XUTaO/+Db51Uiyp/t7fCMGVFOTdtLS/NIACxE/GHsij15mKzxksZifKVjlXDF41JMUP/oM1Oc4YNGdKnc3dVLw==", "license": "MIT", "dependencies": { "readable-stream": "~1.0.15", @@ -11800,6 +12374,8 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/level-ws/node_modules/readable-stream": { "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", @@ -11810,6 +12386,8 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/level-ws/node_modules/xtend": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==", "dependencies": { "object-keys": "~0.4.0" }, @@ -11819,6 +12397,8 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/levelup": { "version": "1.3.9", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-1.3.9.tgz", + "integrity": "sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ==", "license": "MIT", "dependencies": { "deferred-leveldown": "~1.2.1", @@ -11832,10 +12412,14 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/ltgt": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", "license": "MIT" }, "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/memdown": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", + "integrity": "sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w==", "license": "MIT", "dependencies": { "abstract-leveldown": "~2.7.1", @@ -11848,6 +12432,8 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/memdown/node_modules/abstract-leveldown": { "version": "2.7.2", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", + "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", "license": "MIT", "dependencies": { "xtend": "~4.0.0" @@ -11855,6 +12441,8 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/merkle-patricia-tree": { "version": "2.3.2", + "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz", + "integrity": "sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g==", "license": "MPL-2.0", "dependencies": { "async": "^1.4.2", @@ -11869,18 +12457,26 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/merkle-patricia-tree/node_modules/async": { "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", "license": "MIT" }, "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/object-keys": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==", "license": "MIT" }, "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/safe-buffer": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "license": "MIT" }, "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/semver": { "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", "license": "ISC", "bin": { "semver": "bin/semver" @@ -11888,10 +12484,14 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/string_decoder": { "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", "license": "MIT" }, "node_modules/ganache-core/node_modules/ethereumjs-blockchain": { "version": "4.0.4", + "resolved": "https://registry.npmjs.org/ethereumjs-blockchain/-/ethereumjs-blockchain-4.0.4.tgz", + "integrity": "sha512-zCxaRMUOzzjvX78DTGiKjA+4h2/sF0OYL1QuPux0DHpyq8XiNoF5GYHtb++GUxVlMsMfZV7AVyzbtgcRdIcEPQ==", "license": "MPL-2.0", "dependencies": { "async": "^2.6.1", @@ -11908,10 +12508,14 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-common": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.0.tgz", + "integrity": "sha512-SZOjgK1356hIY7MRj3/ma5qtfr/4B5BL+G4rP/XSMYr2z1H5el4RX5GReYCKmQmYI/nSBmRnwrZ17IfHuG0viQ==", "license": "MIT" }, "node_modules/ganache-core/node_modules/ethereumjs-tx": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", + "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", "license": "MPL-2.0", "dependencies": { "ethereumjs-common": "^1.5.0", @@ -11920,6 +12524,8 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-util": { "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", "license": "MPL-2.0", "dependencies": { "@types/bn.js": "^4.11.3", @@ -11933,6 +12539,8 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-vm": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-4.2.0.tgz", + "integrity": "sha512-X6qqZbsY33p5FTuZqCnQ4+lo957iUJMM6Mpa6bL4UW0dxM6WmDSHuI4j/zOp1E2TDKImBGCJA9QPfc08PaNubA==", "license": "MPL-2.0", "dependencies": { "async": "^2.1.2", @@ -11954,6 +12562,8 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/abstract-leveldown": { "version": "2.6.3", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz", + "integrity": "sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==", "license": "MIT", "dependencies": { "xtend": "~4.0.0" @@ -11961,6 +12571,8 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/deferred-leveldown": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz", + "integrity": "sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA==", "license": "MIT", "dependencies": { "abstract-leveldown": "~2.6.0" @@ -11968,14 +12580,20 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/isarray": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", "license": "MIT" }, "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/level-codec": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-7.0.1.tgz", + "integrity": "sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ==", "license": "MIT" }, "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/level-errors": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.0.5.tgz", + "integrity": "sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig==", "license": "MIT", "dependencies": { "errno": "~0.1.1" @@ -11983,6 +12601,8 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/level-iterator-stream": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz", + "integrity": "sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw==", "license": "MIT", "dependencies": { "inherits": "^2.0.1", @@ -11993,6 +12613,8 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/level-iterator-stream/node_modules/readable-stream": { "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", @@ -12003,6 +12625,8 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/level-ws": { "version": "0.0.0", + "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-0.0.0.tgz", + "integrity": "sha512-XUTaO/+Db51Uiyp/t7fCMGVFOTdtLS/NIACxE/GHsij15mKzxksZifKVjlXDF41JMUP/oM1Oc4YNGdKnc3dVLw==", "license": "MIT", "dependencies": { "readable-stream": "~1.0.15", @@ -12011,6 +12635,8 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/level-ws/node_modules/readable-stream": { "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", @@ -12021,6 +12647,8 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/level-ws/node_modules/xtend": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==", "dependencies": { "object-keys": "~0.4.0" }, @@ -12030,6 +12658,8 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/levelup": { "version": "1.3.9", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-1.3.9.tgz", + "integrity": "sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ==", "license": "MIT", "dependencies": { "deferred-leveldown": "~1.2.1", @@ -12043,10 +12673,14 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/ltgt": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", "license": "MIT" }, "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/memdown": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", + "integrity": "sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w==", "license": "MIT", "dependencies": { "abstract-leveldown": "~2.7.1", @@ -12059,6 +12693,8 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/memdown/node_modules/abstract-leveldown": { "version": "2.7.2", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", + "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", "license": "MIT", "dependencies": { "xtend": "~4.0.0" @@ -12066,6 +12702,8 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/merkle-patricia-tree": { "version": "2.3.2", + "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz", + "integrity": "sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g==", "license": "MPL-2.0", "dependencies": { "async": "^1.4.2", @@ -12080,10 +12718,14 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/merkle-patricia-tree/node_modules/async": { "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", "license": "MIT" }, "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/merkle-patricia-tree/node_modules/ethereumjs-util": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", "license": "MPL-2.0", "dependencies": { "bn.js": "^4.11.0", @@ -12097,14 +12739,20 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/object-keys": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==", "license": "MIT" }, "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/safe-buffer": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "license": "MIT" }, "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/semver": { "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", "license": "ISC", "bin": { "semver": "bin/semver" @@ -12112,10 +12760,14 @@ }, "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/string_decoder": { "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", "license": "MIT" }, "node_modules/ganache-core/node_modules/ethereumjs-wallet": { "version": "0.6.5", + "resolved": "https://registry.npmjs.org/ethereumjs-wallet/-/ethereumjs-wallet-0.6.5.tgz", + "integrity": "sha512-MDwjwB9VQVnpp/Dc1XzA6J1a3wgHQ4hSvA1uWNatdpOrtCbPVuQSKSyRnjLvS0a+KKMw2pvQ9Ybqpb3+eW8oNA==", "license": "MIT", "optional": true, "dependencies": { @@ -12132,6 +12784,8 @@ }, "node_modules/ganache-core/node_modules/ethjs-unit": { "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", "license": "MIT", "optional": true, "dependencies": { @@ -12145,11 +12799,15 @@ }, "node_modules/ganache-core/node_modules/ethjs-unit/node_modules/bn.js": { "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", "license": "MIT", "optional": true }, "node_modules/ganache-core/node_modules/ethjs-util": { "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", "license": "MIT", "dependencies": { "is-hex-prefixed": "1.0.0", @@ -12162,6 +12820,8 @@ }, "node_modules/ganache-core/node_modules/eventemitter3": { "version": "4.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", + "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==", "license": "MIT", "optional": true }, @@ -12174,6 +12834,8 @@ }, "node_modules/ganache-core/node_modules/evp_bytestokey": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "license": "MIT", "dependencies": { "md5.js": "^1.3.4", @@ -12182,6 +12844,8 @@ }, "node_modules/ganache-core/node_modules/expand-brackets": { "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", "license": "MIT", "dependencies": { "debug": "^2.3.3", @@ -12198,6 +12862,8 @@ }, "node_modules/ganache-core/node_modules/expand-brackets/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { "ms": "2.0.0" @@ -12205,6 +12871,8 @@ }, "node_modules/ganache-core/node_modules/expand-brackets/node_modules/define-property": { "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "license": "MIT", "dependencies": { "is-descriptor": "^0.1.0" @@ -12215,6 +12883,8 @@ }, "node_modules/ganache-core/node_modules/expand-brackets/node_modules/extend-shallow": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" @@ -12225,6 +12895,8 @@ }, "node_modules/ganache-core/node_modules/expand-brackets/node_modules/is-accessor-descriptor": { "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "license": "MIT", "dependencies": { "kind-of": "^3.0.2" @@ -12235,6 +12907,8 @@ }, "node_modules/ganache-core/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" @@ -12245,10 +12919,14 @@ }, "node_modules/ganache-core/node_modules/expand-brackets/node_modules/is-buffer": { "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "license": "MIT" }, "node_modules/ganache-core/node_modules/expand-brackets/node_modules/is-data-descriptor": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "license": "MIT", "dependencies": { "kind-of": "^3.0.2" @@ -12259,6 +12937,8 @@ }, "node_modules/ganache-core/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" @@ -12269,6 +12949,8 @@ }, "node_modules/ganache-core/node_modules/expand-brackets/node_modules/is-descriptor": { "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "license": "MIT", "dependencies": { "is-accessor-descriptor": "^0.1.6", @@ -12281,6 +12963,8 @@ }, "node_modules/ganache-core/node_modules/expand-brackets/node_modules/is-extendable": { "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -12288,6 +12972,8 @@ }, "node_modules/ganache-core/node_modules/expand-brackets/node_modules/kind-of": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -12295,6 +12981,8 @@ }, "node_modules/ganache-core/node_modules/expand-brackets/node_modules/ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, "node_modules/ganache-core/node_modules/express": { @@ -12339,6 +13027,8 @@ }, "node_modules/ganache-core/node_modules/express/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "optional": true, "dependencies": { @@ -12347,6 +13037,8 @@ }, "node_modules/ganache-core/node_modules/express/node_modules/ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT", "optional": true }, @@ -12376,10 +13068,14 @@ }, "node_modules/ganache-core/node_modules/extend": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "license": "MIT" }, "node_modules/ganache-core/node_modules/extend-shallow": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", "license": "MIT", "dependencies": { "assign-symbols": "^1.0.0", @@ -12391,6 +13087,8 @@ }, "node_modules/ganache-core/node_modules/extglob": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "license": "MIT", "dependencies": { "array-unique": "^0.3.2", @@ -12408,6 +13106,8 @@ }, "node_modules/ganache-core/node_modules/extglob/node_modules/define-property": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "license": "MIT", "dependencies": { "is-descriptor": "^1.0.0" @@ -12418,6 +13118,8 @@ }, "node_modules/ganache-core/node_modules/extglob/node_modules/extend-shallow": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" @@ -12428,6 +13130,8 @@ }, "node_modules/ganache-core/node_modules/extglob/node_modules/is-extendable": { "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -12435,6 +13139,8 @@ }, "node_modules/ganache-core/node_modules/extsprintf": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", "engines": [ "node >=0.6.0" ], @@ -12442,6 +13148,8 @@ }, "node_modules/ganache-core/node_modules/fake-merkle-patricia-tree": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz", + "integrity": "sha512-Tgq37lkc9pUIgIKw5uitNUKcgcYL3R6JvXtKQbOf/ZSavXbidsksgp/pAY6p//uhw0I4yoMsvTSovvVIsk/qxA==", "license": "ISC", "dependencies": { "checkpoint-store": "^1.1.0" @@ -12449,14 +13157,20 @@ }, "node_modules/ganache-core/node_modules/fast-deep-equal": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "license": "MIT" }, "node_modules/ganache-core/node_modules/fast-json-stable-stringify": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "license": "MIT" }, "node_modules/ganache-core/node_modules/fetch-ponyfill": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/fetch-ponyfill/-/fetch-ponyfill-4.1.0.tgz", + "integrity": "sha512-knK9sGskIg2T7OnYLdZ2hZXn0CtDrAIBxYQLpmEf0BqfdWnwmM1weccUl5+4EdA44tzNSFAuxITPbXtPehUB3g==", "license": "MIT", "dependencies": { "node-fetch": "~1.7.1" @@ -12464,6 +13178,8 @@ }, "node_modules/ganache-core/node_modules/fetch-ponyfill/node_modules/is-stream": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -12471,6 +13187,8 @@ }, "node_modules/ganache-core/node_modules/fetch-ponyfill/node_modules/node-fetch": { "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "license": "MIT", "dependencies": { "encoding": "^0.1.11", @@ -12496,6 +13214,8 @@ }, "node_modules/ganache-core/node_modules/finalhandler/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "optional": true, "dependencies": { @@ -12504,11 +13224,15 @@ }, "node_modules/ganache-core/node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT", "optional": true }, "node_modules/ganache-core/node_modules/find-yarn-workspace-root": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-1.2.1.tgz", + "integrity": "sha512-dVtfb0WuQG+8Ag2uWkbG79hOUzEsRrhBzgfn86g2sJPkzmcpGdghbNTfUKGTxymFrY/tLIodDzLoW9nOJ4FY8Q==", "license": "Apache-2.0", "dependencies": { "fs-extra": "^4.0.3", @@ -12517,6 +13241,8 @@ }, "node_modules/ganache-core/node_modules/find-yarn-workspace-root/node_modules/braces": { "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "license": "MIT", "dependencies": { "arr-flatten": "^1.1.0", @@ -12536,6 +13262,8 @@ }, "node_modules/ganache-core/node_modules/find-yarn-workspace-root/node_modules/braces/node_modules/extend-shallow": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" @@ -12546,6 +13274,8 @@ }, "node_modules/ganache-core/node_modules/find-yarn-workspace-root/node_modules/fill-range": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", "license": "MIT", "dependencies": { "extend-shallow": "^2.0.1", @@ -12559,6 +13289,8 @@ }, "node_modules/ganache-core/node_modules/find-yarn-workspace-root/node_modules/fill-range/node_modules/extend-shallow": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" @@ -12569,6 +13301,8 @@ }, "node_modules/ganache-core/node_modules/find-yarn-workspace-root/node_modules/fs-extra": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", @@ -12578,10 +13312,14 @@ }, "node_modules/ganache-core/node_modules/find-yarn-workspace-root/node_modules/is-buffer": { "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "license": "MIT" }, "node_modules/ganache-core/node_modules/find-yarn-workspace-root/node_modules/is-extendable": { "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -12589,6 +13327,8 @@ }, "node_modules/ganache-core/node_modules/find-yarn-workspace-root/node_modules/is-number": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "license": "MIT", "dependencies": { "kind-of": "^3.0.2" @@ -12599,6 +13339,8 @@ }, "node_modules/ganache-core/node_modules/find-yarn-workspace-root/node_modules/is-number/node_modules/kind-of": { "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" @@ -12609,6 +13351,8 @@ }, "node_modules/ganache-core/node_modules/find-yarn-workspace-root/node_modules/micromatch": { "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "license": "MIT", "dependencies": { "arr-diff": "^4.0.0", @@ -12631,6 +13375,8 @@ }, "node_modules/ganache-core/node_modules/find-yarn-workspace-root/node_modules/to-regex-range": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "license": "MIT", "dependencies": { "is-number": "^3.0.0", @@ -12642,10 +13388,14 @@ }, "node_modules/ganache-core/node_modules/flow-stoplight": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/flow-stoplight/-/flow-stoplight-1.0.0.tgz", + "integrity": "sha512-rDjbZUKpN8OYhB0IE/vY/I8UWO/602IIJEU/76Tv4LvYnwHCk0BCsvz4eRr9n+FQcri7L5cyaXOo0+/Kh4HisA==", "license": "ISC" }, "node_modules/ganache-core/node_modules/for-each": { "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "license": "MIT", "dependencies": { "is-callable": "^1.1.3" @@ -12653,6 +13403,8 @@ }, "node_modules/ganache-core/node_modules/for-in": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -12660,6 +13412,8 @@ }, "node_modules/ganache-core/node_modules/forever-agent": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", "license": "Apache-2.0", "engines": { "node": "*" @@ -12667,6 +13421,8 @@ }, "node_modules/ganache-core/node_modules/form-data": { "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "license": "MIT", "dependencies": { "asynckit": "^0.4.0", @@ -12687,6 +13443,8 @@ }, "node_modules/ganache-core/node_modules/fragment-cache": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", "license": "MIT", "dependencies": { "map-cache": "^0.2.2" @@ -12697,6 +13455,8 @@ }, "node_modules/ganache-core/node_modules/fresh": { "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "license": "MIT", "optional": true, "engines": { @@ -12705,6 +13465,8 @@ }, "node_modules/ganache-core/node_modules/fs-extra": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", @@ -12717,14 +13479,20 @@ }, "node_modules/ganache-core/node_modules/fs.realpath": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "license": "ISC" }, "node_modules/ganache-core/node_modules/function-bind": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "license": "MIT" }, "node_modules/ganache-core/node_modules/functional-red-black-tree": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", "license": "MIT" }, "node_modules/ganache-core/node_modules/get-intrinsic": { @@ -12741,6 +13509,8 @@ }, "node_modules/ganache-core/node_modules/get-stream": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "license": "MIT", "optional": true, "dependencies": { @@ -12755,6 +13525,8 @@ }, "node_modules/ganache-core/node_modules/get-value": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -12762,6 +13534,8 @@ }, "node_modules/ganache-core/node_modules/getpass": { "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" @@ -12784,6 +13558,8 @@ }, "node_modules/ganache-core/node_modules/global": { "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", "license": "MIT", "dependencies": { "min-document": "^2.19.0", @@ -12792,6 +13568,8 @@ }, "node_modules/ganache-core/node_modules/got": { "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", "license": "MIT", "optional": true, "dependencies": { @@ -12813,6 +13591,8 @@ }, "node_modules/ganache-core/node_modules/got/node_modules/get-stream": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "license": "MIT", "optional": true, "dependencies": { @@ -12828,6 +13608,8 @@ }, "node_modules/ganache-core/node_modules/har-schema": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", "license": "ISC", "engines": { "node": ">=4" @@ -12835,6 +13617,8 @@ }, "node_modules/ganache-core/node_modules/har-validator": { "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", "license": "MIT", "dependencies": { "ajv": "^6.12.3", @@ -12846,6 +13630,8 @@ }, "node_modules/ganache-core/node_modules/has": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "license": "MIT", "dependencies": { "function-bind": "^1.1.1" @@ -12856,6 +13642,8 @@ }, "node_modules/ganache-core/node_modules/has-ansi": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", "license": "MIT", "dependencies": { "ansi-regex": "^2.0.0" @@ -12866,6 +13654,8 @@ }, "node_modules/ganache-core/node_modules/has-ansi/node_modules/ansi-regex": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -12873,6 +13663,8 @@ }, "node_modules/ganache-core/node_modules/has-flag": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "license": "MIT", "engines": { "node": ">=4" @@ -12880,6 +13672,8 @@ }, "node_modules/ganache-core/node_modules/has-symbol-support-x": { "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", "license": "MIT", "optional": true, "engines": { @@ -12898,6 +13692,8 @@ }, "node_modules/ganache-core/node_modules/has-to-string-tag-x": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", "license": "MIT", "optional": true, "dependencies": { @@ -12909,6 +13705,8 @@ }, "node_modules/ganache-core/node_modules/has-value": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", "license": "MIT", "dependencies": { "get-value": "^2.0.6", @@ -12921,6 +13719,8 @@ }, "node_modules/ganache-core/node_modules/has-values": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", "license": "MIT", "dependencies": { "is-number": "^3.0.0", @@ -12932,10 +13732,14 @@ }, "node_modules/ganache-core/node_modules/has-values/node_modules/is-buffer": { "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "license": "MIT" }, "node_modules/ganache-core/node_modules/has-values/node_modules/is-number": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "license": "MIT", "dependencies": { "kind-of": "^3.0.2" @@ -12946,6 +13750,8 @@ }, "node_modules/ganache-core/node_modules/has-values/node_modules/is-number/node_modules/kind-of": { "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" @@ -12956,6 +13762,8 @@ }, "node_modules/ganache-core/node_modules/has-values/node_modules/kind-of": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" @@ -12966,6 +13774,8 @@ }, "node_modules/ganache-core/node_modules/hash-base": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", "license": "MIT", "dependencies": { "inherits": "^2.0.4", @@ -12978,6 +13788,8 @@ }, "node_modules/ganache-core/node_modules/hash-base/node_modules/readable-stream": { "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "license": "MIT", "dependencies": { "inherits": "^2.0.3", @@ -12990,6 +13802,8 @@ }, "node_modules/ganache-core/node_modules/hash.js": { "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "license": "MIT", "dependencies": { "inherits": "^2.0.3", @@ -12997,7 +13811,9 @@ } }, "node_modules/ganache-core/node_modules/heap": { - "version": "0.2.6" + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.6.tgz", + "integrity": "sha512-MzzWcnfB1e4EG2vHi3dXHoBupmuXNZzx6pY6HldVS55JKKBoq3xOyzfSaZRkJp37HIhEYC78knabHff3zc4dQQ==" }, "node_modules/ganache-core/node_modules/hmac-drbg": { "version": "1.0.1", @@ -13010,6 +13826,8 @@ }, "node_modules/ganache-core/node_modules/home-or-tmp": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg==", "license": "MIT", "dependencies": { "os-homedir": "^1.0.0", @@ -13021,6 +13839,8 @@ }, "node_modules/ganache-core/node_modules/http-cache-semantics": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", "license": "BSD-2-Clause", "optional": true }, @@ -13046,11 +13866,15 @@ }, "node_modules/ganache-core/node_modules/http-https": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", + "integrity": "sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==", "license": "ISC", "optional": true }, "node_modules/ganache-core/node_modules/http-signature": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", @@ -13064,6 +13888,8 @@ }, "node_modules/ganache-core/node_modules/iconv-lite": { "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "license": "MIT", "optional": true, "dependencies": { @@ -13075,6 +13901,8 @@ }, "node_modules/ganache-core/node_modules/idna-uts46-hx": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz", + "integrity": "sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==", "license": "MIT", "optional": true, "dependencies": { @@ -13086,6 +13914,8 @@ }, "node_modules/ganache-core/node_modules/idna-uts46-hx/node_modules/punycode": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA==", "license": "MIT", "optional": true, "engines": { @@ -13094,6 +13924,8 @@ }, "node_modules/ganache-core/node_modules/ieee754": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "funding": [ { "type": "github", @@ -13112,10 +13944,14 @@ }, "node_modules/ganache-core/node_modules/immediate": { "version": "3.2.3", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.2.3.tgz", + "integrity": "sha512-RrGCXRm/fRVqMIhqXrGEX9rRADavPiDFSoMb/k64i9XMk8uH4r/Omi5Ctierj6XzNecwDbO4WuFbDD1zmpl3Tg==", "license": "MIT" }, "node_modules/ganache-core/node_modules/inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "license": "ISC", "dependencies": { "once": "^1.3.0", @@ -13124,10 +13960,14 @@ }, "node_modules/ganache-core/node_modules/inherits": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "license": "ISC" }, "node_modules/ganache-core/node_modules/invariant": { "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "license": "MIT", "dependencies": { "loose-envify": "^1.0.0" @@ -13135,6 +13975,8 @@ }, "node_modules/ganache-core/node_modules/ipaddr.js": { "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "license": "MIT", "optional": true, "engines": { @@ -13143,6 +13985,8 @@ }, "node_modules/ganache-core/node_modules/is-accessor-descriptor": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "license": "MIT", "dependencies": { "kind-of": "^6.0.0" @@ -13176,6 +14020,8 @@ }, "node_modules/ganache-core/node_modules/is-ci": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "license": "MIT", "dependencies": { "ci-info": "^2.0.0" @@ -13186,6 +14032,8 @@ }, "node_modules/ganache-core/node_modules/is-data-descriptor": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "license": "MIT", "dependencies": { "kind-of": "^6.0.0" @@ -13206,6 +14054,8 @@ }, "node_modules/ganache-core/node_modules/is-descriptor": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "license": "MIT", "dependencies": { "is-accessor-descriptor": "^1.0.0", @@ -13218,6 +14068,8 @@ }, "node_modules/ganache-core/node_modules/is-extendable": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4" @@ -13228,6 +14080,8 @@ }, "node_modules/ganache-core/node_modules/is-finite": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -13238,6 +14092,8 @@ }, "node_modules/ganache-core/node_modules/is-fn": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fn/-/is-fn-1.0.0.tgz", + "integrity": "sha512-XoFPJQmsAShb3jEQRfzf2rqXavq7fIqF/jOekp308JlThqrODnMpweVSGilKTCXELfLhltGP2AGgbQGVP8F1dg==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -13245,10 +14101,14 @@ }, "node_modules/ganache-core/node_modules/is-function": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", "license": "MIT" }, "node_modules/ganache-core/node_modules/is-hex-prefixed": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", "license": "MIT", "engines": { "node": ">=6.5.0", @@ -13267,6 +14127,8 @@ }, "node_modules/ganache-core/node_modules/is-object": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", + "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", "license": "MIT", "optional": true, "funding": { @@ -13275,6 +14137,8 @@ }, "node_modules/ganache-core/node_modules/is-plain-obj": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "license": "MIT", "optional": true, "engines": { @@ -13283,6 +14147,8 @@ }, "node_modules/ganache-core/node_modules/is-plain-object": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "license": "MIT", "dependencies": { "isobject": "^3.0.1" @@ -13306,6 +14172,8 @@ }, "node_modules/ganache-core/node_modules/is-retry-allowed": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", "license": "MIT", "optional": true, "engines": { @@ -13327,10 +14195,14 @@ }, "node_modules/ganache-core/node_modules/is-typedarray": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "license": "MIT" }, "node_modules/ganache-core/node_modules/is-windows": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -13338,14 +14210,20 @@ }, "node_modules/ganache-core/node_modules/isarray": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "license": "MIT" }, "node_modules/ganache-core/node_modules/isexe": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "license": "ISC" }, "node_modules/ganache-core/node_modules/isobject": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -13353,10 +14231,14 @@ }, "node_modules/ganache-core/node_modules/isstream": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", "license": "MIT" }, "node_modules/ganache-core/node_modules/isurl": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", "license": "MIT", "optional": true, "dependencies": { @@ -13369,24 +14251,34 @@ }, "node_modules/ganache-core/node_modules/js-sha3": { "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", "license": "MIT", "optional": true }, "node_modules/ganache-core/node_modules/js-tokens": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "license": "MIT" }, "node_modules/ganache-core/node_modules/jsbn": { "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", "license": "MIT" }, "node_modules/ganache-core/node_modules/json-buffer": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", "license": "MIT", "optional": true }, "node_modules/ganache-core/node_modules/json-rpc-engine": { "version": "3.8.0", + "resolved": "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-3.8.0.tgz", + "integrity": "sha512-6QNcvm2gFuuK4TKU1uwfH0Qd/cOSb9c1lls0gbnIhciktIUQJwz6NQNAW4B1KiGPenv7IKu97V222Yo1bNhGuA==", "license": "ISC", "dependencies": { "async": "^2.0.1", @@ -13399,6 +14291,8 @@ }, "node_modules/ganache-core/node_modules/json-rpc-error": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/json-rpc-error/-/json-rpc-error-2.0.0.tgz", + "integrity": "sha512-EwUeWP+KgAZ/xqFpaP6YDAXMtCJi+o/QQpCQFIYyxr01AdADi2y413eM8hSqJcoQym9WMePAJWoaODEJufC4Ug==", "license": "MIT", "dependencies": { "inherits": "^2.0.1" @@ -13406,6 +14300,8 @@ }, "node_modules/ganache-core/node_modules/json-rpc-random-id": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz", + "integrity": "sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==", "license": "ISC" }, "node_modules/ganache-core/node_modules/json-schema": { @@ -13413,6 +14309,8 @@ }, "node_modules/ganache-core/node_modules/json-schema-traverse": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "license": "MIT" }, "node_modules/ganache-core/node_modules/json-stable-stringify": { @@ -13424,10 +14322,14 @@ }, "node_modules/ganache-core/node_modules/json-stringify-safe": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "license": "ISC" }, "node_modules/ganache-core/node_modules/jsonfile": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" @@ -13452,6 +14354,8 @@ }, "node_modules/ganache-core/node_modules/keccak": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.1.tgz", + "integrity": "sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA==", "hasInstallScript": true, "inBundle": true, "license": "MIT", @@ -13465,6 +14369,8 @@ }, "node_modules/ganache-core/node_modules/keyv": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", "license": "MIT", "optional": true, "dependencies": { @@ -13473,6 +14379,8 @@ }, "node_modules/ganache-core/node_modules/kind-of": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -13480,6 +14388,8 @@ }, "node_modules/ganache-core/node_modules/klaw-sync": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", "license": "MIT", "dependencies": { "graceful-fs": "^4.1.11" @@ -13487,6 +14397,8 @@ }, "node_modules/ganache-core/node_modules/level-codec": { "version": "9.0.2", + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-9.0.2.tgz", + "integrity": "sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ==", "license": "MIT", "dependencies": { "buffer": "^5.6.0" @@ -13497,6 +14409,8 @@ }, "node_modules/ganache-core/node_modules/level-errors": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-2.0.1.tgz", + "integrity": "sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==", "license": "MIT", "dependencies": { "errno": "~0.1.1" @@ -13507,6 +14421,8 @@ }, "node_modules/ganache-core/node_modules/level-iterator-stream": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-2.0.3.tgz", + "integrity": "sha512-I6Heg70nfF+e5Y3/qfthJFexhRw/Gi3bIymCoXAlijZdAcLaPuWSJs3KXyTYf23ID6g0o2QF62Yh+grOXY3Rig==", "license": "MIT", "dependencies": { "inherits": "^2.0.1", @@ -13519,6 +14435,8 @@ }, "node_modules/ganache-core/node_modules/level-mem": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/level-mem/-/level-mem-3.0.1.tgz", + "integrity": "sha512-LbtfK9+3Ug1UmvvhR2DqLqXiPW1OJ5jEh0a3m9ZgAipiwpSxGj/qaVVy54RG5vAQN1nCuXqjvprCuKSCxcJHBg==", "license": "MIT", "dependencies": { "level-packager": "~4.0.0", @@ -13530,6 +14448,8 @@ }, "node_modules/ganache-core/node_modules/level-mem/node_modules/abstract-leveldown": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz", + "integrity": "sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A==", "license": "MIT", "dependencies": { "xtend": "~4.0.0" @@ -13540,10 +14460,14 @@ }, "node_modules/ganache-core/node_modules/level-mem/node_modules/ltgt": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", "license": "MIT" }, "node_modules/ganache-core/node_modules/level-mem/node_modules/memdown": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-3.0.0.tgz", + "integrity": "sha512-tbV02LfZMWLcHcq4tw++NuqMO+FZX8tNJEiD2aNRm48ZZusVg5N8NART+dmBkepJVye986oixErf7jfXboMGMA==", "license": "MIT", "dependencies": { "abstract-leveldown": "~5.0.0", @@ -13559,10 +14483,14 @@ }, "node_modules/ganache-core/node_modules/level-mem/node_modules/safe-buffer": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "license": "MIT" }, "node_modules/ganache-core/node_modules/level-packager": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/level-packager/-/level-packager-4.0.1.tgz", + "integrity": "sha512-svCRKfYLn9/4CoFfi+d8krOtrp6RoX8+xm0Na5cgXMqSyRru0AnDYdLl+YI8u1FyS6gGZ94ILLZDE5dh2but3Q==", "license": "MIT", "dependencies": { "encoding-down": "~5.0.0", @@ -13574,6 +14502,8 @@ }, "node_modules/ganache-core/node_modules/level-post": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/level-post/-/level-post-1.0.7.tgz", + "integrity": "sha512-PWYqG4Q00asOrLhX7BejSajByB4EmG2GaKHfj3h5UmmZ2duciXLPGYWIjBzLECFWUGOZWlm5B20h/n3Gs3HKew==", "license": "MIT", "dependencies": { "ltgt": "^2.1.2" @@ -13581,6 +14511,8 @@ }, "node_modules/ganache-core/node_modules/level-sublevel": { "version": "6.6.4", + "resolved": "https://registry.npmjs.org/level-sublevel/-/level-sublevel-6.6.4.tgz", + "integrity": "sha512-pcCrTUOiO48+Kp6F1+UAzF/OtWqLcQVTVF39HLdZ3RO8XBoXt+XVPKZO1vVr1aUoxHZA9OtD2e1v7G+3S5KFDA==", "license": "MIT", "dependencies": { "bytewise": "~1.1.0", @@ -13597,6 +14529,8 @@ }, "node_modules/ganache-core/node_modules/level-ws": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-1.0.0.tgz", + "integrity": "sha512-RXEfCmkd6WWFlArh3X8ONvQPm8jNpfA0s/36M4QzLqrLEIt1iJE9WBHLZ5vZJK6haMjJPJGJCQWfjMNnRcq/9Q==", "license": "MIT", "dependencies": { "inherits": "^2.0.3", @@ -13609,6 +14543,8 @@ }, "node_modules/ganache-core/node_modules/levelup": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-3.1.1.tgz", + "integrity": "sha512-9N10xRkUU4dShSRRFTBdNaBxofz+PGaIZO962ckboJZiNmLuhVT6FZ6ZKAsICKfUBO76ySaYU6fJWX/jnj3Lcg==", "license": "MIT", "dependencies": { "deferred-leveldown": "~4.0.0", @@ -13622,6 +14558,8 @@ }, "node_modules/ganache-core/node_modules/levelup/node_modules/level-iterator-stream": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-3.0.1.tgz", + "integrity": "sha512-nEIQvxEED9yRThxvOrq8Aqziy4EGzrxSZK+QzEFAVuJvQ8glfyZ96GB6BoI4sBbLfjMXm2w4vu3Tkcm9obcY0g==", "license": "MIT", "dependencies": { "inherits": "^2.0.1", @@ -13634,14 +14572,20 @@ }, "node_modules/ganache-core/node_modules/lodash": { "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", "license": "MIT" }, "node_modules/ganache-core/node_modules/looper": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/looper/-/looper-2.0.0.tgz", + "integrity": "sha512-6DzMHJcjbQX/UPHc1rRCBfKlLwDkvuGZ715cIR36wSdYqWXFT35uLXq5P/2orl3tz+t+VOVPxw4yPinQlUDGDQ==", "license": "MIT" }, "node_modules/ganache-core/node_modules/loose-envify": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" @@ -13652,6 +14596,8 @@ }, "node_modules/ganache-core/node_modules/lowercase-keys": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", "license": "MIT", "optional": true, "engines": { @@ -13660,6 +14606,8 @@ }, "node_modules/ganache-core/node_modules/lru-cache": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "license": "ISC", "dependencies": { "yallist": "^3.0.2" @@ -13667,10 +14615,14 @@ }, "node_modules/ganache-core/node_modules/ltgt": { "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.1.3.tgz", + "integrity": "sha512-5VjHC5GsENtIi5rbJd+feEpDKhfr7j0odoUR2Uh978g+2p93nd5o34cTjQWohXsPsCZeqoDnIqEf88mPCe0Pfw==", "license": "MIT" }, "node_modules/ganache-core/node_modules/map-cache": { "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -13678,6 +14630,8 @@ }, "node_modules/ganache-core/node_modules/map-visit": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", "license": "MIT", "dependencies": { "object-visit": "^1.0.0" @@ -13688,6 +14642,8 @@ }, "node_modules/ganache-core/node_modules/md5.js": { "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "license": "MIT", "dependencies": { "hash-base": "^3.0.0", @@ -13697,6 +14653,8 @@ }, "node_modules/ganache-core/node_modules/media-typer": { "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "license": "MIT", "optional": true, "engines": { @@ -13705,11 +14663,15 @@ }, "node_modules/ganache-core/node_modules/merge-descriptors": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", "license": "MIT", "optional": true }, "node_modules/ganache-core/node_modules/merkle-patricia-tree": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-3.0.0.tgz", + "integrity": "sha512-soRaMuNf/ILmw3KWbybaCjhx86EYeBbD8ph0edQCTed0JN/rxDt1EBN52Ajre3VyGo+91f8+/rfPIRQnnGMqmQ==", "license": "MPL-2.0", "dependencies": { "async": "^2.6.1", @@ -13723,6 +14685,8 @@ }, "node_modules/ganache-core/node_modules/merkle-patricia-tree/node_modules/ethereumjs-util": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", "license": "MPL-2.0", "dependencies": { "bn.js": "^4.11.0", @@ -13748,6 +14712,8 @@ }, "node_modules/ganache-core/node_modules/methods": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "license": "MIT", "optional": true, "engines": { @@ -13756,6 +14722,8 @@ }, "node_modules/ganache-core/node_modules/miller-rabin": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "license": "MIT", "dependencies": { "bn.js": "^4.0.0", @@ -13767,6 +14735,8 @@ }, "node_modules/ganache-core/node_modules/mime": { "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "license": "MIT", "optional": true, "bin": { @@ -13795,6 +14765,8 @@ }, "node_modules/ganache-core/node_modules/mimic-response": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", "license": "MIT", "optional": true, "engines": { @@ -13803,16 +14775,22 @@ }, "node_modules/ganache-core/node_modules/min-document": { "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", "dependencies": { "dom-walk": "^0.1.0" } }, "node_modules/ganache-core/node_modules/minimalistic-assert": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "license": "ISC" }, "node_modules/ganache-core/node_modules/minimalistic-crypto-utils": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", "license": "MIT" }, "node_modules/ganache-core/node_modules/minimatch": { @@ -13839,6 +14817,8 @@ }, "node_modules/ganache-core/node_modules/minizlib/node_modules/minipass": { "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", "license": "ISC", "optional": true, "dependencies": { @@ -13848,6 +14828,8 @@ }, "node_modules/ganache-core/node_modules/mixin-deep": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "license": "MIT", "dependencies": { "for-in": "^1.0.2", @@ -13869,6 +14851,8 @@ }, "node_modules/ganache-core/node_modules/mkdirp-promise": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", + "integrity": "sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w==", "license": "ISC", "optional": true, "dependencies": { @@ -13889,6 +14873,8 @@ }, "node_modules/ganache-core/node_modules/multibase": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz", + "integrity": "sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==", "license": "MIT", "optional": true, "dependencies": { @@ -13898,6 +14884,8 @@ }, "node_modules/ganache-core/node_modules/multicodec": { "version": "0.5.7", + "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.5.7.tgz", + "integrity": "sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA==", "license": "MIT", "optional": true, "dependencies": { @@ -13906,6 +14894,8 @@ }, "node_modules/ganache-core/node_modules/multihashes": { "version": "0.4.21", + "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz", + "integrity": "sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==", "license": "MIT", "optional": true, "dependencies": { @@ -13916,6 +14906,8 @@ }, "node_modules/ganache-core/node_modules/multihashes/node_modules/multibase": { "version": "0.7.0", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz", + "integrity": "sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==", "license": "MIT", "optional": true, "dependencies": { @@ -13925,11 +14917,15 @@ }, "node_modules/ganache-core/node_modules/nano-json-stream-parser": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz", + "integrity": "sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew==", "license": "MIT", "optional": true }, "node_modules/ganache-core/node_modules/nanomatch": { "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", "license": "MIT", "dependencies": { "arr-diff": "^4.0.0", @@ -13962,10 +14958,14 @@ }, "node_modules/ganache-core/node_modules/nice-try": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "license": "MIT" }, "node_modules/ganache-core/node_modules/node-addon-api": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", "inBundle": true, "license": "MIT" }, @@ -13996,6 +14996,8 @@ }, "node_modules/ganache-core/node_modules/number-to-bn": { "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", "license": "MIT", "optional": true, "dependencies": { @@ -14009,11 +15011,15 @@ }, "node_modules/ganache-core/node_modules/number-to-bn/node_modules/bn.js": { "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", "license": "MIT", "optional": true }, "node_modules/ganache-core/node_modules/oauth-sign": { "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "license": "Apache-2.0", "engines": { "node": "*" @@ -14021,6 +15027,8 @@ }, "node_modules/ganache-core/node_modules/object-assign": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -14028,6 +15036,8 @@ }, "node_modules/ganache-core/node_modules/object-copy": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", "license": "MIT", "dependencies": { "copy-descriptor": "^0.1.0", @@ -14040,6 +15050,8 @@ }, "node_modules/ganache-core/node_modules/object-copy/node_modules/define-property": { "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "license": "MIT", "dependencies": { "is-descriptor": "^0.1.0" @@ -14050,6 +15062,8 @@ }, "node_modules/ganache-core/node_modules/object-copy/node_modules/is-accessor-descriptor": { "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "license": "MIT", "dependencies": { "kind-of": "^3.0.2" @@ -14060,10 +15074,14 @@ }, "node_modules/ganache-core/node_modules/object-copy/node_modules/is-buffer": { "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "license": "MIT" }, "node_modules/ganache-core/node_modules/object-copy/node_modules/is-data-descriptor": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "license": "MIT", "dependencies": { "kind-of": "^3.0.2" @@ -14074,6 +15092,8 @@ }, "node_modules/ganache-core/node_modules/object-copy/node_modules/is-descriptor": { "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "license": "MIT", "dependencies": { "is-accessor-descriptor": "^0.1.6", @@ -14086,6 +15106,8 @@ }, "node_modules/ganache-core/node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -14093,6 +15115,8 @@ }, "node_modules/ganache-core/node_modules/object-copy/node_modules/kind-of": { "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" @@ -14124,6 +15148,8 @@ }, "node_modules/ganache-core/node_modules/object-keys": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -14131,6 +15157,8 @@ }, "node_modules/ganache-core/node_modules/object-visit": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", "license": "MIT", "dependencies": { "isobject": "^3.0.0" @@ -14172,6 +15200,8 @@ }, "node_modules/ganache-core/node_modules/object.pick": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", "license": "MIT", "dependencies": { "isobject": "^3.0.1" @@ -14182,6 +15212,8 @@ }, "node_modules/ganache-core/node_modules/oboe": { "version": "2.1.4", + "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.4.tgz", + "integrity": "sha512-ymBJ4xSC6GBXLT9Y7lirj+xbqBLa+jADGJldGEYG7u8sZbS9GyG+u1Xk9c5cbriKwSpCg41qUhPjvU5xOpvIyQ==", "license": "BSD", "optional": true, "dependencies": { @@ -14201,6 +15233,8 @@ }, "node_modules/ganache-core/node_modules/once": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "license": "ISC", "dependencies": { "wrappy": "1" @@ -14208,6 +15242,8 @@ }, "node_modules/ganache-core/node_modules/os-homedir": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -14215,6 +15251,8 @@ }, "node_modules/ganache-core/node_modules/os-tmpdir": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -14222,6 +15260,8 @@ }, "node_modules/ganache-core/node_modules/p-cancelable": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", "license": "MIT", "optional": true, "engines": { @@ -14230,6 +15270,8 @@ }, "node_modules/ganache-core/node_modules/p-timeout": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", + "integrity": "sha512-gb0ryzr+K2qFqFv6qi3khoeqMZF/+ajxQipEF6NteZVnvz9tzdsfAVj3lYtn1gAXvH5lfLwfxEII799gt/mRIA==", "license": "MIT", "optional": true, "dependencies": { @@ -14241,6 +15283,8 @@ }, "node_modules/ganache-core/node_modules/p-timeout/node_modules/p-finally": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", "license": "MIT", "optional": true, "engines": { @@ -14249,6 +15293,8 @@ }, "node_modules/ganache-core/node_modules/parse-asn1": { "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", "license": "ISC", "optional": true, "dependencies": { @@ -14265,6 +15311,8 @@ }, "node_modules/ganache-core/node_modules/parseurl": { "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "license": "MIT", "optional": true, "engines": { @@ -14273,6 +15321,8 @@ }, "node_modules/ganache-core/node_modules/pascalcase": { "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -14280,6 +15330,8 @@ }, "node_modules/ganache-core/node_modules/patch-package": { "version": "6.2.2", + "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.2.2.tgz", + "integrity": "sha512-YqScVYkVcClUY0v8fF0kWOjDYopzIM8e3bj/RU1DPeEF14+dCGm6UeOYm4jvCyxqIEQ5/eJzmbWfDWnUleFNMg==", "license": "MIT", "dependencies": { "@yarnpkg/lockfile": "^1.1.0", @@ -14304,6 +15356,8 @@ }, "node_modules/ganache-core/node_modules/patch-package/node_modules/cross-spawn": { "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "license": "MIT", "dependencies": { "nice-try": "^1.0.4", @@ -14318,6 +15372,8 @@ }, "node_modules/ganache-core/node_modules/patch-package/node_modules/path-key": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", "license": "MIT", "engines": { "node": ">=4" @@ -14325,6 +15381,8 @@ }, "node_modules/ganache-core/node_modules/patch-package/node_modules/semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "license": "ISC", "bin": { "semver": "bin/semver" @@ -14332,6 +15390,8 @@ }, "node_modules/ganache-core/node_modules/patch-package/node_modules/shebang-command": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "license": "MIT", "dependencies": { "shebang-regex": "^1.0.0" @@ -14342,6 +15402,8 @@ }, "node_modules/ganache-core/node_modules/patch-package/node_modules/shebang-regex": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -14349,6 +15411,8 @@ }, "node_modules/ganache-core/node_modules/patch-package/node_modules/slash": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "license": "MIT", "engines": { "node": ">=6" @@ -14356,6 +15420,8 @@ }, "node_modules/ganache-core/node_modules/patch-package/node_modules/tmp": { "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "license": "MIT", "dependencies": { "os-tmpdir": "~1.0.2" @@ -14366,6 +15432,8 @@ }, "node_modules/ganache-core/node_modules/patch-package/node_modules/which": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -14376,6 +15444,8 @@ }, "node_modules/ganache-core/node_modules/path-is-absolute": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -14387,6 +15457,8 @@ }, "node_modules/ganache-core/node_modules/path-to-regexp": { "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", "license": "MIT", "optional": true }, @@ -14406,10 +15478,14 @@ }, "node_modules/ganache-core/node_modules/performance-now": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", "license": "MIT" }, "node_modules/ganache-core/node_modules/posix-character-classes": { "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -14417,12 +15493,16 @@ }, "node_modules/ganache-core/node_modules/precond": { "version": "0.2.3", + "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", + "integrity": "sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ==", "engines": { "node": ">= 0.6" } }, "node_modules/ganache-core/node_modules/prepend-http": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", "license": "MIT", "optional": true, "engines": { @@ -14431,6 +15511,8 @@ }, "node_modules/ganache-core/node_modules/private": { "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", "license": "MIT", "engines": { "node": ">= 0.6" @@ -14438,6 +15520,8 @@ }, "node_modules/ganache-core/node_modules/process": { "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "license": "MIT", "engines": { "node": ">= 0.6.0" @@ -14445,10 +15529,14 @@ }, "node_modules/ganache-core/node_modules/process-nextick-args": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "license": "MIT" }, "node_modules/ganache-core/node_modules/promise-to-callback": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/promise-to-callback/-/promise-to-callback-1.0.0.tgz", + "integrity": "sha512-uhMIZmKM5ZteDMfLgJnoSq9GCwsNKrYau73Awf1jIy6/eUcuuZ3P+CD9zUv0kJsIUbU+x6uLNIhXhLHDs1pNPA==", "license": "MIT", "dependencies": { "is-fn": "^1.0.0", @@ -14472,10 +15560,14 @@ }, "node_modules/ganache-core/node_modules/prr": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "license": "MIT" }, "node_modules/ganache-core/node_modules/pseudomap": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", "license": "ISC" }, "node_modules/ganache-core/node_modules/psl": { @@ -14484,6 +15576,8 @@ }, "node_modules/ganache-core/node_modules/public-encrypt": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", "license": "MIT", "optional": true, "dependencies": { @@ -14497,14 +15591,20 @@ }, "node_modules/ganache-core/node_modules/pull-cat": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/pull-cat/-/pull-cat-1.1.11.tgz", + "integrity": "sha512-i3w+xZ3DCtTVz8S62hBOuNLRHqVDsHMNZmgrZsjPnsxXUgbWtXEee84lo1XswE7W2a3WHyqsNuDJTjVLAQR8xg==", "license": "MIT" }, "node_modules/ganache-core/node_modules/pull-defer": { "version": "0.2.3", + "resolved": "https://registry.npmjs.org/pull-defer/-/pull-defer-0.2.3.tgz", + "integrity": "sha512-/An3KE7mVjZCqNhZsr22k1Tx8MACnUnHZZNPSJ0S62td8JtYr/AiRG42Vz7Syu31SoTLUzVIe61jtT/pNdjVYA==", "license": "MIT" }, "node_modules/ganache-core/node_modules/pull-level": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pull-level/-/pull-level-2.0.4.tgz", + "integrity": "sha512-fW6pljDeUThpq5KXwKbRG3X7Ogk3vc75d5OQU/TvXXui65ykm+Bn+fiktg+MOx2jJ85cd+sheufPL+rw9QSVZg==", "license": "MIT", "dependencies": { "level-post": "^1.0.7", @@ -14518,6 +15618,8 @@ }, "node_modules/ganache-core/node_modules/pull-live": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pull-live/-/pull-live-1.0.1.tgz", + "integrity": "sha512-tkNz1QT5gId8aPhV5+dmwoIiA1nmfDOzJDlOOUpU5DNusj6neNd3EePybJ5+sITr2FwyCs/FVpx74YMCfc8YeA==", "license": "MIT", "dependencies": { "pull-cat": "^1.1.9", @@ -14526,6 +15628,8 @@ }, "node_modules/ganache-core/node_modules/pull-pushable": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pull-pushable/-/pull-pushable-2.2.0.tgz", + "integrity": "sha512-M7dp95enQ2kaHvfCt2+DJfyzgCSpWVR2h2kWYnVsW6ZpxQBx5wOu0QWOvQPVoPnBLUZYitYP2y7HyHkLQNeGXg==", "license": "MIT" }, "node_modules/ganache-core/node_modules/pull-stream": { @@ -14534,6 +15638,8 @@ }, "node_modules/ganache-core/node_modules/pull-window": { "version": "2.1.4", + "resolved": "https://registry.npmjs.org/pull-window/-/pull-window-2.1.4.tgz", + "integrity": "sha512-cbDzN76BMlcGG46OImrgpkMf/VkCnupj8JhsrpBw3aWBM9ye345aYnqitmZCgauBkc0HbbRRn9hCnsa3k2FNUg==", "license": "MIT", "dependencies": { "looper": "^2.0.0" @@ -14541,6 +15647,8 @@ }, "node_modules/ganache-core/node_modules/pump": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "license": "MIT", "optional": true, "dependencies": { @@ -14550,6 +15658,8 @@ }, "node_modules/ganache-core/node_modules/punycode": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "license": "MIT", "engines": { "node": ">=6" @@ -14564,6 +15674,8 @@ }, "node_modules/ganache-core/node_modules/query-string": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", "license": "MIT", "optional": true, "dependencies": { @@ -14577,6 +15689,8 @@ }, "node_modules/ganache-core/node_modules/randombytes": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" @@ -14584,6 +15698,8 @@ }, "node_modules/ganache-core/node_modules/randomfill": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "license": "MIT", "optional": true, "dependencies": { @@ -14593,6 +15709,8 @@ }, "node_modules/ganache-core/node_modules/range-parser": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "license": "MIT", "optional": true, "engines": { @@ -14615,6 +15733,8 @@ }, "node_modules/ganache-core/node_modules/readable-stream": { "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", @@ -14628,18 +15748,26 @@ }, "node_modules/ganache-core/node_modules/readable-stream/node_modules/safe-buffer": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "license": "MIT" }, "node_modules/ganache-core/node_modules/regenerate": { "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "license": "MIT" }, "node_modules/ganache-core/node_modules/regenerator-runtime": { "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", "license": "MIT" }, "node_modules/ganache-core/node_modules/regenerator-transform": { "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", "license": "BSD", "dependencies": { "babel-runtime": "^6.18.0", @@ -14649,6 +15777,8 @@ }, "node_modules/ganache-core/node_modules/regex-not": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "license": "MIT", "dependencies": { "extend-shallow": "^3.0.2", @@ -14697,6 +15827,8 @@ }, "node_modules/ganache-core/node_modules/regexpu-core": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha512-tJ9+S4oKjxY8IZ9jmjnp/mtytu1u3iyIQAfmI51IKWH6bFf7XR1ybtaO6j7INhZKXOTYADk7V5qxaqLkmNxiZQ==", "license": "MIT", "dependencies": { "regenerate": "^1.2.1", @@ -14706,10 +15838,14 @@ }, "node_modules/ganache-core/node_modules/regjsgen": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha512-x+Y3yA24uF68m5GA+tBjbGYo64xXVJpbToBaWCoSNSc1hdk6dfctaRWrNFTVJZIIhL5GxW8zwjoixbnifnK59g==", "license": "MIT" }, "node_modules/ganache-core/node_modules/regjsparser": { "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha512-jlQ9gYLfk2p3V5Ag5fYhA7fv7OHzd1KUH0PRP46xc3TgwjwgROIW572AfYg/X9kaNq/LJnu6oJcFRXlIrGoTRw==", "license": "BSD", "dependencies": { "jsesc": "~0.5.0" @@ -14720,6 +15856,8 @@ }, "node_modules/ganache-core/node_modules/regjsparser/node_modules/jsesc": { "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "bin": { "jsesc": "bin/jsesc" } @@ -14733,6 +15871,8 @@ }, "node_modules/ganache-core/node_modules/repeat-string": { "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", "license": "MIT", "engines": { "node": ">=0.10" @@ -14740,6 +15880,8 @@ }, "node_modules/ganache-core/node_modules/repeating": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", "license": "MIT", "dependencies": { "is-finite": "^1.0.0" @@ -14750,6 +15892,8 @@ }, "node_modules/ganache-core/node_modules/request": { "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "license": "Apache-2.0", "dependencies": { "aws-sign2": "~0.7.0", @@ -14779,10 +15923,14 @@ }, "node_modules/ganache-core/node_modules/resolve-url": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", "license": "MIT" }, "node_modules/ganache-core/node_modules/responselike": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", "license": "MIT", "optional": true, "dependencies": { @@ -14791,6 +15939,8 @@ }, "node_modules/ganache-core/node_modules/resumer": { "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha512-Fn9X8rX8yYF4m81rZCK/5VmrmsSbqS/i3rDLl6ZZHAXgC2nTAx3dhwG8q8odP/RmdLa2YrybDJaAMg+X1ajY3w==", "license": "MIT", "dependencies": { "through": "~2.3.4" @@ -14798,6 +15948,8 @@ }, "node_modules/ganache-core/node_modules/ret": { "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "license": "MIT", "engines": { "node": ">=0.12" @@ -14805,6 +15957,8 @@ }, "node_modules/ganache-core/node_modules/rimraf": { "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "license": "ISC", "dependencies": { "glob": "^7.1.3" @@ -14815,6 +15969,8 @@ }, "node_modules/ganache-core/node_modules/ripemd160": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "license": "MIT", "dependencies": { "hash-base": "^3.0.0", @@ -14833,10 +15989,14 @@ }, "node_modules/ganache-core/node_modules/rustbn.js": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", + "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==", "license": "(MIT OR Apache-2.0)" }, "node_modules/ganache-core/node_modules/safe-buffer": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { "type": "github", @@ -14855,6 +16015,8 @@ }, "node_modules/ganache-core/node_modules/safe-event-emitter": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz", + "integrity": "sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg==", "license": "ISC", "dependencies": { "events": "^3.0.0" @@ -14862,6 +16024,8 @@ }, "node_modules/ganache-core/node_modules/safe-regex": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", "license": "MIT", "dependencies": { "ret": "~0.1.10" @@ -14869,14 +16033,20 @@ }, "node_modules/ganache-core/node_modules/safer-buffer": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "license": "MIT" }, "node_modules/ganache-core/node_modules/scrypt-js": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", "license": "MIT" }, "node_modules/ganache-core/node_modules/scryptsy": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/scryptsy/-/scryptsy-1.2.1.tgz", + "integrity": "sha512-aldIRgMozSJ/Gl6K6qmJZysRP82lz83Wb42vl4PWN8SaLFHIaOzLPc9nUUW2jQN88CuGm5q5HefJ9jZ3nWSmTw==", "license": "MIT", "optional": true, "dependencies": { @@ -14898,10 +16068,14 @@ }, "node_modules/ganache-core/node_modules/seedrandom": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.1.tgz", + "integrity": "sha512-1/02Y/rUeU1CJBAGLebiC5Lbo5FnB22gQbIFFYTLkwvp1xdABZJH1sn4ZT1MzXmPpzv+Rf/Lu2NcsLJiK4rcDg==", "license": "MIT" }, "node_modules/ganache-core/node_modules/semaphore": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz", + "integrity": "sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==", "engines": { "node": ">=0.8.0" } @@ -14931,6 +16105,8 @@ }, "node_modules/ganache-core/node_modules/send/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "optional": true, "dependencies": { @@ -14939,11 +16115,15 @@ }, "node_modules/ganache-core/node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT", "optional": true }, "node_modules/ganache-core/node_modules/send/node_modules/ms": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "license": "MIT", "optional": true }, @@ -14963,6 +16143,8 @@ }, "node_modules/ganache-core/node_modules/servify": { "version": "0.1.12", + "resolved": "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz", + "integrity": "sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==", "license": "MIT", "optional": true, "dependencies": { @@ -14978,6 +16160,8 @@ }, "node_modules/ganache-core/node_modules/set-immediate-shim": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha512-Li5AOqrZWCVA2n5kryzEmqai6bKSIvpz5oUJHPVj6+dsbD3X1ixtsY5tEnsaNpH3pFAHmG8eIHUrtEtohrg+UQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -14985,6 +16169,8 @@ }, "node_modules/ganache-core/node_modules/set-value": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "license": "MIT", "dependencies": { "extend-shallow": "^2.0.1", @@ -14998,6 +16184,8 @@ }, "node_modules/ganache-core/node_modules/set-value/node_modules/extend-shallow": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" @@ -15008,6 +16196,8 @@ }, "node_modules/ganache-core/node_modules/set-value/node_modules/is-extendable": { "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -15015,6 +16205,8 @@ }, "node_modules/ganache-core/node_modules/setimmediate": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", "license": "MIT" }, "node_modules/ganache-core/node_modules/setprototypeof": { @@ -15024,6 +16216,8 @@ }, "node_modules/ganache-core/node_modules/sha.js": { "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "license": "(MIT AND BSD-3-Clause)", "dependencies": { "inherits": "^2.0.1", @@ -15035,6 +16229,8 @@ }, "node_modules/ganache-core/node_modules/simple-concat": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", "funding": [ { "type": "github", @@ -15064,6 +16260,8 @@ }, "node_modules/ganache-core/node_modules/snapdragon": { "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "license": "MIT", "dependencies": { "base": "^0.11.1", @@ -15081,6 +16279,8 @@ }, "node_modules/ganache-core/node_modules/snapdragon-node": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "license": "MIT", "dependencies": { "define-property": "^1.0.0", @@ -15093,6 +16293,8 @@ }, "node_modules/ganache-core/node_modules/snapdragon-node/node_modules/define-property": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "license": "MIT", "dependencies": { "is-descriptor": "^1.0.0" @@ -15103,6 +16305,8 @@ }, "node_modules/ganache-core/node_modules/snapdragon-util": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "license": "MIT", "dependencies": { "kind-of": "^3.2.0" @@ -15113,10 +16317,14 @@ }, "node_modules/ganache-core/node_modules/snapdragon-util/node_modules/is-buffer": { "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "license": "MIT" }, "node_modules/ganache-core/node_modules/snapdragon-util/node_modules/kind-of": { "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" @@ -15127,6 +16335,8 @@ }, "node_modules/ganache-core/node_modules/snapdragon/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { "ms": "2.0.0" @@ -15134,6 +16344,8 @@ }, "node_modules/ganache-core/node_modules/snapdragon/node_modules/define-property": { "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "license": "MIT", "dependencies": { "is-descriptor": "^0.1.0" @@ -15144,6 +16356,8 @@ }, "node_modules/ganache-core/node_modules/snapdragon/node_modules/extend-shallow": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" @@ -15154,6 +16368,8 @@ }, "node_modules/ganache-core/node_modules/snapdragon/node_modules/is-accessor-descriptor": { "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "license": "MIT", "dependencies": { "kind-of": "^3.0.2" @@ -15164,6 +16380,8 @@ }, "node_modules/ganache-core/node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" @@ -15174,10 +16392,14 @@ }, "node_modules/ganache-core/node_modules/snapdragon/node_modules/is-buffer": { "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "license": "MIT" }, "node_modules/ganache-core/node_modules/snapdragon/node_modules/is-data-descriptor": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "license": "MIT", "dependencies": { "kind-of": "^3.0.2" @@ -15188,6 +16410,8 @@ }, "node_modules/ganache-core/node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" @@ -15198,6 +16422,8 @@ }, "node_modules/ganache-core/node_modules/snapdragon/node_modules/is-descriptor": { "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "license": "MIT", "dependencies": { "is-accessor-descriptor": "^0.1.6", @@ -15210,6 +16436,8 @@ }, "node_modules/ganache-core/node_modules/snapdragon/node_modules/is-extendable": { "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -15217,6 +16445,8 @@ }, "node_modules/ganache-core/node_modules/snapdragon/node_modules/kind-of": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -15224,10 +16454,14 @@ }, "node_modules/ganache-core/node_modules/snapdragon/node_modules/ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, "node_modules/ganache-core/node_modules/source-map": { "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -15235,6 +16469,8 @@ }, "node_modules/ganache-core/node_modules/source-map-resolve": { "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", "license": "MIT", "dependencies": { "atob": "^2.1.2", @@ -15246,6 +16482,8 @@ }, "node_modules/ganache-core/node_modules/source-map-support": { "version": "0.5.12", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", + "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -15254,6 +16492,8 @@ }, "node_modules/ganache-core/node_modules/source-map-support/node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -15265,6 +16505,8 @@ }, "node_modules/ganache-core/node_modules/split-string": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "license": "MIT", "dependencies": { "extend-shallow": "^3.0.0" @@ -15293,10 +16535,14 @@ }, "node_modules/ganache-core/node_modules/sshpk/node_modules/tweetnacl": { "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", "license": "Unlicense" }, "node_modules/ganache-core/node_modules/static-extend": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", "license": "MIT", "dependencies": { "define-property": "^0.2.5", @@ -15308,6 +16554,8 @@ }, "node_modules/ganache-core/node_modules/static-extend/node_modules/define-property": { "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "license": "MIT", "dependencies": { "is-descriptor": "^0.1.0" @@ -15318,6 +16566,8 @@ }, "node_modules/ganache-core/node_modules/static-extend/node_modules/is-accessor-descriptor": { "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "license": "MIT", "dependencies": { "kind-of": "^3.0.2" @@ -15328,6 +16578,8 @@ }, "node_modules/ganache-core/node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" @@ -15338,10 +16590,14 @@ }, "node_modules/ganache-core/node_modules/static-extend/node_modules/is-buffer": { "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "license": "MIT" }, "node_modules/ganache-core/node_modules/static-extend/node_modules/is-data-descriptor": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "license": "MIT", "dependencies": { "kind-of": "^3.0.2" @@ -15352,6 +16608,8 @@ }, "node_modules/ganache-core/node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" @@ -15362,6 +16620,8 @@ }, "node_modules/ganache-core/node_modules/static-extend/node_modules/is-descriptor": { "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "license": "MIT", "dependencies": { "is-accessor-descriptor": "^0.1.6", @@ -15374,6 +16634,8 @@ }, "node_modules/ganache-core/node_modules/static-extend/node_modules/kind-of": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -15389,6 +16651,8 @@ }, "node_modules/ganache-core/node_modules/stream-to-pull-stream": { "version": "1.7.3", + "resolved": "https://registry.npmjs.org/stream-to-pull-stream/-/stream-to-pull-stream-1.7.3.tgz", + "integrity": "sha512-6sNyqJpr5dIOQdgNy/xcDWwDuzAsAwVzhzrWlAPAQ7Lkjx/rv0wgvxEyKwTq6FmNd5rjTrELt/CLmaSw7crMGg==", "license": "MIT", "dependencies": { "looper": "^3.0.0", @@ -15397,10 +16661,14 @@ }, "node_modules/ganache-core/node_modules/stream-to-pull-stream/node_modules/looper": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/looper/-/looper-3.0.0.tgz", + "integrity": "sha512-LJ9wplN/uSn72oJRsXTx+snxPet5c8XiZmOKCm906NVYu+ag6SB6vUcnJcWxgnl2NfbIyeobAn7Bwv6xRj2XJg==", "license": "MIT" }, "node_modules/ganache-core/node_modules/strict-uri-encode": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", "license": "MIT", "optional": true, "engines": { @@ -15409,6 +16677,8 @@ }, "node_modules/ganache-core/node_modules/string_decoder": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" @@ -15416,6 +16686,8 @@ }, "node_modules/ganache-core/node_modules/string_decoder/node_modules/safe-buffer": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "license": "MIT" }, "node_modules/ganache-core/node_modules/string.prototype.trim": { @@ -15457,6 +16729,8 @@ }, "node_modules/ganache-core/node_modules/strip-hex-prefix": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", "license": "MIT", "dependencies": { "is-hex-prefixed": "1.0.0" @@ -15468,6 +16742,8 @@ }, "node_modules/ganache-core/node_modules/supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "license": "MIT", "dependencies": { "has-flag": "^3.0.0" @@ -15478,6 +16754,8 @@ }, "node_modules/ganache-core/node_modules/swarm-js": { "version": "0.1.40", + "resolved": "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.40.tgz", + "integrity": "sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA==", "license": "MIT", "optional": true, "dependencies": { @@ -15496,6 +16774,8 @@ }, "node_modules/ganache-core/node_modules/swarm-js/node_modules/fs-extra": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", "license": "MIT", "optional": true, "dependencies": { @@ -15506,6 +16786,8 @@ }, "node_modules/ganache-core/node_modules/swarm-js/node_modules/get-stream": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", "license": "MIT", "optional": true, "engines": { @@ -15514,6 +16796,8 @@ }, "node_modules/ganache-core/node_modules/swarm-js/node_modules/got": { "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", "license": "MIT", "optional": true, "dependencies": { @@ -15538,6 +16822,8 @@ }, "node_modules/ganache-core/node_modules/swarm-js/node_modules/is-stream": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", "license": "MIT", "optional": true, "engines": { @@ -15546,6 +16832,8 @@ }, "node_modules/ganache-core/node_modules/swarm-js/node_modules/p-cancelable": { "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", "license": "MIT", "optional": true, "engines": { @@ -15554,6 +16842,8 @@ }, "node_modules/ganache-core/node_modules/swarm-js/node_modules/prepend-http": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", "license": "MIT", "optional": true, "engines": { @@ -15562,6 +16852,8 @@ }, "node_modules/ganache-core/node_modules/swarm-js/node_modules/url-parse-lax": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==", "license": "MIT", "optional": true, "dependencies": { @@ -15670,6 +16962,8 @@ }, "node_modules/ganache-core/node_modules/tar/node_modules/minipass": { "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", "license": "ISC", "optional": true, "dependencies": { @@ -15679,10 +16973,14 @@ }, "node_modules/ganache-core/node_modules/through": { "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "license": "MIT" }, "node_modules/ganache-core/node_modules/through2": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "license": "MIT", "dependencies": { "readable-stream": "~2.3.6", @@ -15691,6 +16989,8 @@ }, "node_modules/ganache-core/node_modules/timed-out": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==", "license": "MIT", "optional": true, "engines": { @@ -15699,6 +16999,8 @@ }, "node_modules/ganache-core/node_modules/tmp": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", + "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", "license": "MIT", "dependencies": { "rimraf": "^2.6.3" @@ -15709,6 +17011,8 @@ }, "node_modules/ganache-core/node_modules/to-object-path": { "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", "license": "MIT", "dependencies": { "kind-of": "^3.0.2" @@ -15719,10 +17023,14 @@ }, "node_modules/ganache-core/node_modules/to-object-path/node_modules/is-buffer": { "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "license": "MIT" }, "node_modules/ganache-core/node_modules/to-object-path/node_modules/kind-of": { "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" @@ -15733,6 +17041,8 @@ }, "node_modules/ganache-core/node_modules/to-readable-stream": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", "license": "MIT", "optional": true, "engines": { @@ -15741,6 +17051,8 @@ }, "node_modules/ganache-core/node_modules/to-regex": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "license": "MIT", "dependencies": { "define-property": "^2.0.2", @@ -15762,6 +17074,8 @@ }, "node_modules/ganache-core/node_modules/tough-cookie": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "license": "BSD-3-Clause", "dependencies": { "psl": "^1.1.28", @@ -15773,6 +17087,8 @@ }, "node_modules/ganache-core/node_modules/trim-right": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -15780,6 +17096,8 @@ }, "node_modules/ganache-core/node_modules/tunnel-agent": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" @@ -15790,18 +17108,26 @@ }, "node_modules/ganache-core/node_modules/tweetnacl": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", "license": "Unlicense" }, "node_modules/ganache-core/node_modules/tweetnacl-util": { "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", "license": "Unlicense" }, "node_modules/ganache-core/node_modules/type": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", "license": "ISC" }, "node_modules/ganache-core/node_modules/type-is": { "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "license": "MIT", "optional": true, "dependencies": { @@ -15814,10 +17140,14 @@ }, "node_modules/ganache-core/node_modules/typedarray": { "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "license": "MIT" }, "node_modules/ganache-core/node_modules/typedarray-to-buffer": { "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "license": "MIT", "dependencies": { "is-typedarray": "^1.0.0" @@ -15825,6 +17155,8 @@ }, "node_modules/ganache-core/node_modules/typewise": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typewise/-/typewise-1.0.3.tgz", + "integrity": "sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ==", "license": "MIT", "dependencies": { "typewise-core": "^1.2.0" @@ -15832,24 +17164,34 @@ }, "node_modules/ganache-core/node_modules/typewise-core": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/typewise-core/-/typewise-core-1.2.0.tgz", + "integrity": "sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg==", "license": "MIT" }, "node_modules/ganache-core/node_modules/typewiselite": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typewiselite/-/typewiselite-1.0.0.tgz", + "integrity": "sha512-J9alhjVHupW3Wfz6qFRGgQw0N3gr8hOkw6zm7FZ6UR1Cse/oD9/JVok7DNE9TT9IbciDHX2Ex9+ksE6cRmtymw==", "license": "MIT" }, "node_modules/ganache-core/node_modules/ultron": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", "license": "MIT", "optional": true }, "node_modules/ganache-core/node_modules/underscore": { "version": "1.9.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", + "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==", "license": "MIT", "optional": true }, "node_modules/ganache-core/node_modules/union-value": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "license": "MIT", "dependencies": { "arr-union": "^3.1.0", @@ -15863,6 +17205,8 @@ }, "node_modules/ganache-core/node_modules/union-value/node_modules/is-extendable": { "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -15870,6 +17214,8 @@ }, "node_modules/ganache-core/node_modules/universalify": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "license": "MIT", "engines": { "node": ">= 4.0.0" @@ -15877,6 +17223,8 @@ }, "node_modules/ganache-core/node_modules/unorm": { "version": "1.6.0", + "resolved": "https://registry.npmjs.org/unorm/-/unorm-1.6.0.tgz", + "integrity": "sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==", "license": "MIT or GPL-2.0", "engines": { "node": ">= 0.4.0" @@ -15884,6 +17232,8 @@ }, "node_modules/ganache-core/node_modules/unpipe": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "license": "MIT", "optional": true, "engines": { @@ -15892,6 +17242,8 @@ }, "node_modules/ganache-core/node_modules/unset-value": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", "license": "MIT", "dependencies": { "has-value": "^0.3.1", @@ -15903,6 +17255,8 @@ }, "node_modules/ganache-core/node_modules/unset-value/node_modules/has-value": { "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", "license": "MIT", "dependencies": { "get-value": "^2.0.3", @@ -15915,6 +17269,8 @@ }, "node_modules/ganache-core/node_modules/unset-value/node_modules/has-value/node_modules/isobject": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", "license": "MIT", "dependencies": { "isarray": "1.0.0" @@ -15925,6 +17281,8 @@ }, "node_modules/ganache-core/node_modules/unset-value/node_modules/has-values": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -15932,6 +17290,8 @@ }, "node_modules/ganache-core/node_modules/uri-js": { "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" @@ -15939,10 +17299,14 @@ }, "node_modules/ganache-core/node_modules/urix": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", "license": "MIT" }, "node_modules/ganache-core/node_modules/url-parse-lax": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", "license": "MIT", "optional": true, "dependencies": { @@ -15954,11 +17318,15 @@ }, "node_modules/ganache-core/node_modules/url-set-query": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz", + "integrity": "sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg==", "license": "MIT", "optional": true }, "node_modules/ganache-core/node_modules/url-to-options": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==", "license": "MIT", "optional": true, "engines": { @@ -15967,6 +17335,8 @@ }, "node_modules/ganache-core/node_modules/use": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -15982,11 +17352,15 @@ }, "node_modules/ganache-core/node_modules/utf8": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", "license": "MIT", "optional": true }, "node_modules/ganache-core/node_modules/util-deprecate": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "license": "MIT" }, "node_modules/ganache-core/node_modules/util.promisify": { @@ -16005,6 +17379,8 @@ }, "node_modules/ganache-core/node_modules/utils-merge": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "license": "MIT", "optional": true, "engines": { @@ -16013,6 +17389,8 @@ }, "node_modules/ganache-core/node_modules/uuid": { "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "license": "MIT", "bin": { "uuid": "bin/uuid" @@ -16020,11 +17398,15 @@ }, "node_modules/ganache-core/node_modules/varint": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", + "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==", "license": "MIT", "optional": true }, "node_modules/ganache-core/node_modules/vary": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "license": "MIT", "optional": true, "engines": { @@ -16033,6 +17415,8 @@ }, "node_modules/ganache-core/node_modules/verror": { "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "engines": [ "node >=0.6.0" ], @@ -16045,6 +17429,8 @@ }, "node_modules/ganache-core/node_modules/web3": { "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.2.11.tgz", + "integrity": "sha512-mjQ8HeU41G6hgOYm1pmeH0mRAeNKJGnJEUzDMoerkpw7QUQT4exVREgF1MYPvL/z6vAshOXei25LE/t/Bxl8yQ==", "hasInstallScript": true, "license": "LGPL-3.0", "optional": true, @@ -16063,6 +17449,8 @@ }, "node_modules/ganache-core/node_modules/web3-bzz": { "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.2.11.tgz", + "integrity": "sha512-XGpWUEElGypBjeFyUhTkiPXFbDVD6Nr/S5jznE3t8cWUA0FxRf1n3n/NuIZeb0H9RkN2Ctd/jNma/k8XGa3YKg==", "license": "LGPL-3.0", "optional": true, "dependencies": { @@ -16082,6 +17470,8 @@ }, "node_modules/ganache-core/node_modules/web3-core": { "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.2.11.tgz", + "integrity": "sha512-CN7MEYOY5ryo5iVleIWRE3a3cZqVaLlIbIzDPsvQRUfzYnvzZQRZBm9Mq+ttDi2STOOzc1MKylspz/o3yq/LjQ==", "license": "LGPL-3.0", "optional": true, "dependencies": { @@ -16099,6 +17489,8 @@ }, "node_modules/ganache-core/node_modules/web3-core-helpers": { "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.2.11.tgz", + "integrity": "sha512-PEPoAoZd5ME7UfbnCZBdzIerpe74GEvlwT4AjOmHeCVZoIFk7EqvOZDejJHt+feJA6kMVTdd0xzRNN295UhC1A==", "license": "LGPL-3.0", "optional": true, "dependencies": { @@ -16112,6 +17504,8 @@ }, "node_modules/ganache-core/node_modules/web3-core-method": { "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.2.11.tgz", + "integrity": "sha512-ff0q76Cde94HAxLDZ6DbdmKniYCQVtvuaYh+rtOUMB6kssa5FX0q3vPmixi7NPooFnbKmmZCM6NvXg4IreTPIw==", "license": "LGPL-3.0", "optional": true, "dependencies": { @@ -16128,6 +17522,8 @@ }, "node_modules/ganache-core/node_modules/web3-core-promievent": { "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.2.11.tgz", + "integrity": "sha512-il4McoDa/Ox9Agh4kyfQ8Ak/9ABYpnF8poBLL33R/EnxLsJOGQG2nZhkJa3I067hocrPSjEdlPt/0bHXsln4qA==", "license": "LGPL-3.0", "optional": true, "dependencies": { @@ -16139,6 +17535,8 @@ }, "node_modules/ganache-core/node_modules/web3-core-requestmanager": { "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.2.11.tgz", + "integrity": "sha512-oFhBtLfOiIbmfl6T6gYjjj9igOvtyxJ+fjS+byRxiwFJyJ5BQOz4/9/17gWR1Cq74paTlI7vDGxYfuvfE/mKvA==", "license": "LGPL-3.0", "optional": true, "dependencies": { @@ -16154,6 +17552,8 @@ }, "node_modules/ganache-core/node_modules/web3-core-subscriptions": { "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.2.11.tgz", + "integrity": "sha512-qEF/OVqkCvQ7MPs1JylIZCZkin0aKK9lDxpAtQ1F8niEDGFqn7DT8E/vzbIa0GsOjL2fZjDhWJsaW+BSoAW1gg==", "license": "LGPL-3.0", "optional": true, "dependencies": { @@ -16172,6 +17572,8 @@ }, "node_modules/ganache-core/node_modules/web3-eth": { "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.2.11.tgz", + "integrity": "sha512-REvxW1wJ58AgHPcXPJOL49d1K/dPmuw4LjPLBPStOVkQjzDTVmJEIsiLwn2YeuNDd4pfakBwT8L3bz1G1/wVsQ==", "license": "LGPL-3.0", "optional": true, "dependencies": { @@ -16195,6 +17597,8 @@ }, "node_modules/ganache-core/node_modules/web3-eth-abi": { "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.2.11.tgz", + "integrity": "sha512-PkRYc0+MjuLSgg03QVWqWlQivJqRwKItKtEpRUaxUAeLE7i/uU39gmzm2keHGcQXo3POXAbOnMqkDvOep89Crg==", "license": "LGPL-3.0", "optional": true, "dependencies": { @@ -16208,6 +17612,8 @@ }, "node_modules/ganache-core/node_modules/web3-eth-accounts": { "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.2.11.tgz", + "integrity": "sha512-6FwPqEpCfKIh3nSSGeo3uBm2iFSnFJDfwL3oS9pyegRBXNsGRVpgiW63yhNzL0796StsvjHWwQnQHsZNxWAkGw==", "license": "LGPL-3.0", "optional": true, "dependencies": { @@ -16229,6 +17635,8 @@ }, "node_modules/ganache-core/node_modules/web3-eth-accounts/node_modules/eth-lib": { "version": "0.2.8", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", + "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", "license": "MIT", "optional": true, "dependencies": { @@ -16239,6 +17647,8 @@ }, "node_modules/ganache-core/node_modules/web3-eth-accounts/node_modules/uuid": { "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", "license": "MIT", "optional": true, "bin": { @@ -16247,6 +17657,8 @@ }, "node_modules/ganache-core/node_modules/web3-eth-contract": { "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.2.11.tgz", + "integrity": "sha512-MzYuI/Rq2o6gn7vCGcnQgco63isPNK5lMAan2E51AJLknjSLnOxwNY3gM8BcKoy4Z+v5Dv00a03Xuk78JowFow==", "license": "LGPL-3.0", "optional": true, "dependencies": { @@ -16266,6 +17678,8 @@ }, "node_modules/ganache-core/node_modules/web3-eth-ens": { "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.2.11.tgz", + "integrity": "sha512-dbW7dXP6HqT1EAPvnniZVnmw6TmQEKF6/1KgAxbo8iBBYrVTMDGFQUUnZ+C4VETGrwwaqtX4L9d/FrQhZ6SUiA==", "license": "LGPL-3.0", "optional": true, "dependencies": { @@ -16285,6 +17699,8 @@ }, "node_modules/ganache-core/node_modules/web3-eth-iban": { "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.2.11.tgz", + "integrity": "sha512-ozuVlZ5jwFC2hJY4+fH9pIcuH1xP0HEFhtWsR69u9uDIANHLPQQtWYmdj7xQ3p2YT4bQLq/axKhZi7EZVetmxQ==", "license": "LGPL-3.0", "optional": true, "dependencies": { @@ -16297,6 +17713,8 @@ }, "node_modules/ganache-core/node_modules/web3-eth-personal": { "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.2.11.tgz", + "integrity": "sha512-42IzUtKq9iHZ8K9VN0vAI50iSU9tOA1V7XU2BhF/tb7We2iKBVdkley2fg26TxlOcKNEHm7o6HRtiiFsVK4Ifw==", "license": "LGPL-3.0", "optional": true, "dependencies": { @@ -16318,6 +17736,8 @@ }, "node_modules/ganache-core/node_modules/web3-net": { "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.2.11.tgz", + "integrity": "sha512-sjrSDj0pTfZouR5BSTItCuZ5K/oZPVdVciPQ6981PPPIwJJkCMeVjD7I4zO3qDPCnBjBSbWvVnLdwqUBPtHxyg==", "license": "LGPL-3.0", "optional": true, "dependencies": { @@ -16331,6 +17751,8 @@ }, "node_modules/ganache-core/node_modules/web3-provider-engine": { "version": "14.2.1", + "resolved": "https://registry.npmjs.org/web3-provider-engine/-/web3-provider-engine-14.2.1.tgz", + "integrity": "sha512-iSv31h2qXkr9vrL6UZDm4leZMc32SjWJFGOp/D92JXfcEboCqraZyuExDkpxKw8ziTufXieNM7LSXNHzszYdJw==", "license": "MIT", "dependencies": { "async": "^2.5.0", @@ -16357,6 +17779,8 @@ }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/abstract-leveldown": { "version": "2.6.3", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz", + "integrity": "sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==", "license": "MIT", "dependencies": { "xtend": "~4.0.0" @@ -16364,6 +17788,8 @@ }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/deferred-leveldown": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz", + "integrity": "sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA==", "license": "MIT", "dependencies": { "abstract-leveldown": "~2.6.0" @@ -16379,6 +17805,8 @@ }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/ethereumjs-account": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz", + "integrity": "sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA==", "license": "MPL-2.0", "dependencies": { "ethereumjs-util": "^5.0.0", @@ -16388,6 +17816,8 @@ }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/ethereumjs-block": { "version": "1.7.1", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz", + "integrity": "sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg==", "license": "MPL-2.0", "dependencies": { "async": "^2.0.1", @@ -16399,10 +17829,14 @@ }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/ethereumjs-block/node_modules/ethereum-common": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.2.0.tgz", + "integrity": "sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA==", "license": "MIT" }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/ethereumjs-tx": { "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz", + "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==", "license": "MPL-2.0", "dependencies": { "ethereum-common": "^0.0.18", @@ -16411,6 +17845,8 @@ }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/ethereumjs-util": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", "license": "MPL-2.0", "dependencies": { "bn.js": "^4.11.0", @@ -16424,6 +17860,8 @@ }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/ethereumjs-vm": { "version": "2.6.0", + "resolved": "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz", + "integrity": "sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw==", "license": "MPL-2.0", "dependencies": { "async": "^2.1.2", @@ -16441,6 +17879,8 @@ }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/ethereumjs-vm/node_modules/ethereumjs-block": { "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz", + "integrity": "sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==", "license": "MPL-2.0", "dependencies": { "async": "^2.0.1", @@ -16452,6 +17892,8 @@ }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/ethereumjs-vm/node_modules/ethereumjs-block/node_modules/ethereumjs-util": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", "license": "MPL-2.0", "dependencies": { "bn.js": "^4.11.0", @@ -16465,6 +17907,8 @@ }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/ethereumjs-vm/node_modules/ethereumjs-tx": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", + "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", "license": "MPL-2.0", "dependencies": { "ethereumjs-common": "^1.5.0", @@ -16473,6 +17917,8 @@ }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/ethereumjs-vm/node_modules/ethereumjs-util": { "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", "license": "MPL-2.0", "dependencies": { "@types/bn.js": "^4.11.3", @@ -16486,14 +17932,20 @@ }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/isarray": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", "license": "MIT" }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/level-codec": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-7.0.1.tgz", + "integrity": "sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ==", "license": "MIT" }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/level-errors": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.0.5.tgz", + "integrity": "sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig==", "license": "MIT", "dependencies": { "errno": "~0.1.1" @@ -16501,6 +17953,8 @@ }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/level-iterator-stream": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz", + "integrity": "sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw==", "license": "MIT", "dependencies": { "inherits": "^2.0.1", @@ -16511,6 +17965,8 @@ }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/level-iterator-stream/node_modules/readable-stream": { "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", @@ -16521,6 +17977,8 @@ }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/level-ws": { "version": "0.0.0", + "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-0.0.0.tgz", + "integrity": "sha512-XUTaO/+Db51Uiyp/t7fCMGVFOTdtLS/NIACxE/GHsij15mKzxksZifKVjlXDF41JMUP/oM1Oc4YNGdKnc3dVLw==", "license": "MIT", "dependencies": { "readable-stream": "~1.0.15", @@ -16529,6 +17987,8 @@ }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/level-ws/node_modules/readable-stream": { "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", @@ -16539,6 +17999,8 @@ }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/level-ws/node_modules/xtend": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==", "dependencies": { "object-keys": "~0.4.0" }, @@ -16548,6 +18010,8 @@ }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/levelup": { "version": "1.3.9", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-1.3.9.tgz", + "integrity": "sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ==", "license": "MIT", "dependencies": { "deferred-leveldown": "~1.2.1", @@ -16561,10 +18025,14 @@ }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/ltgt": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", "license": "MIT" }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/memdown": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", + "integrity": "sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w==", "license": "MIT", "dependencies": { "abstract-leveldown": "~2.7.1", @@ -16577,6 +18045,8 @@ }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/memdown/node_modules/abstract-leveldown": { "version": "2.7.2", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", + "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", "license": "MIT", "dependencies": { "xtend": "~4.0.0" @@ -16584,6 +18054,8 @@ }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/merkle-patricia-tree": { "version": "2.3.2", + "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz", + "integrity": "sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g==", "license": "MPL-2.0", "dependencies": { "async": "^1.4.2", @@ -16598,18 +18070,26 @@ }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/merkle-patricia-tree/node_modules/async": { "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", "license": "MIT" }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/object-keys": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==", "license": "MIT" }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/safe-buffer": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "license": "MIT" }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/semver": { "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", "license": "ISC", "bin": { "semver": "bin/semver" @@ -16617,6 +18097,8 @@ }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/string_decoder": { "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", "license": "MIT" }, "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/ws": { @@ -16628,6 +18110,8 @@ }, "node_modules/ganache-core/node_modules/web3-providers-http": { "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.2.11.tgz", + "integrity": "sha512-psh4hYGb1+ijWywfwpB2cvvOIMISlR44F/rJtYkRmQ5jMvG4FOCPlQJPiHQZo+2cc3HbktvvSJzIhkWQJdmvrA==", "license": "LGPL-3.0", "optional": true, "dependencies": { @@ -16640,6 +18124,8 @@ }, "node_modules/ganache-core/node_modules/web3-providers-ipc": { "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.2.11.tgz", + "integrity": "sha512-yhc7Y/k8hBV/KlELxynWjJDzmgDEDjIjBzXK+e0rHBsYEhdCNdIH5Psa456c+l0qTEU2YzycF8VAjYpWfPnBpQ==", "license": "LGPL-3.0", "optional": true, "dependencies": { @@ -16653,6 +18139,8 @@ }, "node_modules/ganache-core/node_modules/web3-providers-ws": { "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.2.11.tgz", + "integrity": "sha512-ZxnjIY1Er8Ty+cE4migzr43zA/+72AF1myzsLaU5eVgdsfV7Jqx7Dix1hbevNZDKFlSoEyq/3j/jYalh3So1Zg==", "license": "LGPL-3.0", "optional": true, "dependencies": { @@ -16667,6 +18155,8 @@ }, "node_modules/ganache-core/node_modules/web3-shh": { "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.2.11.tgz", + "integrity": "sha512-B3OrO3oG1L+bv3E1sTwCx66injW1A8hhwpknDUbV+sw3fehFazA06z9SGXUefuFI1kVs4q2vRi0n4oCcI4dZDg==", "license": "LGPL-3.0", "optional": true, "dependencies": { @@ -16681,6 +18171,8 @@ }, "node_modules/ganache-core/node_modules/web3-utils": { "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.2.11.tgz", + "integrity": "sha512-3Tq09izhD+ThqHEaWYX4VOT7dNPdZiO+c/1QMA0s5X2lDFKK/xHJb7cyTRRVzN2LvlHbR7baS1tmQhSua51TcQ==", "license": "LGPL-3.0", "optional": true, "dependencies": { @@ -16699,6 +18191,8 @@ }, "node_modules/ganache-core/node_modules/web3-utils/node_modules/eth-lib": { "version": "0.2.8", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", + "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", "license": "MIT", "optional": true, "dependencies": { @@ -16709,6 +18203,8 @@ }, "node_modules/ganache-core/node_modules/websocket": { "version": "1.0.32", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.32.tgz", + "integrity": "sha512-i4yhcllSP4wrpoPMU2N0TQ/q0O94LRG/eUQjEAamRltjQ1oT1PFFKOG4i877OlJgCG8rw6LrrowJp+TYCEWF7Q==", "license": "Apache-2.0", "dependencies": { "bufferutil": "^4.0.1", @@ -16724,6 +18220,8 @@ }, "node_modules/ganache-core/node_modules/websocket/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { "ms": "2.0.0" @@ -16731,6 +18229,8 @@ }, "node_modules/ganache-core/node_modules/websocket/node_modules/ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, "node_modules/ganache-core/node_modules/whatwg-fetch": { @@ -16739,10 +18239,14 @@ }, "node_modules/ganache-core/node_modules/wrappy": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "license": "ISC" }, "node_modules/ganache-core/node_modules/ws": { "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", "license": "MIT", "optional": true, "dependencies": { @@ -16753,11 +18257,15 @@ }, "node_modules/ganache-core/node_modules/ws/node_modules/safe-buffer": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "license": "MIT", "optional": true }, "node_modules/ganache-core/node_modules/xhr": { "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", "license": "MIT", "dependencies": { "global": "~4.4.0", @@ -16768,6 +18276,8 @@ }, "node_modules/ganache-core/node_modules/xhr-request": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz", + "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", "license": "MIT", "optional": true, "dependencies": { @@ -16782,6 +18292,8 @@ }, "node_modules/ganache-core/node_modules/xhr-request-promise": { "version": "0.1.3", + "resolved": "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz", + "integrity": "sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==", "license": "MIT", "optional": true, "dependencies": { @@ -16790,6 +18302,8 @@ }, "node_modules/ganache-core/node_modules/xhr2-cookies": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz", + "integrity": "sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g==", "license": "MIT", "optional": true, "dependencies": { @@ -16798,6 +18312,8 @@ }, "node_modules/ganache-core/node_modules/xtend": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "license": "MIT", "engines": { "node": ">=0.4" @@ -16805,6 +18321,8 @@ }, "node_modules/ganache-core/node_modules/yaeti": { "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==", "license": "MIT", "engines": { "node": ">=0.10.32" @@ -16812,6 +18330,8 @@ }, "node_modules/ganache-core/node_modules/yallist": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "license": "ISC" }, "node_modules/ganache/node_modules/@trufflesuite/bigint-buffer": { diff --git a/scripts/addresses/BscAddresses.ts b/scripts/addresses/BscAddresses.ts index 216fba5..59fb5cd 100644 --- a/scripts/addresses/BscAddresses.ts +++ b/scripts/addresses/BscAddresses.ts @@ -11,7 +11,7 @@ export class BscAddresses { public static GOV_ADDRESS = "0xf00fD5282538F1C81df9F8388023FFDB3565c0D4".toLowerCase(); public static CONTROLLER_ADDRESS = "0xe926a29f531AC36A0D635a5494Fd8474b9a663aD".toLowerCase(); public static LIQUIDATOR_ADDRESS = "0xcE9F7173420b41678320cd4BB93517382b6D48e8".toLowerCase(); - public static DEFAULT_PERF_FEE_RECEIVER = "0x9Cc199D4353b5FB3e6C8EEBC99f5139e0d8eA06b".toLowerCase(); + public static DEFAULT_PERF_FEE_RECEIVER = "0x5256B9276974B12501e3caE24f877357ceBddDD2".toLowerCase(); public static UNIV2_SWAPPER = "0xD37fC11dEDfaa0fc3449b2BF5eDe864Ef6AaE1E3".toLowerCase(); public static UNIV3_SWAPPER = "0x1476Ab41a45b81324dAd2A1E0B3a3281458ba502".toLowerCase(); public static PANCAKEV3_SWAPPER = "0x5413E7AFCADCB63A30Dad567f46dd146Cc427801".toLowerCase(); @@ -35,6 +35,7 @@ export class BscAddresses { public static MDBPlus_TOKEN = "0x9f8bb16f49393eea4331a39b69071759e54e16ea".toLowerCase(); public static QI_TOKEN = "0xddc3d26baa9d2d979f5e2e42515478bf18f354d5".toLowerCase(); public static XVS_TOKEN = "0xcF6BB5389c92Bdda8a3747Ddb454cB7a64626C63".toLowerCase(); + public static RDNT_TOKEN = "0xf7DE7E8A6bd59ED41a4b5fe50278b3B7f31384dF".toLowerCase(); public static AAVE_TOKEN = "0xfb6115445Bff7b52FeB98650C87f44907E58f802".toLowerCase(); public static BTCB = "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c".toLowerCase(); diff --git a/scripts/deploy/strategies/radiant/DeployUSDCSupplyStrategy.ts b/scripts/deploy/strategies/radiant/DeployUSDCSupplyStrategy.ts new file mode 100644 index 0000000..0b6557d --- /dev/null +++ b/scripts/deploy/strategies/radiant/DeployUSDCSupplyStrategy.ts @@ -0,0 +1,28 @@ +import {ethers} from "hardhat"; +import {DeployerUtilsLocal} from "../../DeployerUtilsLocal"; +import {Radiant2SupplyStrategy__factory} from "../../../../typechain"; +import {RunHelper} from "../../../utils/tools/RunHelper"; +import {BscAddresses} from "../../../addresses/BscAddresses"; + +async function main() { + const signer = (await ethers.getSigners())[0]; + const core = await DeployerUtilsLocal.getCoreAddresses(); + const underlying = BscAddresses.USDC_TOKEN; + + const splitterAddress = BscAddresses.xUSDC_SPLITTER; + const logic = await DeployerUtilsLocal.deployContract(signer, "Radiant2SupplyStrategy"); + const stackerProxy = await DeployerUtilsLocal.deployContract(signer, "TetuProxyControlled", logic.address); + await RunHelper.runAndWait(() => Radiant2SupplyStrategy__factory.connect(stackerProxy.address, signer).initialize( + core.controller, + underlying, + splitterAddress, + 10_00 + )); +} + +main() + .then(() => process.exit(0)) + .catch(error => { + console.error(error); + process.exit(1); + }); diff --git a/scripts/deploy/strategies/radiant/DeployUSDTSupplyStrategy.ts b/scripts/deploy/strategies/radiant/DeployUSDTSupplyStrategy.ts new file mode 100644 index 0000000..7bd8edf --- /dev/null +++ b/scripts/deploy/strategies/radiant/DeployUSDTSupplyStrategy.ts @@ -0,0 +1,28 @@ +import {ethers} from "hardhat"; +import {DeployerUtilsLocal} from "../../DeployerUtilsLocal"; +import {Radiant2SupplyStrategy__factory} from "../../../../typechain"; +import {RunHelper} from "../../../utils/tools/RunHelper"; +import {BscAddresses} from "../../../addresses/BscAddresses"; + +async function main() { + const signer = (await ethers.getSigners())[0]; + const core = await DeployerUtilsLocal.getCoreAddresses(); + const underlying = BscAddresses.USDT_TOKEN; + + const splitterAddress = BscAddresses.xUSDT_SPLITTER; + const logic = await DeployerUtilsLocal.deployContract(signer, "Radiant2SupplyStrategy"); + const stackerProxy = await DeployerUtilsLocal.deployContract(signer, "TetuProxyControlled", logic.address); + await RunHelper.runAndWait(() => Radiant2SupplyStrategy__factory.connect(stackerProxy.address, signer).initialize( + core.controller, + underlying, + splitterAddress, + 10_00 + )); +} + +main() + .then(() => process.exit(0)) + .catch(error => { + console.error(error); + process.exit(1); + }); diff --git a/test/strategies/DoHardWorkLoopBase.ts b/test/strategies/DoHardWorkLoopBase.ts index b9ab0b1..7c64acf 100644 --- a/test/strategies/DoHardWorkLoopBase.ts +++ b/test/strategies/DoHardWorkLoopBase.ts @@ -1,7 +1,6 @@ import {SignerWithAddress} from "@nomiclabs/hardhat-ethers/signers"; import {CoreContractsWrapper} from "../CoreContractsWrapper"; import { - IERC20__factory, ISmartVault, IStrategy, IStrategySplitter__factory @@ -16,7 +15,6 @@ import {expect} from "chai"; import {PriceCalculatorUtils} from "../PriceCalculatorUtils"; import {formatUnits} from "ethers/lib/utils"; import {BscAddresses} from "../../scripts/addresses/BscAddresses"; -import {string} from "hardhat/internal/core/params/argumentTypes"; export class DoHardWorkLoopBase { @@ -36,10 +34,8 @@ export class DoHardWorkLoopBase { userDeposited = BigNumber.from(0); signerDeposited = BigNumber.from(0); userWithdrew = BigNumber.from(0); - userRTBal = BigNumber.from(0); - vaultRTBal = BigNumber.from(0); - veDistBal = BigNumber.from(0); feeCollectorRewardTokensBalances: BigNumber[] = []; + strategyRewardTokens: string[] = []; loops = 0; loopStartTs = 0; startTs = 0; @@ -52,6 +48,8 @@ export class DoHardWorkLoopBase { totalToClaimInTetuN = 0; toClaimCheckTolerance = 0.3; allowLittleDustInStrategyAfterFullExit = BigNumber.from(0) + shouldEarnUnderlying = true; + shouldEarnRt = false; constructor( signer: SignerWithAddress, @@ -92,11 +90,13 @@ export class DoHardWorkLoopBase { protected async init() { this.undDec = await TokenUtils.decimals(this.underlying); - const strategyRewardTokens: string[] = []; - strategyRewardTokens.push(... await this.strategy.rewardTokens()); - strategyRewardTokens.push(this.underlying); - - for (const rt of strategyRewardTokens) { + if(this.shouldEarnRt) { + this.strategyRewardTokens.push(...await this.strategy.rewardTokens()); + } + if(this.shouldEarnUnderlying){ + this.strategyRewardTokens.push(this.underlying); + } + for (const rt of this.strategyRewardTokens) { const rtBal = await TokenUtils.balanceOf(rt, BscAddresses.DEFAULT_PERF_FEE_RECEIVER); this.feeCollectorRewardTokensBalances.push(rtBal); } @@ -290,16 +290,13 @@ export class DoHardWorkLoopBase { const roiThisCycle = ((earnedUsdcThisCycle / tvlUsdc) / loopTime) * 100 * Misc.SECONDS_OF_YEAR; const rtEarnedByFeeCollector: string[] = [] - - const strategyRewardTokens: string[] = []; - strategyRewardTokens.push(... await this.strategy.rewardTokens()); - strategyRewardTokens.push(this.underlying); - - for (let i = 0; i < strategyRewardTokens.length; i++) { - const rt = strategyRewardTokens[i]; + for (let ii = 0; ii < this.strategyRewardTokens.length; ii++) { + const rt = this.strategyRewardTokens[ii]; const rtBal = await TokenUtils.balanceOf(rt, BscAddresses.DEFAULT_PERF_FEE_RECEIVER); - const rtEarned = rtBal.sub(this.feeCollectorRewardTokensBalances[i]); - // expect(rtEarned).is.gt(0, 'Protocol should earn RTs'); + const rtEarned = rtBal.sub(this.feeCollectorRewardTokensBalances[ii]); + + expect(rtEarned).is.gt(0, 'Protocol should earn RTs'); + rtEarnedByFeeCollector.push(rt.toString()); rtEarnedByFeeCollector.push(rtEarned.toString()); } @@ -375,7 +372,6 @@ export class DoHardWorkLoopBase { // exit for signer // need to call hard work for sell a little excess rewards - // todo: clarity if it is ok to move in above strategy.withdrawAllToVault await this.strategy.doHardWork({gasLimit: 10_000_000}); await this.vault.connect(this.signer).exit({gasLimit: 10_000_000}); diff --git a/test/strategies/bsc/cone/ConeStackerTest.ts b/test/strategies/cone/ConeStackerTest.ts similarity index 64% rename from test/strategies/bsc/cone/ConeStackerTest.ts rename to test/strategies/cone/ConeStackerTest.ts index 4e0fb2d..2c95061 100644 --- a/test/strategies/bsc/cone/ConeStackerTest.ts +++ b/test/strategies/cone/ConeStackerTest.ts @@ -1,29 +1,15 @@ import chai from "chai"; import chaiAsPromised from "chai-as-promised"; -import {StrategyTestUtils} from "../../StrategyTestUtils"; -import {DeployInfo} from "../../DeployInfo"; -import {SpecificStrategyTest} from "../../SpecificStrategyTest"; + import {SignerWithAddress} from "@nomiclabs/hardhat-ethers/signers"; -import {CoreContractsWrapper} from "../../../CoreContractsWrapper"; -import {DeployerUtilsLocal} from "../../../../scripts/deploy/DeployerUtilsLocal"; +import {DeployerUtilsLocal} from "../../../scripts/deploy/DeployerUtilsLocal"; import { ConeStacker, - ConeStacker__factory, IERC721, IERC721__factory, IPriceCalculator, - ISmartVault, - ISmartVault__factory, - IStrategy, IVe, IVe__factory, - StrategyCone -} from "../../../../typechain"; -import {ToolsContractsWrapper} from "../../../ToolsContractsWrapper"; -import {universalStrategyTest} from "../../UniversalStrategyTest"; -import {DoHardWorkLoopBase} from "../../DoHardWorkLoopBase"; -import {BscAddresses} from "../../../../scripts/addresses/BscAddresses"; -import {TimeUtils} from "../../../TimeUtils"; -import {ethers} from "hardhat"; -import {VaultUtils} from "../../../VaultUtils"; -import {TokenUtils} from "../../../TokenUtils"; -import {UniswapUtils} from "../../../UniswapUtils"; -import {Misc} from "../../../../scripts/utils/tools/Misc"; + ConeStacker__factory, IERC721__factory, IVe, IVe__factory +} from "../../../typechain"; +import {BscAddresses} from "../../../scripts/addresses/BscAddresses"; +import {TimeUtils} from "../../TimeUtils"; +import {TokenUtils} from "../../TokenUtils"; import {parseUnits} from "ethers/lib/utils"; diff --git a/test/strategies/bsc/cone/ConeStrategyVConeWbnbTest.ts b/test/strategies/cone/ConeStrategyVConeWbnbTest.ts similarity index 83% rename from test/strategies/bsc/cone/ConeStrategyVConeWbnbTest.ts rename to test/strategies/cone/ConeStrategyVConeWbnbTest.ts index 6149fe6..43bda89 100644 --- a/test/strategies/bsc/cone/ConeStrategyVConeWbnbTest.ts +++ b/test/strategies/cone/ConeStrategyVConeWbnbTest.ts @@ -1,16 +1,16 @@ import chai from "chai"; import chaiAsPromised from "chai-as-promised"; -import {StrategyTestUtils} from "../../StrategyTestUtils"; -import {DeployInfo} from "../../DeployInfo"; -import {SpecificStrategyTest} from "../../SpecificStrategyTest"; +import {StrategyTestUtils} from "../StrategyTestUtils"; +import {DeployInfo} from "../DeployInfo"; +import {SpecificStrategyTest} from "../SpecificStrategyTest"; import {SignerWithAddress} from "@nomiclabs/hardhat-ethers/signers"; -import {CoreContractsWrapper} from "../../../CoreContractsWrapper"; -import {DeployerUtilsLocal} from "../../../../scripts/deploy/DeployerUtilsLocal"; -import {ConeStacker__factory, ISmartVault, IStrategy, StrategyCone} from "../../../../typechain"; -import {ToolsContractsWrapper} from "../../../ToolsContractsWrapper"; -import {universalStrategyTest} from "../../UniversalStrategyTest"; -import {DoHardWorkLoopBase} from "../../DoHardWorkLoopBase"; -import {BscAddresses} from "../../../../scripts/addresses/BscAddresses"; +import {CoreContractsWrapper} from "../../CoreContractsWrapper"; +import {DeployerUtilsLocal} from "../../../scripts/deploy/DeployerUtilsLocal"; +import {ConeStacker__factory, ISmartVault, IStrategy, StrategyCone} from "../../../typechain"; +import {ToolsContractsWrapper} from "../../ToolsContractsWrapper"; +import {universalStrategyTest} from "../UniversalStrategyTest"; +import {DoHardWorkLoopBase} from "../DoHardWorkLoopBase"; +import {BscAddresses} from "../../../scripts/addresses/BscAddresses"; const {expect} = chai; diff --git a/test/strategies/bsc/cone/ConeStrategyVTetuUsdPlusTest.ts b/test/strategies/cone/ConeStrategyVTetuUsdPlusTest.ts similarity index 81% rename from test/strategies/bsc/cone/ConeStrategyVTetuUsdPlusTest.ts rename to test/strategies/cone/ConeStrategyVTetuUsdPlusTest.ts index f85fde5..7caadd5 100644 --- a/test/strategies/bsc/cone/ConeStrategyVTetuUsdPlusTest.ts +++ b/test/strategies/cone/ConeStrategyVTetuUsdPlusTest.ts @@ -1,17 +1,16 @@ import chai from "chai"; import chaiAsPromised from "chai-as-promised"; -import {StrategyTestUtils} from "../../StrategyTestUtils"; -import {DeployInfo} from "../../DeployInfo"; -import {SpecificStrategyTest} from "../../SpecificStrategyTest"; +import {StrategyTestUtils} from "../StrategyTestUtils"; +import {DeployInfo} from "../DeployInfo"; +import {SpecificStrategyTest} from "../SpecificStrategyTest"; import {SignerWithAddress} from "@nomiclabs/hardhat-ethers/signers"; -import {CoreContractsWrapper} from "../../../CoreContractsWrapper"; -import {DeployerUtilsLocal} from "../../../../scripts/deploy/DeployerUtilsLocal"; -import {ConeStacker__factory, ISmartVault, IStrategy, StrategyCone} from "../../../../typechain"; -import {ToolsContractsWrapper} from "../../../ToolsContractsWrapper"; -import {universalStrategyTest} from "../../UniversalStrategyTest"; -import {DoHardWorkLoopBase} from "../../DoHardWorkLoopBase"; -import {BscAddresses} from "../../../../scripts/addresses/BscAddresses"; -import {ConeConstants} from "../../../../scripts/deploy/strategies/cone/ConeConstants"; +import {CoreContractsWrapper} from "../../CoreContractsWrapper"; +import {DeployerUtilsLocal} from "../../../scripts/deploy/DeployerUtilsLocal"; +import {ConeStacker__factory, ISmartVault, IStrategy, StrategyCone} from "../../../typechain"; +import {ToolsContractsWrapper} from "../../ToolsContractsWrapper"; +import {universalStrategyTest} from "../UniversalStrategyTest"; +import {DoHardWorkLoopBase} from "../DoHardWorkLoopBase"; +import {ConeConstants} from "../../../scripts/deploy/strategies/cone/ConeConstants"; const {expect} = chai; diff --git a/test/strategies/radiant/EmergencyWithdrawFromPoolTest.ts b/test/strategies/radiant/EmergencyWithdrawFromPoolTest.ts new file mode 100644 index 0000000..7256339 --- /dev/null +++ b/test/strategies/radiant/EmergencyWithdrawFromPoolTest.ts @@ -0,0 +1,40 @@ +import {SpecificStrategyTest} from "../SpecificStrategyTest"; +import {TokenUtils} from "../../TokenUtils"; +import {IStrategy, ISmartVault} from "../../../typechain"; +import {SignerWithAddress} from "@nomiclabs/hardhat-ethers/signers"; +import chai from "chai"; +import chaiAsPromised from "chai-as-promised"; +import {DeployInfo} from "../DeployInfo"; +import {VaultUtils} from "../../VaultUtils"; +import {utils} from "ethers"; + +const {expect} = chai; +chai.use(chaiAsPromised); + +export class EmergencyWithdrawFromPoolTest extends SpecificStrategyTest { + + public async do( + deployInfo: DeployInfo + ): Promise { + it("Emergency withdraw from Pool", async () => { + const underlying = deployInfo?.underlying as string; + const signer = deployInfo?.signer as SignerWithAddress; + const user = deployInfo?.user as SignerWithAddress; + const vault = deployInfo?.vault as ISmartVault; + const strategy = deployInfo.strategy as IStrategy; + + console.log('>>>emergencyWithdrawFromPool test'); + const userAddress = user.address + const depositAmount = await TokenUtils.balanceOf(underlying, userAddress); + + await VaultUtils.deposit(user, vault, depositAmount); + + const strategyGov = strategy.connect(signer); + await strategyGov.emergencyExit({gasLimit: 19_000_000}); + const withdrawnAmount = await TokenUtils.balanceOf(underlying, strategy.address); + console.log('>>>withdrawnAmount ', withdrawnAmount.toString()); + const undDec = await TokenUtils.decimals(underlying); + expect(+utils.formatUnits(depositAmount, undDec)).is.approximately(+utils.formatUnits(withdrawnAmount, undDec), 0.0001, 'withdrawn less than deposited'); + }); + } +} diff --git a/test/strategies/radiant/RadiantSupplyStrategyTest.ts b/test/strategies/radiant/RadiantSupplyStrategyTest.ts new file mode 100644 index 0000000..abdf09f --- /dev/null +++ b/test/strategies/radiant/RadiantSupplyStrategyTest.ts @@ -0,0 +1,159 @@ +import chai from "chai"; +import chaiAsPromised from "chai-as-promised"; +import {config as dotEnvConfig} from "dotenv"; +import {StrategyTestUtils} from "../StrategyTestUtils"; +import {DeployInfo} from "../DeployInfo"; +import {SpecificStrategyTest} from "../SpecificStrategyTest"; +import {SignerWithAddress} from "@nomiclabs/hardhat-ethers/signers"; +import {CoreContractsWrapper} from "../../CoreContractsWrapper"; +import {DeployerUtilsLocal} from "../../../scripts/deploy/DeployerUtilsLocal"; +import { + IStrategy, + ISmartVault, Radiant2SupplyStrategy__factory, +} from "../../../typechain"; +import {ToolsContractsWrapper} from "../../ToolsContractsWrapper"; +import {universalStrategyTest} from "../UniversalStrategyTest"; +import {DoHardWorkLoopBase} from "../DoHardWorkLoopBase"; +import {BscAddresses} from "../../../scripts/addresses/BscAddresses"; +import {BigNumber} from "ethers"; +import {EmergencyWithdrawFromPoolTest} from "./EmergencyWithdrawFromPoolTest"; + +dotEnvConfig(); +// tslint:disable-next-line:no-var-requires +const argv = require('yargs/yargs')() + .env('TETU') + .options({ + disableStrategyTests: { + type: "boolean", + default: false, + }, + deployCoreContracts: { + type: "boolean", + default: false, + }, + hardhatChainId: { + type: "number", + default: 56 + }, + }).argv; + +const {expect} = chai; +chai.use(chaiAsPromised); + +describe('RadiantV2 supply tests', async () => { + const underlyings = [ + BscAddresses.USDT_TOKEN, + BscAddresses.USDC_TOKEN, + // BscAddresses.DAI_TOKEN, + // BscAddresses.WETH_TOKEN, + // BscAddresses.BTCB, + ] + + if (argv.disableStrategyTests || argv.hardhatChainId !== 56) { + return; + } + + const strategyContractName = 'Radiant2SupplyStrategy'; + + const deployInfo: DeployInfo = new DeployInfo(); + before(async function () { + await StrategyTestUtils.deployCoreAndInit(deployInfo, argv.deployCoreContracts); + const signer = await DeployerUtilsLocal.impersonate(); + // await configureLiquidator(signer, deployInfo); + }); + underlyings.forEach(underlying => { + // ********************************************** + // ************** CONFIG************************* + // ********************************************** + const vaultName = 'Radiant2SupplyStrategyTest_vault'; + + // add custom liquidation path if necessary + const forwarderConfigurator = null; + + // only for strategies where we expect PPFS fluctuations + const ppfsDecreaseAllowed = false; + // only for strategies where we expect PPFS fluctuations + const balanceTolerance = 0; + const finalBalanceTolerance = 0; + const deposit = 100_000; + // at least 3 + const loops = 3; + const buyBackRatio = 500; + // number of blocks or timestamp value + const loopValue = 86400; + // use 'true' if farmable platform values depends on blocks, instead you can use timestamp + const advanceBlocks = true; + const specificTests: SpecificStrategyTest[] = [ + new EmergencyWithdrawFromPoolTest(), + ]; + // ********************************************** + + const deployer = (signer: SignerWithAddress) => { + const core = deployInfo.core as CoreContractsWrapper; + return StrategyTestUtils.deploy( + signer, + core, + vaultName, + async vaultAddress => { + const strategy = await DeployerUtilsLocal.deployStrategyProxy( + signer, + strategyContractName, + ); + const strat = Radiant2SupplyStrategy__factory.connect(strategy.address, signer); + await strat.initialize( + core.controller.address, + underlying, + vaultAddress, + buyBackRatio + ); + await core.controller.setRewardDistribution([strategy.address], true); + return strategy; + }, + underlying, + 0, + false + ); + }; + const hwInitiator = ( + _signer: SignerWithAddress, + _user: SignerWithAddress, + _core: CoreContractsWrapper, + _tools: ToolsContractsWrapper, + _underlying: string, + _vault: ISmartVault, + _strategy: IStrategy, + _balanceTolerance: number + ) => { + const hw = new DoHardWorkLoopBase( + _signer, + _user, + _core, + _tools, + _underlying, + _vault, + _strategy, + _balanceTolerance, + finalBalanceTolerance, + ); + hw.vaultRt = BscAddresses.ZERO_ADDRESS + // we may have some rewards in a form of XVS + hw.allowLittleDustInStrategyAfterFullExit = BigNumber.from(230000000) + return hw; + }; + + universalStrategyTest( + strategyContractName + vaultName, + deployInfo, + deployer, + hwInitiator, + forwarderConfigurator, + ppfsDecreaseAllowed, + balanceTolerance, + deposit, + loops, + loopValue, + advanceBlocks, + specificTests, + ); + }); +}); diff --git a/test/strategies/bsc/venus/EmergencyWithdrawFromPoolTest.ts b/test/strategies/venus/EmergencyWithdrawFromPoolTest.ts similarity index 84% rename from test/strategies/bsc/venus/EmergencyWithdrawFromPoolTest.ts rename to test/strategies/venus/EmergencyWithdrawFromPoolTest.ts index 662114d..5f7c2ef 100644 --- a/test/strategies/bsc/venus/EmergencyWithdrawFromPoolTest.ts +++ b/test/strategies/venus/EmergencyWithdrawFromPoolTest.ts @@ -1,11 +1,11 @@ -import {SpecificStrategyTest} from "../../SpecificStrategyTest"; -import {TokenUtils} from "../../../TokenUtils"; -import {IStrategy, ISmartVault} from "../../../../typechain"; +import {SpecificStrategyTest} from "../SpecificStrategyTest"; +import {TokenUtils} from "../../TokenUtils"; +import {IStrategy, ISmartVault} from "../../../typechain"; import {SignerWithAddress} from "@nomiclabs/hardhat-ethers/signers"; import chai from "chai"; import chaiAsPromised from "chai-as-promised"; -import {DeployInfo} from "../../DeployInfo"; -import {VaultUtils} from "../../../VaultUtils"; +import {DeployInfo} from "../DeployInfo"; +import {VaultUtils} from "../../VaultUtils"; import {utils} from "ethers"; const {expect} = chai; diff --git a/test/strategies/bsc/venus/VenusSupplyStrategyTest.ts b/test/strategies/venus/VenusSupplyStrategyTest.ts similarity index 87% rename from test/strategies/bsc/venus/VenusSupplyStrategyTest.ts rename to test/strategies/venus/VenusSupplyStrategyTest.ts index c45be31..d653ea0 100644 --- a/test/strategies/bsc/venus/VenusSupplyStrategyTest.ts +++ b/test/strategies/venus/VenusSupplyStrategyTest.ts @@ -1,12 +1,12 @@ import chai from "chai"; import chaiAsPromised from "chai-as-promised"; import {config as dotEnvConfig} from "dotenv"; -import {StrategyTestUtils} from "../../StrategyTestUtils"; -import {DeployInfo} from "../../DeployInfo"; -import {SpecificStrategyTest} from "../../SpecificStrategyTest"; +import {StrategyTestUtils} from "../StrategyTestUtils"; +import {DeployInfo} from "../DeployInfo"; +import {SpecificStrategyTest} from "../SpecificStrategyTest"; import {SignerWithAddress} from "@nomiclabs/hardhat-ethers/signers"; -import {CoreContractsWrapper} from "../../../CoreContractsWrapper"; -import {DeployerUtilsLocal} from "../../../../scripts/deploy/DeployerUtilsLocal"; +import {CoreContractsWrapper} from "../../CoreContractsWrapper"; +import {DeployerUtilsLocal} from "../../../scripts/deploy/DeployerUtilsLocal"; import { IStrategy, ISmartVault, @@ -14,11 +14,11 @@ import { ITetuLiquidator__factory, ITetuLiquidatorController__factory, ISwapper__factory, IUniswapV2Pair__factory, -} from "../../../../typechain"; -import {ToolsContractsWrapper} from "../../../ToolsContractsWrapper"; -import {universalStrategyTest} from "../../UniversalStrategyTest"; -import {DoHardWorkLoopBase} from "../../DoHardWorkLoopBase"; -import {BscAddresses} from "../../../../scripts/addresses/BscAddresses"; +} from "../../../typechain"; +import {ToolsContractsWrapper} from "../../ToolsContractsWrapper"; +import {universalStrategyTest} from "../UniversalStrategyTest"; +import {DoHardWorkLoopBase} from "../DoHardWorkLoopBase"; +import {BscAddresses} from "../../../scripts/addresses/BscAddresses"; import {BigNumber} from "ethers"; import {EmergencyWithdrawFromPoolTest} from "./EmergencyWithdrawFromPoolTest"; @@ -84,10 +84,10 @@ const configureLiquidator = async (signer: SignerWithAddress, deployInfo: Deploy describe('Venus supply tests', async () => { const infos = [ [BscAddresses.vUSDT_TOKEN, BscAddresses.USDT_TOKEN], - [BscAddresses.vUSDC_TOKEN, BscAddresses.USDC_TOKEN], - [BscAddresses.vETH_TOKEN, BscAddresses.WETH_TOKEN], - [BscAddresses.vDAI_TOKEN, BscAddresses.DAI_TOKEN], - [BscAddresses.vBTC_TOKEN, BscAddresses.BTCB], + // [BscAddresses.vUSDC_TOKEN, BscAddresses.USDC_TOKEN], + // [BscAddresses.vETH_TOKEN, BscAddresses.WETH_TOKEN], + // [BscAddresses.vDAI_TOKEN, BscAddresses.DAI_TOKEN], + // [BscAddresses.vBTC_TOKEN, BscAddresses.BTCB], ] if (argv.disableStrategyTests || argv.hardhatChainId !== 56) { From 971464988ce0057f1f069aa717d971c23c343ef6 Mon Sep 17 00:00:00 2001 From: AlehNat Date: Mon, 25 Sep 2023 01:54:26 +0200 Subject: [PATCH 2/8] add wombex simple supply strategy --- .../impl/wombex/WombexSupplyStrategy.sol | 37 ++++ .../strategies/UniversalLendStrategy.sol | 22 +- .../radiant/Radiant2StrategyBase.sol | 9 +- .../venus/VenusSupplyStrategyBase.sol | 9 +- .../strategies/wombex/WombexStrategyBase.sol | 153 +++++++++++++ contracts/third_party/wombex/IAsset.sol | 36 +++ .../wombex/IBaseRewardPool4626.sol | 208 ++++++++++++++++++ .../third_party/wombex/IPoolDepositor.sol | 101 +++++++++ contracts/third_party/wombex/IWmxClaimZap.sol | 38 ++++ scripts/addresses/BscAddresses.ts | 14 +- test/VaultUtils.ts | 4 +- test/strategies/DoHardWorkLoopBase.ts | 14 +- .../radiant/RadiantSupplyStrategyTest.ts | 3 - .../venus/VenusSupplyStrategyTest.ts | 1 - .../wombex/EmergencyWithdrawFromPoolTest.ts | 40 ++++ .../wombex/WombexSupplyStrategyTest.ts | 188 ++++++++++++++++ 16 files changed, 850 insertions(+), 27 deletions(-) create mode 100644 contracts/impl/wombex/WombexSupplyStrategy.sol create mode 100644 contracts/strategies/wombex/WombexStrategyBase.sol create mode 100644 contracts/third_party/wombex/IAsset.sol create mode 100644 contracts/third_party/wombex/IBaseRewardPool4626.sol create mode 100644 contracts/third_party/wombex/IPoolDepositor.sol create mode 100644 contracts/third_party/wombex/IWmxClaimZap.sol create mode 100644 test/strategies/wombex/EmergencyWithdrawFromPoolTest.ts create mode 100644 test/strategies/wombex/WombexSupplyStrategyTest.ts diff --git a/contracts/impl/wombex/WombexSupplyStrategy.sol b/contracts/impl/wombex/WombexSupplyStrategy.sol new file mode 100644 index 0000000..b5e5846 --- /dev/null +++ b/contracts/impl/wombex/WombexSupplyStrategy.sol @@ -0,0 +1,37 @@ +// SPDX-License-Identifier: ISC +/** +* By using this software, you understand, acknowledge and accept that Tetu +* and/or the underlying software are provided “as is” and “as available” +* basis and without warranties or representations of any kind either expressed +* or implied. Any use of this open source software released under the ISC +* Internet Systems Consortium license is done at your own risk to the fullest +* extent permissible pursuant to applicable law any and all liability as well +* as all warranties, including any fitness for a particular purpose with respect +* to Tetu and/or the underlying software and the use thereof are disclaimed. +*/ +pragma solidity 0.8.4; + +import "../../strategies/wombex/WombexStrategyBase.sol"; + +contract WombexSupplyStrategy is WombexStrategyBase { + + function initialize( + address controller_, + address underlying_, + address lpToken_, + address wmxLP_, + address vault_, + uint buybackRatio_ + ) external initializer { + require(ISmartVault(vault_).underlying() == underlying_, "!underlying"); + + WombexStrategyBase.initializeStrategy( + controller_, + underlying_, + lpToken_, + wmxLP_, + vault_, + buybackRatio_ + ); + } +} diff --git a/contracts/strategies/UniversalLendStrategy.sol b/contracts/strategies/UniversalLendStrategy.sol index e503edd..c3769a1 100644 --- a/contracts/strategies/UniversalLendStrategy.sol +++ b/contracts/strategies/UniversalLendStrategy.sol @@ -89,7 +89,7 @@ abstract contract UniversalLendStrategy is ProxyStrategyBase { function _getActualPoolBalance() internal virtual returns (uint); /// @dev Perform only withdraw action, without changing local balance - function _withdrawFromPoolWithoutChangeLocalBalance(uint amount, uint poolBalance) internal virtual returns (bool withdrewAll); + function _withdrawFromPoolWithoutChangeLocalBalance(uint amount, uint poolBalance) internal virtual returns (bool withdrewAll, uint withdrawnAmount); /// @dev Withdraw all and set localBalance to zero function _withdrawAllFromPool() internal virtual; @@ -118,11 +118,11 @@ abstract contract UniversalLendStrategy is ProxyStrategyBase { /// @dev Withdraw underlying from the pool function withdrawAndClaimFromPool(uint256 amount_) internal override { uint poolBalance = _doHardWork(true, false); - bool withdrewAll = _withdrawFromPoolWithoutChangeLocalBalance(amount_, poolBalance); + (bool withdrewAll, uint withdrawn) = _withdrawFromPoolWithoutChangeLocalBalance(amount_, poolBalance); if (withdrewAll) { localBalance = 0; } else { - localBalance > amount_ ? localBalance -= amount_ : localBalance = 0; + localBalance > amount_ ? localBalance -= withdrawn : localBalance = 0; } } @@ -198,10 +198,7 @@ abstract contract UniversalLendStrategy is ProxyStrategyBase { require(_localBalance < _DUST || profit < poolBalance / 20, 'Too huge profit'); uint toBuybacks = _calcToBuyback(profit, _localBalance); - uint remaining = profit - toBuybacks; - if (remaining != 0) { - localBalance += remaining; - } + if (toBuybacks > _DUST) { // if no users, withdraw all and send to controller for remove dust from this contract if (toBuybacks == poolBalance) { @@ -209,16 +206,21 @@ abstract contract UniversalLendStrategy is ProxyStrategyBase { localBalance = 0; IERC20(u).safeTransfer(address(c), IERC20(u).balanceOf(address(this))); } else { - bool withdrewAll = _withdrawFromPoolWithoutChangeLocalBalance(toBuybacks, poolBalance); + (bool withdrewAll, uint withdrawnAmount) = _withdrawFromPoolWithoutChangeLocalBalance(toBuybacks, poolBalance); if (withdrewAll) { localBalance = 0; } - IERC20(u).safeTransfer(_PERF_FEE_TREASURY, toBuybacks); + IERC20(u).safeTransfer(_PERF_FEE_TREASURY, withdrawnAmount); + uint remaining = profit - withdrawnAmount; // need to use real withdrawn amount instead of toBuybacks + if (remaining != 0) { + localBalance += remaining; + } } } + } IBookkeeper(c.bookkeeper()).registerStrategyEarned(0); - return _getActualPoolBalance(); + return poolBalance; } /// ****************************************************** diff --git a/contracts/strategies/radiant/Radiant2StrategyBase.sol b/contracts/strategies/radiant/Radiant2StrategyBase.sol index c158643..d20559b 100644 --- a/contracts/strategies/radiant/Radiant2StrategyBase.sol +++ b/contracts/strategies/radiant/Radiant2StrategyBase.sol @@ -103,14 +103,17 @@ abstract contract Radiant2StrategyBase is UniversalLendStrategy { } /// @dev Perform only withdraw action, without changing local balance - function _withdrawFromPoolWithoutChangeLocalBalance(uint amount, uint poolBalance) internal override returns (bool withdrewAll) { + function _withdrawFromPoolWithoutChangeLocalBalance(uint amount, uint poolBalance) internal override returns (bool withdrewAll, uint withdrawnAmount) { + uint underlyingBalanceBefore = IERC20(_underlying()).balanceOf(address(this)); if (amount < poolBalance) { + withdrewAll = false; AAVE_LENDING_POOL.withdraw(_underlying(), amount, address(this)); - return false; } else { + withdrewAll = true; AAVE_LENDING_POOL.withdraw(_underlying(), type(uint).max, address(this)); - return true; } + uint underlyingBalanceAfter = IERC20(_underlying()).balanceOf(address(this)); + withdrawnAmount = underlyingBalanceAfter - underlyingBalanceBefore; } /// @dev Withdraw all and set localBalance to zero diff --git a/contracts/strategies/venus/VenusSupplyStrategyBase.sol b/contracts/strategies/venus/VenusSupplyStrategyBase.sol index fee4bfe..6a6f17a 100644 --- a/contracts/strategies/venus/VenusSupplyStrategyBase.sol +++ b/contracts/strategies/venus/VenusSupplyStrategyBase.sol @@ -109,14 +109,17 @@ abstract contract VenusSupplyStrategyBase is UniversalLendStrategy { } /// @dev Perform only withdraw action, without changing local balance - function _withdrawFromPoolWithoutChangeLocalBalance(uint amount, uint poolBalance) internal override returns (bool withdrewAll) { + function _withdrawFromPoolWithoutChangeLocalBalance(uint amount, uint poolBalance) internal override returns (bool withdrewAll, uint withdrawnAmount) { + uint underlyingBalanceBefore = IERC20(_underlying()).balanceOf(address(this)); if (amount < poolBalance) { vToken.redeemUnderlying(amount); - return false; + withdrewAll = false; } else { vToken.redeemUnderlying(amount); - return true; + withdrewAll = true; } + uint underlyingBalanceAfter = IERC20(_underlying()).balanceOf(address(this)); + withdrawnAmount = underlyingBalanceAfter - underlyingBalanceBefore; } /// @dev Withdraw all and set localBalance to zero diff --git a/contracts/strategies/wombex/WombexStrategyBase.sol b/contracts/strategies/wombex/WombexStrategyBase.sol new file mode 100644 index 0000000..ce61512 --- /dev/null +++ b/contracts/strategies/wombex/WombexStrategyBase.sol @@ -0,0 +1,153 @@ +// SPDX-License-Identifier: ISC +/** +* By using this software, you understand, acknowledge and accept that Tetu +* and/or the underlying software are provided “as is” and “as available” +* basis and without warranties or representations of any kind either expressed +* or implied. Any use of this open source software released under the ISC +* Internet Systems Consortium license is done at your own risk to the fullest +* extent permissible pursuant to applicable law any and all liability as well +* as all warranties, including any fitness for a particular purpose with respect +* to Tetu and/or the underlying software and the use thereof are disclaimed. +*/ +pragma solidity 0.8.4; + +import "../UniversalLendStrategy.sol"; + +import "../../third_party/wombex/IPoolDepositor.sol"; +import "../../third_party/wombex/IAsset.sol"; +import "../../third_party/wombex/IWmxClaimZap.sol"; +import "../../third_party/wombex/IBaseRewardPool4626.sol"; + +/// @title Contract for Wombex simple supply strategy simplified +/// @author Aleh +abstract contract WombexStrategyBase is UniversalLendStrategy { + using SafeERC20 for IERC20; + + /// ****************************************************** + /// Constants and variables + /// ****************************************************** + + /// @notice Version of the contract + /// @dev Should be incremented when contract changed + string public constant VERSION = "1.0.0"; + + IStrategy.Platform public constant override platform = IStrategy.Platform.SLOT_49; //todo change + /// @notice Strategy type for statistical purposes + string public constant override STRATEGY_NAME = "WombexStrategyBase"; + + IPoolDepositor public constant POOL_DEPOSITOR = IPoolDepositor(0xc2Ee2ab275BC3F38cA30E902211640D8bB58C4d1); + WmxClaimZap public constant WMX_CLAIM_ZAP = WmxClaimZap(0x9Cb2A01a7E64992dcfd5aC6b0fcffb8eEdF9f5b1); + address public constant WOM_TOKEN = 0xAD6742A35fB341A9Cc6ad674738Dd8da98b94Fb1; + address public constant WMX_TOKEN = 0xa75d9ca2a0a1D547409D82e1B06618EC284A2CeD; + + uint public constant PRICE_IMPACT = 50; // 0.5% + uint public constant PRICE_IMPACT_PRECISION = 1000; + + IAsset public lpToken; + address public wmxLP; + + /// ****************************************************** + /// Initialization + /// ****************************************************** + + /// @notice Initialize contract after setup it as proxy implementation + function initializeStrategy( + address controller_, + address underlying_, + address lpToken_, + address wmxLP_, + address vault_, + uint buybackRatio_ + ) public initializer { + + address [] memory rewardTokens = new address[](2); + rewardTokens[0] = WOM_TOKEN; + rewardTokens[1] = WMX_TOKEN; + + UniversalLendStrategy.initializeLendStrategy( + controller_, + underlying_, + vault_, + buybackRatio_, + rewardTokens + ); + + lpToken = IAsset(lpToken_); + wmxLP = wmxLP_; + require(lpToken.underlyingToken() == _underlying(), "Wrong underlying"); + } + + /// ****************************************************** + /// Views + /// ****************************************************** + + /// @notice Invested assets in the pool + function _rewardPoolBalance() internal override view returns (uint) { + return localBalance; + } + + /// @notice Return approximately amount of reward tokens ready to claim + function readyToClaim() external pure override returns (uint[] memory) { + uint[] memory rewards = new uint256[](2); + return rewards; + } + + /// @notice TVL of the underlying in the pool + function poolTotalAmount() external view override returns (uint256) { + return lpToken.underlyingTokenBalance(); + } + + /// ****************************************************** + /// Internal logic implementation + /// ****************************************************** + + /// @dev Refresh rates and return actual deposited balance in underlying tokens + function _getActualPoolBalance() internal view override returns (uint) { + uint lpBalance = IBaseRewardPool4626(wmxLP).balanceOf(address(this)); + (uint res,) = POOL_DEPOSITOR.getWithdrawAmountOut(address(lpToken), _underlying(), lpBalance); + return res; + } + + /// @dev Deposit to pool and increase local balance + function _simpleDepositToPool(uint amount) internal override { + address u = _underlying(); + _approveIfNeeds(u, amount, address(POOL_DEPOSITOR)); + uint minLiquidity = amount * (PRICE_IMPACT_PRECISION - PRICE_IMPACT) / PRICE_IMPACT_PRECISION; + POOL_DEPOSITOR.deposit(address(lpToken), amount, minLiquidity, block.timestamp + 1, true); + } + + /// @dev Perform only withdraw action, without changing local balance + function _withdrawFromPoolWithoutChangeLocalBalance(uint amount, uint poolBalance) internal override returns (bool withdrewAll, uint withdrawnAmount) { + uint minAmountOut = amount * (PRICE_IMPACT_PRECISION - PRICE_IMPACT) / PRICE_IMPACT_PRECISION; + (uint lpAmount,) = POOL_DEPOSITOR.getDepositAmountOut(address(lpToken), amount); + uint underlyingBalanceBefore = IERC20(_underlying()).balanceOf(address(this)); + _approveIfNeeds(wmxLP, lpAmount, address(POOL_DEPOSITOR)); + if (amount < poolBalance) { + POOL_DEPOSITOR.withdrawFromOtherAsset(address(lpToken), _underlying(), lpAmount, minAmountOut, block.timestamp + 1, address(this)); + withdrewAll = false; + } else { + POOL_DEPOSITOR.withdrawFromOtherAsset(address(lpToken), _underlying(), lpAmount, minAmountOut, block.timestamp + 1, address(this)); + withdrewAll = true; + } + uint underlyingBalanceAfter = IERC20(_underlying()).balanceOf(address(this)); + withdrawnAmount = underlyingBalanceAfter - underlyingBalanceBefore; + } + + /// @dev Withdraw all and set localBalance to zero + function _withdrawAllFromPool() internal override { + uint lpAmount = IBaseRewardPool4626(wmxLP).balanceOf(address(this)); + _approveIfNeeds(wmxLP, lpAmount, address(POOL_DEPOSITOR)); + (uint underlyingAmount, ) = POOL_DEPOSITOR.getWithdrawAmountOut(address(lpToken), _underlying(), lpAmount); + uint minAmountOut = underlyingAmount * (PRICE_IMPACT_PRECISION - PRICE_IMPACT) / PRICE_IMPACT_PRECISION; + POOL_DEPOSITOR.withdrawFromOtherAsset(address(lpToken), _underlying(), lpAmount, minAmountOut, block.timestamp + 1, address(this)); + + } + + /// @dev Claim distribution rewards + function _claimReward() internal override { + IBaseRewardPool4626(wmxLP).getReward(); + } + + //slither-disable-next-line unused-state + uint256[49] private ______gap; +} diff --git a/contracts/third_party/wombex/IAsset.sol b/contracts/third_party/wombex/IAsset.sol new file mode 100644 index 0000000..b8d6fa1 --- /dev/null +++ b/contracts/third_party/wombex/IAsset.sol @@ -0,0 +1,36 @@ +import "@tetu_io/tetu-contracts/contracts/openzeppelin/IERC20.sol"; + +// SPDX-License-Identifier: MIT +pragma solidity 0.8.4; + +interface IAsset is IERC20 { + function underlyingToken() external view returns (address); + + function pool() external view returns (address); + + function cash() external view returns (uint120); + + function liability() external view returns (uint120); + + function decimals() external view returns (uint8); + + function underlyingTokenDecimals() external view returns (uint8); + + function setPool(address pool_) external; + + function underlyingTokenBalance() external view returns (uint256); + + function transferUnderlyingToken(address to, uint256 amount) external; + + function mint(address to, uint256 amount) external; + + function burn(address to, uint256 amount) external; + + function addCash(uint256 amount) external; + + function removeCash(uint256 amount) external; + + function addLiability(uint256 amount) external; + + function removeLiability(uint256 amount) external; +} \ No newline at end of file diff --git a/contracts/third_party/wombex/IBaseRewardPool4626.sol b/contracts/third_party/wombex/IBaseRewardPool4626.sol new file mode 100644 index 0000000..2e65f38 --- /dev/null +++ b/contracts/third_party/wombex/IBaseRewardPool4626.sol @@ -0,0 +1,208 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.4; + +interface IBaseRewardPool4626 { + event Approval( + address indexed owner, + address indexed spender, + uint256 value + ); + event Deposit( + address indexed caller, + address indexed owner, + uint256 assets, + uint256 shares + ); + event Donate(address indexed token, uint256 amount); + event RewardAdded( + address indexed token, + uint256 currentRewards, + uint256 newRewards + ); + event RewardPaid( + address indexed token, + address indexed user, + uint256 reward + ); + event SetRewardTokenPaused( + address indexed sender, + address indexed token, + bool indexed paused + ); + event Staked(address indexed user, uint256 amount); + event Transfer(address indexed from, address indexed to, uint256 value); + event UpdateOperatorData( + address indexed sender, + address indexed operator, + uint256 indexed pid + ); + event Withdraw( + address indexed caller, + address indexed receiver, + address indexed owner, + uint256 assets, + uint256 shares + ); + event Withdrawn(address indexed user, uint256 amount); + + function DURATION() external view returns (uint256); + + function MAX_TOKENS() external view returns (uint256); + + function NEW_REWARD_RATIO() external view returns (uint256); + + function allRewardTokens(uint256) external view returns (address); + + function allowance(address owner, address spender) + external + view + returns (uint256); + + function approve(address spender, uint256 amount) external returns (bool); + + function asset() external view returns (address); + + function balanceOf(address account) external view returns (uint256); + + function boosterRewardToken() external view returns (address); + + function claimableRewards(address _account) + external + view + returns (address[] memory tokens, uint256[] memory amounts); + + function convertToAssets(uint256 shares) external view returns (uint256); + + function convertToShares(uint256 assets) external view returns (uint256); + + function decimals() external view returns (uint8); + + function deposit(uint256 assets, address receiver) + external + returns (uint256); + + function donate(address _token, uint256 _amount) external returns (bool); + + function earned(address _token, address _account) + external + view + returns (uint256); + + function getReward() external returns (bool); + + function getReward(address _account, bool _lockCvx) external returns (bool); + + function lastTimeRewardApplicable(address _token) + external + view + returns (uint256); + + function maxDeposit(address) external view returns (uint256); + + function maxMint(address owner) external view returns (uint256); + + function maxRedeem(address owner) external view returns (uint256); + + function maxWithdraw(address owner) external view returns (uint256); + + function mint(uint256 shares, address receiver) external returns (uint256); + + function name() external view returns (string memory); + + function operator() external view returns (address); + + function pid() external view returns (uint256); + + function previewDeposit(uint256 assets) external view returns (uint256); + + function previewMint(uint256 shares) external view returns (uint256); + + function previewRedeem(uint256 shares) external view returns (uint256); + + function previewWithdraw(uint256 assets) + external + view + returns (uint256 shares); + + function processIdleRewards() external; + + function queueNewRewards(address _token, uint256 _rewards) + external + returns (bool); + + function redeem( + uint256 shares, + address receiver, + address owner + ) external returns (uint256); + + function rewardPerToken(address _token) external view returns (uint256); + + function rewardTokensLen() external view returns (uint256); + + function rewardTokensList() external view returns (address[] memory); + + function rewards(address, address) external view returns (uint256); + + function setRewardTokenPaused(address token_, bool paused_) external; + + function stake(uint256 _amount) external returns (bool); + + function stakeAll() external returns (bool); + + function stakeFor(address _for, uint256 _amount) external returns (bool); + + function stakingToken() external view returns (address); + + function symbol() external view returns (string memory); + + function tokenRewards(address) + external + view + returns ( + address token, + uint256 periodFinish, + uint256 rewardRate, + uint256 lastUpdateTime, + uint256 rewardPerTokenStored, + uint256 queuedRewards, + uint256 currentRewards, + uint256 historicalRewards, + bool paused + ); + + function totalAssets() external view returns (uint256); + + function totalSupply() external view returns (uint256); + + function transfer(address, uint256) external returns (bool); + + function transferFrom( + address, + address, + uint256 + ) external returns (bool); + + function updateOperatorData(address operator_, uint256 pid_) external; + + function userRewardPerTokenPaid(address, address) + external + view + returns (uint256); + + function withdraw(uint256 amount, bool claim) external returns (bool); + + function withdraw( + uint256 assets, + address receiver, + address owner + ) external returns (uint256); + + function withdrawAll(bool claim) external; + + function withdrawAllAndUnwrap(bool claim) external; + + function withdrawAndUnwrap(uint256 amount, bool claim) + external + returns (bool); +} \ No newline at end of file diff --git a/contracts/third_party/wombex/IPoolDepositor.sol b/contracts/third_party/wombex/IPoolDepositor.sol new file mode 100644 index 0000000..87bed82 --- /dev/null +++ b/contracts/third_party/wombex/IPoolDepositor.sol @@ -0,0 +1,101 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.4; + +interface IPoolDepositor { + event OwnershipTransferred( + address indexed previousOwner, + address indexed newOwner + ); + + function approveSpendingByPool(address[] memory tokens, address pool) + external; + + function approveSpendingByPoolAndBooster( + address[] memory tokens, + address pool + ) external; + + function approveSpendingMultiplePools(uint256[] memory pids) external; + + function booster() external view returns (address); + + function deposit( + address _lptoken, + uint256 _amount, + uint256 _minLiquidity, + uint256 _deadline, + bool _stake + ) external; + + function depositNative( + address _lptoken, + uint256 _minLiquidity, + uint256 _deadline, + bool _stake + ) external payable; + + function getDepositAmountOut(address _lptoken, uint256 _amount) + external + view + returns (uint256 liquidity, uint256 reward); + + function getTokenDecimals(address _token) + external + view + returns (uint8 decimals); + + function getWithdrawAmountOut( + address _lptoken, + address _tokenOut, + uint256 _amount + ) external view returns (uint256 amount, uint256 fee); + + function lpTokenToPid(address) external view returns (uint256); + + function masterWombat() external view returns (address); + + function owner() external view returns (address); + + function renounceOwnership() external; + + function resqueNative(address _recipient) external; + + function resqueTokens(address[] memory _tokens, address _recipient) + external; + + function setBoosterLpTokensPid() external; + + function transferOwnership(address newOwner) external; + + function updateBooster() external; + + function voterProxy() external view returns (address); + + function weth() external view returns (address); + + function withdraw( + address _lptoken, + uint256 _amount, + uint256 _minOut, + uint256 _deadline, + address _recipient + ) external; + + function withdrawFromOtherAsset( + address _lptoken, + address _underlying, + uint256 _amount, + uint256 _minOut, + uint256 _deadline, + address _recipient + ) external; + + function withdrawNative( + address _lptoken, + address _underlying, + uint256 _amount, + uint256 _minOut, + uint256 _deadline, + address _recipient + ) external; +} \ No newline at end of file diff --git a/contracts/third_party/wombex/IWmxClaimZap.sol b/contracts/third_party/wombex/IWmxClaimZap.sol new file mode 100644 index 0000000..e1a2616 --- /dev/null +++ b/contracts/third_party/wombex/IWmxClaimZap.sol @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.4; + +interface WmxClaimZap { + function claimRewards( + address[] memory rewardContracts, + address[] memory extraRewardTokens, + address[] memory tokenRewardContracts, + uint256[] memory tokenRewardPids, + uint256 depositWomMaxAmount, + uint256 wmxWomMinOutAmount, + uint256 depositWmxMaxAmount, + uint256 options + ) external; + + function extraRewardsDistributor() external view returns (address); + + function getName() external pure returns (string memory); + + function locker() external view returns (address); + + function owner() external view returns (address); + + function setApprovals() external; + + function wmx() external view returns (address); + + function wmxWomRewards() external view returns (address); + + function wom() external view returns (address); + + function womDepositor() external view returns (address); + + function womSwapDepositor() external view returns (address); + + function womWmx() external view returns (address); +} + diff --git a/scripts/addresses/BscAddresses.ts b/scripts/addresses/BscAddresses.ts index 59fb5cd..47f6a6c 100644 --- a/scripts/addresses/BscAddresses.ts +++ b/scripts/addresses/BscAddresses.ts @@ -38,6 +38,8 @@ export class BscAddresses { public static RDNT_TOKEN = "0xf7DE7E8A6bd59ED41a4b5fe50278b3B7f31384dF".toLowerCase(); public static AAVE_TOKEN = "0xfb6115445Bff7b52FeB98650C87f44907E58f802".toLowerCase(); public static BTCB = "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c".toLowerCase(); + public static WOM_TOKEN = "0xAD6742A35fB341A9Cc6ad674738Dd8da98b94Fb1".toLowerCase(); + public static WMX_TOKEN = "0xa75d9ca2a0a1D547409D82e1B06618EC284A2CeD".toLowerCase(); // tetu @@ -76,11 +78,21 @@ export class BscAddresses { public static vETH_TOKEN = "0xf508fCD89b8bd15579dc79A6827cB4686A3592c8".toLowerCase(); public static vDAI_TOKEN = "0x334b3eCB4DCa3593BCCC3c7EBD1A1C1d1780FBF1".toLowerCase(); + // WOMBAT + public static LP_USDT = "0x4F95fE57BEA74b7F642cF9c097311959B9b988F7".toLowerCase(); + public static LP_USDC = "0xb43ee2863370a56d3b7743edcd8407259100b8e2".toLowerCase(); + public static LP_DAI = "0x9d0a463d5dcb82008e86bf506eb048708a15dd84".toLowerCase(); + + public static wmxLP_USDT_VAULT = "0x1964FfE993d1DA4cA0c717C9eA16A7846b4f13aB".toLowerCase(); + public static wmxLP_USDC_VAULT = "0x6155E7d1c509F63109c6fC330bB5DD295034d540".toLowerCase(); + public static wmxLP_DAI_VAULT = "0xD50A7dD04Fdfe4A33b54220337D28B78bF5e9CCf".toLowerCase(); + public static XVS_WBNB_PANCAKESWAP_POOL = "0x7EB5D86FD78f3852a3e0e064f2842d45a3dB6EA2".toLowerCase(); public static BTCB_WETH_PANCAKESWAP_POOL = "0xD4dCA84E1808da3354924cD243c66828cf775470".toLowerCase(); public static DAI_USDT_BITSWAP_POOL = "0xe0caab61EE7A12d03B268E1f6A56537aC1b61D13".toLowerCase(); - + public static WOM_BUSD_PANCAKESWAP_POOL = "0xe68D05418A8d7969D9CA6761ad46F449629d928c".toLowerCase(); + public static WMX_BUSD_PANCAKESWAP_POOL = "0xe86eaAD81C32ffbb88B7ec9B325C8f75C8c9f1Ab".toLowerCase(); public static getRouterByFactory(factory: string): string { switch (factory.toLowerCase()) { diff --git a/test/VaultUtils.ts b/test/VaultUtils.ts index e8bb744..73e7ebb 100644 --- a/test/VaultUtils.ts +++ b/test/VaultUtils.ts @@ -22,7 +22,9 @@ import {BscAddresses} from "../scripts/addresses/BscAddresses"; export const XTETU_NO_INCREASE = new Set([ 'VenusSupplyStrategyBase' ]) -export const VAULT_SHARE_NO_INCREASE = new Set([]) +export const VAULT_SHARE_NO_INCREASE = new Set([ + 'WombexStrategyBase', +]) export class VaultUtils { diff --git a/test/strategies/DoHardWorkLoopBase.ts b/test/strategies/DoHardWorkLoopBase.ts index 7c64acf..7f225a7 100644 --- a/test/strategies/DoHardWorkLoopBase.ts +++ b/test/strategies/DoHardWorkLoopBase.ts @@ -28,7 +28,7 @@ export class DoHardWorkLoopBase { public readonly strategy: IStrategy; public readonly balanceTolerance: number; public readonly finalBalanceTolerance: number; - public vaultRt: string; + vaultRt = BscAddresses.ZERO_ADDRESS; vaultForUser: ISmartVault; undDec = 0; userDeposited = BigNumber.from(0); @@ -50,6 +50,7 @@ export class DoHardWorkLoopBase { allowLittleDustInStrategyAfterFullExit = BigNumber.from(0) shouldEarnUnderlying = true; shouldEarnRt = false; + allowDifferenceInExpectedOutAndActual = BigNumber.from(0); constructor( signer: SignerWithAddress, @@ -205,7 +206,11 @@ export class DoHardWorkLoopBase { const balAfter = await TokenUtils.balanceOf(this.underlying, this.user.address); console.log('Withdrew expected', formatUnits(expectedOutput, this.undDec)) console.log('Withdrew actual', formatUnits(balAfter.sub(balBefore), this.undDec)) - if (check) expect(expectedOutput.sub(balAfter.sub(balBefore)).toNumber()).below(10, 'withdrew lower than expected'); + console.log("expected output", expectedOutput.toString()) + console.log("actual output", balAfter.sub(balBefore).toString()) + const diffPercents = expectedOutput.mul(BigNumber.from(10).pow(18)).div(balAfter).sub(BigNumber.from(10).pow(18)) + + if (check) expect(diffPercents).lte(BigNumber.from(this.allowDifferenceInExpectedOutAndActual), 'withdrew lower than expected'); await this.userCheckBalance(this.userDeposited); this.userWithdrew = this.userDeposited; @@ -223,7 +228,8 @@ export class DoHardWorkLoopBase { const balAfter = await TokenUtils.balanceOf(this.underlying, this.user.address); console.log('Withdrew expected', formatUnits(expectedOutput, this.undDec)) console.log('Withdrew actual', formatUnits(balAfter.sub(balBefore), this.undDec)) - if (check) expect(expectedOutput.sub(balAfter.sub(balBefore)).toNumber()).below(10, 'withdrew lower than expected'); + const diffPercents = expectedOutput.mul(BigNumber.from(10).pow(18)).div(balAfter).sub(BigNumber.from(10).pow(18)) + if (check) expect(diffPercents).lte(BigNumber.from(this.allowDifferenceInExpectedOutAndActual), 'withdrew lower than expected'); await this.userCheckBalance(this.userWithdrew.add(amount)); const userUndBalAfter = await TokenUtils.balanceOf(this.underlying, this.user.address); @@ -302,8 +308,6 @@ export class DoHardWorkLoopBase { console.log('++++++++++++++++ ROI ' + i + ' ++++++++++++++++++++++++++') console.log('Loop time', (loopTime / 60 / 60).toFixed(1), 'hours'); - console.log('TETU earned total', stratEarnedTotalN); - console.log('TETU earned for this loop', stratEarnedN); console.log('ROI total', roi); console.log('ROI current', roiThisCycle); console.log('FeeCollector earned RTs', rtEarnedByFeeCollector); diff --git a/test/strategies/radiant/RadiantSupplyStrategyTest.ts b/test/strategies/radiant/RadiantSupplyStrategyTest.ts index abdf09f..06f43f8 100644 --- a/test/strategies/radiant/RadiantSupplyStrategyTest.ts +++ b/test/strategies/radiant/RadiantSupplyStrategyTest.ts @@ -135,9 +135,6 @@ describe('RadiantV2 supply tests', async () => { _balanceTolerance, finalBalanceTolerance, ); - hw.vaultRt = BscAddresses.ZERO_ADDRESS - // we may have some rewards in a form of XVS - hw.allowLittleDustInStrategyAfterFullExit = BigNumber.from(230000000) return hw; }; diff --git a/test/strategies/venus/VenusSupplyStrategyTest.ts b/test/strategies/venus/VenusSupplyStrategyTest.ts index d653ea0..fb077a6 100644 --- a/test/strategies/venus/VenusSupplyStrategyTest.ts +++ b/test/strategies/venus/VenusSupplyStrategyTest.ts @@ -179,7 +179,6 @@ describe('Venus supply tests', async () => { _balanceTolerance, finalBalanceTolerance, ); - hw.vaultRt = BscAddresses.ZERO_ADDRESS // we may have some rewards in a form of XVS hw.allowLittleDustInStrategyAfterFullExit = BigNumber.from(230000000) return hw; diff --git a/test/strategies/wombex/EmergencyWithdrawFromPoolTest.ts b/test/strategies/wombex/EmergencyWithdrawFromPoolTest.ts new file mode 100644 index 0000000..7256339 --- /dev/null +++ b/test/strategies/wombex/EmergencyWithdrawFromPoolTest.ts @@ -0,0 +1,40 @@ +import {SpecificStrategyTest} from "../SpecificStrategyTest"; +import {TokenUtils} from "../../TokenUtils"; +import {IStrategy, ISmartVault} from "../../../typechain"; +import {SignerWithAddress} from "@nomiclabs/hardhat-ethers/signers"; +import chai from "chai"; +import chaiAsPromised from "chai-as-promised"; +import {DeployInfo} from "../DeployInfo"; +import {VaultUtils} from "../../VaultUtils"; +import {utils} from "ethers"; + +const {expect} = chai; +chai.use(chaiAsPromised); + +export class EmergencyWithdrawFromPoolTest extends SpecificStrategyTest { + + public async do( + deployInfo: DeployInfo + ): Promise { + it("Emergency withdraw from Pool", async () => { + const underlying = deployInfo?.underlying as string; + const signer = deployInfo?.signer as SignerWithAddress; + const user = deployInfo?.user as SignerWithAddress; + const vault = deployInfo?.vault as ISmartVault; + const strategy = deployInfo.strategy as IStrategy; + + console.log('>>>emergencyWithdrawFromPool test'); + const userAddress = user.address + const depositAmount = await TokenUtils.balanceOf(underlying, userAddress); + + await VaultUtils.deposit(user, vault, depositAmount); + + const strategyGov = strategy.connect(signer); + await strategyGov.emergencyExit({gasLimit: 19_000_000}); + const withdrawnAmount = await TokenUtils.balanceOf(underlying, strategy.address); + console.log('>>>withdrawnAmount ', withdrawnAmount.toString()); + const undDec = await TokenUtils.decimals(underlying); + expect(+utils.formatUnits(depositAmount, undDec)).is.approximately(+utils.formatUnits(withdrawnAmount, undDec), 0.0001, 'withdrawn less than deposited'); + }); + } +} diff --git a/test/strategies/wombex/WombexSupplyStrategyTest.ts b/test/strategies/wombex/WombexSupplyStrategyTest.ts new file mode 100644 index 0000000..221405f --- /dev/null +++ b/test/strategies/wombex/WombexSupplyStrategyTest.ts @@ -0,0 +1,188 @@ +import chai from "chai"; +import chaiAsPromised from "chai-as-promised"; +import {config as dotEnvConfig} from "dotenv"; +import {StrategyTestUtils} from "../StrategyTestUtils"; +import {DeployInfo} from "../DeployInfo"; +import {SpecificStrategyTest} from "../SpecificStrategyTest"; +import {SignerWithAddress} from "@nomiclabs/hardhat-ethers/signers"; +import {CoreContractsWrapper} from "../../CoreContractsWrapper"; +import {DeployerUtilsLocal} from "../../../scripts/deploy/DeployerUtilsLocal"; +import { + IStrategy, + ISmartVault, + WombexSupplyStrategy__factory, + ITetuLiquidator__factory, + ITetuLiquidatorController__factory, +} from "../../../typechain"; +import {ToolsContractsWrapper} from "../../ToolsContractsWrapper"; +import {universalStrategyTest} from "../UniversalStrategyTest"; +import {DoHardWorkLoopBase} from "../DoHardWorkLoopBase"; +import {BscAddresses} from "../../../scripts/addresses/BscAddresses"; +import {BigNumber} from "ethers"; +import {EmergencyWithdrawFromPoolTest} from "./EmergencyWithdrawFromPoolTest"; + +dotEnvConfig(); +// tslint:disable-next-line:no-var-requires +const argv = require('yargs/yargs')() + .env('TETU') + .options({ + disableStrategyTests: { + type: "boolean", + default: false, + }, + deployCoreContracts: { + type: "boolean", + default: false, + }, + hardhatChainId: { + type: "number", + default: 56 + }, + }).argv; + +const {expect} = chai; +chai.use(chaiAsPromised); + +const configureLiquidator = async (signer: SignerWithAddress, deployInfo: DeployInfo) => { + if (deployInfo.core) { + const liquidatorAddress = BscAddresses.LIQUIDATOR_ADDRESS; + const liquidator = ITetuLiquidator__factory.connect(liquidatorAddress, signer) + const liquidatorController = ITetuLiquidatorController__factory.connect(await liquidator.controller(), signer) + const gov = await DeployerUtilsLocal.impersonate(await liquidatorController.governance()) + await liquidatorController.connect(gov).changeOperatorStatus(signer.address, true); + + await liquidator.addLargestPools([{ + pool: BscAddresses.WOM_BUSD_PANCAKESWAP_POOL, + swapper: BscAddresses.UNIV2_SWAPPER, + tokenIn: BscAddresses.WOM_TOKEN, + tokenOut: BscAddresses.BUSD_TOKEN, + }], true) + + await liquidator.addLargestPools([{ + pool: BscAddresses.WMX_BUSD_PANCAKESWAP_POOL, + swapper: BscAddresses.UNIV2_SWAPPER, + tokenIn: BscAddresses.WMX_TOKEN, + tokenOut: BscAddresses.BUSD_TOKEN, + }], true) + + } +} +describe('WombexStrategy supply tests', async () => { + const underlyingInfos = [ + // [BscAddresses.USDT_TOKEN, BscAddresses.LP_USDT, BscAddresses.wmxLP_USDT_VAULT], + [BscAddresses.USDC_TOKEN, BscAddresses.LP_USDC, BscAddresses.wmxLP_USDC_VAULT], + // [BscAddresses.DAI_TOKEN, BscAddresses.LP_DAI, BscAddresses.wmxLP_DAI_VAULT], + ] + + if (argv.disableStrategyTests || argv.hardhatChainId !== 56) { + return; + } + + const strategyContractName = 'WombexSupplyStrategy'; + + const deployInfo: DeployInfo = new DeployInfo(); + before(async function () { + await StrategyTestUtils.deployCoreAndInit(deployInfo, argv.deployCoreContracts); + const signer = await DeployerUtilsLocal.impersonate(); + await configureLiquidator(signer, deployInfo); + }); + underlyingInfos.forEach(info => { + // ********************************************** + // ************** CONFIG************************* + // ********************************************** + const vaultName = 'WombexStrategyBase_vault'; + + // add custom liquidation path if necessary + const forwarderConfigurator = null; + + const underlying = info[0]; + const lpToken = info[1]; + const wmxLPVault = info[2]; + + // only for strategies where we expect PPFS fluctuations + const ppfsDecreaseAllowed = false; + // only for strategies where we expect PPFS fluctuations + const balanceTolerance = 1_000_000 // todo: think if we can avoid this + const finalBalanceTolerance = 0; + const deposit = 100_000; + // at least 3 + const loops = 3; + const buyBackRatio = 5000; + // number of blocks or timestamp value + const loopValue = 86400; + // use 'true' if farmable platform values depends on blocks, instead you can use timestamp + const advanceBlocks = true; + const specificTests: SpecificStrategyTest[] = [ + new EmergencyWithdrawFromPoolTest(), + ]; + // ********************************************** + + const deployer = (signer: SignerWithAddress) => { + const core = deployInfo.core as CoreContractsWrapper; + return StrategyTestUtils.deploy( + signer, + core, + vaultName, + async vaultAddress => { + const strategy = await DeployerUtilsLocal.deployStrategyProxy( + signer, + strategyContractName, + ); + const strat = WombexSupplyStrategy__factory.connect(strategy.address, signer); + await strat.initialize( + core.controller.address, + underlying, + lpToken, + wmxLPVault, + vaultAddress, + buyBackRatio + ); + await core.controller.setRewardDistribution([strategy.address], true); + return strategy; + }, + underlying, + 0, + false + ); + }; + const hwInitiator = ( + _signer: SignerWithAddress, + _user: SignerWithAddress, + _core: CoreContractsWrapper, + _tools: ToolsContractsWrapper, + _underlying: string, + _vault: ISmartVault, + _strategy: IStrategy, + _balanceTolerance: number + ) => { + const hw = new DoHardWorkLoopBase( + _signer, + _user, + _core, + _tools, + _underlying, + _vault, + _strategy, + _balanceTolerance, + finalBalanceTolerance, + ); + hw.allowDifferenceInExpectedOutAndActual = BigNumber.from(5000000000000); // 0.000005% (18 decimals) + return hw; + }; + + universalStrategyTest( + strategyContractName + vaultName, + deployInfo, + deployer, + hwInitiator, + forwarderConfigurator, + ppfsDecreaseAllowed, + balanceTolerance, + deposit, + loops, + loopValue, + advanceBlocks, + specificTests, + ); + }); +}); From b0d5f5b6d1e3c93d71f0c79c98736a7c97cae1e8 Mon Sep 17 00:00:00 2001 From: AlehNat Date: Tue, 26 Sep 2023 02:57:17 +0200 Subject: [PATCH 3/8] improve withdraw calculation logic --- .../strategies/radiant/Radiant2StrategyBase.sol | 2 +- .../strategies/venus/VenusSupplyStrategyBase.sol | 2 +- .../strategies/wombex/WombexStrategyBase.sol | 15 +++++++++++---- contracts/third_party/wombex/IPool.sol | 13 +++++++++++++ scripts/addresses/BscAddresses.ts | 2 +- test/VaultUtils.ts | 4 +--- test/strategies/DoHardWorkLoopBase.ts | 4 ++++ .../strategies/wombex/WombexSupplyStrategyTest.ts | 9 ++++----- 8 files changed, 36 insertions(+), 15 deletions(-) create mode 100644 contracts/third_party/wombex/IPool.sol diff --git a/contracts/strategies/radiant/Radiant2StrategyBase.sol b/contracts/strategies/radiant/Radiant2StrategyBase.sol index d20559b..cc43c1c 100644 --- a/contracts/strategies/radiant/Radiant2StrategyBase.sol +++ b/contracts/strategies/radiant/Radiant2StrategyBase.sol @@ -28,7 +28,7 @@ abstract contract Radiant2StrategyBase is UniversalLendStrategy { /// @notice Version of the contract /// @dev Should be incremented when contract changed - string public constant VERSION = "1.0.0"; + string public constant VERSION = "1.0.1"; IStrategy.Platform public constant override platform = IStrategy.Platform.SLOT_48; //todo change /// @notice Strategy type for statistical purposes diff --git a/contracts/strategies/venus/VenusSupplyStrategyBase.sol b/contracts/strategies/venus/VenusSupplyStrategyBase.sol index 6a6f17a..608645a 100644 --- a/contracts/strategies/venus/VenusSupplyStrategyBase.sol +++ b/contracts/strategies/venus/VenusSupplyStrategyBase.sol @@ -26,7 +26,7 @@ abstract contract VenusSupplyStrategyBase is UniversalLendStrategy { /// @notice Version of the contract /// @dev Should be incremented when contract changed - string public constant VERSION = "1.0.1"; + string public constant VERSION = "1.0.2"; IStrategy.Platform public constant override platform = IStrategy.Platform.SLOT_47; // todo change /// @notice Strategy type for statistical purposes diff --git a/contracts/strategies/wombex/WombexStrategyBase.sol b/contracts/strategies/wombex/WombexStrategyBase.sol index ce61512..26027cd 100644 --- a/contracts/strategies/wombex/WombexStrategyBase.sol +++ b/contracts/strategies/wombex/WombexStrategyBase.sol @@ -17,6 +17,7 @@ import "../../third_party/wombex/IPoolDepositor.sol"; import "../../third_party/wombex/IAsset.sol"; import "../../third_party/wombex/IWmxClaimZap.sol"; import "../../third_party/wombex/IBaseRewardPool4626.sol"; +import "../../third_party/wombex/IPool.sol"; /// @title Contract for Wombex simple supply strategy simplified /// @author Aleh @@ -36,7 +37,6 @@ abstract contract WombexStrategyBase is UniversalLendStrategy { string public constant override STRATEGY_NAME = "WombexStrategyBase"; IPoolDepositor public constant POOL_DEPOSITOR = IPoolDepositor(0xc2Ee2ab275BC3F38cA30E902211640D8bB58C4d1); - WmxClaimZap public constant WMX_CLAIM_ZAP = WmxClaimZap(0x9Cb2A01a7E64992dcfd5aC6b0fcffb8eEdF9f5b1); address public constant WOM_TOKEN = 0xAD6742A35fB341A9Cc6ad674738Dd8da98b94Fb1; address public constant WMX_TOKEN = 0xa75d9ca2a0a1D547409D82e1B06618EC284A2CeD; @@ -119,14 +119,21 @@ abstract contract WombexStrategyBase is UniversalLendStrategy { /// @dev Perform only withdraw action, without changing local balance function _withdrawFromPoolWithoutChangeLocalBalance(uint amount, uint poolBalance) internal override returns (bool withdrewAll, uint withdrawnAmount) { uint minAmountOut = amount * (PRICE_IMPACT_PRECISION - PRICE_IMPACT) / PRICE_IMPACT_PRECISION; - (uint lpAmount,) = POOL_DEPOSITOR.getDepositAmountOut(address(lpToken), amount); + + (uint lpAmount, uint reward) = POOL_DEPOSITOR.getDepositAmountOut(address(lpToken), amount); + lpAmount = lpAmount + reward; + + uint lpAmountTotal = IBaseRewardPool4626(wmxLP).balanceOf(address(this)); + + lpAmount = Math.min(lpAmountTotal, lpAmount); + uint underlyingBalanceBefore = IERC20(_underlying()).balanceOf(address(this)); _approveIfNeeds(wmxLP, lpAmount, address(POOL_DEPOSITOR)); if (amount < poolBalance) { - POOL_DEPOSITOR.withdrawFromOtherAsset(address(lpToken), _underlying(), lpAmount, minAmountOut, block.timestamp + 1, address(this)); + POOL_DEPOSITOR.withdraw(address(lpToken), lpAmount, minAmountOut, block.timestamp + 1, address(this)); withdrewAll = false; } else { - POOL_DEPOSITOR.withdrawFromOtherAsset(address(lpToken), _underlying(), lpAmount, minAmountOut, block.timestamp + 1, address(this)); + POOL_DEPOSITOR.withdraw(address(lpToken), lpAmount, minAmountOut, block.timestamp + 1, address(this)); withdrewAll = true; } uint underlyingBalanceAfter = IERC20(_underlying()).balanceOf(address(this)); diff --git a/contracts/third_party/wombex/IPool.sol b/contracts/third_party/wombex/IPool.sol new file mode 100644 index 0000000..a5a346f --- /dev/null +++ b/contracts/third_party/wombex/IPool.sol @@ -0,0 +1,13 @@ +import "@tetu_io/tetu-contracts/contracts/openzeppelin/IERC20.sol"; + +// SPDX-License-Identifier: MIT +pragma solidity 0.8.4; + +interface IPool { + function exchangeRate(address token) external returns (uint256 xr); + + function quotePotentialDeposit( + address token, + uint256 amount + ) external view returns (uint256 liquidity, uint256 reward); +} \ No newline at end of file diff --git a/scripts/addresses/BscAddresses.ts b/scripts/addresses/BscAddresses.ts index 47f6a6c..ea4d0a5 100644 --- a/scripts/addresses/BscAddresses.ts +++ b/scripts/addresses/BscAddresses.ts @@ -111,4 +111,4 @@ export class BscAddresses { } throw Error('Unknown router ' + router); } -} +} \ No newline at end of file diff --git a/test/VaultUtils.ts b/test/VaultUtils.ts index 73e7ebb..e8bb744 100644 --- a/test/VaultUtils.ts +++ b/test/VaultUtils.ts @@ -22,9 +22,7 @@ import {BscAddresses} from "../scripts/addresses/BscAddresses"; export const XTETU_NO_INCREASE = new Set([ 'VenusSupplyStrategyBase' ]) -export const VAULT_SHARE_NO_INCREASE = new Set([ - 'WombexStrategyBase', -]) +export const VAULT_SHARE_NO_INCREASE = new Set([]) export class VaultUtils { diff --git a/test/strategies/DoHardWorkLoopBase.ts b/test/strategies/DoHardWorkLoopBase.ts index 7f225a7..d30990b 100644 --- a/test/strategies/DoHardWorkLoopBase.ts +++ b/test/strategies/DoHardWorkLoopBase.ts @@ -313,6 +313,10 @@ export class DoHardWorkLoopBase { console.log('FeeCollector earned RTs', rtEarnedByFeeCollector); console.log('+++++++++++++++++++++++++++++++++++++++++++++++') Misc.printDuration('fLoopPrintROIAndSaveEarned completed', start); + + for (let ii = 0; ii < this.strategyRewardTokens.length; ii++) { + this.feeCollectorRewardTokensBalances[ii] = BigNumber.from(0); + } } protected async afterBlockAdvance() { diff --git a/test/strategies/wombex/WombexSupplyStrategyTest.ts b/test/strategies/wombex/WombexSupplyStrategyTest.ts index 221405f..9630d16 100644 --- a/test/strategies/wombex/WombexSupplyStrategyTest.ts +++ b/test/strategies/wombex/WombexSupplyStrategyTest.ts @@ -69,7 +69,7 @@ const configureLiquidator = async (signer: SignerWithAddress, deployInfo: Deploy } describe('WombexStrategy supply tests', async () => { const underlyingInfos = [ - // [BscAddresses.USDT_TOKEN, BscAddresses.LP_USDT, BscAddresses.wmxLP_USDT_VAULT], + [BscAddresses.USDT_TOKEN, BscAddresses.LP_USDT, BscAddresses.wmxLP_USDT_VAULT], [BscAddresses.USDC_TOKEN, BscAddresses.LP_USDC, BscAddresses.wmxLP_USDC_VAULT], // [BscAddresses.DAI_TOKEN, BscAddresses.LP_DAI, BscAddresses.wmxLP_DAI_VAULT], ] @@ -102,14 +102,14 @@ describe('WombexStrategy supply tests', async () => { // only for strategies where we expect PPFS fluctuations const ppfsDecreaseAllowed = false; // only for strategies where we expect PPFS fluctuations - const balanceTolerance = 1_000_000 // todo: think if we can avoid this + const balanceTolerance = 0 const finalBalanceTolerance = 0; const deposit = 100_000; // at least 3 const loops = 3; - const buyBackRatio = 5000; + const buyBackRatio = 500; // number of blocks or timestamp value - const loopValue = 86400; + const loopValue = 60 * 60; // 1 hour // use 'true' if farmable platform values depends on blocks, instead you can use timestamp const advanceBlocks = true; const specificTests: SpecificStrategyTest[] = [ @@ -166,7 +166,6 @@ describe('WombexStrategy supply tests', async () => { _balanceTolerance, finalBalanceTolerance, ); - hw.allowDifferenceInExpectedOutAndActual = BigNumber.from(5000000000000); // 0.000005% (18 decimals) return hw; }; From 03f8ea22db5f9cdc52d996d44c335f949dbba4aa Mon Sep 17 00:00:00 2001 From: AlehNat Date: Tue, 26 Sep 2023 22:29:00 +0200 Subject: [PATCH 4/8] fix return value --- contracts/strategies/UniversalLendStrategy.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/strategies/UniversalLendStrategy.sol b/contracts/strategies/UniversalLendStrategy.sol index c3769a1..d08cb5e 100644 --- a/contracts/strategies/UniversalLendStrategy.sol +++ b/contracts/strategies/UniversalLendStrategy.sol @@ -220,7 +220,7 @@ abstract contract UniversalLendStrategy is ProxyStrategyBase { } IBookkeeper(c.bookkeeper()).registerStrategyEarned(0); - return poolBalance; + return _getActualPoolBalance(); } /// ****************************************************** From 2e10d265a920ddae0ad1f4821c1d0e968880c452 Mon Sep 17 00:00:00 2001 From: AlehNat Date: Wed, 27 Sep 2023 09:34:44 +0200 Subject: [PATCH 5/8] add fee config. Update test --- contracts/third_party/wombex/IPool.sol | 2 ++ .../wombex/WombexSupplyStrategyTest.ts | 25 +++++++++++++++---- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/contracts/third_party/wombex/IPool.sol b/contracts/third_party/wombex/IPool.sol index a5a346f..b89128c 100644 --- a/contracts/third_party/wombex/IPool.sol +++ b/contracts/third_party/wombex/IPool.sol @@ -4,6 +4,8 @@ import "@tetu_io/tetu-contracts/contracts/openzeppelin/IERC20.sol"; pragma solidity 0.8.4; interface IPool { + function ampFactor() external view returns (uint256); + function exchangeRate(address token) external returns (uint256 xr); function quotePotentialDeposit( diff --git a/test/strategies/wombex/WombexSupplyStrategyTest.ts b/test/strategies/wombex/WombexSupplyStrategyTest.ts index 9630d16..44240aa 100644 --- a/test/strategies/wombex/WombexSupplyStrategyTest.ts +++ b/test/strategies/wombex/WombexSupplyStrategyTest.ts @@ -12,7 +12,7 @@ import { ISmartVault, WombexSupplyStrategy__factory, ITetuLiquidator__factory, - ITetuLiquidatorController__factory, + ITetuLiquidatorController__factory, ISwapper__factory, IUniswapV2Pair__factory, } from "../../../typechain"; import {ToolsContractsWrapper} from "../../ToolsContractsWrapper"; import {universalStrategyTest} from "../UniversalStrategyTest"; @@ -65,13 +65,25 @@ const configureLiquidator = async (signer: SignerWithAddress, deployInfo: Deploy tokenOut: BscAddresses.BUSD_TOKEN, }], true) + await liquidator.addLargestPools([{ + pool: BscAddresses.DAI_USDT_BITSWAP_POOL, + swapper: BscAddresses.UNIV2_SWAPPER, + tokenIn: BscAddresses.DAI_TOKEN, + tokenOut: BscAddresses.USDT_TOKEN, + }], true) + + // need to set fee + const univ2Swapper = ISwapper__factory.connect(BscAddresses.UNIV2_SWAPPER, signer); + const btcbWbnbPancakeswapPool = IUniswapV2Pair__factory.connect(BscAddresses.DAI_USDT_BITSWAP_POOL, signer); + await univ2Swapper.connect(gov).setFee(await btcbWbnbPancakeswapPool.factory(), 250); + } } describe('WombexStrategy supply tests', async () => { const underlyingInfos = [ - [BscAddresses.USDT_TOKEN, BscAddresses.LP_USDT, BscAddresses.wmxLP_USDT_VAULT], + // [BscAddresses.USDT_TOKEN, BscAddresses.LP_USDT, BscAddresses.wmxLP_USDT_VAULT], [BscAddresses.USDC_TOKEN, BscAddresses.LP_USDC, BscAddresses.wmxLP_USDC_VAULT], - // [BscAddresses.DAI_TOKEN, BscAddresses.LP_DAI, BscAddresses.wmxLP_DAI_VAULT], + [BscAddresses.DAI_TOKEN, BscAddresses.LP_DAI, BscAddresses.wmxLP_DAI_VAULT], ] if (argv.disableStrategyTests || argv.hardhatChainId !== 56) { @@ -104,12 +116,15 @@ describe('WombexStrategy supply tests', async () => { // only for strategies where we expect PPFS fluctuations const balanceTolerance = 0 const finalBalanceTolerance = 0; - const deposit = 100_000; + let deposit = 100_000; + if(underlying === BscAddresses.DAI_TOKEN) { + deposit = 10_000; + } // at least 3 const loops = 3; const buyBackRatio = 500; // number of blocks or timestamp value - const loopValue = 60 * 60; // 1 hour + const loopValue = 60 * 60 * 24; // 1 day // use 'true' if farmable platform values depends on blocks, instead you can use timestamp const advanceBlocks = true; const specificTests: SpecificStrategyTest[] = [ From 12213490244be6775fac0de8a83886d09bac00a2 Mon Sep 17 00:00:00 2001 From: AlehNat Date: Thu, 28 Sep 2023 00:21:15 +0200 Subject: [PATCH 6/8] add rewards before test --- test/TokenUtils.ts | 1 + test/strategies/DoHardWorkLoopBase.ts | 2 ++ .../wombex/WombexSupplyStrategyTest.ts | 33 ++++++++++++++++--- 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/test/TokenUtils.ts b/test/TokenUtils.ts index 104a180..cbde96b 100644 --- a/test/TokenUtils.ts +++ b/test/TokenUtils.ts @@ -30,6 +30,7 @@ export class TokenUtils { [BscAddresses.BTCB, '0x5a52E96BAcdaBb82fd05763E25335261B270Efcb'.toLowerCase()], // binance hot wallet [BscAddresses.WETH_TOKEN, '0x5a52E96BAcdaBb82fd05763E25335261B270Efcb'.toLowerCase()], // binance hot wallet [BscAddresses.DAI_TOKEN, '0xF977814e90dA44bFA03b6295A0616a897441aceC'.toLowerCase()], // binance hot wallet + [BscAddresses.WMX_TOKEN, '0xA4bD32058474787337758B795d182435CbA2510E'.toLowerCase()], ]); public static async balanceOf(tokenAddress: string, account: string): Promise { diff --git a/test/strategies/DoHardWorkLoopBase.ts b/test/strategies/DoHardWorkLoopBase.ts index d30990b..ed0cb31 100644 --- a/test/strategies/DoHardWorkLoopBase.ts +++ b/test/strategies/DoHardWorkLoopBase.ts @@ -400,6 +400,8 @@ export class DoHardWorkLoopBase { const userDepositedN = +utils.formatUnits(this.userDeposited, this.undDec); // some pools have auto compounding so user balance can increase + const underlyingInStrategy = await TokenUtils.balanceOf(this.underlying, this.strategy.address); + console.log('>>>> underlying in strategy', underlyingInStrategy.toString()); const userUnderlyingBalanceAfter = await TokenUtils.balanceOf(this.underlying, this.user.address); const userUnderlyingBalanceAfterN = +utils.formatUnits(userUnderlyingBalanceAfter, this.undDec); const userBalanceExpected = userDepositedN - (userDepositedN * this.finalBalanceTolerance); diff --git a/test/strategies/wombex/WombexSupplyStrategyTest.ts b/test/strategies/wombex/WombexSupplyStrategyTest.ts index 44240aa..5aaa1bf 100644 --- a/test/strategies/wombex/WombexSupplyStrategyTest.ts +++ b/test/strategies/wombex/WombexSupplyStrategyTest.ts @@ -12,14 +12,19 @@ import { ISmartVault, WombexSupplyStrategy__factory, ITetuLiquidator__factory, - ITetuLiquidatorController__factory, ISwapper__factory, IUniswapV2Pair__factory, + ITetuLiquidatorController__factory, + ISwapper__factory, + IUniswapV2Pair__factory, + IBaseRewardPool4626__factory, + IERC20__factory, } from "../../../typechain"; import {ToolsContractsWrapper} from "../../ToolsContractsWrapper"; import {universalStrategyTest} from "../UniversalStrategyTest"; import {DoHardWorkLoopBase} from "../DoHardWorkLoopBase"; import {BscAddresses} from "../../../scripts/addresses/BscAddresses"; -import {BigNumber} from "ethers"; +import {utils} from "ethers"; import {EmergencyWithdrawFromPoolTest} from "./EmergencyWithdrawFromPoolTest"; +import {TokenUtils} from "../../TokenUtils"; dotEnvConfig(); // tslint:disable-next-line:no-var-requires @@ -76,12 +81,30 @@ const configureLiquidator = async (signer: SignerWithAddress, deployInfo: Deploy const univ2Swapper = ISwapper__factory.connect(BscAddresses.UNIV2_SWAPPER, signer); const btcbWbnbPancakeswapPool = IUniswapV2Pair__factory.connect(BscAddresses.DAI_USDT_BITSWAP_POOL, signer); await univ2Swapper.connect(gov).setFee(await btcbWbnbPancakeswapPool.factory(), 250); - } } + +const UNDERLYING_TO_LP = new Map([ + [BscAddresses.USDT_TOKEN, BscAddresses.wmxLP_USDT_VAULT], + [BscAddresses.USDC_TOKEN, BscAddresses.wmxLP_USDC_VAULT], + [BscAddresses.DAI_TOKEN, BscAddresses.wmxLP_DAI_VAULT], +]); + + +const addRewards = async (signer: SignerWithAddress, underlying: string) => { + const lpVaultAddress = UNDERLYING_TO_LP.get(underlying); + if(lpVaultAddress) { + const lpVault = IBaseRewardPool4626__factory.connect(lpVaultAddress, signer); + const operator = await DeployerUtilsLocal.impersonate(await lpVault.operator()) + await TokenUtils.getToken(BscAddresses.WMX_TOKEN, operator.address, utils.parseUnits("100000", 18)) + await IERC20__factory.connect(BscAddresses.WMX_TOKEN, operator).approve(lpVault.address, utils.parseUnits("100000", 18)) + await lpVault.connect(operator).queueNewRewards(BscAddresses.WMX_TOKEN, utils.parseUnits("100000", 18)); + } +} + describe('WombexStrategy supply tests', async () => { const underlyingInfos = [ - // [BscAddresses.USDT_TOKEN, BscAddresses.LP_USDT, BscAddresses.wmxLP_USDT_VAULT], + [BscAddresses.USDT_TOKEN, BscAddresses.LP_USDT, BscAddresses.wmxLP_USDT_VAULT], [BscAddresses.USDC_TOKEN, BscAddresses.LP_USDC, BscAddresses.wmxLP_USDC_VAULT], [BscAddresses.DAI_TOKEN, BscAddresses.LP_DAI, BscAddresses.wmxLP_DAI_VAULT], ] @@ -152,7 +175,7 @@ describe('WombexStrategy supply tests', async () => { vaultAddress, buyBackRatio ); - await core.controller.setRewardDistribution([strategy.address], true); + await addRewards(signer, underlying); return strategy; }, underlying, From 786c9b5b1f90c566e4ac10077e84874ab35f595d Mon Sep 17 00:00:00 2001 From: AlehNat Date: Thu, 28 Sep 2023 00:29:49 +0200 Subject: [PATCH 7/8] code review improvements --- contracts/strategies/radiant/Radiant2StrategyBase.sol | 9 +++++---- contracts/strategies/venus/VenusSupplyStrategyBase.sol | 5 +++-- contracts/strategies/wombex/WombexStrategyBase.sol | 8 ++++---- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/contracts/strategies/radiant/Radiant2StrategyBase.sol b/contracts/strategies/radiant/Radiant2StrategyBase.sol index cc43c1c..6ac96af 100644 --- a/contracts/strategies/radiant/Radiant2StrategyBase.sol +++ b/contracts/strategies/radiant/Radiant2StrategyBase.sol @@ -104,15 +104,16 @@ abstract contract Radiant2StrategyBase is UniversalLendStrategy { /// @dev Perform only withdraw action, without changing local balance function _withdrawFromPoolWithoutChangeLocalBalance(uint amount, uint poolBalance) internal override returns (bool withdrewAll, uint withdrawnAmount) { - uint underlyingBalanceBefore = IERC20(_underlying()).balanceOf(address(this)); + address u = _underlying(); + uint underlyingBalanceBefore = IERC20(u).balanceOf(address(this)); if (amount < poolBalance) { withdrewAll = false; - AAVE_LENDING_POOL.withdraw(_underlying(), amount, address(this)); + AAVE_LENDING_POOL.withdraw(u, amount, address(this)); } else { withdrewAll = true; - AAVE_LENDING_POOL.withdraw(_underlying(), type(uint).max, address(this)); + AAVE_LENDING_POOL.withdraw(u, type(uint).max, address(this)); } - uint underlyingBalanceAfter = IERC20(_underlying()).balanceOf(address(this)); + uint underlyingBalanceAfter = IERC20(u).balanceOf(address(this)); withdrawnAmount = underlyingBalanceAfter - underlyingBalanceBefore; } diff --git a/contracts/strategies/venus/VenusSupplyStrategyBase.sol b/contracts/strategies/venus/VenusSupplyStrategyBase.sol index 608645a..38e1fd7 100644 --- a/contracts/strategies/venus/VenusSupplyStrategyBase.sol +++ b/contracts/strategies/venus/VenusSupplyStrategyBase.sol @@ -110,7 +110,8 @@ abstract contract VenusSupplyStrategyBase is UniversalLendStrategy { /// @dev Perform only withdraw action, without changing local balance function _withdrawFromPoolWithoutChangeLocalBalance(uint amount, uint poolBalance) internal override returns (bool withdrewAll, uint withdrawnAmount) { - uint underlyingBalanceBefore = IERC20(_underlying()).balanceOf(address(this)); + address u = _underlying(); + uint underlyingBalanceBefore = IERC20(u).balanceOf(address(this)); if (amount < poolBalance) { vToken.redeemUnderlying(amount); withdrewAll = false; @@ -118,7 +119,7 @@ abstract contract VenusSupplyStrategyBase is UniversalLendStrategy { vToken.redeemUnderlying(amount); withdrewAll = true; } - uint underlyingBalanceAfter = IERC20(_underlying()).balanceOf(address(this)); + uint underlyingBalanceAfter = IERC20(u).balanceOf(address(this)); withdrawnAmount = underlyingBalanceAfter - underlyingBalanceBefore; } diff --git a/contracts/strategies/wombex/WombexStrategyBase.sol b/contracts/strategies/wombex/WombexStrategyBase.sol index 26027cd..39457ec 100644 --- a/contracts/strategies/wombex/WombexStrategyBase.sol +++ b/contracts/strategies/wombex/WombexStrategyBase.sol @@ -121,13 +121,13 @@ abstract contract WombexStrategyBase is UniversalLendStrategy { uint minAmountOut = amount * (PRICE_IMPACT_PRECISION - PRICE_IMPACT) / PRICE_IMPACT_PRECISION; (uint lpAmount, uint reward) = POOL_DEPOSITOR.getDepositAmountOut(address(lpToken), amount); - lpAmount = lpAmount + reward; + lpAmount += reward; uint lpAmountTotal = IBaseRewardPool4626(wmxLP).balanceOf(address(this)); lpAmount = Math.min(lpAmountTotal, lpAmount); - - uint underlyingBalanceBefore = IERC20(_underlying()).balanceOf(address(this)); + address u = _underlying(); + uint underlyingBalanceBefore = IERC20(u).balanceOf(address(this)); _approveIfNeeds(wmxLP, lpAmount, address(POOL_DEPOSITOR)); if (amount < poolBalance) { POOL_DEPOSITOR.withdraw(address(lpToken), lpAmount, minAmountOut, block.timestamp + 1, address(this)); @@ -136,7 +136,7 @@ abstract contract WombexStrategyBase is UniversalLendStrategy { POOL_DEPOSITOR.withdraw(address(lpToken), lpAmount, minAmountOut, block.timestamp + 1, address(this)); withdrewAll = true; } - uint underlyingBalanceAfter = IERC20(_underlying()).balanceOf(address(this)); + uint underlyingBalanceAfter = IERC20(u).balanceOf(address(this)); withdrawnAmount = underlyingBalanceAfter - underlyingBalanceBefore; } From 8e60f37e5a6bb8a859050bc58cb153f377e406f9 Mon Sep 17 00:00:00 2001 From: AlehNat Date: Thu, 28 Sep 2023 00:36:56 +0200 Subject: [PATCH 8/8] add deployment scripts --- .../wombex/DeployDAISupplyStrategy.ts | 30 +++++++++++++++++++ .../wombex/DeployUSDCSupplyStrategy.ts | 30 +++++++++++++++++++ .../wombex/DeployUSDTSupplyStrategy.ts | 30 +++++++++++++++++++ 3 files changed, 90 insertions(+) create mode 100644 scripts/deploy/strategies/wombex/DeployDAISupplyStrategy.ts create mode 100644 scripts/deploy/strategies/wombex/DeployUSDCSupplyStrategy.ts create mode 100644 scripts/deploy/strategies/wombex/DeployUSDTSupplyStrategy.ts diff --git a/scripts/deploy/strategies/wombex/DeployDAISupplyStrategy.ts b/scripts/deploy/strategies/wombex/DeployDAISupplyStrategy.ts new file mode 100644 index 0000000..4bba96c --- /dev/null +++ b/scripts/deploy/strategies/wombex/DeployDAISupplyStrategy.ts @@ -0,0 +1,30 @@ +import {ethers} from "hardhat"; +import {DeployerUtilsLocal} from "../../DeployerUtilsLocal"; +import {WombexSupplyStrategy__factory} from "../../../../typechain"; +import {RunHelper} from "../../../utils/tools/RunHelper"; +import {BscAddresses} from "../../../addresses/BscAddresses"; + +async function main() { + const signer = (await ethers.getSigners())[0]; + const core = await DeployerUtilsLocal.getCoreAddresses(); + const underlying = BscAddresses.DAI_TOKEN; + + const splitterAddress = BscAddresses.xDAI_SPLITTER + const logic = await DeployerUtilsLocal.deployContract(signer, "WombexSupplyStrategy"); + const stackerProxy = await DeployerUtilsLocal.deployContract(signer, "TetuProxyControlled", logic.address); + await RunHelper.runAndWait(() => WombexSupplyStrategy__factory.connect(stackerProxy.address, signer).initialize( + core.controller, + underlying, + BscAddresses.LP_DAI, + BscAddresses.wmxLP_DAI_VAULT, + splitterAddress, + 10_00 + )); +} + +main() + .then(() => process.exit(0)) + .catch(error => { + console.error(error); + process.exit(1); + }); diff --git a/scripts/deploy/strategies/wombex/DeployUSDCSupplyStrategy.ts b/scripts/deploy/strategies/wombex/DeployUSDCSupplyStrategy.ts new file mode 100644 index 0000000..4951e90 --- /dev/null +++ b/scripts/deploy/strategies/wombex/DeployUSDCSupplyStrategy.ts @@ -0,0 +1,30 @@ +import {ethers} from "hardhat"; +import {DeployerUtilsLocal} from "../../DeployerUtilsLocal"; +import {WombexSupplyStrategy__factory} from "../../../../typechain"; +import {RunHelper} from "../../../utils/tools/RunHelper"; +import {BscAddresses} from "../../../addresses/BscAddresses"; + +async function main() { + const signer = (await ethers.getSigners())[0]; + const core = await DeployerUtilsLocal.getCoreAddresses(); + const underlying = BscAddresses.USDC_TOKEN; + + const splitterAddress = BscAddresses.xUSDC_SPLITTER + const logic = await DeployerUtilsLocal.deployContract(signer, "WombexSupplyStrategy"); + const stackerProxy = await DeployerUtilsLocal.deployContract(signer, "TetuProxyControlled", logic.address); + await RunHelper.runAndWait(() => WombexSupplyStrategy__factory.connect(stackerProxy.address, signer).initialize( + core.controller, + underlying, + BscAddresses.LP_USDC, + BscAddresses.wmxLP_USDC_VAULT, + splitterAddress, + 10_00 + )); +} + +main() + .then(() => process.exit(0)) + .catch(error => { + console.error(error); + process.exit(1); + }); diff --git a/scripts/deploy/strategies/wombex/DeployUSDTSupplyStrategy.ts b/scripts/deploy/strategies/wombex/DeployUSDTSupplyStrategy.ts new file mode 100644 index 0000000..70a9093 --- /dev/null +++ b/scripts/deploy/strategies/wombex/DeployUSDTSupplyStrategy.ts @@ -0,0 +1,30 @@ +import {ethers} from "hardhat"; +import {DeployerUtilsLocal} from "../../DeployerUtilsLocal"; +import {WombexSupplyStrategy__factory} from "../../../../typechain"; +import {RunHelper} from "../../../utils/tools/RunHelper"; +import {BscAddresses} from "../../../addresses/BscAddresses"; + +async function main() { + const signer = (await ethers.getSigners())[0]; + const core = await DeployerUtilsLocal.getCoreAddresses(); + const underlying = BscAddresses.USDT_TOKEN; + + const splitterAddress = BscAddresses.xUSDT_SPLITTER + const logic = await DeployerUtilsLocal.deployContract(signer, "WombexSupplyStrategy"); + const stackerProxy = await DeployerUtilsLocal.deployContract(signer, "TetuProxyControlled", logic.address); + await RunHelper.runAndWait(() => WombexSupplyStrategy__factory.connect(stackerProxy.address, signer).initialize( + core.controller, + underlying, + BscAddresses.LP_USDT, + BscAddresses.wmxLP_USDT_VAULT, + splitterAddress, + 10_00 + )); +} + +main() + .then(() => process.exit(0)) + .catch(error => { + console.error(error); + process.exit(1); + });